ABAP WB01 BDC ”No batch input data for screen & &“ ”没有屏幕 & & 的批输入数据“

公司今年计划大批扩建门店,需要自动化维护相关主数据,其中就有一步通过调用 WB01的BDC录屏来自动创建地点,前台跑没有问题,但后台JOB死活不行,屏幕是以前同事录好的,只能硬着头皮修改。
后台任务日志:

抛RAISE_EXCEPTION异常。
用ST22进去跟踪出错的代码:

出错的地方:

结合前台调式,发现了出错屏幕:

即SAPLPLANT_DISPLAY_CUSTOMIZING的1000屏幕出问题,经查证原因是屏幕上的ALV是OO方式写的
解决办法:后台时跳过该屏幕,但处理逻辑不能省。由于屏幕只是个交互过程,可以在后台代码直接将有用户输入的值给赋值上,屏幕自然就可以不要了,具体实现就是将原屏幕PAI与PBO相关的代码抠出来直接调用,而不再Call 屏幕
查找该屏幕被调用的地方:

发现两处调用:

将这两处都打上断点:

然后断点调试看是哪个地方,SM37进去:
勾上出错的JOB,输入JDBG事务码,回车:

看调用栈,这样就知道是哪个调用了吧,就是DISPLAY_PLANT_COPY_CUSTOMIZING函数,然后进该函数,找到调用SAPLPLANT_DISPLAY_CUSTOMIZING的1000屏幕的位置进行代码修改。(注:在按F8调试完JOB后,发现报OBJECTS_OBJREF_NOT_ASSIGNED异常

但先不要去解决这个问题,本人就因为去解决这个问题耗费了大量时间,这个问题的本质还是因为OO方式的ALV在后台无法构建出的问题,与前面的问题其实是同一问题,只是运行方式不一样:前面的RAISE_EXCEPTION异常是直接通过任务跑出来的,这个OBJECTS_OBJREF_NOT_ASSIGNED异常是通过再一次调试该任务出来的。可以ST22查看出错点:

下面就继续修改代码,但代码是标准的程序,一般是不让改的,但我司是老的SAP系统,都不会再升级或打补丁了,再说SAP出来了新的S/4产品,都明确说过,以后不再对老的SAP产品进行维护,就像Windows XP一样,所以想维护想修改BUG的话,就自己来吧
在修改标准程序前,还需要破解程序,不然是修改不了的,我想搞过的人都知道吧,这里就不说破解的事了
但要注意的是,修改标准程序不要影响其他的程序,所以最好在主调程序调用WB01录屏之前,设置一些标记,将这些标记传到标准程序中,然后在修改标准程序的地方,读取这些标记,能读到,则修改,否则还是走原来的逻辑。
下面是自己的程序,就是该程序调用WB01录屏的:
下面是已修改的标准程序:

(注:ok_code = 'BSTV'.,因为从后面可以看出该Code还要继续传到外面去,调用它的程序应该需要用到)
上面红框中的代码就是 SAPLPLANT_DISPLAY_CUSTOMIZING的1000屏幕 的处理逻辑,我们可以打开1000屏幕,将它的PBO,以前PAI抠出来,再这里进行直接进行调用,这样虽然去掉了1000屏幕的交互过程,但后台逻辑我们并没有省略,这样数据就不会出问题。
其实到这里还没有完,当再次定义JOB跑时,上面的1000屏幕已成功去掉,但相应的数据没问题,但是,出现了新的问题:

那我们再进SAPLSTRD标准程序的0300屏幕,找出错原因。
先入到进SAPLSTRD的0300屏幕,在PBO与PAI都打上断点:

为什么要选择这两个Module进行断点呢?原因就是因为该屏幕出问题,但不知道是PBO里,还是PAI里出问题,所以两个都断点一下,再调试看看屏幕的走向。
断点打好后,同样再调试该JOB:

F8到下面断点暂定,然后F6看屏幕一步步走的轨迹:

继续F6,发现所有屏幕都退出,PAI模块根本没调用,直接退到我们自己的主调程序里:

此时sy-subrc为1001状态,查看返回消息内表PT_MESSTAB[],找到出错Message ID以及错误号:

SE91查看详细错误消息:

没有屏幕 & & 的批输入数据
对应的英文:

No batch input data for screen & &

选中,看长文本:

还是看不懂,云里雾里,只能暂停............
从上面调式300屏幕仔细来看,只走了PBO模块,PAI没有走,没触发PAI,录屏中已传OKCODE,即使这里手动设置还是不行.............
很久后,硬是没找到问题...................
没触发PAI,这问题真是难找,原来的别人的录屏又那么复杂,没有适当数据,重录出来的屏幕流程与原来又不一样,产品还没找出原因,干脆一不做二不休,将出问题的这个300屏幕也从屏幕流中干掉,屏我也懒得重录了
通过上面可以看出,问题出在SAPLSTRD的300屏幕:

从前台调试,可以得知是300屏幕是如下传输请求屏幕:
现在要跳过300屏幕,与前面跳过1000屏幕一样,先要找到调用这300屏幕的地方,其实从上面图就可以看出,是在 TRINT_ORDER
_CHOICE调用的,所以打开这个函数,再次进行代码修订:
与略掉1000屏幕一样,将300里PAI与PBO相应影响数据的Module调用Form扣出来,在这里直接调用,不走屏幕的PAI与PBO。
修改后,继续跑后台测试,很不幸,还是出问题:

初看起来与前面 SAPLSTRD的300屏幕问题一样,也是没有什么批输入数据什么的,但经过下面调试,发现还真不一样,前面是没有触发PAI,这里又是什么情况呢,继续调试上面出错的JOB,调试前,与前面一样,在SAPMWBE3的101屏幕中的PAI与PBO各打上一个断点,查看屏幕的走向逻辑:

继续调试上面出错的JOB,F8直到上面两处断点地方,继续调试JOB:
经过F6一步步调试,Module调用顺序 :PBO --> PAI  --> PBO,这与前面1000屏幕不一样,PAI触发过(1000屏幕只执行过PBO),问题有所变化:虽然都是 没有屏幕 && 的批输入数据 的问题,但可能引发的原因不一样,以经过一段时间的思考,这里应该是屏幕没有退出,因为PBO执行了第二次,问题的原因应该是在修改标准函数 TRINT_ORDER_CHOICE引起的。下面那就在TRINT_ORDER_CHOICE函数里修改的地方打上断点:

然后继续调试上面JOB,F8直到上面的断点地方:

F6一步步执行,发现当执行完 PERFORM append_to_order. 后,直接退到了上面第二行,即调用0101屏幕的地方:

现在可以看出,函数 TRINT_ORDER_CHOICE 就直接退到0101屏幕了,说明该函数中有 LEAVE SCREEN 语句,退出了401屏幕:
按理来说,TRINT_ORDER_CHOICE 函数的调用不应该退出401屏幕,因这个函数是在 PERFORM append_to_order. form中调用的,该函数是我们修改标准程序调用的,而修改的目的是不走屏幕流程,即屏幕以及流程跳转语句应该也要屏蔽掉,所以继续看append_to_order Form,发现最后面有 LEAVE SCREEN 语句:
也将其屏蔽掉

再次以JOB跑,结果成功:

总结:出现No batch input data for screen & &问题
1、BDC输入没有转到录屏,比如下面红框注掉,但流程中有这个屏(注:如果有相关的BDC录屏,但没有对应的屏幕,不会出这种问题):

(现在上面图中1000与300 BDC录屏的代码,对于后台可以留着,也可以去掉,但前面需要,所以还是留着吧)

2、屏幕没有结束,就像上面0101屏幕那样,PBO --> PAI --> PBO,屏幕未退出,会导致屏幕流不能正常结束

最后,解决此问题花费了大量时间,硬是将一个只能前台跑的Tcode,改成了后台,反反复复调试了N遍,也可能是刚开始思路的问题,很长一段时间未能解决,但后来坚信一个总体思路:解决有问题的屏幕,不能解决的直接跳过它,直接将其PBO和PAI的代码抠出来直接调用,略过屏幕。可能解决这个屏幕,又会出新的问题,那再按这个思路解决新的屏幕问题.........
唉,ABAP真是各种苦,在我快要放弃的时候,又出现了转机。如是Java我想问题早已得以解决..........
所以,ABAP注定是孤独的...............

原文出自 江正军 技术博客,博客链接:www.cnblogs.com/jiangzhengjun

转载于:https://www.cnblogs.com/jfd-it-bky/p/10245530.html

ABAP WB01 BDC ”No batch input data for screen “ ”没有屏幕 的批输入数据“相关推荐

  1. mxnet报错 Check failed: dshp.ndim() == 4U (3 vs. 4) : Input data should be 4D in batch-num_filter-y-x

    报错:mxnet.base.MXNetError: Error in operator conv0: [17:40:27] src/operator/nn/convolution.cc:152: Ch ...

  2. Clipping input data to the valid range for imshow with RGB data ([0..1] for floats or [0..255] for i

    keras  imshow显示图片显示不出来,报错 Clipping input data to the valid range for imshow with RGB data ([0..1] fo ...

  3. python Clipping input data to the valid range for imshow with RGB data解决方法

    文章目录 遇到的问题 全部代码 参考 遇到的问题 第一点,遇到的问题是 Clipping input data to the valid range for imshow with RGB data ...

  4. 使用MetaMask实现转账交易时附带Input Data数据

    进入如下页面,点击View Assert in Explorer进入Etherscan网站,就可以看到本账户先前所有的交易信息. 字段分析 Txn Hash 是交易的Hash Method:交易的类型 ...

  5. 《How to Reshape Input Data for Long Short-Term Memory Networks in Keras》学习笔记

    跟随大神Jason Brownlee, Ph.D学习Deep Learning.<How to Reshape Input Data for Long Short-Term Memory Net ...

  6. Failed to set attribute: Invalid input data or parameter 解决

    arm64 swconfig 配置vlan 失败问题 Failed to set attribute: Invalid input data or parameter 解决 内核版本:linux-5. ...

  7. sqoop导出hive分区表字段到mysql报错:Can‘t parse input data: ‘0‘

    目的: 为了保留ads(应用层)的历史数据,所以把ads层的表建成了带分区的表. 带来的问题: sqoop导出不带分区字段的列,可以正常导出: sqoop导出带分区字段的列,就报错如下: Can't ...

  8. 解决:Clipping input data to the valid range for imshow with RGB data

    Clipping input data to the valid range for imshow with RGB data 今天在提取彩色图像RGB通道值合成单通道图像时,出现问题: Clippi ...

  9. Clipping input data to the valid range for imshow with RGB data ([0..1] for floats or [0..255]解决方法

    Clipping input data to the valid range for imshow with RGB data ([0..1] for floats or [0..255] ❓报错原因 ...

最新文章

  1. scala成长之路(2)对象和类
  2. spoj 26130 Binary numbers
  3. 现在还有必要学Java开发吗?前景好吗?
  4. CodeSmith注册机,支持5.2.2和5.2.1版
  5. JavaScript消息框
  6. H.264软件解码器在PXA270平台上的优化
  7. 高通量数据中批次效应的鉴定和处理(五)- 预测并校正可能存在的混杂因素...
  8. 详解协方差与协方差矩阵计算
  9. GIPC2018全球知识产权生态大会
  10. tiktok+独立站怎么引流?
  11. 模糊粗糙集及数据降维
  12. Ae:Roto 笔刷工具和调整边缘工具
  13. Vray2.0材质手册
  14. 靶子环数图片_一种靶子环数的图像识别方法与流程
  15. 【循序渐进学运维】MySQL运维系列文章汇总
  16. 网络推广能否为企业带来效益以及精彩回复
  17. 失败并不可怕,可怕的是害怕失败
  18. vue-router 有哪几种导航钩子
  19. MOTT消息协议的学习
  20. 模拟cmos集成电路(5)

热门文章

  1. 《都挺好》:编剧你是不是对硅谷渣男有什么误解?
  2. java和python哪个更好找工作?
  3. 骚操作,VSCode上发布知乎
  4. 龙族幻想服务器维护中怎么办,龙族幻想社团维护费用不足怎么办_龙族幻想社团维护费用解决攻略_玩游戏网...
  5. 量化交易 多因子打分法策略
  6. echarts柱状图
  7. java-静态对象:
  8. 这就是为什么选择C语言不用python的原因
  9. 仿写微信公众号添加自定义菜单 并给后台存数据
  10. LNK2019解决思路