第一步:调用ALV函数的时候,在I_CALLBACK_USER_COMMAND中确定好点击事件的FORM名,比如这里的USER_COMMAND
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
EXPORTING
I_GRID_TITLE = '订单和物料信息'
I_CALLBACK_PROGRAM = SY-REPID
I_CALLBACK_PF_STATUS_SET = 'FRM_STATUS' "调用GUI状态
I_CALLBACK_USER_COMMAND = 'USER_COMMAND' "调用屏幕点击事件
IS_LAYOUT_LVC = GS_LAYOUT
IT_FIELDCAT_LVC = GT_FIELDCAT[]
I_DEFAULT = 'X'
I_SAVE = 'A'
TABLES
T_OUTTAB = GT_TAB[]
EXCEPTIONS
PROGRAM_ERROR = 1
OTHERS = 2.
第二步: 编写USER_COMMAND中的逻辑,注意引入相关参数
FORM USER_COMMAND USING P_UCOMM LIKE SY-UCOMM
P_RS_SELFIELD TYPE SLIS_SELFIELD.
CASE P_UCOMM.
"点击跳转
WHEN '&IC1'.
PERFORM FRM_SAVE. "保存ALV上的改动到内表
IF P_RS_SELFIELD-FIELDNAME = 'MATNR' OR P_RS_SELFIELD-FIELDNAME = 'MAKTX'.
READ TABLE GT_TAB INDEX P_RS_SELFIELD-TABINDEX.
IF SY-SUBRC = 0.
PERFORM FRM_GETINFO1 USING GT_TAB-MATNR. "取数
PERFORM FRM_FIELDCAT1. "定义FIELDCAT
PERFORM FRM_OUTPUT1. "调用ALV函数
ENDIF.
ELSEIF P_RS_SELFIELD-FIELDNAME = 'AUFNR'."生产订单携带订单号跳转CO03。
READ TABLE GT_TAB INDEX P_RS_SELFIELD-TABINDEX.
SET PARAMETER ID: 'ANR' FIELD GT_TAB-AUFNR.
CALL TRANSACTION 'CO03' AND SKIP FIRST SCREEN.
ELSE.
EXIT.
ENDIF.
WHEN OTHERS.
ENDCASE.
ENDFORM.