ABAP开发中常用弹窗的应用详解

在ABAP程序设计中为提示和交互的需要会经常用到弹窗, 所谓弹窗就是弹出一个框,告诉用户什么事情、需要确认什么、或者让用户输入什么内容等等,它价值在于通过提示、提醒、警告,帮助用户顺利完成业务流程中的必要操作或给用户提供实时反馈的结果。

ABAP开发中常用弹窗的功能代码

1.POPUP_TO_CONFIRM(确认弹窗)

以下是一个简单的示例代码:

它创建了一个带有“是”和“否”按钮的确认弹窗,并在用户作出选择后给出一个消息提示结果。

DATA: lv_answer TYPE c.
START-OF-SELECTION.
  " 创建弹窗
  CALL FUNCTION 'POPUP_TO_CONFIRM'
    EXPORTING
      titlebar              = '确认弹窗'
      text_question         = '你确定要继续吗?'
      text_button_1         = '是'
      text_button_2         = '否'
      default_button        = '2'
      display_cancel_button = abap_false
    IMPORTING
      answer                = lv_answer
    EXCEPTIONS
      text_not_found        = 1
      OTHERS                = 2.

  " 处理用户的响应
  IF sy-subrc = 0.
    IF lv_answer = '1'.
      " 用户点击了“是”
      WRITE: / '用户选择了是。' COLOR COL_GROUP.
    ELSE.
      " 用户点击了“否”
      WRITE: / '用户选择了否。' COLOR COL_NEGATIVE.
    ENDIF.
  ELSE.
    " 异常处理
    WRITE: / '弹窗创建失败。' COLOR COL_NEGATIVE.
  ENDIF.

titlebar参数设置弹窗的标题,text_question设置弹窗的问题文本,text_button_1和text_button_2定义按钮的标签,default_button设置默认选中的按钮,而display_cancel_button决定是否显示取消按钮。函数执行后,answer变量将包含用户的选择('1'表示按钮1,'2'表示按钮2)。根据用户的选择,系统给出相应的消息提示。

执行效果

图片

程序可以捕捉到用户的选择,然后可以做不同处理。

图片

  

图片

2.POPUP_GET_VALUES(输入参数式弹窗)

这种弹窗允许用户输入一组值,这通常用于收集用户的输入,如参数或过滤条件等。

以下是一个简单的示例代码:


DATA: lt_values TYPE TABLE OF sval,
      wa_values LIKE  LINE  OF  lt_values.
DATA: return_code TYPE string .

"物料号
CLEAR wa_values.
wa_values-tabname = 'MARA' .    "物料主数据的表名
wa_values-fieldname = 'MATNR' . "物料号
wa_values-field_obl = 'X' .     "是否为必填
APPEND wa_values TO lt_values.

"物料组
CLEAR wa_values.
wa_values-tabname = 'MARA' .    ""物料主数据的表名
wa_values-fieldname = 'MATKL' . "物料组
wa_values-field_obl = 'X' .     "是否为必填
APPEND wa_values TO lt_values.

CALL FUNCTION 'POPUP_GET_VALUES'
  EXPORTING
*   NO_VALUE_CHECK  = ' '
    popup_title     = '请输入参数'
*   START_COLUMN    = '5'
*   START_ROW       = '5'
  IMPORTING
    returncode      = return_code
  TABLES
    fields          = lt_values
  EXCEPTIONS
    error_in_fields = 1
    OTHERS          = 2.

IF sy-subrc = 0.
  LOOP AT lt_values INTO wa_values.
    WRITE:/ wa_values-fieldname, wa_values-value.
  ENDLOOP.
ENDIF.

popup_title :弹窗的标题

start_column/start_row  :是弹窗位置

fields :表中存储要和用户交互的字段,要求字段名称必须是参考表中的数据,会自动带出搜索帮助。

注意:sval 是一个结构,包含字段 tabname (参考表),fieldname (字段名称),value (默认值)等。

图片

函数执行后,我们可以检查返回码和用户输入的值,然后进行相应的处理。

图片

图片

上面介绍的2个标准弹窗FUNCTION,基本可以满足大部分这方面的开发需求。

ABAP中还有其它的弹窗函数如下(列举部分供参考)

1.POPUP_TO_CONFIRM_LOSS_OF_DATA 

显示有YES/NO的弹出窗口,提示用户未保存的数据将丢失

DATA:ANSWER(1) TYPE C.  "接收选择结果

CALL FUNCTION 'POPUP_TO_CONFIRM_LOSS_OF_DATA'

EXPORTING

TEXTLINE1 = '提示信息1'
TEXTLINE2 = '提示信息2'
TITEL = '弹窗标题'
*   START_COLUMN = 25
*   START_ROW = 6
*   DEFAULTOPTION = 'N'
IMPORTING
ANSWER           = ANSWER." 选择是,返回 J  ,选择否 返回 N

图片

备注:目前不推荐使用,这种提示信息的直接使用POPUP_TO_CONFIRM就够了。

2.POPUP_TO_CONFIRM_STEP 

提示是否确认操作的弹出窗口

DATA:answer(1) TYPE c.
  CALL FUNCTION 'POPUP_TO_CONFIRM_STEP'
    EXPORTING
      defaultoption        = 'Y'
      "显示两行文本
      textline1            = '第一行文本信息'
      textline2            = '第二行文本信息'
      titel                = '弹窗标题'   "弹窗标题
      start_column         = 25
      start_row            = 6
      cancel_display       = '' "是否显示cancel按钮
    IMPORTING
      answer               = answer.   "返回值J:yes;N:no;A:cancel

图片

3.POPUP_TO_CONFIRM_WITH_MESSAGE 

可以显示定制的提示信息的确认窗口 类似POPUP_TO_CONFIRM_STEP,只是多三行的文本错误诊断提示。

DATA:l_answer TYPE char1.
CALL FUNCTION 'POPUP_TO_CONFIRM_WITH_MESSAGE'
  EXPORTING
    diagnosetext1 = '对话提示信息1'
    diagnosetext2 = '对话提示信息2'
    diagnosetext3 = '对话提示信息3'
    textline1     = '文本信息1'
    textline2     = '文本信息2'
    titel         = '弹窗标题'
  IMPORTING
    answer        = l_answer.    "是为J;否为N;取消为A

图片

备注:目前不推荐使用,这种提示信息的直接使用POPUP_TO_CONFIRM就够了。

4.POPUP_TO_CONFIRM_WITH_VALUE

显示确认用户对某个特定对象的操作的弹出窗口


DATA:answer TYPE c LENGTH 1.

CALL FUNCTION 'POPUP_TO_CONFIRM_WITH_VALUE'
  EXPORTING
    defaultoption  = 'Y'
    objectvalue    = 'objectvalue'
    text_after     = 'text after objectvalue'
    text_before    = 'text before objectvalue !!!!!'
    titel          = 'title'
    start_column   = 25
    start_row      = 6
    cancel_display = 'X'
  IMPORTING
    answer         = answer
  EXCEPTIONS
    text_too_long  = 1
    OTHERS         = 2.
IF sy-subrc <> 0.
  MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
          WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.

CASE answer.
  WHEN 'A'.
  WHEN 'J'.
  WHEN 'N'.
ENDCASE.

图片

5.POPUP_TO_DECIDE 

将待确认选项以单选按钮的方式显示的弹出窗口

DATA:ANSWER(1) TYPE C.  "接收选择结果  "显示弹窗  
  CALL FUNCTION 'POPUP_TO_DECIDE'    
  EXPORTING      "默认按钮      
  DEFAULTOPTION     = '1'      "显示三行文本弹窗      
  TEXTLINE1         = '第一行文本信息'      
  TEXTLINE2         = '第二行文本信息'      
  TEXTLINE3         = '第三行文本信息'      
  "按钮1,2的文本      
  TEXT_OPTION1      = '是'      
  TEXT_OPTION2      = '否'      
  "按钮1,2的图标     
  *ICON_TEXT_OPTION1 = ' '
  *ICON_TEXT_OPTION2 = ' '      
  TITEL             = 'title'  "弹窗标题      
  "开始行列      
  START_COLUMN      = 25      
  START_ROW         = 6      
  CANCEL_DISPLAY    = 'X' "是否显示cancel按钮    
  IMPORTING      
  ANSWER            = ANSWER."选择返回1:按钮1;2:按钮2;A:cancel按钮

图片

6.POPUP_TO_DECIDE_WITH_MESSAGE 

带消息的确认窗口

DATA: LV_ANSWER TYPE STRING.              "用于存储用户选择

  CALL FUNCTION 'POPUP_TO_DECIDE_WITH_MESSAGE'
    EXPORTING
      DIAGNOSETEXT1 = '推送成功'  "诊断文本的第一行
      TEXTLINE1     = '第一行文本信息'  "弹出窗口的第一行,设置文本行内容1
      TEXT_OPTION1  = '确认'      "选项 1 的文本。
      TEXT_OPTION2  = '重新推送'  "选项 2 的文本。
      TITEL         = '推送结果'  "设置标题
    IMPORTING
      ANSWER        = LV_ANSWER.  "获得用户选择,这里返回的值对应是当前列表NO,比如第一个就返回1,第二个返回2

图片

7.POPUP_TO_DISPLAY_TEXT 

显示多行信息的窗口


CALL FUNCTION 'POPUP_TO_DISPLAY_TEXT'
   EXPORTING
     titel        = '提示'
     textline1    = '第一行文本信息'
     textline2    = '第二行文本信息'
     start_column = 25
     start_row    = 6.

图片

8.POPUP_TO_SELECT_MONTH 

月份选择窗口


DATA:lv_month LIKE isellist-month,
     lv_code  LIKE sy-subrc.
CALL FUNCTION 'POPUP_TO_SELECT_MONTH'
  EXPORTING
    actual_month   = sy-datum+0(6)
*   factory_calendar = '01'
*   holiday_calendar = '01'
    language       = sy-langu
*   START_COLUMN   = 8
*   START_ROW      = 5
  IMPORTING
    selected_month = lv_month
    return_code    = lv_code
* EXCEPTIONS
*   FACTORY_CALENDAR_NOT_FOUND       = 1
*   HOLIDAY_CALENDAR_NOT_FOUND       = 2
*   MONTH_NOT_FOUND  = 3
*   OTHERS         = 4
  .

图片

9.POPUP_WITH_TABLE_DISPLAY 

有表格对象的确认窗

DATA: BEGIN OF itab_nba OCCURS 0,        
a TYPE c LENGTH 10,        
b TYPE c LENGTH 10,      
END OF itab_nba.
DATA: counts LIKE  sy-tabix.  
itab_nba-a = '01'.  
itab_nba-b = '111111'.  
APPEND itab_nba.  
itab_nba-a = '02'.  
itab_nba-b = '222222'.  
APPEND itab_nba.  
CALL FUNCTION 'POPUP_WITH_TABLE_DISPLAY'       
EXPORTING            
endpos_col   = 50    "右下角X            
endpos_row   = 10    "右下角Y            
startpos_col = 10    "左上角X            
startpos_row = 5     "左上角Y            
titletext    = 'Please Choose Your Entry'       
IMPORTING            
choise       = counts   "返回選中行       
TABLES            
valuetab     = itab_nba  "可選擇的表       
EXCEPTIONS            
break_off    = 1            
OTHERS       = 2.  
IF counts NE 0.     
READ TABLE itab_nba INDEX counts.     
WRITE: itab_nba-a.  
ENDIF.  
CLEAR :itab_nba,counts.  
REFRESH:itab_nba.

图片

图片

往期相关文章荐读:

ABAP SUBMIT如何使用详解

ABAP RANGE的用法详解

SAP内存和ABAP内存应用详解

ABAP语言的FIELD-SYMBOLS的应用详解

ABAP自定义数据库表操作详解

SAP/ERP系统如何根据报错信息快速定位到报错的代码行

SAP/ERP系统长文本对象的创建及应用介绍

  • 10
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ERP文库

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值