关于屏幕编程

本文详细介绍了ABAP中REPORT和DIALOG两种程序类型的事件流执行顺序。REPORT按照预设流程执行,而DIALOG则通过PBO和PAI块控制屏幕流。文章强调了在DIALOG编程中内表管理和数据更新的重要性。

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

 

     ABAP中开发的程序分2种。REPORTDIALOG.REPORT编程中, SAP系统中已经安排了事件流执行顺序。我们只要在相应的事件块块中敲上代码,程序会按照事件块的先后顺序执行的。

REPORT事件流大概如下:INITIALIZATION——》AT-SELECTION——》AT-SELECTION-OUTPUT ——》START-OF-SELECTION——》AT USER_COMMAND——》AT LINE-SELECTION.——》TOP-OF-PGAE——》END-OF-PAGE ——END-OF-SELECTION.

DIALOG中由flow logic 控制, flow logic分成PBO(Process Before Output)PAI(Process After Input)。一个屏幕流的执行过程是:屏幕对应的PBO(屏幕输出前处理块)——》输出相应的屏幕——》 PAI(屏幕输出后处理块)。如果在PAI中没有去触发执行下一个屏幕事件的话,会在当前的屏幕流中进行循环,也就是当前PBO->显示屏幕->PAI进行循环。

PBO过程中处理的大部分是内表数据填充到要显示的屏幕字段中。

PAI过程中处理的大部分是把更新的屏幕数据更新到内表,根据相应的屏幕命令动作做相应的事件。比如保存按钮的画,要把数据从内表更新到数据库中。

如果输出屏幕是数字的画,在SE51制作的屏幕字段中,后面要加大写的‘V’,否则负数会导致系统的SHORT DUMP.

在一个dialog中一个内表很有可能贯穿好几个屏幕,这时就要非常小心屏幕的流向了。比如这样一个场景:在500中抓取数据放入一个内表中,在600屏幕中发生一个动作到屏幕700进行一个数据的更新,数据跟新完之后跳回屏幕600,屏幕600进行保存后返回到屏幕500。而这时又开始执行屏幕500PBO,这时这个内表数据照理说要重新抓取的哦!但是问题是如果在屏幕500中抓取的这个内表数据是根据后续的一些条件来抓取的话就会产生一些问题。这时候千万要注意的是在抓取数据到这个内表要进行内表清空的动作。否则这个内表在第二次进入500屏幕时是还存在值的,不一定是我们想要的!所以在抓取数据到一个内表前对内表的清空操作是必要的。以免引起不必要的麻烦!

区别于REPORT的一点是REPORT就按事件流执行下来完就完成了,而在DIALOG中常常存在着杀回马枪的动作,而这时数据该是什么样的要非常小心,就因为没写一个CLEAR就会要了你的命!

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值