SAP PO上传异步接口(PO从对方中间表读取数据)

导语:最近的项目上出现了一个奇奇怪怪的需求,上传接口居然不是外围系统给我传输,而是他数据丢到他的中间表,然后PO去取过来,真就他不动,我自己动。
下面说一下需要怎么来实现吧,其实跟PO下传接口写入中间表一样,只不过方向变了,还有一些小变动,这里只说一下区别,不做过多的赘述,不会PO下传接口写入中间表的,戳后面的链接【SAP PO下传异步接口(写入对方中间表)】

区别一:发送方和接收方对调

写中间表的话,是下传接口,SAP是发送方,是DTO的概念,要在MAPPING中的左边。
而上传SAP就是接收方,是DTI的概念,要在MAPPING中的右边,而外围系统作为发出方(这里的发送方是一个假意的发送方,因为需要我们去取数,暂且当作发送方理解吧),是DTO的概念,要在MAPPING的左侧。
在这里插入图片描述

区别二:发出方的节点名称

一般来说我们习惯用SHEET作为第一节点的名字,ITEMS作为次级节点的名称,但是这里的节点名称需要用【row】命名,至于为什么我也不知道,用就好了。
在这里插入图片描述

区别三:接收方地址配置

这里是最关键的地方了,前面只是一个简单的方向对调,这里涉及到很多参数了。

1、Connection配置

配置对方数据库信息,且方向为sender
在这里插入图片描述

2、Processing配置

配置点名称解释
Quality of ServicesExactly Once (不知道是干啥的)
Poll Interval(secs)取数时间间隔,多久一次,以秒为单位
Query SQL Statement数据读取语句
Document Name这里选择Message Types的组件
Document Namespace这里选择对应的发出方的namespace
Update SQL Statement取数以后对对方表的处理

我这个接口的逻辑是,让对面在表中放一个FLAG字段,我每次去取FLAG为空的数据,取过来给他FALG字段update一个X,这样下次就不会再取了
在这里插入图片描述

3.Advanced配置

Status :决定接口是否启用,Active–启用 Inactive不启用
Advanced Mode :勾选上
Transaction lsolation level:这里要选可序列化(serializable)
在这里插入图片描述
结语:上面的配置中可以发现,取数语句只能写一个,也就是说只能用单表接口去取,所以对于一套有抬头有行项目的表来说,不是很友好,但也有解决办法。

但是在这过程中会有一个东西问题,就是当数据量太大的时候,PO发给SAP会出错,就需要把包缩小,研究了好久最后解决方案是在SQL语句和UPDATE语句后面加上ROWNUM的限制,ROWNUM <= 10000即可

1、拆分多个接口取,每个表里一个Flag字段
2、在取数语句中写join语句,把主从表的数据组合成多组单条的数据,先去过来,再用Group by语句根据主键拆分。具体拆分语句后面会分享出来。
在这里插入图片描述
作者:小飞猪猪猪猪猪猪猪–CSDN
注意:转发请注明作者

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小飞猪猪猪猪猪猪猪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值