ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

ABAP开发奇葩BUG记录: SUBMIT AND RETURN 不生效

2022-08-17 11:00:09  阅读:121  来源: 互联网

标签:RETURN 程序 SUBMIT ALV ABAP alv 三哥


项目需要创建大量数据并预处理来进行测试,Team里用的是三哥的一个report去创建单个数据。

三哥的程序很简单,就是个选择屏幕,输入一些值,然后做主数据,然后alv显示出来。

于是我便做了个小程序,用了如下语法:

SUBMIT (三哥的程序)  USING SELECTION-SET '某个变式' AND RETURN.

然后再去动态获取ALV的数据,转化到自己的表里做后续处理。

本来就是个很简单的语句,没什么需要说明的,但是问题就出在这里,程序执行后,停在了三哥程序的选择屏幕界面,并没有返回。

挠头。

最开始以为是自己设置的变式有问题,但是手动执行是可以的,就否决了这个猜测。

然后手动点后退的时候发现有些不太对劲,在选择界面点完退后,会回到我自己的程序,并且程序里已经获得了三哥程序的结果。

也就是说,三哥的程序虽然停在了选择界面,但是,程序已经执行了一遍了。

我黑着脸去看了三哥的程序,找到了问题。

三哥的程序结构是这样的:

选择屏幕-数据创建-显示alv, 很普通,但是最后一个显示ALV的form, 很不普通。

FORM display_alv.

  EXPORT gt_log FROM gt_log TO MEMORY ID 'GTMSG'.

  SUBMIT (ALV显示程序) WITH p_prog = sy-cprog. "#EC CI_SUBMIT

ENDFORM. "display_alv

也就是说,三哥也嵌套了一个程序,用单独的程序去做了显示,通过内存传值。

于是我return生效了,但是生效在了这一层。

我觉得这算是ABAP语法设计的BUG了。

机智的我改良了代码。

SUBMIT (三哥的程序)  USING SELECTION-SET '某个变式' AND RETURN AND RETURN.

连着写了两个RETURN,然而编译器并没有机智地领悟我的意思,依然停在了三哥的界面。

虽然很想吐槽,但是三哥的程序还是不能动,于是我就只能将三哥的程序COPY了一份,然后变成了CALL自己的程序,这回连ALV都不用了,直接获取内存,效率还高了些。

问题解决。

 

标签:RETURN,程序,SUBMIT,ALV,ABAP,alv,三哥
来源: https://www.cnblogs.com/yibing-jia/p/16594306.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有