การทำให้เป็นโมดูลใน ABAP: มาโคร รูทีนย่อย และโมดูลฟังก์ชัน
เมื่อคุณทำให้ซอร์สโค้ดเป็นโมดูล คุณจะวางลำดับของคำสั่ง ABAP ไว้ในโมดูล จากนั้น แทนที่จะวางคำสั่งทั้งหมดในโปรแกรมหลักของคุณ คุณเพียงแค่เรียกโมดูล เมื่อโปรแกรมถูกสร้างขึ้น ซอร์สโค้ดในหน่วยการทำให้เป็นโมดูลจะถูกปฏิบัติราวกับว่ามีอยู่จริงในโปรแกรมหลัก
ความจำเป็นของการทำให้เป็นโมดูล
- ปรับปรุงโครงสร้างของโปรแกรม
- ง่ายต่อการอ่านรหัส
- ง่ายต่อการรักษารหัส
- หลีกเลี่ยงความซ้ำซ้อนและส่งเสริมการนำโค้ดกลับมาใช้ใหม่
เทคนิคการทำให้เป็นโมดูลต่างๆ
- การใช้มาโคร
- การใช้ไฟล์รวม
- รูทีนย่อย
- โมดูลฟังก์ชัน
มาดูรายละเอียดแต่ละข้อกัน:
SAP- เอแบคมาโคร
ถ้าคุณต้องการใช้ชุดคำสั่งเดียวกันซ้ำมากกว่าหนึ่งครั้งในโปรแกรม คุณสามารถรวมไว้ในแมโครได้
คุณสามารถใช้แมโครได้เฉพาะภายในโปรแกรมที่กำหนดไว้เท่านั้น และเรียกใช้ได้ในบรรทัดของโปรแกรมที่ปฏิบัติตามคำจำกัดความเท่านั้น
แมโครสามารถเป็นประโยชน์สำหรับการคำนวณที่ยาวนานหรือคำสั่ง WRITE ที่ซับซ้อน
วากยสัมพันธ์
DEFINE <macro_name> 'Macro Statements END-OF-DEFINITION
แมโครสามารถใช้พารามิเตอร์ได้ &N โดยที่ N = 1,2,3…
ตัวอย่าง:-
DATA: number1 TYPE I VALUE 1. DEFINE increment. ADD 1 to &1. WRITE &1. END-OF-DEFINITION. Increment number1. WRITE number1.
เอาต์พุต: 2
รวมโปรแกรมต่างๆ
โปรแกรมรวมมีไว้เพื่อการปรับซอร์สโค้ดแบบโมดูลาร์เท่านั้น และไม่มีส่วนต่อประสานพารามิเตอร์
รวมโปรแกรมช่วยให้คุณสามารถใช้ซอร์สโค้ดเดียวกันในโปรแกรมต่างๆ สิ่งเหล่านี้อาจมีประโยชน์หากคุณมีการประกาศข้อมูลที่มีความยาวซึ่งคุณต้องการใช้ในโปรแกรมต่างๆ
วากยสัมพันธ์
Include <include program Name>
คะแนนหมายเหตุ
- รวมโปรแกรมไม่สามารถเรียกตัวเองได้
- รวมโปรแกรมจะต้องมีคำสั่งที่สมบูรณ์
ตัวอย่าง:
INCLUDE ZILX0004. WRITE: / 'User', SY-UNAME,/ 'Date', SY-DATUM. ================================ PROGRAM ZRPM0001. INCLUDE ZILX0004.
รูทีนย่อย
รูทีนย่อยเป็นขั้นตอนที่คุณสามารถกำหนดได้ โปรแกรมเอแบค และยังเรียกใช้จากโปรแกรมใดก็ได้ โดยปกติซับรูทีนจะถูกเรียกใช้จากภายใน ซึ่งหมายความว่าซับรูทีนจะประกอบด้วยส่วนของโค้ดหรืออัลกอริทึมที่ใช้บ่อยภายในเครื่อง หากคุณต้องการให้ฟังก์ชันนั้นสามารถนำมาใช้ซ้ำได้ทั่วทั้งระบบ ให้ใช้โมดูลฟังก์ชัน
ไวยากรณ์-
FORM <Subroutine> [<pass>]. <Statement block>. ENDFORM.
= ชื่อของรูทีนย่อย
= พารามิเตอร์ที่กำลังส่งผ่าน
ประเภทของรูทีนย่อย
- ภายใน
- รูทีนย่อยที่กำหนดไว้ในโปรแกรมเดียวกันที่ถูกเรียกใช้
- สามารถเข้าถึงออบเจ็กต์ข้อมูลทั้งหมดที่ประกาศไว้ในโปรแกรม ABAP/4 หลัก
- ภายนอก
- รูทีนย่อยที่กำหนดไว้ภายนอกโปรแกรมที่กำลังถูกเรียก
- จำเป็นต้องใช้ ตัวเลือกหรือประกาศวัตถุข้อมูลในส่วนทั่วไปของหน่วยความจำ
การเรียกรูทีนย่อย
รูทีนย่อยภายใน
PERFORM <subroutine> [<pass>]
= ชื่อของรูทีนย่อย
= พารามิเตอร์ที่กำลังส่งผ่าน
ข้อมูลที่ประกาศในโปรแกรมหลักจะพร้อมใช้งานโดยอัตโนมัติ
รูทีนย่อยภายนอก
PERFORM <subroutine>(<Program>) [<pass>]. PERFORM <subroutine> (<Program>) [<pass>] [IF FOUND]. PERFORM (<subroutine>) IN PROGRAM (<Program>) [<pass>] [IF FOUND]. PERFORM <index> OF <subroutine1> <subroutine2> <subroutine3> [<pass>].
คะแนนหมายเหตุ
- อนุญาตให้ใช้การโทรแบบซ้อนในรูทีนย่อย (เช่น PERFORM ภายใน FORM … ENDFORM )
- สามารถโทรซ้ำได้
- หากต้องการกำหนดข้อมูลในเครื่อง ให้ใช้คำสั่ง DATA หลัง FORM แต่ละครั้งที่คุณเข้าสู่รูทีนย่อย ข้อมูลจะถูกสร้างขึ้นใหม่ (ด้วยค่าเริ่มต้น) และปล่อยออกมาที่ส่วนท้าย (จากสแต็ก)
- หากต้องการกำหนดข้อมูลโกลบอลที่ใช้ภายในรูทีนย่อย ให้ใช้คำสั่ง LOCAL หลัง FORM ค่าจะถูกบันทึกเมื่อคุณเข้าสู่รูทีนย่อยแล้วปล่อยเมื่อสิ้นสุด (จากสแต็ก)
โมดูลฟังก์ชัน
โมดูลฟังก์ชันเป็นรูทีน ABAP/4 วัตถุประสงค์ทั่วไปที่ใครๆ ก็สามารถใช้ได้ Infact มีโมดูลฟังก์ชันมาตรฐานให้เลือกมากมาย
โมดูลฟังก์ชันถูกจัดเป็นกลุ่มฟังก์ชัน: คอลเลกชันของฟังก์ชันที่เกี่ยวข้องกับตรรกะ โมดูลฟังก์ชันจะอยู่ในกลุ่มฟังก์ชันเสมอ
ไวยากรณ์-
FUNCTION <function module> <Statements> ENDFUNCTION.
ข้อมูลสำคัญที่เกี่ยวข้องกับโมดูลฟังก์ชัน
- การบริหารจัดการ
- นำเข้า/เปลี่ยน/ส่งออกพารามิเตอร์
- พารามิเตอร์ตาราง/ข้อยกเว้น
- เอกสาร
- ซอร์สโค้ด – L U01 . คือกลุ่มฟังก์ชั่น
- ข้อมูลทั่วโลก – L TOP ข้อมูลส่วนกลางสำหรับกลุ่มฟังก์ชัน- เข้าถึงได้จากโมดูลฟังก์ชันต่างๆ ในกลุ่มฟังก์ชัน
- โปรแกรมหลัก – SAPล - ประกอบด้วยรายการไฟล์รวมทั้งหมดสำหรับกลุ่มฟังก์ชันนั้น
เรียกโมดูลฟังก์ชัน
หากต้องการเรียกใช้โมดูลฟังก์ชัน ให้ใช้คำสั่ง CALL FUNCTION:
CALL FUNCTION <module> [EXPORTING f1 = a 1.... f n = a n] [IMPORTING f1 = a 1.... f n = a n] [CHANGING f1 = a 1.... f n = a n] [TABLES f1 = a 1.... f n = a n] [EXCEPTIONS e1 = r 1.... e n = r n [ERROR_MESSAGE = r E] [OTHERS = ro]].
กลุ่มฟังก์ชั่น
กลุ่มฟังก์ชันคือคอนเทนเนอร์สำหรับโมดูลฟังก์ชัน Infact มีกลุ่มฟังก์ชั่นมาตรฐานจำนวนมาก
โมดูลฟังก์ชันทั้งหมดในกลุ่มฟังก์ชันสามารถเข้าถึงข้อมูลส่วนกลางของกลุ่มได้
เช่นเดียวกับโปรแกรมปฏิบัติการ (ประเภท 1) และ พูลโมดูล (ประเภท M) กลุ่มฟังก์ชันสามารถประกอบด้วยหน้าจอ หน้าจอการเลือก และรายการได้
คะแนนหมายเหตุ
- ไม่สามารถดำเนินการกลุ่มฟังก์ชันได้
- ชื่อของกลุ่มฟังก์ชันสามารถมีความยาวได้สูงสุด 26 อักขระ
- เมื่อคุณสร้างกลุ่มฟังก์ชันหรือโมดูลฟังก์ชัน โปรแกรมหลักและโปรแกรมที่รวมจะถูกสร้างขึ้นโดยอัตโนมัติ
- กลุ่มฟังก์ชันห่อหุ้มข้อมูล
วิธีสร้างกลุ่มฟังก์ชั่น
- ไปที่ธุรกรรม SE80
- เลือกโปรแกรมในเมนูแบบเลื่อนลง
- เขียนชื่อกลุ่มฟังก์ชั่นที่คุณต้องการสร้าง โดยทั่วไปกลุ่มฟังก์ชันที่ผู้ใช้สร้างจะเริ่มต้นด้วย "Z" เช่น - - กดปุ่ม Enter
- โปรดทราบว่าการรวม TOP จะถูกสร้างขึ้นตามค่าเริ่มต้น หากผู้ใช้เลือกตัวเลือกในการสร้างการรวม TOP
วิธีสร้างโมดูลฟังก์ชัน
- สร้างกลุ่มฟังก์ชัน (พูดว่า "ZCAL")
- สร้างโมดูลฟังก์ชัน ตั้งค่าคุณลักษณะ เช่น (กลุ่มฟังก์ชัน แอปพลิเคชัน ข้อความสั้น และประเภทกระบวนการ) และบันทึก
- รวมไฟล์ “LZCALU01” จะมีซอร์สโค้ดของโมดูลฟังก์ชันแรก
- รวมไฟล์ “LZCALTOP” จะมีข้อมูลทั่วโลก
- โปรแกรมหลัก “SAPLZCAL” ประกอบด้วย
- ข้อมูลทั่วโลกรวมไฟล์ “LZCALTOP”
- โมดูลฟังก์ชันประกอบด้วยไฟล์ “LZCALUXX”
- ผู้ใช้กำหนด รวมไฟล์ “LZCALF..”, “LZCALO..” และ “LZCALI..”
- กำหนดพารามิเตอร์อินเทอร์เฟซและข้อยกเว้น
- เขียนซอร์สโค้ด
- เปิดใช้งานโมดูลฟังก์ชัน
- การทดสอบโมดูลฟังก์ชัน - การทดสอบและการดีบักครั้งเดียว
- การจัดทำเอกสารและการเผยแพร่โมดูลฟังก์ชัน
นั่นคือทั้งหมดที่เกี่ยวกับ Modularity ใน ABAP