Friday, April 2, 2010

วิธีการเรียกหน้าจอ Standard จาก ABAP Report

วิธีการเรียกหน้าจอ Standard จาก ABAP Report เช่นจาก ABAP Report เมื่อเรา Double Click แล้วให้แสดงหน้าจอของ Sale Order (Transaction VA03) ในกรณีที่บรรทัดที่เรา Double Click นั้นเป็นเลขที่ Sale Order
ขั้นตอนเป็นดังนี้
1. ให้ Select ข้อมูลที่เราต้องการแสดงในหน้าแรกก่อน ในตัวอย่างนี้ขอแสดงข้อมูลเลขที่ Sale Order โดยมีการรับค่าจากหน้าจอเป็น select-options และนำมา Query ในตาราง VBAK จากนั้นให้นำข้อมูลที่ Query ได้มาเขียนออกหน้าจอ
SELECT-OPTIONS s_vbeln for vbak-vbeln.

START-OF-SELECTION.
SELECT * FROM vbak INTO TABLE it_vbak
WHERE vbeln in s_vbeln.
LOOP AT it_vbak.
WRITE:/ it_vbak-vbeln.
HIDE it_vbak.
ENDLOOP.

จะสังเกตเห็นว่าตอนที่เรา WRITE ข้อมูลออกหน้าจอนั้นได้เรียกคำสั่ง HIDE ด้วย ซึ่งคำสั่งนี้จะมีผลเมื่อต้องการให้รายงานของเราสามารถ Drill-Down ได้ โดยใช้คู่กับ Event: AT LINE-SELECTION

2. เราจะใช้ Event: AT LINE-SELECTION. เพื่อให้สามารถ Double Click ได้ จากนั้นให้เรียกคำสั่ง CALL TRANSACTION เพื่อใช้ในการเปิดหน้าจอ Standard
AT LINE-SELECTION.
IF sy-lsind = 1.
SET PARAMETER ID 'AUN' FIELD it_vbak-vbeln.
CALL TRANSACTION 'VA03' AND SKIP FIRST SCREEN.
ENDIF.

จากตัวอย่างเราได้มีการเปิดหน้าจอ โดยก่อนเปิดเราต้อง Set Parameter ID ก่ิ่อน เพราะตอนที่เปิด Transaction ของ Standard นั้น เราจะ Default ค่าของเลขที่ Sale Order ให้แล้วเปิดเลย

Completed Code:

TABLES vbak.

DATA: it_vbak TYPE TABLE OF vbak WITH HEADER LINE.

SELECT-OPTIONS s_vbeln for vbak-vbeln.

START-OF-SELECTION.
SELECT * FROM vbak INTO TABLE it_vbak
WHERE vbeln in s_vbeln.
LOOP AT it_vbak.
WRITE:/ it_vbak-vbeln.
HIDE it_vbak.
ENDLOOP.

AT LINE-SELECTION.
IF sy-lsind = 1.
SET PARAMETER ID 'AUN' FIELD it_vbak-vbeln.
CALL TRANSACTION 'VA03' AND SKIP FIRST SCREEN.
ENDIF.

No comments:

Post a Comment