【ABAP——DAILOG_1】

文章目录

  • 程序类型
    • Report程序:1类型程序
    • Online程序:M类型程序
  • Online程序的主要对象
  • Screen
  • 界面中的事件块(Event Block)
  • 界面中常用关键字

程序类型

Report程序:1类型程序

  • 制作报表,数据列表(DataList)输出

Online程序:M类型程序

  • 查询数据,录入、修改、删除等
  • Module Pool程序:以Module Pool形态进行业务流程的逻辑处理
  • Online程序,强调用Online Transaction来处理业务流程进行过程
  • Screen程序,主要使用Screen(及屏幕对象),并实现界面间Flow Logic(流逻辑)
    在这里插入图片描述

Online程序的主要对象

界面(Screen)

模块池(Module Pool)

  • 全局字段(Global Data):声明模块池中所有模块都可使用的数据-TOP
  • PBO模块(PB0 Modules):屏幕输出前调用的模块-O01
  • PAI模块(PAI Modules):相应用户输入而调用的模块-I01
  • 子程序(Subroutines):可以在模块中任何位置调用的子程序-F01

菜单(GUl Status)
标题(GUI TITLE)
事务代码(Transaction Code)
用户可以访问的部分是Screen,用户对界面进行操作,相应的操作是通过Screen中的逻辑流控制,而数据声明和界面逻辑代码实现部分是在ABAP程序中。

Screen

1.SAP的屏幕开发
ABAP List代码实现(例:选择界面的创建)

  • Report程序直接执行即可以显示查询界面或结果界面
    Dialog Screen绘制:较复杂,界面丰富
  • Online程序想要显示查询或结果界面必须建立Screen
  • 事件驱动程序(Event-Driven)

2.屏幕功能实现

  • ABAP程序不能直接定义Screen,要通过Screen Painter这个工具来实现。界面元素设定通过Screen Layout Designer来实现
  • 界面的设定:属性/大小/模式
  • 界面中的元素:描述或帮助。可以进行有效性检查
  • 界面中可以设置独立的Menu Bar或Title,点选按钮或回车可以触发相应功能
  • 功能实现位置:逻辑流中设定

3.Online程序不能被直接执行,必须通过事务代码,指定界面执行

界面中的事件块(Event Block)

(1) 用户访问界面,对界面进行操作,相应的操作是通过逻辑流控制的。也就是Screen Painter中定义Flow Logic的位置
(2) 4个事件块:

  • PROCESS BEFORE OUTPUT
    PBO中的处理逻辑控制界面输出前处理,如更改一些元素的值或属性
  • PROCESS AFTER INPUT.
    PAI中的处理逻辑控制用户对界面操作后的处理,如按回车键对输入数据进行检查
  • PROCESS ON HELP-REQUEST.
    FieldHelp的实现(F1帮助)
  • PROCESS ON VALUE-REQUEST.
    输入帮助SearchHelp的实现(F4帮助)

(3) 界面定义的步骤:
创建界面,在Screen Attributes中定义Screen的属性
在Screen Layout Designer和Element List中定义界面中的元素(位置及属性)
在Screen Flow Logic中设定在Screen显示的逻辑处理和显示后对界面进行相应操作的逻辑处理

界面中常用关键字

  • MODULE:调用Dialog Module
  • FIELD:指Element list中特定的Screen field。可以判断Screen Field的值或状态是否发生变化。在PAI中对相关Field进行控制时,一定要使用的关键字。
  • ON:FIELD…ON(Field的连接语)
  • VALUE:FIELD……VALUE(Field的连接语)
  • CHAIN:CHAIN的开始。CHAIN可以将多个Field捆绑成一个同时进行管理。
  • ENDCHAIN:结束CHAIN。
  • CALL:调用(CALL a Subscreen)。
  • LOOP:开始处理Screen Table。
  • ENDLOOP:结束Screen Table处理。
ABAP 中,类 `CL_ABAP_CONV_OUT_CE` 主要用于字符编码转换,特别是在非 Unicode 与 Unicode 系统之间进行数据处理时扮演重要角色。其方法 `GET_BUFFER` 是此类中用于获取转换后数据缓存的核心方法。 ### 方法功能 `GET_BUFFER` 方法的主要作用是返回已经完成编码转换的数据缓冲区内容。通常,在使用 `CL_ABAP_CONV_OUT_CE` 进行编码转换的过程中,数据会先被写入内部缓冲区,经过转换后再通过 `GET_BUFFER` 提取出来。此方法常用于确保输出的数据格式符合目标系统的要求,尤其是在涉及多语言支持或跨系统数据交换的场景中[^1]。 ### 使用方式 以下是一个典型的调用示例: ```abap DATA: lv_input TYPE string VALUE '汪', lv_output TYPE xstring, lo_converter TYPE REF TO cl_abap_conv_out_ce. lo_converter = cl_abap_conv_out_ce=>create( encoding = 'UTF-8' ). lo_converter->write( data = lv_input ). lo_converter->get_buffer( IMPORTING data = lv_output ). ``` 在此代码片段中: - 首先创建了一个编码器实例,并指定目标编码为 UTF-8。 - 接着将输入字符串 `'汪'` 写入编码器。 - 最后调用 `GET_BUFFER` 方法提取转换后的二进制数据(XSTRING)形式的结果。 ### 注意事项 1. **编码设置**:在创建 `CL_ABAP_CONV_OUT_CE` 实例时,必须明确指定目标编码格式。若未正确设置编码,可能导致乱码或不可预期的转换结果[^2]。 2. **缓冲区管理**:多次调用 `WRITE` 方法后,`GET_BUFFER` 返回的是累积的所有转换数据。如需清空缓冲区,应重新创建实例或调用相应清理方法(如有)。 3. **性能考量**:对于大数据量的转换任务,频繁调用 `GET_BUFFER` 可能影响性能。建议合理设计程序逻辑以减少不必要的调用。 ### 常见问题 在实际应用中,可能会遇到诸如字符丢失、乱码等问题。这些问题通常与源/目标系统的编码不一致有关,或是由于某些特殊字符在目标编码体系中不存在所致。此时可通过检查编码配置、验证输入数据完整性等方式进行排查和修复[^2]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值