文章目录
-
- [1. 在哪里可以查找到SAP官方文档用以配置BP与外围系统的WebService交互?](#1. 在哪里可以查找到SAP官方文档用以配置BP与外围系统的WebService交互?)
- [2. 如何将BP一次性分发到多个系统?](#2. 如何将BP一次性分发到多个系统?)
- [3. 如何避免目标系统中的BP角色被删除?](#3. 如何避免目标系统中的BP角色被删除?)
- [4. 如何防止在数据分发后添加了不必要的BP角色?](#4. 如何防止在数据分发后添加了不必要的BP角色?)
- [5. 如何控制某些BP不发送到指定目标系统(通过DRFF)?](#5. 如何控制某些BP不发送到指定目标系统(通过DRFF)?)
- [6. 在多个系统中实现自动数据分发(系统A->系统B->系统C)](#6. 在多个系统中实现自动数据分发(系统A->系统B->系统C))
- [7. BP分发过程中的编码范围确定,如何确保目标系统与源系统保持一样的BP号码?](#7. BP分发过程中的编码范围确定,如何确保目标系统与源系统保持一样的BP号码?)
- [8. BP分发过程中的客户/供应商账户组确定](#8. BP分发过程中的客户/供应商账户组确定)
- [9. 如何分发带有员工角色的BP主数据?](#9. 如何分发带有员工角色的BP主数据?)
- [10. 如何实现BP的直接分发或池分发?](#10. 如何实现BP的直接分发或池分发?)
- [11. 如何仅将主BP分发到目标系统(忽略业务伙伴关系)?](#11. 如何仅将主BP分发到目标系统(忽略业务伙伴关系)?)
- [12. Key Mapping相关报错](#12. Key Mapping相关报错)
- [13. 如何通过SPROXY_START重新处理报错/成功的XML报文?](#13. 如何通过SPROXY_START重新处理报错/成功的XML报文?)
- [14. 报文消息在SXMB_MONI(或SXI_MONITOR)中显示,而不是SRT_MONI](#14. 报文消息在SXMB_MONI(或SXI_MONITOR)中显示,而不是SRT_MONI)
- [15. 如何解决BP分发过程中的锁定问题?](#15. 如何解决BP分发过程中的锁定问题?)
- [16. 为何当系统中存在待处理消息时,BP无法进行分发操作?](#16. 为何当系统中存在待处理消息时,BP无法进行分发操作?)
- [17. 如何检查、矫正或修改Key Mapping(单条或批量)?](#17. 如何检查、矫正或修改Key Mapping(单条或批量)?)
- [18. 如何映射自定义字段(BAdI)?](#18. 如何映射自定义字段(BAdI)?)
1. 在哪里可以查找到SAP官方文档用以配置BP与外围系统的WebService交互?
- S/4HANA系统使用BP WebService: 在S/4HANA中配置SOA Manager
- MDG系统使用BP WebService: 在MDG中配置SOA Manager (NW 7.53或更高) ;在MDG中配置SOA Manager (NW 7.40或更高);在MDG中配置SOA Manager (NW 7.32或更低)
- Ariba系统使用BP WebService: 通过BP WebService实现Ariba与S/4HANA和MDG的数据交互
- C4C系统使用BP WebService: 通过BP WebService实现C4C与S/4HANA和MDG的数据交互
2. 如何将BP一次性分发到多个系统?
在配置BP集成时,推荐使用服务组(Service Group)并让逻辑端口(Logical Port)在处理待办任务时自动生成。如果你手工创建逻辑端口,将无法实现分发到多个目标系统的功能。因此,BP分发到多个目标系统的SOA配置正确设置后,并不需要手工设置任何逻辑端口。
3. 如何避免目标系统中的BP角色被删除?
为避免删除角色,您可以在目标系统中使用 DRFF 事务码定义角色段筛选器,排除特定情况下要进行数据集成的BP角色。
例如,如果你想避免S/4HANA系统中的角色'FLVN01'(供应商角色)不会被来自C4C的BP数据(客户主数据)删除。在S/4系统中的角色段"业务伙伴角色 - 98601"中,将角色FLVN01加入"排除的删选标准",如下图所示。

4. 如何防止在数据分发后添加了不必要的BP角色?
为了避免数据分发中新增不需要的BP角色:
- 在源系统中:
使用DRFF定义角色段筛选器,排除掉不需要传输的BP角色,这些角色将不会出现在分发报文中 - 在目标系统中:
如果条件不允许修改源系统的筛选器,你也可以选择在目标系统中使用BAdI MDG_SE_BP_BULK_REPLRQ_IN。该BAdI可以修改传入的报文信息,以便删除不需要的BP角色信息。
5. 如何控制某些BP不发送到指定目标系统(通过DRFF)?
为避免BP数据发送到某些目标系统。你可以使用DRF的对象过滤器实现该需求:
-
打开事务码 DRFF
-
选择相关的分发模型并点击"显示"按钮
-
你将看到两部分的内容(如下图):
- 用于限制业务对象的筛选标准:该条件下的所有BP将会被分发到目标系统
- 用于排除业务对象的筛选标准:该条件下的所有BP将不会被分发到目标系统

- 按需求填入相关的筛选标准
- 保存
这套过滤机制使用户能够精确地控制哪些 BP 数据会被分发到目标系统。
6. 在多个系统中实现自动数据分发(系统A->系统B->系统C)
通过web service 实现的标准SAP BP分发的设计初衷就是用来防止 数据接收系统向其他已连接的系统进行进一步的自动分发操作。该设计是为了避免可能出现的分发循环。具体来说,SAP在函数 MDG_BS_BP_OUTBOUND_DRF 中添加了以下逻辑,用来阻止BP数据进一步地自动下发:

因此,并没有标准方式来突破这一限制。
SAP建议,如果BP应该被发送到多个系统,我们应该通过源系统并行分发的方式实现:
- 系统A -> 系统B
- 系统A -> 系统C
而不是:
- 系统A -> 系统B -> 系统C
7. BP分发过程中的编码范围确定,如何确保目标系统与源系统保持一样的BP号码?
为确保在数据分发过程中,目标系统与源系统保持一致的BP编号,你必须在目标系统中配置业务合作伙伴分组,使其使用外部编号范围(视图:V_TB001)。这将允许目标系统直接使用来自源系统报文中的BP号码,而不是自己生成一个新号。
此外,如果没有针对BP分组设置值映射(Value Mapping),则目标系统将直接使用源系统报文中的BP分组用于创建BP。
8. BP分发过程中的客户/供应商账户组确定
在BP分发过程中,目标系统会使用传入报文中指定的客户或供应商账户组。然而,该账户组的校验内容取决于当前系统内的配置:
- 必须将BP分组与客户/供应商账户组进行映射,视图V_TBD001 (客户),视图V_TBC001(供应商)
- 如果上述两个视图中未针对某些特定组合勾选"灵活分组"标识,系统将忽略传入报文中的账户组,而直接使用视图中维护的账户组。
- 如果上述两个视图中针对某些组合勾选了"灵活分组"标识,系统将会直接使用传入报文中的账户组,而不是视图中已定义的账户组信息。
9. 如何分发带有员工角色的BP主数据?
SAP 不建议也不支持通过业务伙伴接口来分发员工BP。因为员工及雇佣信息(如个人地址和银行账户)必须通过人力资源系统来创建和维护。
相反,员工数据应通过特定的员工接口(如 ALE 接口)进行分发,而非通过 BP接口。员工分发完成后,在目标系统中运行相关的员工同步报表,以更新相应的业务伙伴数据。
10. 如何实现BP的直接分发或池分发?
注意:如果客户没有启用SAP MDG系统,不推荐使用池分发模式配置BP分发。
通过以下路径更新分发模式:
- 事务码 DRFIMG
- 路径:数据复制->为数据复制定义自定义设置->定义技术设置->定义业务系统中的技术设置
- 选择目标系统
- 在左侧,双击"定义业务系统,BO"
- 找到或创建BO 类型 986
- 在"输出模式 "列,选择P 池输出 或 D 直接输出 (缺省)
- 保存

11. 如何仅将主BP分发到目标系统(忽略业务伙伴关系)?
在 DRFF 中配置对应的"BP选择模式 "

12. Key Mapping相关报错
以下是一些常见的关于Key Mapping未正确维护而导致的接口报错:
| 消息文本 | 技术信息 |
|---|---|
| 对象标识符类型 888 对应的 ID 值仍然有效 | 006(BS_SOA_COMMON) |
| 对象标识符类型 927 对应的 ID 值仍然有效 | 006(BS_SOA_COMMON) |
| 外部地址代码已被业务合作伙伴Guid & 使用 | 009(BP_DATAREPL_FND) |
| 地址不存在 | 010(AM) |
| 业务伙伴 &1 已存在 | 286(R1) |
| 地址仍在使用,无法删除 | 455(R1) |
| 不存在伙伴 &2 的 BP 角色 &1 | 657(R11) |
| 对当前客户,不支持任务插入 | 007(CVI_EI) |
| 对当前供应商,不支持任务插入 | 042(CVI_EI) |
除了以上这些常见报错外,错误的Key Mapping也会导致一些数据问题出现:
- 合作伙伴功能没有正确创建或更新
- 在同一个报文中多次出现相同的业务伙伴
你可以阅读 业务合作伙伴Key Mapping问题处理 获得进一步的信息。
此外,表 BUT020 中的地址 GUID 在源系统和目标系统之间也必须保持一致。如果两者不一致,就会出现与地址相关的错误。
13. 如何通过SPROXY_START重新处理报错/成功的XML报文?
通过SRT_MONI 或 SXI_MONITOR下载报文XML后,你可以在目标系统中使用事务码 SPROXY_START手工触发数据处理流程。
在手工重新触发前,将XML打开并移除字段 changeOrdinalNumberValue="xxxx" 的值,该字段用于确保多个xml以指定顺序执行。
-
打开事务代码 SPROXY_START
-
输入以下ABAP名称:
- II_MDG_BP_RPLCTRQ - 处理 BusinessPartnerSUITEBulkReplicateRequest_In
- II_MDG_BP_BUSINESS_PARTNER_REL - 处理 BusinessPartnerRelationshipSUITEBulkReplicateRequest_In
- II_MDG_BP_RPLCTCO - 处理 BusinessPartnerSUITEBulkReplicateConfirmation_In
- II_MDG_BP_BUSINESS_PARTNER_RE1 - 处理 BusinessPartnerRelationshipSUITEBulkReplicateConfirmation_In
-
点击 Test 按钮
-
选择 "Generate Initial Req. Template"
-
点击"执行" 按钮
-
上传XML文件
-
执行导入的XML文件
14. 报文消息在SXMB_MONI(或SXI_MONITOR)中显示,而不是SRT_MONI
这种现象通常是由于你在 SAP 系统中对消息处理及集成场景的不同配置方式所致:
-
SXMB_MONI / SXI_MONITOR: 这些事务码用于监控通过SAP PI/XI 运行时的系统处理消息。当消息到达当前系统时,它们会出现在这里:
- 点对点通讯(Point-to-point)未激活
- SOAMANAGER中未配置逻辑端口,因此web service将通过中间件进行传输,而非系统直连
-
SRT_MONI: 该事务码会监控通过ABAP Web Service运行时处理的所有web service消息,不涉及PI/XI系统。若一下情况出现,则消息会在此处显示:
- SOAMANAGER正确配置并激活逻辑端口
- 点对点通讯激活
总结:
如果在 SXMB_MONI(或 SXI_MONITOR)中看到相关消息,通常意味着系统正在使用中间件(PI/XI)进行处理,这是因为缺少逻辑端口配置,或未激活点对点通讯。当所有整合步骤按照官网文档进行配置,并在 SOAMANAGER 中正确设置集成配置,包括激活逻辑端口,消息应在 SRT_MONI 中显示出来。
15. 如何解决BP分发过程中的锁定问题?
通过BP web service进行数据分发时,锁定问题较为常见。以下步骤有助于减轻和解决这些问题:
- 定期执行错误处理报表
- **/SAPPO/RESUBMIT_ORDERS_2:**确保将此后台作业设置为按固定时间间隔运行。该报表将对状态为"已转至外部应用程序"的消息进行重新发送。
- SRT_UTIL_RESTART: 定期执行该报表,将对那些状态为"应用程序错误"和"系统错误"的消息进行重新执行。
- 在BAdI中实施等待WAIT或重复REPEAT逻辑
-
通过程序逻辑在BAdI BUPA_INBOUND中新增等待和重复逻辑,用于处理数据锁定问题。
以下是代码示例:cEXPORT bupa_enq_repeats FROM 20 bupa_enq_wait FROM 3 TO MEMORY ID 'BUPA_ENQ_WAIT'.
16. 为何当系统中存在待处理消息时,BP无法进行分发操作?
当存在未处理的消息时,业务伙伴数据分发功能将被禁用,以避免将过时的信息传输至已连接的系统。
例如,如果系统 A 收到来自系统 B 的消息但未能成功处理该消息,那么该消息将处于"待处理"状态。在这种情况下,系统 A 不会发送有关该业务伙伴对象的任何新消息。
这一措施确保不会发送过时或不完整的信息,因为系统 B 的最新更新尚未被处理。
为了使数据得以正常分发,必须成功处理待处理的消息。也可以通过使用"MDG_DEL_MSG_PEND"报表将待处理消息从消息列表中删除。
17. 如何检查、矫正或修改Key Mapping(单条或批量)?
要检查和处理BP相关的Key Mapping问题,请遵循以下步骤:
- 初始步骤:
- 阅读博文 业务合作伙伴Key Mapping问题处理 获取相关知识
- 检查Key Mapping:
使用事务码 MDG_ANALYSE_IDM 搜索和显示 Key Mapping数据 - 手工编辑Key Mapping:
使用事务码 MDG_KM_MAINTAIN 显示,创建和修改 Key Mapping数据(单条)
- 批量维护:
批量创建或修改Key mapping仅限于以下特定场景:
-
在系统刷新或Client Copy后
当你复制一个系统(例如,从生产系统复制到测试系统)时,所复制的Key Mapping仍将指向原系统的业务系统。
此时应使用事务码 MDG_ADJUST_IDM针对所有Key Mapping信息更新业务系统标识(例如,从PRD_100更新到QAS_100)
-
BP号码在目标系统和源系统中完全一致
如果不同系统中的BP编号相同,你可以使用标准报表来批量创建Key Mapping:
- MDG_ID_MATCH_BP_CP_LINK_UPD: 供应商联系人 Key Mapping
- MDG_ID_MATCH_BP_CP_LINK_UPD_1: 客户联系人 Key Mapping
- MDG_ID_MATCH_CUST_BP_REL_UPD: 客户 Key Mapping
- MDG_ID_MATCH_SUPP_BP_REL_UPD: 供应商 Key Mapping
-
BP号码在目标系统和源系统中不一致
如果BP编号在不同的系统中不一样,SAP没有提供标准工具可以批量维护Key Mapping,在该情况下只能手工更新。
总结:
| 需求 | 报表 | 支持批量 |
|---|---|---|
| 显示Key Mapping | MDG_ANALYSE_IDM | 不支持 |
| 创建或编辑Key Mapping | MDG_KM_MAINTAIN | 不支持 |
| 系统copy后调整 | MDG_ADJUST_IDM | 支持 |
| 批量创建(BP号码一致) | 参见上述多个报表 | 支持 |
| 批量创建(BP号码不一致) | 不支持 | 不支持 |
18. 如何映射自定义字段(BAdI)?
在为业务伙伴企业服务添加自定义字段后,在出站和入站处理过程中,必须确保这些字段得到正确映射。以下的BAdI与此相关:
- MDG_SE_BP_BULK_REPLRQ_OUT: 在出站处理中使用此 BAdI,将来自 API 结构(数据库)的自定义字段值映射到代理结构(XML)中。
- MDG_SE_BP_BULK_REPLRQ_IN: 以便将来自代理结构(XML)和已映射的 API 结构(标准逻辑)的自定义字段映射到最终的 API 结构(数据库)。