SAP Business Partner WebService 使用问题大全
文章目录1. 在哪里可以查找到SAP官方文档用以配置BP与外围系统的WebService交互2. 如何将BP一次性分发到多个系统3. 如何避免目标系统中的BP角色被删除4. 如何防止在数据分发后添加了不必要的BP角色5. 如何控制某些BP不发送到指定目标系统通过DRFF6. 在多个系统中实现自动数据分发系统A-系统B-系统C7. BP分发过程中的编码范围确定如何确保目标系统与源系统保持一样的BP号码8. BP分发过程中的客户/供应商账户组确定9. 如何分发带有员工角色的BP主数据10. 如何实现BP的直接分发或池分发11. 如何仅将主BP分发到目标系统忽略业务伙伴关系12. Key Mapping相关报错13. 如何通过SPROXY_START重新处理报错/成功的XML报文14. 报文消息在SXMB_MONI或SXI_MONITOR中显示而不是SRT_MONI15. 如何解决BP分发过程中的锁定问题16. 为何当系统中存在待处理消息时BP无法进行分发操作17. 如何检查、矫正或修改Key Mapping单条或批量18. 如何映射自定义字段BAdI1. 在哪里可以查找到SAP官方文档用以配置BP与外围系统的WebService交互S/4HANA系统使用BP WebService: 在S/4HANA中配置SOA ManagerMDG系统使用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 - 系统C7. 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 角色 1657(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_InII_MDG_BP_BUSINESS_PARTNER_REL- 处理 BusinessPartnerRelationshipSUITEBulkReplicateRequest_InII_MDG_BP_RPLCTCO- 处理 BusinessPartnerSUITEBulkReplicateConfirmation_InII_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中新增等待和重复逻辑用于处理数据锁定问题。以下是代码示例EXPORT bupa_enq_repeats FROM20bupa_enq_wait FROM3TO MEMORY IDBUPA_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_100BP号码在目标系统和源系统中完全一致如果不同系统中的BP编号相同你可以使用标准报表来批量创建Key MappingMDG_ID_MATCH_BP_CP_LINK_UPD:供应商联系人 Key MappingMDG_ID_MATCH_BP_CP_LINK_UPD_1:客户联系人 Key MappingMDG_ID_MATCH_CUST_BP_REL_UPD:客户 Key MappingMDG_ID_MATCH_SUPP_BP_REL_UPD:供应商 Key MappingBP号码在目标系统和源系统中不一致如果BP编号在不同的系统中不一样SAP没有提供标准工具可以批量维护Key Mapping在该情况下只能手工更新。总结需求报表支持批量显示Key MappingMDG_ANALYSE_IDM不支持创建或编辑Key MappingMDG_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 结构数据库。