• 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.

  • 相关阅读:
    第二十课字符串
    数学归纳法:搞定循环与递归的钥匙
    11预处理命令下
    Xshell6无法连接上虚拟机的解决方法
    redis数据库常用命令
    redis使用get命令,中文乱码问题
    Ubuntu下redis的安装和简单操作
    启动hbase后,使用指令进入shell命令行模式时报错"wrong number of arguments (0 for 1)"
    启动hbase报错:“SLF4J: Class path contains multiple SLF4J bindings.”解决方法
    ./bin/hadoop 提示“没有那个文件或目录”解决方法
  • 原文地址:https://www.cnblogs.com/BruceKing/p/15146992.html
Copyright © 2020-2023  润新知