ABAP 常用的弹窗(确认弹窗、填写值弹窗)

业务背景
1.当用户做一些比较重要的操作时需要弹出一个窗口,让用户进行确认。
2.或者进行操作时,需要填写重要信息。

实例
1.确认弹窗代码

"弹出确认框
  DATA:lv_yn TYPE STRING.
   CALL FUNCTION 'POPUP_TO_CONFIRM_STEP'
    EXPORTING
      titel          = '重要提示'
      textline1      = '你确定要这个么?'
      cancel_display = 'X'  "space 不显示cancel按钮,'X'是显示取消按钮
    IMPORTING
      answer         = lv_yn.  "确定= J=N  取消 = A
  WRITE :lv_yn.

确认弹窗效果
在这里插入图片描述
2.填写弹窗代码(函数版)

"弹出可以填写字段的函数方法
DATA : lt_sval TYPE  TABLE  OF  sval,
       ls_sval LIKE  LINE  OF  lt_sval.
DATA:l_returncode TYPE string .


"物料
CLEAR ls_sval .
ls_sval-tabname = 'MARA' .  "表名
ls_sval-fieldname = 'MATNR' . "字段名
ls_sval-field_obl = 'X' .          "是否为必填
APPEND ls_sval TO lt_sval.

"过账日期
CLEAR ls_sval .
ls_sval-tabname = 'BKPF' .  "表名
ls_sval-fieldname = 'BUDAT' . "字段名
ls_sval-field_obl = 'X' .          "是否为必填
APPEND ls_sval TO lt_sval.

"如果是金额的话要把参考表和参考字段也写进来,然后隐藏,不然金额的输入框是不能输入的
CLEAR ls_sval .
ls_sval-tabname = 'BSIS'.
ls_sval-fieldname = 'WRBTR'.
APPEND ls_sval TO lt_sval.

"货币
CLEAR ls_sval .
ls_sval-tabname = 'BSIS'.
ls_sval-fieldname = 'WAERS'.
ls_sval-field_attr = '04'.   "隐藏货币字段
APPEND ls_sval TO lt_sval.

CALL FUNCTION 'POPUP_GET_VALUES'
  EXPORTING
*   NO_VALUE_CHECK  = ' '
    popup_title     = '请填写'
*   START_COLUMN    = '5'
*   START_ROW       = '5'
  IMPORTING
    returncode      = l_returncode
  TABLES
    fields          = lt_sval
  EXCEPTIONS
    error_in_fields = 1
    OTHERS          = 2.

cl_demo_output=>display( lt_sval )."要获取填写的数据直接读取这个表就好了

填写弹窗效果
在这里插入图片描述
在这里插入图片描述
3.可填写弹窗代码(画屏幕版)
功能比较强大(还可以做其他的东东),但是也比较复杂。

"画屏幕的弹窗
*定义屏幕字段
TYPES:BEGIN OF ty_9000,
        matnr TYPE bseg-matnr,
        budat TYPE bkpf-budat,
      END OF ty_9000.

DATA:gs_9000 TYPE ty_9000.

CALL SCREEN '9000' STARTING AT 20 5  "
                           ENDING AT   100 16.

MODULE status_9000 OUTPUT.
  SET PF-STATUS '9000'.
  SET TITLEBAR '我画的弹窗'.
ENDMODULE.

MODULE user_command_9000 INPUT.
  CASE sy-ucomm.
    WHEN 'OK'.
      IF gs_9000-matnr IS INITIAL OR gs_9000-budat IS INITIAL.
        MESSAGE  '请先填写数据' TYPE 'E' DISPLAY LIKE 'S'.
      ELSE.
        "获取填写的信息
        WRITE:/ gs_9000-matnr.
        WRITE:/ gs_9000-budat .
      ENDIF.
    WHEN 'CANC'.
      CLEAR gs_9000.
      LEAVE TO SCREEN 0.
    WHEN OTHERS.
  ENDCASE.
ENDMODULE.

9000屏幕的布局
在这里插入图片描述
9000元素清单
在这里插入图片描述

确认的功能码:OK
取消的功能码:CANC
在这里插入图片描述

另外,画屏幕添加搜索帮助的小技巧,可能条目键值选 2会自动带出搜索帮助。
在这里插入图片描述

9000屏幕的逻辑流
在这里插入图片描述
9000屏幕的GUI状态(创建就好了,没有啥特殊的)
在这里插入图片描述
上面这些设置完毕才有最后的效果:
在这里插入图片描述
好了,分享使我快乐,我是寒武青锋。
在这里插入图片描述

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值