บทช่วยสอนการเขียนโปรแกรมกล่องโต้ตอบ: พูลโมดูลเข้า SAP ABAP
⚡ สรุปอย่างชาญฉลาด
การเขียนโปรแกรมแบบโต้ตอบใน SAP ABAP สร้างโปรแกรมโมดูลพูลที่โต้ตอบกับผู้ใช้ผ่านหน้าจอและเปลี่ยนแปลงเนื้อหาในฐานข้อมูล หน้านี้อธิบายรหัสธุรกรรม หน้าจอ สถานะ GUI ตรรกะการไหลของหน้าจอ ไดนามิกโพร และโครงสร้างโมดูลพูล

การเขียนโปรแกรมแบบโต้ตอบ (Dialog Programming) คืออะไร?
SAP-ABAP รองรับโปรแกรมสองประเภท – โปรแกรมรายงานและโปรแกรมบทสนทนา
หากโปรแกรม ABAP ของคุณต้องการอินพุตจากผู้ใช้ ระบบจะใช้การเขียนโปรแกรม Dialog
บทสนทนากับผู้ใช้ หมายถึง การโต้ตอบทุกรูปแบบระหว่างผู้ใช้กับโปรแกรม และอาจเป็นสิ่งต่อไปนี้
- การป้อนข้อมูล
- การเลือกรายการเมนู
- คลิกที่ปุ่ม
- การคลิกหรือดับเบิลคลิกรายการ
โปรแกรมโต้ตอบยังใช้เมื่อเราต้องการนำทางไปมาระหว่างหน้าจอ
โปรแกรมโต้ตอบถูกสร้างขึ้นด้วยประเภทเป็น 'M' - พูลโมดูล ไม่สามารถดำเนินการได้โดยอิสระและต้องแนบไปกับรหัสธุรกรรมอย่างน้อยหนึ่งรหัสที่คุณระบุหน้าจอเริ่มต้น
ความแตกต่างระหว่างโปรแกรมรายงานและกล่องโต้ตอบ
โปรแกรมรายงาน:
รายงานคือโปรแกรมที่โดยทั่วไปจะอ่านและวิเคราะห์ข้อมูลในตารางฐานข้อมูลโดยไม่ต้องเปลี่ยนแปลง ฐานข้อมูล.
โปรแกรมโต้ตอบ:
โปรแกรมโต้ตอบช่วยให้คุณทำงานแบบโต้ตอบกับระบบและเปลี่ยนแปลงเนื้อหาของตารางฐานข้อมูลได้ แต่ละโปรแกรมโต้ตอบจะมีลำดับหน้าจอที่แน่นอนซึ่งระบบจะประมวลผลทีละรายการ
| หลักเกณฑ์ | โปรแกรมรายงาน | โปรแกรมสนทนา |
|---|---|---|
| ประเภทโปรแกรม | ประเภท 1, ไฟล์ปฏิบัติการ | ประเภท M, กลุ่มโมดูล |
| การเข้าถึงฐานข้อมูล | อ่านและวิเคราะห์ข้อมูล | อ่านและเปลี่ยนแปลงข้อมูล |
| การกระทำ | ทำงานโดยอัตโนมัติ | ใช้งานได้เฉพาะผ่านรหัสธุรกรรมเท่านั้น |
| Control | เหตุการณ์ในรายงาน | ตรรกะการไหลของหน้าจอของแต่ละไดน์โปร |
ลำดับหน้าจอของการทำธุรกรรมแบบโต้ตอบจะเข้าใจง่ายขึ้นหากมีตัวอย่างประกอบ
ตัวอย่างการประมวลผลธุรกรรมในการเขียนโปรแกรมโต้ตอบ
แผนภาพแสดงขั้นตอนการทำงานตั้งแต่หน้าจอแรกจนถึงการอัปเดตฐานข้อมูล ผู้ใช้ป้อนข้อมูลในหน้าจอ 100 ระบบ PAI ตรวจสอบความถูกต้องของข้อมูลและตัดสินใจไปยังหน้าจอถัดไป หน้าจอ 200 รวบรวมข้อมูลที่เหลือ และสุดท้ายงานอัปเดตจะบันทึกข้อมูลลงในฐานข้อมูล แต่ละขั้นตอนเหล่านี้สร้างขึ้นโดยส่วนประกอบต่างๆ ที่ระบุไว้ด้านล่าง
ส่วนประกอบของโปรแกรมโต้ตอบ
แตกต่าง รายงาน ซึ่งโดยทั่วไปเกี่ยวข้องกับการสร้างโปรแกรมอิสระหนึ่งโปรแกรมที่สามารถดำเนินการได้โดยอิสระจากวัตถุอื่น ๆ การพัฒนาโปรแกรมกล่องโต้ตอบเกี่ยวข้องกับการพัฒนาวัตถุหลาย ๆ ชิ้นซึ่งไม่มีวัตถุใด ๆ ที่สามารถดำเนินการได้ด้วยตัวเอง แทนที่จะเชื่อมโยงวัตถุทั้งหมดตามลำดับชั้นกับโปรแกรมหลักและดำเนินการตามลำดับที่กำหนดโดยโปรแกรมหลักของกล่องโต้ตอบ.
ส่วนประกอบของโปรแกรมโต้ตอบคือ:
รหัสธุรกรรม
- รหัสธุรกรรมเริ่มลำดับหน้าจอ
- คุณสร้างรหัสธุรกรรมใน Repository Browser ใน ABAP Workbench หรือใช้ Transaction SE93
- รหัสธุรกรรมเชื่อมโยงกับโปรแกรม ABAP และหน้าจอเริ่มต้น
- คุณสามารถเริ่มลำดับหน้าจอจากโปรแกรม ABAP ใดก็ได้โดยใช้คำสั่ง CALL SCREEN
หน้าจอ
- บทสนทนาแต่ละบทใน SAP ระบบจะถูกควบคุมโดยหน้าจอหนึ่งจอขึ้นไป
- คุณสร้างหน้าจอโดยใช้หน้าจอ Painter ใน ABAP Workbench ผ่านธุรกรรม SE51
- แต่ละหน้าจอเป็นของ โปรแกรมเอแบค.
- หน้าจอเหล่านี้ประกอบด้วย "หน้ากากหน้าจอ" หรือ "เค้าโครง" และตรรกะการไหล หน้าจอมีเค้าโครงที่กำหนดตำแหน่งของฟิลด์อินพุต/เอาต์พุตและองค์ประกอบกราฟิกอื่นๆ เช่น ช่องกาเครื่องหมายและปุ่มตัวเลือก ตรรกะการไหลจะกำหนดการประมวลผลเชิงตรรกะภายในหน้าจอ
สถานะ GUI
- แต่ละหน้าจอมีสถานะ GUI ซึ่งเป็นองค์ประกอบอิสระของโปรแกรม
- ซึ่งจะควบคุมแถบเมนู แถบเครื่องมือมาตรฐาน แถบเครื่องมือแอปพลิเคชัน ซึ่งผู้ใช้สามารถเลือกฟังก์ชันในแอปพลิเคชันได้
- คุณสร้างมันขึ้นมาใน ABAP Workbench โดยใช้เมนู Painter.
โปรแกรม ABAP
- แต่ละสถานะหน้าจอและ GUI ในระบบ R/3 เป็นของโปรแกรม ABAP หนึ่งโปรแกรม
- โปรแกรม ABAP ประกอบด้วยโมดูลกล่องโต้ตอบที่ถูกเรียกโดยลอจิกโฟลว์หน้าจอ และยังประมวลผลอินพุตของผู้ใช้จากสถานะ GUI
- โปรแกรม ABAP ที่ใช้หน้าจอเรียกอีกอย่างว่าโปรแกรมโต้ตอบ
- ในพูลโมดูล (โปรแกรมประเภท M); บล็อกการประมวลผลแรกที่ถูกเรียกจะเป็นโมดูลกล่องโต้ตอบเสมอ อย่างไรก็ตาม คุณยังสามารถใช้หน้าจอในโปรแกรม ABAP อื่นๆ ได้ เช่น โปรแกรมปฏิบัติการหรือโมดูลฟังก์ชัน บล็อกการประมวลผลแรกจะถูกเรียกแตกต่างกัน ตัวอย่างเช่น โดยสภาพแวดล้อมรันไทม์หรือการเรียกขั้นตอน จากนั้นลำดับหน้าจอจะเริ่มต้นโดยใช้คำสั่ง CALL SCREEN
ลอจิกการไหลของหน้าจอ
ตรรกะของ Screen Flow แบ่งออกเป็นสี่ส่วนประกอบหลักๆ
- กระบวนการก่อนส่งออก (PBO) เหตุการณ์: ที่ถูกประมวลผลก่อนที่หน้าจอจะปรากฏ
- กระบวนการหลังจากการป้อนข้อมูล (PAI) เหตุการณ์: ซึ่งจะถูกประมวลผลหลังจากการกระทำของผู้ใช้บนหน้าจอ
- ดำเนินการตามคำขอความช่วยเหลือ (ศอ.บต): ซึ่งจะถูกประมวลผลเมื่อกด F1
- ดำเนินการตามคำขอค่า (POV): ซึ่งจะถูกประมวลผลเมื่อกด F4
POH และ POV ได้รับการอธิบายอย่างละเอียดในหน้าเกี่ยวกับ ดำเนินการตามคำขอค่าและดำเนินการตามคำขอความช่วยเหลือ.
ไดนโปร
- หน้าจอพร้อมกับตรรกะการไหลของหน้าจอเรียกว่า Dynpro ("โปรแกรมไดนามิก" เนื่องจากตรรกะการไหลของหน้าจอมีผลต่อการไหลของโปรแกรม)
- dynpro แต่ละตัวจะควบคุมขั้นตอนเดียวของโปรแกรมโต้ตอบของคุณ
- หน้าจอที่เป็นของโปรแกรมได้แก่ หมายเลขลำดับการแสดงผลหน้าจอสามารถเป็นได้ทั้งแบบเชิงเส้นหรือแบบวนซ้ำ จากภายในชุดหน้าจอหนึ่ง คุณยังสามารถเรียกชุดหน้าจออื่นได้ และหลังจากประมวลผลเสร็จแล้ว ก็สามารถกลับไปยังชุดหน้าจอเดิมได้ นอกจากนี้ คุณยังสามารถแทนที่หน้าจอถัดไปที่กำหนดไว้แบบคงที่จากภายในโมดูลไดอะล็อกของโปรแกรม ABAP ได้อีกด้วย
พูลโมดูล ABAP
- เมื่อเกิดเหตุการณ์ PBO หรือ PAI ขึ้น Dynpro จะเรียกใช้โปรแกรมไดอะล็อก ABAP ซึ่งกลุ่มของโปรแกรมเหล่านี้เรียกว่าโมดูลพูล ABAP
- ตัวอย่างเช่น โมดูลที่ถูกเรียกในเหตุการณ์ PAI จะใช้เพื่อตรวจสอบอินพุตของผู้ใช้ และเพื่อทริกเกอร์ขั้นตอนกล่องโต้ตอบที่เหมาะสม เช่น งานอัปเดต
- dynpros ทั้งหมดจะถูกเรียกจากภายใน หนึ่ง ธุรกรรมอ้างถึงกลุ่มโมดูลทั่วไป
โครงสร้างของโปรแกรมโต้ตอบ
แผนภาพโครงสร้างแสดงให้เห็นว่ารหัสธุรกรรม หน้าจอ สถานะ GUI และกลุ่มโมดูลเชื่อมโยงกับโปรแกรมหลักเดียวกันอย่างไร
ผังกระบวนการสำหรับโปรแกรมโต้ตอบ
แผนภาพกระบวนการทำงานแสดงการสลับระหว่างหน้าจอและโปรแกรม ABAP: PBO กรอกข้อมูลในช่องต่างๆ บนหน้าจอ ผู้ใช้ดำเนินการ และ PAI ประมวลผลข้อมูลที่ป้อนก่อนที่จะเรียกหน้าจอถัดไป
วิธีการสร้างโปรแกรมโมดูลพูล
ส่วนประกอบข้างต้นถูกสร้างขึ้นตามลำดับที่กำหนดไว้ ขั้นตอนด้านล่างนี้จะสร้างธุรกรรมที่ใช้งานได้จริงจากโมดูลพูลที่ว่างเปล่า
- สร้างกลุ่มโมดูล: ใน SE80 หรือใน SE38 ให้สร้างโปรแกรมที่มีชื่อขึ้นต้นด้วย SAPMZ และตั้งค่าประเภทโปรแกรมเป็น M – กลุ่มโมดูลไม่สามารถเปลี่ยนประเภทในภายหลังได้โดยไม่ต้องลบวัตถุนั้นก่อน
- ประกาศข้อมูลทั่วโลก: ใส่คำสั่ง TABLES และตัวแปรส่วนกลางไว้ในไฟล์ include ด้านบนสุด ซึ่งโมดูลไดอะล็อกทุกตัวในกลุ่มโมดูลสามารถอ่านได้
- ออกแบบหน้าจอ: สร้างหน้าจอที่ 100 ด้วยหน้าจอ Painter (SE51) วางช่องป้อนข้อมูลบนเค้าโครง และป้อนหมายเลขหน้าจอถัดไปในคุณลักษณะของหน้าจอ
- เขียนตรรกะการไหลของโปรแกรม: ในแท็บตรรกะการไหล ให้เรียกใช้โมดูลหนึ่งสำหรับ PBO และอีกหนึ่งโมดูลสำหรับ PAI ดังแสดงด้านล่าง
- สถานะการสร้าง GUI: สร้างสถานะด้วยเมนู Painter (SE41) และตั้งค่าในโมดูล PBO ด้วยคำสั่ง SET PF-STATUS เพื่อให้ Save, Back และ Exit เข้าถึงโปรแกรมในฐานะรหัสฟังก์ชัน
- เชื่อมโยงรหัสธุรกรรม: ใน SE93 ให้สร้างธุรกรรมแบบโต้ตอบ ตั้งชื่อโมดูลพูล และป้อน 100 เป็นหน้าจอเริ่มต้น
* Screen 100, flow logic PROCESS BEFORE OUTPUT. MODULE status_0100. PROCESS AFTER INPUT. MODULE user_command_0100. * Module pool SAPMZDEMO MODULE status_0100 OUTPUT. SET PF-STATUS 'STATUS_100'. SET TITLEBAR 'TITLE_100'. ENDMODULE. MODULE user_command_0100 INPUT. CASE sy-ucomm. WHEN 'SAVE'. PERFORM save_data. WHEN 'BACK' OR 'EXIT'. LEAVE TO SCREEN 0. ENDCASE. ENDMODULE.
💡 เคล็ดลับ: คำสั่ง LEAVE TO SCREEN 0 จะปิดหน้าจอปัจจุบันและกลับไปยังจุดที่เรียกใช้ ซึ่งเป็นวิธีมาตรฐานในการออกจากหน้าต่างโต้ตอบอย่างราบรื่น




