云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

全站加速_冒险岛服务器_速度快

小七 141 0

概述:

Sap适配器模块IDOCFlatToXmlConvertor可用于将IDoc平面文件中的消息转换为XML格式。通常,它被添加到发送方适配器中,以便将消息转换为XML格式。

在本博客中,我将描述从自定义解决方案迁移到标准bean IDOCFlatToXmlConvertor的过程。

现有解决方案:

将平面文件转换为idoc的现有解决方案是在SAP PI 7.0系统中创建的。由于没有标准bean将平面文件转换为IDoc,我们构建了一个自定义bean来进行平面文件到IDoc的转换。

解决方案依赖于SAP PI系统上ABAP堆栈上的SAP IDoc元数据。

我们的文件可以在开头10个字符中有一些额外的字段。

一些文件可以有段类型,其他文件将有段定义。

文件可以有多个IDoc的数据。

文件可以是ALE格式(即控制和数据记录是单个连续字符串)

例如ALE文件格式

具有段类型和前导数据的非ALE格式和控制记录

具有段定义的非ALE格式

以上是三个示例但数据可以是任何格式和段类型/段定义信息的组合。

解决方案的缺点:

不适合未来SAP的SAP PO(仅Java系统)集成策略。正在从SAP PI ABAP堆栈读取元数据。如果IDoc发生变化,需要手动刷新IDoc元数据。

但是,该解决方案非常健壮,并且被成千上万的适配器(2000+)使用。

开始为将来做准备

同时从PI 7.0系统迁移到PI 7.4系统,随着底层javaapi的修改,我们不得不再次编写适配器模块。我们决定不尝试切换到标准bean,因为标准bean不会执行以下操作:

我们的文件开头可能有一些需要删除的字符。数据可以是段类型或段定义。最初,标准bean只处理段定义。通过允许段类型处理,这一点得到了增强。(见注2267985)。但是,我们无法在mass中确定适配器是否将处理段类型或段定义。有些文件是ALE格式的。因此,控制和数据记录将显示为一条连续的线,而不是分成单独的控制线和每条数据记录的新行,我们决定创建一个定制的预处理bean,它将格式化标准bean所需的数据。

计划用标准SAP\u XI\u IDOC/IDOCFlatToXmlConvertor模块和新的定制模块的组合来替换旧bean

因此在功能上我们将出现以下情况

旧bean=IdocPreProcessbean+SAP\u XI\u IDOC/idocplattoxmlconvertor

大量更改通道的要求

由于我们有数千个通道使用这个bean,所以更改需要大量进行。

我们创建了一个工具,用于使用目录api进行更改,这样我们就可以大量更改并在需要时快速恢复到旧版本。可以从这里访问William Li的博客,它是构建工具的基础。其思想是:

删除行开头的字段是一个轻量级的字符串操作根据Note2267985,我们可以处理具有段类型和段定义的文件如果文件是ALE格式,可以很容易地转换为多行格式。

这里有一些将单行文件转换为多行格式的提示:

控制记录映射到ABAP结构EDI\U DC40,长度为524个字符。

数据记录映射到结构EDIDD,长度为1065个字符。

使用此信息,单行ALE文件可以转换成标准bean所期望的格式。

障碍:

使用bean的测试对于单个测试有效,消费返现,但是当我们开始部署更改以大量使用新bean时(我们以10个通道作为试点进行测试),这将需要我们改变成千上万的通信渠道。

有两个主要问题:

我们无法确定哪些文件使用段类型,哪些文件使用段定义。我们甚至不确定文件中段定义的段发布级别。

查看一个示例段类型和段定义屏幕截图,云服务器服务,一些文件有E1EDKA1,而其他文件可以有E2EDKA1003、E2EDKA1002,E2EDKA1001或E2EDKA1.

这是最大的障碍,因为我们无法自动确定接口的这些属性。在旧bean中,自定义函数模块可以访问所有元数据,并且可以轻松地处理任何发布级别的段类型或段定义。在ABAP功能模块IDX\u IDOC\u TO\u XML中进行了内部处理。

对解决方案的修改:

总之,我们得到了一个解决方案,但由于无法识别文件数据属性,我们无法进行大规模更改,因此无法实现。因此,我们决定加强解决方案,以满足路障。

我们将始终将段定义转换为段类型。我们将阅读当前版本的IDoc元数据。

您可以阅读我之前写的关于如何在Java堆栈上读取IDoc元数据的博客。链接在这里。

解决方案依赖于以下方法:

检查文件是否包含段定义或段类型。这可以通过检查第一条数据线的段信息来验证。段类型具有以下特征:标准的SAP段定义从E2开始。对于自定义段(以及所有最近的段),最后3个字符是数字。这在ABAP方面得到了保证。每当生成一个新的段时,序列就会递增。一旦我们有了当前版本级别的段类型/段定义映射,数据与大数据技术,我们就开始介绍以前的段定义的信息。这是必需的,因为文件数据可以具有任何版本级别的段定义。查看其中一个修订了很多的段,返现,我们看到有10个版本的段定义

当我们读取当前版本级别(740)的元数据时,我们得到以下信息。

其他版本是由适配器模块通过减少段定义计数器来创建的。

这是必需的,原因如下: