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

在尝试通过后台JOB自动化执行WB01的BDC录屏创建地点时遇到错误。问题源于OO方式的ALV在后台无法构建,导致RAISE_EXCEPTION和OBJECTS_OBJREF_NOT_ASSIGNED异常。解决方案是修改标准程序,跳过有问题的屏幕并直接调用其逻辑。经过多次调试和代码修改,最终成功解决了1000和300屏幕的问题,使后台任务能够正常运行。

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


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

后台任务日志:
717614-20180123102059303-886811698.png
 抛RAISE_EXCEPTION异常。
用ST22进去跟踪出错的代码:
717614-20180123102059537-425893952.png
717614-20180123102059772-1311585105.png
出错的地方:
717614-20180123102100069-2035568825.png

结合前台调式,发现了出错屏幕:
717614-20180123102100334-1783310535.png
即SAPLPLANT_DISPLAY_CUSTOMIZING的1000屏幕出问题,经查证原因是屏幕上的ALV是OO方式写的

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

 查找该屏幕被调用的地方:
717614-20180123102100662-1614262066.png
发现两处调用:
717614-20180123102100928-196408734.png
将这两处都打上断点:
717614-20180123102101194-1999621080.png
717614-20180123102101381-1304842300.png
 然后断点调试看是哪个地方,SM37进去:
717614-20180123102101850-1249707748.png
勾上出错的JOB,输入JDBG事务码,回车:
717614-20180123102102115-658172356.png
   
 看调用栈,这样就知道是哪个调用了吧,就是DISPLAY_PLANT_COPY_CUSTOMIZING函数,然后进该函数,找到调用 SAPLPLANT_DISPLAY_CUSTOMIZING的1000屏幕的位置进行代码修改。( 注:在按F8调试完JOB后,发现报 OBJECTS_OBJREF_NOT_ASSIGNED异常
717614-20180123102102319-1866770566.png
但先不要去解决这个问题,本人就因为去解决这个问题耗费了大量时间,这个问题的本质还是因为OO方式的ALV在后台无法构建出的问题,与前面的问题其实是同一问题,只是运行方式不一样:前面的 RAISE_EXCEPTION异常是直接通过任务跑出来的,这个 OBJECTS_OBJREF_NOT_ASSIGNED异常是通过再一次调试该任务出来的。 可以ST22查看出错点:
717614-20180123102102787-1192328183.png

下面就继续修改代码,但代码是标准的程序,一般是不让改的,但我司是老的SAP系统,都不会再升级或打补丁了,再说SAP出来了新的S/4产品,都明确说过,以后不再对老的SAP产品进行维护,就像Windows XP一样,所以想维护想修改BUG的话,就自己来吧

在修改标准程序前,还需要破解程序,不然是修改不了的,我想搞过的人都知道吧,这里就不说破解的事了

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值