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_控制型EDIDC
  • IDOC_数据类型EDIDD_TT
  • 创建IDOC类型C
  • 我的问题是,我在互联网上找不到与此接口相关的文档或示例。我想知道参数
    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,然后传递到另一组。实现的代码也有内部变量,据我所知,它应该清除所有这些变量。我正在调试,所以弄清楚那里发生了什么只是时间问题。