缘由:当使用标准T-code打印Script表单需要增加或调整内容时(如F.62抓取供应商ADRC对应版本名称),标准T-code抓取的供应商一般资料LFA1的资料,而调整标准做隐式增强比较不方便。
此时可以在Script调用Program进行数据的处理,传入和传出的参数需要使用Structure承接。以下示例说明。
1.SE71调用Program之Perform。
固定格式
/: PERFORM GET_VAL IN PROGRAM Z_GRUSE_SE71TEST
/: USING &BSEG-LIFNR&
/: CHANGING &L_NAME&
/: ENDPERFORM
/
/ &L_NAME&
2.ABAP Program:Z_GRUSE_SE71TEST。
传入参数和传出参数要用Structure承接
REPORT Z_GRUSE_SE71TEST.
FORM GET_VAL TABLES IN_TAB STRUCTURE ITCSY
OUT_TAB STRUCTURE ITCSY.
DATA: L_NAME(255) TYPE C.
DATA: GT_ADRC LIKE ADRC OCCURS 0 WITH HEADER LINE.
CLEAR:L_NAME,GT_ADRC[],GT_ADRC.
READ TABLE IN_TAB INDEX 1.
* READ TABLE OUT_TAB INDEX 1.
* L_NAME = 'TEST1223'.
* MOVE L_NAME TO OUT_TAB-VALUE.
SELECT SINGLE ADRNR
INTO L_ADRNR
FROM LFA1
WHERE LIFNR = IN_TAB-VALUE.
CALL FUNCTION 'ADDR_LANGUAGE_MAP_TO_VERSION'
EXPORTING
IV_LANGUAGE = SY-LANGU
IV_APPLICATION_COMPONENT = 'MM_PUR_VENDOR'
IMPORTING
EV_NATION = L_EV_NATION
* EXCEPTIONS
* PARAMETER_ERROR = 1
* INTERNAL_ERROR = 2
* OTHERS = 3
.
IF SY-SUBRC <> 0.
* Implement suitable error handling here
ENDIF.
*取得ADRC
SELECT *
FROM ADRC
INTO TABLE GT_ADRC
WHERE ADDRNUMBER = L_ADRNR
AND NATION = L_EV_NATION.
READ TABLE GT_ADRC INDEX 1.
IF SY-SUBRC EQ 0.
DATA: L_STR(255) TYPE C.
CLEAR:L_STR.
READ TABLE OUT_TAB WITH KEY NAME = 'L_NAME'.
CONCATENATE GT_ADRC-NAME1 GT_ADRC-NAME2 GT_ADRC-NAME3 GT_ADRC-NAME4
INTO L_STR.
OUT_TAB-VALUE = L_STR.
MODIFY OUT_TAB INDEX SY-TABIX.
ELSE.
ENDIF.
ENDFORM.
传入参数:
值Value:
传出参数Value:
3. SE71 SAPScript的debug方法
打开SE71,Form空白,点击“Utilities--Activate Debugger”,下方提示“SAPscript form debugger was activated”。
到标准T-code执行表单,出现下图点OK即可进行SAPscript Debug过程。