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 0.
* Implement suitable error handling here

    READ TABLE GT_DDSHRETVAL INDEX INTO DATA(LS_MATNR).
    GV_MATNR = LS_MATNR-FIELDVAL.
  ENDIF.

ENDMODULE.

 

屏幕逻辑流代码:

PROCESS BEFORE OUTPUT.
  MODULE STATUS_9000.
*
PROCESS AFTER INPUT.
  MODULE USER_COMMAND_9000.

PROCESS ON VALUE-REQUEST.  "F4帮助
    FIELD GV_MATNR MODULE F_MATNR_F4.

PROCESS ON HELP-REQUEST.   "F1帮助

posted @ 2021-12-08 16:06  万有引力啊  阅读(290)  评论(0)    收藏  举报