การทำให้เป็นโมดูลใน 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.

= ชื่อของรูทีนย่อย

= พารามิเตอร์ที่กำลังส่งผ่าน

ประเภทของรูทีนย่อย

  1. ภายใน
    • รูทีนย่อยที่กำหนดไว้ในโปรแกรมเดียวกันที่ถูกเรียกใช้
    • สามารถเข้าถึงออบเจ็กต์ข้อมูลทั้งหมดที่ประกาศไว้ในโปรแกรม ABAP/4 หลัก
  2. ภายนอก
    • รูทีนย่อยที่กำหนดไว้ภายนอกโปรแกรมที่กำลังถูกเรียก
    • จำเป็นต้องใช้ ตัวเลือกหรือประกาศวัตถุข้อมูลในส่วนทั่วไปของหน่วยความจำ

การเรียกรูทีนย่อย

รูทีนย่อยภายใน

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 อักขระ
  • เมื่อคุณสร้างกลุ่มฟังก์ชันหรือโมดูลฟังก์ชัน โปรแกรมหลักและโปรแกรมที่รวมจะถูกสร้างขึ้นโดยอัตโนมัติ
  • กลุ่มฟังก์ชันห่อหุ้มข้อมูล

วิธีสร้างกลุ่มฟังก์ชั่น

  1. ไปที่ธุรกรรม SE80
  2. เลือกโปรแกรมในเมนูแบบเลื่อนลง
  3. เขียนชื่อกลุ่มฟังก์ชั่นที่คุณต้องการสร้าง โดยทั่วไปกลุ่มฟังก์ชันที่ผู้ใช้สร้างจะเริ่มต้นด้วย "Z" เช่น - - กดปุ่ม Enter
  4. โปรดทราบว่าการรวม TOP จะถูกสร้างขึ้นตามค่าเริ่มต้น หากผู้ใช้เลือกตัวเลือกในการสร้างการรวม TOP

วิธีสร้างโมดูลฟังก์ชัน

  1. สร้างกลุ่มฟังก์ชัน (พูดว่า "ZCAL")
  2. สร้างโมดูลฟังก์ชัน ตั้งค่าคุณลักษณะ เช่น (กลุ่มฟังก์ชัน แอปพลิเคชัน ข้อความสั้น และประเภทกระบวนการ) และบันทึก
  3. รวมไฟล์ “LZCALU01” จะมีซอร์สโค้ดของโมดูลฟังก์ชันแรก
  4. รวมไฟล์ “LZCALTOP” จะมีข้อมูลทั่วโลก
  5. โปรแกรมหลัก “SAPLZCAL” ประกอบด้วย
    • ข้อมูลทั่วโลกรวมไฟล์ “LZCALTOP”
    • โมดูลฟังก์ชันประกอบด้วยไฟล์ “LZCALUXX”
    • ผู้ใช้กำหนด รวมไฟล์ “LZCALF..”, “LZCALO..” และ “LZCALI..”
  6. กำหนดพารามิเตอร์อินเทอร์เฟซและข้อยกเว้น
  7. เขียนซอร์สโค้ด
  8. เปิดใช้งานโมดูลฟังก์ชัน
  9. การทดสอบโมดูลฟังก์ชัน - การทดสอบและการดีบักครั้งเดียว
  10. การจัดทำเอกสารและการเผยแพร่โมดูลฟังก์ชัน

นั่นคือทั้งหมดที่เกี่ยวกับ Modularity ใน ABAP