SAP PO/PI-更好的转换

2020-09-22 02:33发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


我们正在使用单栈PO v 7.5(不确定SP级别)。 我们已经设置了许多转换UDF,这些UDF从SAP提取数据并将其转换为客户所需的数据。 代替每个单独的地图,这是在全局级别进行的,以便于更新。


一个示例将"合作伙伴资料"编号转换为EDI-X12 ISA/GS ID对(发送者/接收者)。 Java代码很简单。 根据IDOC中提供的合作伙伴资料编号返回ISA/GS ID信息。

以下是我们正在使用的示例UDF:

公共无效getEDI_ISA_Info(String []客户,ResultList senderQualifier,ResultList senderID,ResultList receiverQualifier,ResultList ReceiverID,Container容器)抛出StreamTransformationException {

String sysName = getSAPSystemEnvironment(container);
//String [] [] info = {{"参数"," isa05"," 06"," 07"," 08"},{下一组} }

如果(customer == null || customer.length == 0)
{
container.getTrace()。addWarning(" input:ERROR sysname:" + sysName);
返回;
}

//container.getTrace().addWarning("输入:" +客户[0] +" sysname:" + sysName);

//测试 -SetUp
String [] [] info = {
{" sysName-customer"," isa05"," 06"," 07"," 08"},
{" Test-1", " 12"," 67696876"," 01"," 876544356"},
{" Test-2"," 01"," 125679"," 14"," 123456"},
{" Test -3"," 12"," test1234"," 01"," abdT"}};

字符串名称=(sysName.equals(" PRD")?" Prod-":" Test-")+ customer [0];
for(int i = 0; i {
//container.getTrace().addWarning("信息名称=" +信息[i] [0] +",名称=" +名称);
如果((信息[i] [ 0] .equals(name)){
senderQualifier.addValue(info [i] [1]);
senderID.addValue(info [i] [2]);
receiveerQualifier.addValue(info [ i] [3]);
receiverID.addValue(info [i] [4]);

return;
}
}


但是,我想知道是否有更好的方法可以做到这一点。

我们公司已通过GMP和FDA监管,因此我们对PI/PO系统进行了监控。 我们必须提交更改请求以更新这些表(因为它需要传输)。 但是,如果我们将数据保留在File或JDBC(或其他方式)外部,则可以避免此文书工作并加快处理速度。

有什么建议吗? 有什么想法吗?

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


我们正在使用单栈PO v 7.5(不确定SP级别)。 我们已经设置了许多转换UDF,这些UDF从SAP提取数据并将其转换为客户所需的数据。 代替每个单独的地图,这是在全局级别进行的,以便于更新。


一个示例将"合作伙伴资料"编号转换为EDI-X12 ISA/GS ID对(发送者/接收者)。 Java代码很简单。 根据IDOC中提供的合作伙伴资料编号返回ISA/GS ID信息。

以下是我们正在使用的示例UDF:

公共无效getEDI_ISA_Info(String []客户,ResultList senderQualifier,ResultList senderID,ResultList receiverQualifier,ResultList ReceiverID,Container容器)抛出StreamTransformationException {

String sysName = getSAPSystemEnvironment(container);
//String [] [] info = {{"参数"," isa05"," 06"," 07"," 08"},{下一组} }

如果(customer == null || customer.length == 0)
{
container.getTrace()。addWarning(" input:ERROR sysname:" + sysName);
返回;
}

//container.getTrace().addWarning("输入:" +客户[0] +" sysname:" + sysName);

//测试 -SetUp
String [] [] info = {
{" sysName-customer"," isa05"," 06"," 07"," 08"},
{" Test-1", " 12"," 67696876"," 01"," 876544356"},
{" Test-2"," 01"," 125679"," 14"," 123456"},
{" Test -3"," 12"," test1234"," 01"," abdT"}};

字符串名称=(sysName.equals(" PRD")?" Prod-":" Test-")+ customer [0];
for(int i = 0; i {
//container.getTrace().addWarning("信息名称=" +信息[i] [0] +",名称=" +名称);
如果((信息[i] [ 0] .equals(name)){
senderQualifier.addValue(info [i] [1]);
senderID.addValue(info [i] [2]);
receiveerQualifier.addValue(info [ i] [3]);
receiverID.addValue(info [i] [4]);

return;
}
}


但是,我想知道是否有更好的方法可以做到这一点。

我们公司已通过GMP和FDA监管,因此我们对PI/PO系统进行了监控。 我们必须提交更改请求以更新这些表(因为它需要传输)。 但是,如果我们将数据保留在File或JDBC(或其他方式)外部,则可以避免此文书工作并加快处理速度。

有什么建议吗? 有什么想法吗?

付费偷看设置
发送
2条回答
Haoba3210
1楼-- · 2020-09-22 03:12

如果您在Production env中的Integration Directory中进行了更改。 你能避免文书工作吗? 看一下ValueMappings。 如果标准的"价值映射"不能完全根据您的要求进行调整,请记住存在的内容和用于管理它的API。

在客户的采购订单中,我使用了带有分隔符的3,4种不同值的ValueMappings。

95年老男孩
2楼-- · 2020-09-22 02:51

我们尽可能使用通用的集成配置对象(ICO)对象和地图。 我们将发票发送给的所有客户都使用发票ICO对象。 这包括EDI-X12,EDIFACT,cXML,IDOC和其他各种格式。 即使在这个IDOC对象中,我们也有常用的消息映射。 cXML消息映射对于该特定映射上的所有客户都是通用的。 在该一张信息地图中,身份根据发送的客户而改变。 地图必须确定哪个客户并应用正确的信息(此数据未存储在SAP中,也不在Idoc中提供)。 UDF功能为所有客户(一个地方来支持所有翻译)执行这些翻译。

我看不到如何使用值映射来处理所有情况。 我对值映射或API知之甚少,无法知道是否可以这样做,但是我将作进一步调查。

感谢您的回复。

一周热门 更多>