DIALOG 屏幕

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

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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 来修改,缺点是无法立即,展示或隐藏,需要一个触发条件,如回车,点击按钮等。

### ABAP Dialog Screen Code Structure In the context of SAP development, an ABAP dialog screen is a tool used to create user interfaces that interact with business logic written in ABAP. The structure of ABAP dialog screens involves several key components and follows specific guidelines. #### Definition and Purpose An ABAP dialog screen allows developers to design interactive forms where users can input data or make selections. These screens are closely tied to ABAP programs through flow logic and module pools[^1]. #### Components of ABAP Dialog Screens The main elements include: - **Screen Attributes**: Defined at the top of the screen painter, these attributes specify properties like number, title, and type. - **Fields on Screen**: Each field has its own characteristics such as name (which must match the corresponding database table column), position, length, offset, etc., all defined within the screen layout area using the screen painter tool. - **Flow Logic**: This part contains instructions for processing events triggered by actions performed on the screen, including PAI (Process After Input) and PBO (Process Before Output). Flow logic uses special syntax not found elsewhere in standard ABAP coding practices[^3]: ```abap PROCESS BEFORE OUTPUT. MODULE status_0100. ENDMODULE. ``` - **Modules/Methods**: Modules contain executable statements associated with particular points during execution; they may be called from either event blocks inside flow logic or directly via function calls within other modules. - **Field Selection Table (FST)**: A list defining which fields should appear visually when rendering the GUI element linked to this screen instance. #### Example Code Snippet Demonstrating Basic Structure Below demonstrates how one might set up basic structures required for creating simple dialog screens in ABAP programming language: ```abap * Module Pool Declaration Section REPORT zdialog_example NO STANDARD PAGE HEADING LINE-SIZE 80 LINE-COUNT 65(4). TABLES sflight. DATA: wa_sflight TYPE sflight, it_sflight LIKE TABLE OF sflight. SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-t01. PARAMETERS: p_carrid TYPE sflight-carrid OBLIGATORY MEMORY ID carr. PARAMETERS: p_connid TYPE sflight-connid OBLIGATORY MEMORY ID conn. SELECT-OPTIONS: so_fldate FOR sflight-fldate. SELECTION-SCREEN END OF BLOCK b1. INITIALIZATION. PERFORM init_data. AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_carrid. CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST' EXPORTING retfield = 'CARRID' dynprofield = 'P_CARRID' TABLES value_tab = gt_value_help EXCEPTIONS parameter_error = 1 no_values_found = 2 OTHERS = 3. START-OF-SELECTION. SELECT * FROM sflight INTO CORRESPONDING FIELDS OF TABLE @it_sflight WHERE carrid IN @p_carrid AND connid EQ @p_connid AND fldate BETWEEN @so_fldate-low AND @so_fldate-high. END-OF-SELECTION. LOOP AT it_sflight INTO wa_sflight. WRITE:/ wa_sflight~carrid, / wa_sflight~connid, / wa_sflight~fldate. ENDLOOP. ``` This example shows initialization sections, selection screens setup along with their respective handlers, start-of-selection block containing SQL queries against backend tables, end-of-selection section handling output display operations after fetching records based upon given criteria provided by end-users interacting through front-end interface built over generated dialog windows. --related questions-- 1. How does one define custom validations for inputs made into ABAP dialog screens? 2. What role do transaction codes play concerning interaction between back-end processes and frontend displays created via ABAP dialog screens? 3. Can you explain more about integrating web services with traditional ABAP applications utilizing dialog screens? 4. In what ways could modern technologies enhance classic ABAP dialog screen functionalities without compromising system stability? 5. Are there any best practices recommended while designing complex layouts involving multiple interconnected dialog screens within single application flows?
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值