欢迎来到萧静默的博客

书山有路勤为径,学海无涯苦作舟。

ABAP 业务处理中的弹窗提示

网上各种弹窗技术,以下仅记录业务中用到的。

第一,ALV按钮事件中,弹窗提示。

使用过的是

'POPUP_TO_CONFIRM'
WHEN 'SCRAP'.
      LOOP AT IT_ALV INTO WA_ALV WHERE SEL EQ 'X'.
        SELECT VBELN INTO TABLE @DATA(VBAP_TEMP) FROM ZTSD027A WHERE VBELN = @WA_ALV-VBELN AND TYPE = 'S'.
        CLEAR: WA_ALV.
      ENDLOOP.
      IF VBAP_TEMP IS NOT INITIAL.
        CALL FUNCTION 'POPUP_TO_CONFIRM'
          EXPORTING
            TEXT_QUESTION         = '此合同已经传入过OA,是否需要再次上传?'
            TEXT_BUTTON_1         = ''(001)
            TEXT_BUTTON_2         = ''(002)
            DEFAULT_BUTTON        = '2'
            DISPLAY_CANCEL_BUTTON = ''
          IMPORTING
            ANSWER                = LV_ANSWER
          EXCEPTIONS
            TEXT_NOT_FOUND        = 1
            OTHERS                = 2.
        IF SY-SUBRC <> 0.
        ENDIF.

        IF LV_ANSWER = '2' OR LV_ANSWER = 'A'.
          EXIT.
        ELSEIF LV_ANSWER = '1'.
          PERFORM DOWN_DATA.
          PERFORM MOVE_ALV TABLES IT_ALV.
        ELSE.
          MESSAGE '不要瞎点!' TYPE 'S' .
        ENDIF.

TEXT_QUESTION  :它的功能就是写入要显示给用户的信息。

ICON_BUTTON_1 :按钮上显示信息 返回值是1

ICON_BUTTON_2 :按钮上显示信息 返回值是2

DEFAULT_BUTTON :调用函数后哪个按钮被默认选中

DISPLAY_CANCEL_BUTTON  :显示取消的按钮并可用

START_COLUMN    ;TART_ROW   :这两个是一对的控制对话框在画面上显示的位置

ANSWER  :这个很重要是存放你选择哪个BUTTON返回值的,定义为一位的CHAR型就可以了,可以根据返回值进行操作 

 

 

第二,用于ALV取数前的条件屏幕判断。

有时候,对于屏幕条件需要在执行程序前判断 不大方便时,采取了一个折中措施,放在执行开始前。

屏幕如下

SELECTION-SCREEN BEGIN OF BLOCK BLK02 WITH FRAME TITLE TEXT-004.
SELECT-OPTIONS: S_WERKS FOR MARC-WERKS MODIF ID M1,        "工厂
                S_LGORT FOR MARD-LGORT MODIF ID M1,        "库位
                S_MATNR FOR MARA-MATNR MODIF ID M1,        "物料编码
                S_MAKTX FOR MAKT-MAKTX MODIF ID M1,        "物料描述
                S_MTART FOR MARA-MTART MODIF ID M1,        "物料类型
                S_MATKL FOR MARA-MATKL MODIF ID M1,        "物料组
                S_ERNAM FOR MARA-ERNAM MODIF ID M1,        "创建人
                S_ERSDA FOR MARA-ERSDA MODIF ID M1.        "创建时间
SELECTION-SCREEN END OF BLOCK BLK02.

一般检查用法:

*AT SELECTION-SCREEN.
*  IF S_WERKS IS INITIAL.
*    MESSAGE '请填入一个查询工厂' TYPE 'E'.
*  ENDIF.
*  IF S_LGORT IS INITIAL.
*    MESSAGE '请填入一个查询库位' TYPE 'E'.
*  ENDIF.

弹窗做法:

IF S_WERKS IS INITIAL.
*    MESSAGE '请填入一个查询工厂' TYPE 'E' DISPLAY LIKE 'S'.
    CALL FUNCTION 'POPUP_DISPLAY_MESSAGE'
      EXPORTING
        TITEL = '请填入一个查询工厂'
        MSGID = '00'
        MSGTY = 'E'
        MSGNO = '001'
        MSGV1 = '请填入一个查询工厂'
*       MSGV2 =
*       MSGV3 =
*       MSGV4 =
*       START_COLUMN       = 5
*       START_ROW          = 5
      .
    STOP.
  ENDIF.
  IF S_LGORT IS INITIAL.
*    MESSAGE '请填入一个查询库位' TYPE 'E'.
    CALL FUNCTION 'POPUP_DISPLAY_MESSAGE'
      EXPORTING
        TITEL = '请填入一个查询库位'
        MSGID = '00'
        MSGTY = 'E'
        MSGNO = '001'
        MSGV1 = '请填入一个查询库位'
*       MSGV2 =
*       MSGV3 =
*       MSGV4 =
*       START_COLUMN       = 5
*       START_ROW          = 5
      .
    STOP.
  ENDIF.

 

posted @ 2021-08-16 13:39  萧静默  阅读(856)  评论(0编辑  收藏  举报