转载自: 大漠杀手
环境:ECC6 IDES+windowsXP
目标:在DIALOG中使用回调函数/编辑框只能选不能输
(1) 创建结构ZSCALLBACK
(2) 创建一dialog程序
程序代码:
*&---------------------------------------------------------------------* *& Report ZTEST_CALLBACK *& *&---------------------------------------------------------------------* *& *& *&---------------------------------------------------------------------* REPORT ZTEST_CALLBACK. TYPE-POOLS SHLP . DATA:OK_CODE TYPE SY-UCOMM,"功能码 OK_SAVE TYPE SY-UCOMM. TABLES:ZSCALLBACK. DATA:ITAB LIKE ZSCALLBACK OCCURS 0 WITH HEADER LINE. CALL SCREEN 0100. *&---------------------------------------------------------------------* *& Module STATUS_0100 OUTPUT *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* MODULE STATUS_0100 OUTPUT. SET PF-STATUS '0100'. * SET TITLEBAR 'xxx'. ENDMODULE. " STATUS_0100 OUTPUT *&---------------------------------------------------------------------* *& Module USER_COMMAND_0100 INPUT *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* MODULE USER_COMMAND_0100 INPUT. OK_SAVE = OK_CODE. CLEAR: OK_CODE. CASE OK_SAVE. WHEN 'EXIT' OR 'CANC' OR 'RW' OR 'BACK'."退出 LEAVE PROGRAM . ENDCASE. ENDMODULE. " USER_COMMAND_0100 INPUT *&---------------------------------------------------------------------* *& Module F4 INPUT *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* MODULE F4 INPUT. CLEAR:ITAB,ITAB[]. ITAB-MANDT = SY-MANDT. ITAB-ID = '01'. ITAB-NAME = '01'. ITAB-CLASS = '01'. APPEND ITAB . CLEAR ITAB. ITAB-MANDT = SY-MANDT. ITAB-ID = '02'. ITAB-NAME = '02'. ITAB-CLASS = '02'. APPEND ITAB . CLEAR ITAB. ITAB-MANDT = SY-MANDT. ITAB-ID = '03'. ITAB-NAME = '03'. ITAB-CLASS = '03'. APPEND ITAB . CLEAR ITAB. DATA RETURN_TAB LIKE DDSHRETVAL OCCURS 1 WITH HEADER LINE. DATA DYNPFIELDS LIKE DYNPREAD OCCURS 3 WITH HEADER LINE. CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST' EXPORTING WINDOW_TITLE = '测试回调函数' RETFIELD = 'MANDT' DYNPPROG = SY-REPID DYNPNR = SY-DYNNR DDIC_STRUCTURE = 'ZSCALLBACK' DYNPROFIELD = 'X' VALUE_ORG = 'S' DISPLAY = 'F' CALLBACK_PROGRAM = SY-CPROG CALLBACK_FORM = 'F4CALLBACK' TABLES VALUE_TAB = ITAB RETURN_TAB = RETURN_TAB EXCEPTIONS OTHERS = 0. ENDMODULE. " F4 INPUT *&---------------------------------------------------------------------* *& Form F4CALLBACK *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * -->RECORD_TAB text * -->SHLP text * -->CALLCONTROL text *----------------------------------------------------------------------* FORM F4CALLBACK TABLES RECORD_TAB STRUCTURE SEAHLPRES CHANGING SHLP TYPE SHLP_DESCR_T CALLCONTROL LIKE DDSHF4CTRL. DATA: INTERFACE LIKE LINE OF SHLP-INTERFACE, FP LIKE LINE OF SHLP-FIELDPROP. CLEAR INTERFACE. CLEAR FP. FP-SHLPOUTPUT = 'X'. MODIFY SHLP-FIELDPROP FROM FP TRANSPORTING SHLPOUTPUT WHERE SHLPOUTPUT = SPACE. INTERFACE-SHLPFIELD = 'ID'. INTERFACE-VALFIELD = 'ZSCALLBACK-ID'. APPEND INTERFACE TO SHLP-INTERFACE. INTERFACE-SHLPFIELD = 'NAME'. INTERFACE-VALFIELD = 'ZSCALLBACK-NAME'. APPEND INTERFACE TO SHLP-INTERFACE. INTERFACE-SHLPFIELD = 'CLASS'. INTERFACE-VALFIELD = 'ZSCALLBACK-CLASS'. APPEND INTERFACE TO SHLP-INTERFACE. ENDFORM. " BO_CALLBACK_FORM *屏幕代码: PROCESS BEFORE OUTPUT. MODULE STATUS_0100. * PROCESS AFTER INPUT. MODULE USER_COMMAND_0100. PROCESS ON VALUE-REQUEST. FIELD ZSCALLBACK-ID MODULE F4 . FIELD ZSCALLBACK-NAME MODULE F4. FIELD ZSCALLBACK-CLASS MODULE F4 .
(3) 测试
Good!测试结果完全符合预期目的
此文档仅供学习,因为此文档而导致的任何后果本人不承担任何责任。如要发布,请尊重作者劳动成果说明出处。
0 Comments.