Abap IDOC\u创建\u检查参数填充?
我正在检查接口Abap IDOC\u创建\u检查参数填充?,abap,idoc,badi,Abap,Idoc,Badi,我正在检查接口IF\u EX\u IDOC\u CREATION\u CHECK的实现,该接口有一个带有3个参数的方法IDOC\u DATA\u CHECK: IDOC_控制型EDIDC IDOC_数据类型EDIDD_TT 创建IDOC类型C 我的问题是,我在互联网上找不到与此接口相关的文档或示例。我想知道参数IDOC\u DATA在调用时具体有什么值?它是一次处理一种材料的IDOC,还是携带所有材料的所有IDOC 打破我头脑的密码是 loop at idoc_data assigning &l
IF\u EX\u IDOC\u CREATION\u CHECK
的实现,该接口有一个带有3个参数的方法IDOC\u DATA\u CHECK
:
IDOC\u DATA
在调用时具体有什么值?它是一次处理一种材料的IDOC,还是携带所有材料的所有IDOC
打破我头脑的密码是
loop at idoc_data assigning <it_data>.
case <it_data>-segnam.
when 'E1BPE1MATHEAD'. " Segment
clear: it_mat,zliser.
it_mathead = <it_data>-sdata.
...
if sy-subrc eq 0. " -------> This
exit. " -------> is my
endif. " -------> headache
...
idoc_数据分配处的循环。
凯斯-塞格南。
当“E1BPE1MATHEAD”时。“部分
清楚了:这是马,兹利泽。
it_mathead=-sdata。
...
如果sy subrc等式为0。“------>此
出口“——>是我的
endif.---->头痛
...
当涉及到退出。
语句时,它会退出循环而不处理下一个IDOC,但我不知道它是否停止检查所有材料的所有下一个IDOC,或者如果使用另一种材料的下一组IDOC再次调用\u EX\u IDOC\u CREATION\u CHECK~IDOC\u DATA\u CHECK方法
不幸的是,我无法使用示例数据运行此接口,因为它直接更改其他系统的数据,所以我只能读取代码
因此,如果有人在这个问题上有经验或参考,我将感谢你的帮助
提前感谢。exit语句将导致程序退出循环,如果循环是方法中唯一的处理块,它也将退出方法 但是,应该为每个IDOC再次调用BADI/方法
您是否有一个开发或QA环境,您可以在其中测试这一点以确保?exit语句将导致程序退出循环,如果循环是该方法中唯一的处理块,它也将退出该方法 但是,应该为每个IDOC再次调用BADI/方法
您是否有一个开发或QA环境,您可以在其中测试这一点以确定?尝试搜索“IDOC\u CREATION\u CHECK BAdI”。您可能会找到更多信息。请尝试搜索“IDOC\u CREATION\u CHECK BAdI”。你可能会发现更多的信息。是的,我知道,不幸的是,这个实现直接连接到其他系统,所以,如果我测试它,我会在其他系统中编写,但你的答案是我所怀疑的。这只是问题的一部分,因为这个方法似乎保留了最后一个IDOC的信息,所以在下一次调用时,这些值会保留下来并污染当前的信息。我想触摸代码,对写入其他系统的代码行进行注释,并对其进行测试,但这是保修代码,我只能阅读。谢谢回复。你能找到类实例化的地方吗?听起来像是重用了对象引用,而不是正确地实例化。或者可能有一些以前的IDOC遗留下来的流氓静态属性?当一个作业被激活时,这个BAdi工作,该作业在内部调用这个实现。我看过SM37的工作,它有一个变体。周六,我在DEV中实现了我自己的实现,我可以运行它,正如您编写的那样,它一次从一种材料调用idoc,然后传递到另一组。实现的代码也有内部变量,据我所知,它应该清除所有这些变量。我正在调试,所以弄清楚那里发生了什么只是时间问题。是的,我知道,不幸的是,这个实现直接连接到其他系统,所以,如果我测试它,我会在其他系统中编写,但你的答案是我所怀疑的。这只是问题的一部分,因为这个方法似乎保留了最后一个IDOC的信息,所以在下一次调用时,这些值会保留下来并污染当前的信息。我想触摸代码,对写入其他系统的代码行进行注释,并对其进行测试,但这是保修代码,我只能阅读。谢谢回复。你能找到类实例化的地方吗?听起来像是重用了对象引用,而不是正确地实例化。或者可能有一些以前的IDOC遗留下来的流氓静态属性?当一个作业被激活时,这个BAdi工作,该作业在内部调用这个实现。我看过SM37的工作,它有一个变体。周六,我在DEV中实现了我自己的实现,我可以运行它,正如您编写的那样,它一次从一种材料调用idoc,然后传递到另一组。实现的代码也有内部变量,据我所知,它应该清除所有这些变量。我正在调试,所以弄清楚那里发生了什么只是时间问题。