PO 系列之 PO 接口在 ECC 中的开发

作者:ABAP技巧与实战 约 10 分钟阅读 更新日期:2025-03-02 1 年前更新 标签:ABAP, 开发
PO 系列之 PO 接口在 ECC 中的开发 - 封面图
PO 系列之 PO 接口在 ECC 中的开发 - 封面图

原创 无峰 [ ABAP 技巧与实战 ](javascript:void\(0\);)

**点击蓝字** 关注我们

前言

PO(/PI)是SAP公司的一个中间件产品,用来辅助连接SAP系统与外围系统. (当然外围系统之间也可以使用PO).

一般情况下,异步接口推荐使用PO来确保数据正确抵达目标系统.

PO可以完成一些数据内容转换,群发(一份数据发给多个异构系统),分发(数据区分特征发送给特定的系统)等功能.

**本文主要介绍ABAP程序怎么调用PO接口发送数据,怎么处理PO传输过来的数据.**

备注:本文只涉及PO与ECC 通过XI方式连接(通道配置如下图).

PO 系列之 PO 接口在 ECC 中的开发 - 封面图
PO 系列之 PO 接口在 ECC 中的开发 - 封面图
PO 系列之 PO 接口在 ECC 中的开发 - 封面图
PO 系列之 PO 接口在 ECC 中的开发 - 封面图

建立连接

建立ECC和PO的连接

> 详见连接 无峰,公众号:ABAP 技巧与实战 [ PO系列之 配置ECC和PO的连接

> ](https://mp.weixin.qq.com/s?__biz=Mzg4MjA1MjE4NQ==&mid=2247486018&idx=1&sn=fc2a16bfd90f45cde95ccca5f79f5292&chksm=cf5dd774f82a5e6218c33803fb1d1c213af83d8230576fc4e3f222fa396ed0350de3e0ad0322&token=584483001&lang=zh_CN#rd)

注册接口对象

执行TCODE: SPROXY 找到PO和ECC的接口对象.如果找不到,有可能是系统连接问题(SM59中的G类型连接SAP_PROXY_ESR起关键作用).

展开树状结构,根据PO配置采用的命名规则, ECC的组件可能会存在与 PN_ERP 或PN_ECC节点下. (注

PN_<系统>可能只是部分项目的命名规范,具体情况需咨询PO顾问)

PO 系列之 PO 接口在 ECC 中的开发 - 封面图
PO 系列之 PO 接口在 ECC 中的开发 - 封面图

_**01** _

**出站对象**

出站指数据从ECC发出.

进一步展开查找与ECC相关的出站接口对象,如图. 其中的namespaces命名规范及service_consumers命名规范咨询PO顾问.

SERVICE_CONSUMERS就是需要引入的PO接口对象.

如果对象未引入. 显示图标

PO 系列之 PO 接口在 ECC 中的开发 - 封面图
PO 系列之 PO 接口在 ECC 中的开发 - 封面图

对象已引入,显示图标

PO 系列之 PO 接口在 ECC 中的开发 - 封面图
PO 系列之 PO 接口在 ECC 中的开发 - 封面图
PO 系列之 PO 接口在 ECC 中的开发 - 封面图
PO 系列之 PO 接口在 ECC 中的开发 - 封面图

双击未引入的对象,进入向导功能,输入开发类,请求号及前缀(根据命名规范设置前缀,一般用Z<外部系统号>_ )

PO 系列之 PO 接口在 ECC 中的开发 - 封面图
PO 系列之 PO 接口在 ECC 中的开发 - 封面图

继续

PO 系列之 PO 接口在 ECC 中的开发 - 封面图
PO 系列之 PO 接口在 ECC 中的开发 - 封面图

点击完成后, 系统创建 service consumer 对象. 需要激活一下.确保激活正确,并看到响应的成功日志.

PO 系列之 PO 接口在 ECC 中的开发 - 封面图
PO 系列之 PO 接口在 ECC 中的开发 - 封面图

激活后,系统创建了一个类

ZTST_CO_SIO_ECC_TST_DEM002 ,类中包含方法SIO_ECC_TST_DEM002 . 调用该方法即可传输数据.

PO 系列之 PO 接口在 ECC 中的开发 - 封面图
PO 系列之 PO 接口在 ECC 中的开发 - 封面图

_**02** _

**入站对象**

入站指数据进入ECC系统

入站对象需要找service providers对象.激活步骤和出站对象一样.

PO 系列之 PO 接口在 ECC 中的开发 - 封面图
PO 系列之 PO 接口在 ECC 中的开发 - 封面图

_**03** _

**对象修改后重新激活**

一般情况下,激活service consumer 对象后,系统会自动激活该对象关联的data types 及message

types对象(这两个对象涉及到数据字典定义),如果data types 发生过增删字段的调整, 调整过的对象前会显示图标

PO 系列之 PO 接口在 ECC 中的开发 - 封面图
PO 系列之 PO 接口在 ECC 中的开发 - 封面图

此时需要对该对象单独重新激活一下.

PO 系列之 PO 接口在 ECC 中的开发 - 封面图
PO 系列之 PO 接口在 ECC 中的开发 - 封面图

出站程序开发

出站指数据从ECC系统发出.出站程序主要就是调用出站对象的方法实现数据的发出.

_**01** _

**数据定义部分**

参考对象方法中的参数定义所需的变量及节点变量

PO 系列之 PO 接口在 ECC 中的开发 - 封面图
PO 系列之 PO 接口在 ECC 中的开发 - 封面图

_**02** _

**数据赋值部分**

按照嵌套结构 ls_output 给其中的节点赋值(赋值内容参考接口文档).

_**03** _

**调用前准备部分**

PO 系列之 PO 接口在 ECC 中的开发 - 封面图
PO 系列之 PO 接口在 ECC 中的开发 - 封面图

_**04** _

**消息反馈**

设置异步接口的PO反馈

> 详见链接 无峰,公众号:ABAP 技巧与实战 [ PO系列之 消息的确认反馈

> ](https://mp.weixin.qq.com/s?__biz=Mzg4MjA1MjE4NQ==&mid=2247485858&idx=1&sn=02ae23f23ae135c7ceac46da0040e9b7&chksm=cf5dd494f82a5d82a2c7c8fdff6bb129ed9f832ddec3a67ebbe5093ad1fc9e046da888240b3e&token=584483001&lang=zh_CN#rd)

PO 系列之 PO 接口在 ECC 中的开发 - 封面图
PO 系列之 PO 接口在 ECC 中的开发 - 封面图

_**05** _

**接口方法调用部分**

图中通过变量拼凑的方法名,动态调用. 实际开发中,直接静态写入调用的方法即可. 调用后,可以读取并记录一下发送数据和GUID的关系.

PO 系列之 PO 接口在 ECC 中的开发 - 封面图
PO 系列之 PO 接口在 ECC 中的开发 - 封面图

入站程序开发

入站指数据从其它系统传入ECC系统.ECC作为数据的接收方. 入站代码主要写在入站代理对象的执行类中.

_**01** _

**执行类**

入站和出站有点不太一样. 需要找到入站对象的执行类

PO 系列之 PO 接口在 ECC 中的开发 - 封面图
PO 系列之 PO 接口在 ECC 中的开发 - 封面图

_**02** _

**类方法**

双击执行类,进入类方法, 在执行类的方法中写代码. (变量定义部分参考出站程序)

PO 系列之 PO 接口在 ECC 中的开发 - 封面图
PO 系列之 PO 接口在 ECC 中的开发 - 封面图
PO 系列之 PO 接口在 ECC 中的开发 - 封面图
PO 系列之 PO 接口在 ECC 中的开发 - 封面图

_**03** _

**获取消息ID部分**

获取PO的消息ID

PO 系列之 PO 接口在 ECC 中的开发 - 封面图
PO 系列之 PO 接口在 ECC 中的开发 - 封面图

_**04** _

**数据处理部分**

根据接口文档把接口传递得数据整理成调用BAPI或写入自定义表或产生IDOC所需得内容.

_**05** _

**业务处理部分**

需要注意的是,一般消息的定义方式都允许携带多个单据的信息,这里不建议直接调用BAPI产生后续单据(因为很难确保多单的一致性提交,消息重处理机制是按整个消息处理的).一般写入自定义表或IDOC,

后续程序处理自定义表中内容或IDOC产生业务单据.

PO 系列之 PO 接口在 ECC 中的开发 - 封面图
PO 系列之 PO 接口在 ECC 中的开发 - 封面图

_**06** _

**提交或错误处理**

如果调用BAPI发生了错误, 需要把错误传递给给消息监控器

(错误处理的类名,图中的变量CNS_CLASS_NAME,值来自于PO段定义的一个异常消息FALTAL MESSAGE 生成的对象)

备注: 如果写入自定义表后还需要处理, 则该处理程序需要监控并重处理报错的内容

PO 系列之 PO 接口在 ECC 中的开发 - 封面图
PO 系列之 PO 接口在 ECC 中的开发 - 封面图
PO 系列之 PO 接口在 ECC 中的开发 - 封面图
PO 系列之 PO 接口在 ECC 中的开发 - 封面图
PO 系列之 PO 接口在 ECC 中的开发 - 封面图
PO 系列之 PO 接口在 ECC 中的开发 - 封面图

消息监控

通过TCODE: SXI_MONITOR可以监控出站或入站消息的处理情况.

黑白旗(整体消息图标)表示已经成功发送给PO. 确认状态取决于是否请求PO反馈目标系统的实际发送情况.

> 详见链接 无峰,公众号:ABAP 技巧与实战 [ PO系列之 消息的确认反馈

> ](https://mp.weixin.qq.com/s?__biz=Mzg4MjA1MjE4NQ==&mid=2247485858&idx=1&sn=02ae23f23ae135c7ceac46da0040e9b7&chksm=cf5dd494f82a5d82a2c7c8fdff6bb129ed9f832ddec3a67ebbe5093ad1fc9e046da888240b3e&token=584483001&lang=zh_CN#rd)

如果调用类时,不设置消息反馈. 则该状态无图标.入站消息.

如果在调用BAPI时,抛出了错误. 消息监控中会显示入站报错图标

整体消息图标

PO 系列之 PO 接口在 ECC 中的开发 - 封面图
PO 系列之 PO 接口在 ECC 中的开发 - 封面图

入站报错图标

PO 系列之 PO 接口在 ECC 中的开发 - 封面图
PO 系列之 PO 接口在 ECC 中的开发 - 封面图

_**01** _

**查看报错信息**

点击入站报错图标,可以看到BAPI报错的具体信息. 下图是所有状态的图标示例.

PO 系列之 PO 接口在 ECC 中的开发 - 封面图
PO 系列之 PO 接口在 ECC 中的开发 - 封面图
PO 系列之 PO 接口在 ECC 中的开发 - 封面图
PO 系列之 PO 接口在 ECC 中的开发 - 封面图

_**02** _

**消息内容**

双击监控器中的条目, 可以看到消息的具体内容,报错信息在这里也能通过点击其它相关节点看到.

PO 系列之 PO 接口在 ECC 中的开发 - 封面图
PO 系列之 PO 接口在 ECC 中的开发 - 封面图

_**03** _

**消息重处理**

对于错误的消息,可以在监控器中启动重新处理(选中错误消息行,重新启动).入站部分的BAPI报错原因解决后, 可以发起重处理,直到消息成功.

PO 系列之 PO 接口在 ECC 中的开发 - 封面图
PO 系列之 PO 接口在 ECC 中的开发 - 封面图

_**04** _

**队列监控**

ECC中的消息处理是通过qrfc实现的. SMQ1,SMQ2 在消息监控中也能起到一定的作用(主要用于重启报错的队列).

> 详见链接 无峰,公众号:ABAP 技巧与实战 [ SAP小技巧 关于qRFC调用

> ](https://mp.weixin.qq.com/s?__biz=Mzg4MjA1MjE4NQ==&mid=2247485540&idx=1&sn=9b798de86d1966fe142c69467865ecce&chksm=cf5dd552f82a5c44e558b8d96e9408fa6f29fd934c6e8268b7a5a219196575614a4c16ae66bb&token=584483001&lang=zh_CN#rd)

总结

PO与ECC之间通讯是通过SPROXY产生的接口对象的代理类.

• 出站程序处理调用代理类的方法.

• 入站程序处理在代理类方法中写入代码.

即可完成ECC与PO数据得交互.

SXI_MONITOR作为消息监控器, 可以在ECC段确保数据与PO正确的交互.

异步接口的两个重要部分: 日志与报错重处理就是在消息监控器中实现的.

PO与ECC还可以通过RFC或IDOC方式交互数据. 但是一般项目中采用XI方式就足够了.该方式更灵活,可以通过代码实现一些更复杂的逻辑. 推荐使用.

通过XI中的代码产生IDOC也是一个推荐的方式,这样就可以启用IDOC的监控与重处理机制了.

** THE **

** END **

**约定**

如果你对这篇文章感兴趣,请帮忙点赞,在看,分享.

( **如果你真的喜欢这篇文章,请记得回来打个赏,作为支持我继续下去的动力,这是一个正反馈过程.

越多的人打赏,作者越有动力分享,读者就能享受更多的福利.毕竟打赏的金额富不了我,穷不了你,却能支持这个公众号长久发文.** )

PO 系列之 PO 接口在 ECC 中的开发 - 封面图
PO 系列之 PO 接口在 ECC 中的开发 - 封面图

**公众号 : syjf1976_abap**

**ABAP开发技巧**

**微信号 : 392077**

**请扫码加入公众号群,提问或参与话题讨论**

PO 系列之 PO 接口在 ECC 中的开发 - 封面图
PO 系列之 PO 接口在 ECC 中的开发 - 封面图
ABAP技巧与实战

关于作者:ABAP技巧与实战

企业信息化与 SAP 技术顾问,长期专注 SAP ABAP、FI/CO、MM、SD 等模块的技术分享与实战经验总结。查看更多介绍

来源说明:本文内容由「PO系列之PO接口在ECC中的开发.md」整理生成,仅用于内部技术分享与学习交流。