ABAP Code:คลิกที่ line item แล้วส่งค่าไปอีกหน้าจอหนึ่ง(อีกโปรแกรมหนึ่ง)

SAP ABAP คลิกที่ line item แล้วส่งค่าไปอีกหน้าจอหนึ่ง(อีกโปรแกรมหนึ่ง)

SAP ABAP คลิกที่ line item แล้วส่งค่าไปอีกหน้าจอหนึ่ง(อีกโปรแกรมหนึ่ง)

หลักการ คือ ส่งค่า Parameter ID จากโปรแกรม A ไปโปรแกรม B โดยที่โปรแกรม B จะเอาค่า Parameter ID ของโปรแกรม A มา Process เพื่อให้ได้ผลลัพธ์ที่ต้องการ

วิธีการ ให้เขียนคำสั่งส่งค่า Parameter ID จากโปรแกรม A โดยในที่นี้ กำหนดให้ อีเวนต์ของการส่งค่านั้น ก็คือ เมื่อ ดับเบิ้ลคลิกที่ Line item แล้ว ให้แสดง Detail ของ line item นั้น(ส่งค่า Parameter ID ไปยังโปรแกรม B)


Code PROGRAM_A

REPORT PROGRAM_A.

TABLES: kna1.

DATA: BEGIN OF t_itabA OCCURS 0,
kunnr LIKE kna1-kunnr,
name1 LIKE kna1-name1,
END OF t_itabA.

DATA: lin TYPE i .

SELECT-OPTIONS: s_kunnr FOR kna1-kunnr OBLIGATORY.
AT LINE-SELECTION.
GET CURSOR LINE lin.
CLEAR: t_itabA-kunnr.
READ LINE lin FIELD VALUE t_itabA-kunnr.
IF t_itabA-kunnr <> ''.
SET PARAMETER ID: 'KUN' FIELD t_itabA-kunnr.
CALL TRANSACTION 'PROGRAM_B' AND SKIP FIRST SCREEN.
ENDIF.

START-OF-SELECTION.
PERFORM select_data.
PERFORM write_data.

FORM select_data .
SELECT kna1~kunnr kna1~name1
INTO CORRESPONDING FIELDS OF TABLE t_itabA
FROM kna1
WHERE kunnr IN s_kunnr.
ENDFORM. " select_data

FORM write_data.
LOOP AT t_itabA.
WRITE: / t_itabA-kunnr, t_itabA-name1.
ENDLOOP.
ENDFORM. "write_data

Code PROGRAM_B

REPORT PROGRAM_B

TABLES: kna1.

DATA: BEGIN OF t_itabB OCCURS 0,
kunnr LIKE kna1-kunnr,
land1 LIKE kna1-land1,
name1 LIKE kna1-name1,
name2 LIKE kna1-name2,
ort01 LIKE kna1-ort01,
pstlz LIKE kna1-pstlz,
END OF t_itabB.

DATA: lin TYPE i .
DATA: para TYPE tpara-paramid VALUE 'KUN',
p_kunnr2 TYPE kna1-kunnr.

GET PARAMETER ID para FIELD p_kunnr2.
PARAMETER: p_kunnr LIKE kna1-kunnr.
IF p_kunnr2 <> ''.
p_kunnr = p_kunnr2.
ENDIF.

START-OF-SELECTION.
PERFORM select_data.
PERFORM write_data.

FORM select_data .
SELECT kna1~kunnr kna1~land1 kna1~name1 kna1~name2
kna1~ort01 kna1~pstlz
INTO CORRESPONDING FIELDS OF TABLE t_itabB
FROM kna1
WHERE kunnr EQ p_kunnr.
ENDFORM. " select_data

FORM write_data.
LOOP AT t_itabB.
WRITE: / 'Customer Number: ',t_itabB-kunnr ,
/ 'Country Key: ',t_itabB-land1 ,
/ 'Name 1: ',t_itabB-name1 ,
/ 'Name 2: ',t_itabB-name2 ,
/ 'City: ',t_itabB-ort01 ,
/ 'Postal Code: ',t_itabB-pstlz .
ENDLOOP.
ENDFORM. "write_data

ปล. ตรงข้อความตัวหนานั้น ตัวสำคัญในการส่งค่า Parameter และ รับค่า Parameter เลยครับ  Step คือ โปรแกรม A ส่ง โปรแกรม B ทำ แต่เราสามารถส่งค่าในตัวมันเองได้ด้วยนะครับ