DIALOG 屏幕

本文详细介绍了DIALOG中屏幕的创建过程,包括单个和多个列表的创建,常规功能如退出、返回、执行的实现,以及如何将入参值自动填充到列表、显示数据量和动态显示/隐藏字段。开发者需注意命名规范和代码调试技巧。

1.DIALOG基础屏幕创建

1.屏幕入参创建

在空白的REPORT中创建一个新的屏幕‘0001’

当屏幕大小不够用时,可以在这里调节

进入绘制屏幕界面

创建屏幕入参

2.界面展示列表创建

1.单个列表创建

点击图标创建单个列表

依次点击下一步

表控制命名(PS:当原来的表建错了,比如少加了一个字段,那就需要将相关的所有子例程,包括PBO,PAI等在内代码删除或注释,否则一会报错。首当其冲的便是table control 已存在的报错)

在创建列表的时候,若不参考数据字段,需要事先在REPORT中定义对应的TABLE 和 WA.

根据上一步的选择会出现可选字段,选择自己需要的字段后,继续下一步

选择列表的属性,例:Output only  只能展示数据无法插入、修改。

是否需要滚动条

简介明了地命名PBO等自动生成的代码(PS:命名需要Z/Y开头否则后续生成会报错)

最后完成

2.多个可切换列表创建

点击图标创建

同理,执行下一步

同理,简介命名,执行下一步

命名需要的多个列表,至少需要两个

下一步

同理,Z/Y开头命名,下一步

生成对应子屏幕,完成

2.功能的实现

1.常规功能退出、返回、执行

创建GUI Status、 GUI Titles

创建常规FUNCTION KEY 、工具栏按钮

在代码中添加对应按键设置和标题        

添加按钮对应的指令控制

为了防止出现按钮CODE获取错误,事先将OK_CODE 保存起来。

先定义CODE

在program中建一个用于保存ok_code的变量

代码用例:

*----------------------------------------------------------------------*
***INCLUDE ZTEST_DIALOG_USER_COMMAND_0I01.
*----------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*&      Module  USER_COMMAND_0001  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE user_command_0001 INPUT.
  CLEAR:save_ok.
  save_ok = ok_code.
  CLEAR ok_code.

  CASE save_ok.
    WHEN 'BACK'.
      LEAVE TO SCREEN 0001.
    WHEN 'EXIT'.
      LEAVE PROGRAM.
    WHEN 'CANCEL'.
      LEAVE SCREEN .
    WHEN 'ZEXECUTE'.
      MESSAGE '不要点了' TYPE 'I'.
    WHEN OTHERS.
  ENDCASE.

ENDMODULE.

预览结果:

2.将入参值自动填加到列表中(PS:触发条件为回车事件)

先将入参值对应字段,在report中定义

由于,前面我们将OK_CODE存放到了,SAVE_OK中,所以以下部分也要修改

在回车触发中,添加代码将入参值,添加到表中

        效果展示:

3.展示当前列表数据量

新建一个空白输出字段,并设置为仅输出

在report中定义对应变量

代码中获取当前列表数量,并展示 (PS:如果表参考的是数据字典的话,需要将里面的从数据获取的代码去除,否则会把参考的表中所有的数据都取出来。)

效果展示:

4.动态显示隐藏DIALOG屏幕字段

DIALOG屏幕对应的,按钮、字段创建

在PAI的指令中,进行SCREEN MODIFY 来修改,缺点是无法立即,展示或隐藏,需要一个触发条件,如回车,点击按钮等。

在SAP ABAP中设置Dialog屏幕字段属性和事件处理涉及多个关键步骤,包括定义字段属性、配置输入行为以及编写模块来响应用户交互。 ### 设置字段属性 字段的输入属性决定了用户如何与屏幕上的数据进行交互。这些属性可以在Screen Painter(屏幕绘制器)中进行设置,具体包括: - **可编辑性**:控制字段是否允许用户直接输入值。 - **显示模式**:决定字段是否仅用于显示而不允许修改。 - **必填项**:指定字段是否必须填写。 例如,在Dialog屏幕中,默认情况下某些字段可能被设定为不可编辑状态,此时需通过F4搜索帮助带入值[^4]。这种设置可以通过`AT SELECTION-SCREEN OUTPUT`或在Dialog屏幕中调用`MF4`模块实现。 ### 事件处理 事件处理主要发生在PAI(Process After Input)阶段,即用户完成输入并触发操作(如按下回车键)后执行的逻辑。以下是常见的处理方式: - **MODULE A 和 MODULE B**:通常用于初始化屏幕元素或执行前置检查。 - **MODULE C 和 MODULE D**:用于处理用户输入后的业务逻辑,例如验证输入数据或更新数据库记录[^5]。 为了实现特定的功能,比如响应用户的按键操作或选择事件,需要编写相应的ABAP代码段,并将其分配给特定的屏幕事件。例如,当用户点击某个按钮时,可以触发一个自定义的模块来处理该事件。 ### 示例代码 以下是一个简单的示例,展示了如何在PAI部分定义一个模块来处理用户输入: ```abap MODULE user_action INPUT. CASE ok_code. WHEN 'SAVE'. " 处理保存操作 PERFORM save_data. WHEN 'CANCEL'. " 处理取消操作 LEAVE TO SCREEN 0. ENDCASE. ENDMODULE. ``` 在这个例子中,`ok_code`变量用于捕获用户的动作命令。根据不同的命令,程序会执行不同的操作。 ### 标签条和表控件 对于更复杂的界面需求,例如动态展示多个选项卡或列表,可以使用标签条(Tab Strip Control)和表控件(Table Control)。这些组件允许开发者构建更加直观和功能丰富的用户界面。创建这些控件通常涉及以下几个步骤: 1. 在Screen Painter中添加控件。 2. 定义控件相关的内部表结构。 3. 编写PBO(Process Before Output)模块来填充控件的数据。 4. 编写PAI模块来处理用户的交互动作[^3]。 通过上述方法,可以有效地管理和优化SAP Dialog屏幕的设计与实现,从而提供更好的用户体验和更高的工作效率。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值