บทช่วยสอนหน้าจอย่อย ABAP: เรียกหน้าจอย่อยเข้า SAP
ก่อนที่คุณจะอ่านบทช่วยสอนนี้ คุณต้องแน่ใจว่า Dialog Program คืออะไร
โทรหน้าจอย่อย
- หน้าจอย่อยคือหน้าจออิสระที่แสดงในพื้นที่ของหน้าจออื่น (“หน้าจอหลัก”)
- หน้าจอย่อยช่วยให้คุณสามารถฝังหน้าจอหนึ่งไว้ภายในอีกหน้าจอหนึ่งขณะรันไทม์ได้ คุณสามารถรวมหลายหน้าจอย่อยบนหน้าจอหลักได้
- คำว่าหน้าจอย่อยใช้กับทั้งหน้าจอที่คุณฝัง และพื้นที่บนหน้าจอหลักที่คุณวางไว้ บทช่วยสอนนี้เกี่ยวกับพื้นที่หน้าจอย่อย หน้าจอจริงที่สร้างขึ้นผ่านธุรกรรม SE51 เรียกว่าหน้าจอย่อยหากกำหนดไว้ในคุณลักษณะหน้าจอ
- เมื่อคุณใช้หน้าจอย่อย ลอจิกโฟลว์ของหน้าจอที่ฝังจะถูกฝังอยู่ในโฟลว์ลอจิกของหน้าจอหลักด้วย ดังนั้น การใช้หน้าจอย่อยบนหน้าจอก็เหมือนกับการใช้การรวมใน โปรแกรม ABAP.
หากต้องการใช้หน้าจอย่อย คุณต้องปฏิบัติตามสามขั้นตอนง่ายๆ
- กำหนดพื้นที่หน้าจอย่อยบนหน้าจอ
- กำหนดหน้าจอย่อยที่เหมาะสม
- รวมหน้าจอย่อยไว้ในพื้นที่หน้าจอย่อย
นอกจากนี้ คุณต้องปรับกรอบของหน้าจอย่อยและหน้าจอหลักด้วย คุณต้องตั้งชื่อในช่องชื่อฟิลด์
นอกจากนี้ คุณยังต้องปรับฟิลด์ภายในหน้าจอย่อยเพื่อให้ปรากฏในหน้าจอหลักด้วย ในกรณีที่กำหนดหน้าจอย่อยให้ใหญ่กว่าพื้นที่ที่มีอยู่ในหน้าจอหลัก จะมองเห็นเฉพาะส่วนของหน้าจอย่อยที่เหมาะกับพื้นที่ที่มีอยู่เท่านั้น พื้นที่จะวัดจากมุมซ้ายบนของหน้าจอเสมอ ดังนั้นคุณควรดูแลอย่างเหมาะสมในขณะกำหนดพื้นที่หน้าจอย่อยและสร้างหน้าจอย่อย
ตัวอย่าง
ตัวอย่างเช่น เราได้กำหนดพื้นที่หน้าจอย่อยสองหน้าจอบนหน้าจอหลัก และได้แนบหน้าจอย่อยสองหน้าจอที่แตกต่างกันเข้ากับพื้นที่ที่เกี่ยวข้อง เมื่อใดก็ตามที่มีการเรียกหน้าจอหลัก PBO ของหน้าจอหลักจะถูกเรียก แต่ก่อนการแสดงผล จะเรียก PBO ของแต่ละหน้าจอที่แนบมากับพื้นที่หน้าจอย่อยบนหน้าจอหลักด้วย
คุณสามารถรวมหน้าจอย่อยได้โดยใช้คำสั่ง CALL SUBSCREEN ในโฟลว์ลอจิกของหน้าจอหลัก
หากต้องการรวมหน้าจอย่อยในพื้นที่หน้าจอย่อยของหน้าจอหลักและเรียกใช้ตรรกะการไหล PBO ให้ใช้คำสั่งต่อไปนี้ในเหตุการณ์ PBO ของหน้าจอหลัก:
PROCESS BEFORE OUTPUT. CALL SUBSCREEN <area> INCLUDING [<prog>] <dynp>.
คำสั่งนี้กำหนดหมายเลขให้กับหน้าจอย่อย ไปยังบริเวณหน้าจอย่อยที่เรียกว่า - คุณยังสามารถระบุโปรแกรมที่จะกำหนดหน้าจอย่อยได้ (ตัวเลือก) หากคุณไม่ระบุโปรแกรมอย่างชัดเจน ระบบจะค้นหาหน้าจอย่อยในโปรแกรม ABAP เดียวกันกับโปรแกรมหลัก หากไม่พบหน้าจอย่อยที่เกี่ยวข้อง จะเกิดข้อผิดพลาดรันไทม์ขึ้น ตรรกะการไหลของ PBO ของหน้าจอย่อยจะรวมอยู่ที่จุดเดียวกันด้วย ซึ่งสามารถเรียกโมดูล PBO ของโปรแกรม ABAP ที่กำหนดหน้าจอย่อยได้ ที่ส่วนท้ายของ PBO ของหน้าจอย่อย ฟิลด์ส่วนกลางจากโปรแกรมจะถูกส่งผ่านไปยังฟิลด์หน้าจอที่มีชื่อเหมือนกันในหน้าจอย่อย ตรรกะการไหลของ PBO ของหน้าจอย่อยสามารถรวมหน้าจอย่อยเพิ่มเติมได้
ชื่อ ของพื้นที่หน้าจอย่อยต้องป้อนโดยตรงโดยไม่มีลูกน้ำกลับหัว คุณสามารถระบุชื่อได้ และ ไม่ว่าจะเป็นตัวอักษรหรือตัวแปร หากคุณใช้ตัวแปร คุณต้องประกาศและเติมตัวแปรที่มีชื่อเหมือนกันในโปรแกรม ABAP หมายเลขหน้าจอ ต้องมีความยาว 4 ตัวอักษร หากคุณไม่ได้กำหนดหน้าจอย่อยให้กับพื้นที่ หน้าจอนั้นจะยังคงว่างเปล่า
ในการเรียกตรรกะการไหลของ PAI ของหน้าจอย่อย ให้ใช้คำสั่งต่อไปนี้ในตรรกะการไหลของ PAI ของหน้าจอหลัก:
PROCESS AFTER INPUT. CALL SUBSCREEN <area>.
คำสั่งนี้รวมถึงตรรกะการไหลของ PAI ของหน้าจอย่อยที่รวมอยู่ในพื้นที่หน้าจอย่อย ในงาน ป.ป.ช. ซึ่งสามารถเรียกโมดูล PAI ของโปรแกรม ABAP ที่กำหนดหน้าจอย่อยได้ ข้อมูลจะถูกส่งระหว่างฟิลด์ที่มีชื่อเหมือนกันในหน้าจอย่อยและโปรแกรม ABAP เมื่อมีการทริกเกอร์เหตุการณ์ PAI หรือที่คำสั่ง FIELD ที่สอดคล้องกันในลอจิกโฟลว์ PAI ของหน้าจอย่อย
สิ่งที่น่าจดจำ
- ชื่อขององค์ประกอบของหน้าจอย่อยภายในหน้าจอไม่ควรซ้ำกัน
- คุณไม่ควรแนบ OK_CODE หรือ FCODE เข้ากับหน้าจอย่อย OK_CODE ของหน้าจอหลักคือ OK_CODE ของหน้าจอย่อย
- หน้าจอย่อยไม่สามารถมีโมดูลกล่องโต้ตอบใด ๆ ที่มี SET TITLEBAR, SET PF-STATUS, SET SCREEN, LEAVE SCREEN หรือ LEAVE TO SCREEN ซึ่งจะทำให้เกิดข้อผิดพลาดรันไทม์
- คุณต้องเรียกมันในโฟลว์ลอจิก (ทั้ง PBO และ PAI) ของหน้าจอหลัก
- ไม่อนุญาตให้ใช้ CALL SUBSCREEN ในคำสั่ง CHAIN..ENDCHAIN และ LOOP ENDLOOP
- ไม่สามารถมีโมดูล AT EXIT-COMMAND
- ฟิลด์ที่คุณใช้คือฟิลด์ส่วนกลาง จะต้องประกาศไว้ด้านบนสุด ได้แก่
- หากใช้หน้าจอย่อยจากที่อื่น โปรแกรมโต้ตอบ การถ่ายโอนข้อมูลจะไม่เกิดขึ้นเว้นแต่คุณจะเพิ่มรหัสเฉพาะ