ABAP DIALOG程序DEMO
主程序代码:
REPORT YYHD_DIALOG_TEST.
"定义全局变量,用以屏幕值交互
DATA OKCODE_9000 TYPE SY-UCOMM. "屏幕名称
DATA GT_DDSHRETVAL TYPE TABLE OF DDSHRETVAL.
DATA GV_MATNR TYPE MATNR.
DATA:ZEDIT TYPE CHAR1.
DATA P_ANSWER TYPE CHAR1.
CALL SCREEN '9000'.
*&---------------------------------------------------------------------*
*& Module STATUS_9000 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE STATUS_9000 OUTPUT.
SET PF-STATUS 'Y001'.
LOOP AT SCREEN.
IF SCREEN-NAME = 'GV_MATNR'.
SCREEN-INPUT = ZEDIT.
ENDIF.
MODIFY SCREEN.
ENDLOOP.
* SET TITLEBAR 'xxx'.
ENDMODULE.
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_9000 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE USER_COMMAND_9000 INPUT.
OKCODE_9000 = SY-UCOMM.
CASE OKCODE_9000.
WHEN 'BACK'.
LEAVE PROGRAM.
WHEN 'ZEDIT'.
LOOP AT SCREEN.
IF SCREEN-NAME = 'GV_MATNR'.
IF SCREEN-INPUT = '1'.
ZEDIT = '0'.
ELSE.
ZEDIT = '1'.
ENDIF.
ENDIF.
ENDLOOP.
WHEN 'ZEXIT'.
CALL FUNCTION 'POPUP_TO_CONFIRM'
EXPORTING
TITLEBAR = '确认退出'
TEXT_QUESTION = 'sure?'
TEXT_BUTTON_1 = '是'
ICON_BUTTON_1 = 'ICON_UNLOCKED'
START_COLUMN = 25 "位置确认
START_ROW = 6 "位置确认
IMPORTING
ANSWER = P_ANSWER
EXCEPTIONS
TEXT_NOT_FOUND = 1
OTHERS = 2.
IF SY-SUBRC = 0.
* Implement suitable error handling here
CASE P_ANSWER.
WHEN '1'.
MESSAGE '你选择了是' TYPE 'S'.
WHEN '2' .
WHEN OTHERS.
MESSAGE '你取消了' TYPE 'S'.
ENDCASE.
ENDIF.
WHEN OTHERS.
ENDCASE.
ENDMODULE.
*&---------------------------------------------------------------------*
*& Module F_MATNR_F4 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE F_MATNR_F4 INPUT.
SELECT MARA~MATNR,
MAKT~MAKTX
INTO TABLE @DATA(GT_MATNR)
FROM MARA
INNER JOIN MAKT ON MARA~MATNR = MAKT~MATNR
AND MAKT~SPRAS = @SY-LANGU
WHERE MTART = 'ZA90'.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
RETFIELD = 'MATNR'
DYNPPROG = SY-REPID
DYNPNR = SY-DYNNR
VALUE_ORG = 'S'
CALLBACK_PROGRAM = SY-REPID
TABLES
VALUE_TAB = GT_MATNR
RETURN_TAB = GT_DDSHRETVAL
EXCEPTIONS
PARAMETER_ERROR = 1
NO_VALUES_FOUND = 2
OTHERS = 3.
IF SY-SUBRC =