我们有一个自定义构建的遗留应用程序,它从SQL服务器数据库收集数据,构建IDOC,然后将该IDOC“发送”到ECC。(这个应用程序是用VB6编写的,并使用SAPGUI 6 SDK来完成。)
我试图解除这个解决方案,并用一个在MII中建立的解决方案来取代它。
据我所知,我需要使用IDOC_Asynchronous_Inbound在MII中创建IDOC,但我无法确定如何填充所需的字段。
IDOC_Asynchronous_Inbound有两个部分:IDOC_CONTROL_REC_40和IDOC_DATA_REC_40
通过查看旧的VB应用程序的源代码,我猜到了填充IDOC_CONTROL_REC_40/item段的字段。我认为这应该可以:
IDOC_INBOUND_ASYNCHRONOUS/TABLES/IDOC_CONTROL_REC_40/item
- IDOCTYP: WMMBID01
- MESTYP: WMMBXY
- SNDPRN: <value>
- SNDPRT: LI
- SNDPOR: <value>
- RCVPRN: <value>
- RCVPRT: LS
- EXPRSS: X查看旧的VB应用程序的源代码,我现在应该添加一个类型为E1MBXYH的片段,并填充以下字段:
- BLDAT: <date>
- BUDAT: <date>
- TCODE: MB31
- XBLNR: <value>
- BKTXT: <value>根据猜测和一些博客文章,我猜我必须将这个段作为item段添加到IDOC_DATA_REC_40段中。
我的猜测是,然后我应该添加E1MBXYI类型的item段,用于我想发送给SAP的所有“记录”,其中包含以下字段:
- MATNR: <value>
- WERKS: <value>
- LGORT: <value>
- CHARG: <value>
- BWART: 261
- ERFMG: <value>
- SHKZG: H
- ERFME: <value>
- AUFNR: <value>
- SGTXT: <value>现在,看看MII中的IDOC_DATA_REC_40部分,这些字段是可用的:
- SEGNAM
- MANDT
- DOCNUM
- SEGNUM
- PSGNUM
- HLEVEL
- SDATA我的猜测是,段名应该进入SEGNAM,而数据(适当的结构/间隔)应该进入SDATA。我不知道我应该在其他领域做些什么(如果有的话)。(我有这个IDOC类型的描述文件,所以我知道如何“构造”我必须放在SDATA段中的数据.数空位,耶!
为了阐明IDOC应该如何构建,这是当前VB应用程序发布的IDOC屏幕截图(链接):
我希望这里的人能确认我在正确的轨道上填充这些段,并且有人知道我应该填写哪些字段。
致以亲切的问候,
托马斯
P.S.查阅了一些资源:
P.P.S.全面披露:我也在SAP社区问答板上发布了这个问题。
发布于 2018-06-18 07:47:40
不幸的是,正确处理SAP IDocs并不像乍一看那样容易。也许看一看SAP类库是个好主意,如下所述:
SAP .Net连接器3.0 -我如何从一个非SAP系统发送一个idoc?
即使您不想切换到Java,至少也可以将它用作参考示例实现,以便了解远程函数模块必须如何填充要发送的IDoc数据。
SAP类库可以与SAP连接器一起从这里下载。
发布于 2018-07-25 17:10:02
我身边没有MII系统,但是您最好彻底检查IDoc文档,而不是阅读茶叶。它可以包含有用的提示,如何填充一个或另一个区段。
转到WE60并输入您的段名( IDoc _CONTROL_rec40/IDoc_rec40)或IDoc定义名称IDOC_Asynchronous_Inbound。

这可能不是很有帮助,但总比什么都没有好。
https://stackoverflow.com/questions/50859837
复制相似问题