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系统长文本对象的创建及应用介绍

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/516309.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

实时渲染 -- 材质(Materials)

一、自然界中的材质 首先了解下自然界中的材质 如上这幅图&#xff0c;不同的物体、场景、组合&#xff0c;会让我们看到不同的效果。 我们通常认为物体由其表面定义&#xff0c;表面是物体和其他物体或周围介质之间的边界面。但是物体内部的材质也会影响光照效果。我们目前只…

Day30 回溯 LeedCode 332.重新安排行程 51. N皇后 37. 解数独

332. 重新安排行程 给你一份航线列表 tickets &#xff0c;其中 tickets[i] [fromi, toi] 表示飞机出发和降落的机场地点。请你对该行程进行重新规划排序。 所有这些机票都属于一个从 JFK&#xff08;肯尼迪国际机场&#xff09;出发的先生&#xff0c;所以该行程必须从 JFK…

腾讯云4核8G服务器多少钱?4C8G可以干啥?

腾讯云4核8G服务器多少钱&#xff1f;腾讯云4核8G轻量应用服务器12M带宽租用价格646元15个月&#xff0c;活动页面 txybk.com/go/txy 活动链接打开如下图所示&#xff1a; 腾讯云4核8G服务器优惠价格 这台4核8G服务器是轻量应用服务器&#xff0c;详细配置为&#xff1a;轻量4核…

Day18-【Java SE进阶】多线程

一、线程 1. 什么是线程? 线程(Thread)是一个程序内部的一条执行流程。程序中如果只有一条执行流程&#xff0c;那这个程序就是单线程的程序。 2. 多线程 多线程是指从软硬件上实现的多条执行流程的技术(多条线程由CPU负责调度执行) 3. 如何在程序中创建出多条线程? Ja…

全局统一返数据类型封装记录

全局统一返回值封装 ​ 在Spring Boot中&#xff0c;实现全局统一返回值封装是一种常见的做法&#xff0c;它有助于保持API的一致性&#xff0c;并简化前端对响应数据的处理。创建一个响应体类&#xff0c;包含状态码、消息、数据等字段。这个类可以作为所有控制器返回值的通用…

51入门之数码管

目录 1.数码管硬件简介 1.1数码管位选 1.2数码管数选 2.静态数码管显示 3.动态数码管显示 1.数码管硬件简介 数码管&#xff0c;在我们生活中无处不在&#xff0c;红绿灯的倒计时&#xff0c;电梯的显示屏&#xff0c;还有电子表的时间显示&#xff0c;都使用了数码管的相应原…

大厂面试之【Redis持久化机制】 - RDB和AOF概述及应用配置

文章目录 Redis持久化1. RDB(Redis DataBase)1.1 概述1.2 配置应用 2. AOF(Append Only File)2.1 概述2.2 配置应用 Redis持久化 先上结论&#xff1a;Redis持久化操作分为rdb以及aof&#xff0c;但是前者已经够用 1. RDB(Redis DataBase) 1.1 概述 rdb保存的是dump.rdb文件在指…

31. UE5 RPG使用增强输入激活GameplayAbility(一)

在前面文章中&#xff0c;我们实现了对技能添加并直接激活功能&#xff0c;介绍了GA的相关参数配置。现在&#xff0c;我们还不能通过键位触发技能&#xff0c;正常在游戏时&#xff0c;我们需要通过键位触发技能&#xff0c;实现技能的激活。 在UE5里面添加了增强输入&#xf…

modprobe加载驱动模块时报错:modprobe: module xxx.ko not found in modules.dep

问题 使用modprobe时&#xff0c;报错modprobe: module xxx.ko not found in modules.dep&#xff1a; 原因 加载模块时&#xff0c;依赖没法正确添加 解决 在使用modprobe前&#xff0c;调用一下depmod指令&#xff0c;之后再用modprobe加载驱动模块 depmod modprobe interr…

使用Autodl与Xftp远程训练模型及管理远程文件

1 AutoDL网站登录创建实例 AutoDL网站:AutoDL算力云 | 弹性、好用、省钱。租GPU就上AutoDL 1&#xff09;进入算力市场&#xff0c;选取可用显卡&#xff08;工作日一般白天抢不到&#xff0c;晚上才能抢到&#xff09; 2&#xff09;选择配置环境 3&#xff09;创建成功实例…

基于ArrayList实现简单洗牌

前言 在之前的那篇文章中&#xff0c;我们已经认识了顺序表—>http://t.csdnimg.cn/2I3fE 基于此&#xff0c;便好理解ArrayList和后面的洗牌游戏了。 什么是ArrayList? ArrayList底层是一段连续的空间&#xff0c;并且可以动态扩容&#xff0c;是一个动态类型的顺序表&…

关于hive启动的相关问题记录

问题&#xff1a;初始化hive元数据报错 [atguiguhadoop102 software]$ schematool -initSchema -dbType mysql -verboseError: Table CTLGS already exists (state42S01,code1050) Closing: 0: jdbc:mysql://hadoop102:3306/metastore?useSSLfalse org.apache.hadoop.hive.me…

数据结构和算法:十大排序

排序算法 排序算法用于对一组数据按照特定顺序进行排列。排序算法有着广泛的应用&#xff0c;因为有序数据通常能够被更高效地查找、分析和处理。 排序算法中的数据类型可以是整数、浮点数、字符或字符串等。排序的判断规则可根据需求设定&#xff0c;如数字大小、字符 ASCII…

Linux文件管理,压缩/解压缩和vi编辑器

目录 一.linux文件管理 1.cat 2. head和tail 3.WC 4.grep 5.paste&#xff08;合并&#xff09; 二.压缩,解压缩 1.gzip bzip2 2.归档tar 3.zip 和unzip 三.vi编辑器 一.linux文件管理 1.cat 格式 &#xff1a;cat 选项 文件名 &#xff08;文件名可以是单…

哈佛大学商业评论 --- 第三篇:真实世界中的增强现实

AR将全面融入公司发展战略&#xff01; AR将成为人类和机器之间的新接口&#xff01; AR将成为人类的关键技术之一&#xff01; 请将此文转发给您的老板&#xff01; --- 本文作者&#xff1a;Michael E.Porter和James E.Heppelmann 虽然物理世界是三维的&#xff0c;但大…

软件杯 深度学习中文汉字识别

文章目录 0 前言1 数据集合2 网络构建3 模型训练4 模型性能评估5 文字预测6 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 深度学习中文汉字识别 该项目较为新颖&#xff0c;适合作为竞赛课题方向&#xff0c;学长非常推荐&#xf…

代码随想录第30天|51. N皇后

51. N皇后 51. N 皇后 - 力扣&#xff08;LeetCode&#xff09; 代码随想录 (programmercarl.com) 这就是传说中的N皇后&#xff1f; 回溯算法安排&#xff01;| LeetCode&#xff1a;51.N皇后_哔哩哔哩_bilibili 按照国际象棋的规则&#xff0c;皇后可以攻击与之处在同一行…

mysql+keepalive+lvs搭建的数据库集群实验

前提条件&#xff1a;准备5台计算机&#xff0c;且网络互通 1、客户端 yum groups -y install mariadb-client ip 192.168.0.5 2、lvs1 yum-y install ipvsadm keepalived ip 192.168.0.1 keepalivedvip 192.168.0.215 /etc/hosts 解析192.168.0.1 主机名 3、lvs2 yum-y i…

大数据实验三-HBase编程实践

目录 一&#xff0e;实验内容 二&#xff0e;实验目的 三&#xff0e;实验过程截图及说明 1、安装HBase 2、配置伪分布式模式&#xff1a; 3、使用hbase的shell命令来操作表&#xff1a; 4、使用hbase提供的javaAPI来编程实现类似操作&#xff1a; 5、实验总结及心得体会…

uniApp使用uview对vuex的二次封装实现全局变量

1、uni-app目根目录新建’/store/index.js’&#xff0c;并复制如下内容到其中 2、uni-app目根目录新建’/store/ u . m i x i n . j s ′ &#xff0c;并复制如下内容到其中&#xff0c;由于 H X 某些版本的限制&#xff0c;我们无法帮您自动引入 " u.mixin.js&#xff0…