如何在Process Integration中通过jdbc连接对关系数据数据使用消息映射

2020-08-16 17:29发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)我有一个简单的问题,导致在PI中...

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

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


我有一个简单的问题,导致在PI中实现问题。

我有一个带有标头的数据库和一个带有headerid外键的明细表,将它们连接在一起。 每个标头具有多个详细信息。我希望在接收器端进入类似的数据类型,每个标头具有多个详细信息。 所以我认为这应该很容易,因为两种数据类型相同。

不幸的是,我通过jdbc连接到数据库,但是只能发送回一组非规范化的数据。 jdbc不允许您发回任何层次结构或xml文件。 我的理解是,唯一的结果就是格式

MT_Source
行.... 0..n
Field1
Field2
Fieldn

基本上我已经从标题h中选择h.col1,h.col2,d.col1,d.col2 ..连接细节d在h.headerid = d.headerid上,这会产生类似

的结果

h1col1,h1col2,d1col1,d1.col2 ..

h1col1,h1col2,d2col1,d2.col2 ..

h2col2,h2col2,d3col1,d3.col2 ..

h2col1,h2col2,d4col1,d4.col2 ..

....

现在我的问题是我现在想将其映射回某种格式



我该如何执行消息映射。 如何获取一组非规范化的数据并将其放回xml层次结构中? 我不是邮件映射方面的专家,但是非常称职

有没有更好的方法? 似乎我受困于jdbc中的非分层xml。 因此,如果我有3个标头,每个标头包含4个详细信息,则我有12行,而且我不知道如何创建3个标头,每个标头含4行。

我知道这基本上是有关非规范化的消息映射问题,因此,如果ayone可以指向这样做的博客,将不胜感激

1条回答
歪着头看世界
2020-08-16 17:56

我使用XSLT映射处理了此类问题。 有趣的部分是使用模板,变量,并使用"应用模板"将它们组合在一起。

看看从运输路线确定界面中获取的示例

XML

 <?xml版本=" 1.0"编码=" UTF-8"?>
 
 
  5312000684 
  1324 
 
  0000998450 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
  1 
  einszweidrei 
  true 
 
 
  5312000684 
  0010881741 
  2222 
  2 
  33.23 
 绿洲
  2002342123 
 
 
  5312000684 
  0010881742 
  2223 
  5 
  666 
  Kasabian 
  42 
 
 
  0010881741 
  000001 
  10.000 
 
 
 
 
  0010881742 
  000001 
  4 
 
 
 
 
  0010881742 
  000002 
  5 
 
 
 
 <错误>
  E 
  ZSHIPLINX 
  059 
 Übergabe参数'4913492090'ist nicht korrekt!
 
 
 

XSL

 <?xml version =" 1.0"?>
 
 
 <项目>
 <商品代码>
 
 
 <商品说明/>
 
 <!-要在我们为该标签提供实际数据后立即进行更改-> 0 
 
 
 
 <商品重量>
 <!-要在我们为该标签提供实际数据后立即进行更改-> 0 
 
 <数量>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 <!-为键hu号定义变量->
 
 <项目>
 <!-将hu项目的processingUnitIntKey匹配到hu头中的hu号->
 
 
 
 
 
 <交货>
 
 
 
 <订单号>
 
 
 
 
 
 <运营商ID>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 <!-FIXME->
 
 
 
 <!-FIXME->
 
 
 
 <!-FIXME->
 
 
 <!-FIXME->
 
 
 <!-FIXME->
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 <!-定义密钥传递ID的变量->
 
 
 <!-将hu标头的objectKey与传递标头中的传递ID匹配->
 
 
 
 
 
 
 <货件>
 <!-测试返回类型是否包含任何错误值E,A或X。如果是,则将标志设置为1并包含错误文本->
 
 
 
  1 
 
 
  0 
 
 
 
 <错误消息>
 
 
 
 
 
 
 
 
 
 
 
  X 
 
 <交货>
 
 
 
 
 
 
 

希望可以将您推向正确的方向。 不过,也许有更聪明的方法可以解决您的问题。 因此,YMMV

干杯

詹斯

一周热门 更多>