CRM_ORDER_MAINTAIN合作伙伴未删除。

2020-08-31 12:01发布

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

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


大家好,

我想通过Z *程序从Order中删除"对员工负责"的合伙人。 以下是我的代码。 但是我仍然无法删除它。 有人可以看一下代码吗?

 lv_partner-ref_guid ='DDCBF5EB8FA58FF19F94001E6849B4E8'。
 lv_partner-ref_handle ='0000000000'。
 lv_partner-ref_kind ='A'。
 lv_partner-ref_partner_handle ='0000'。
 lv_partner-ref_partner_fct ='00000014'。
 lv_partner-ref_partner_no ='200010671'。
 lv_partner-ref_no_type ='BP'。
 lv_partner-ref_display_type ='BP'。
 lv_partner-partner_guid ='DDCDB8C50DFC0CF19F94001E6849B4E8'。
 lv_partner-kind_of_entry =''。
 lv_partner-partner_fct ='00000014'。
 lv_partner-partner_no ='200010671'。
 lv_partner-display_type ='BP'。
 lv_partner-no_type ='BP'。
 lv_partner-mainpartner ='X'。
 将lv_partner插入表lt_partner。

 数据:l_key类型CRMT_LOGICAL_KEY。
 ***输入栏位
 将'000000000014''200010671''BPBP'放入l_key中。

 清除lw_field。
 清除lt_field。

 lw_field-ref_guid ='DDCBF5EB8FA58FF19F94001E6849B4E8'。
 lw_field-ref_handle ='0000000000'。
 lw_field-ref_kind ='A'。
 lw_field-objectname ='PARTNER'。
 lw_field-logical_key ='000000000014200010671 BPBP'。

 lw_fp-fieldname ='PARTNER_FCT'。

 将lw_fp插入表lt_fp。
 lw_field-field_names = lt_fp。

 插入lw_field插入表lt_field。


 数据:lt_mode类型CRMT_ORDERADM_H_COMT,
       lv_mode类型CRMT_ORDERADM_H_COM。

 lv_mode-guid ='DDCBF5EB8FA58FF19F94001E6849B4E8'。
 lv_mode-mode ='D'。
 将lv_mode附加到lt_mode。


 *用于BADI更改EMP响应,状态,文本注释
 通话功能'CRM_ORDER_MAINTAIN'
  出口
      it_partner = lt_partner
  改变
     CT_ORDERADM_H = lt_mode
     ct_input_fields = lt_field
           。
 如果sy-subrc <> 0。
   消息ID sy-msgid类型sy-msgty编号sy-msgno
           与sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4。
 万一。

 数据:it_guid类型为crmt_object_guid_tab。
 * Lv_header_guid类型为crmt_object_guid。

 Lv_header_guid ='DDCBF5EB8FA58FF19F94001E6849B4E8'。
 *
 将LV_HEADER_GUID附加到IT_GUID。

 通话功能'CRM_ORDER_SAVE'
   出口
     it_objects_to_save = it_guid
           。

 如果sy-subrc <> 0。
 *消息ID SY-MSGID类型SY-MSGTY编号SY-MSGNO
 *与SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4。
 万一。

 通话功能'BAPI_TRANSACTION_COMMIT'
 *出口
 *等待=
 *重要
 *返回=
           。

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

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


大家好,

我想通过Z *程序从Order中删除"对员工负责"的合伙人。 以下是我的代码。 但是我仍然无法删除它。 有人可以看一下代码吗?

 lv_partner-ref_guid ='DDCBF5EB8FA58FF19F94001E6849B4E8'。
 lv_partner-ref_handle ='0000000000'。
 lv_partner-ref_kind ='A'。
 lv_partner-ref_partner_handle ='0000'。
 lv_partner-ref_partner_fct ='00000014'。
 lv_partner-ref_partner_no ='200010671'。
 lv_partner-ref_no_type ='BP'。
 lv_partner-ref_display_type ='BP'。
 lv_partner-partner_guid ='DDCDB8C50DFC0CF19F94001E6849B4E8'。
 lv_partner-kind_of_entry =''。
 lv_partner-partner_fct ='00000014'。
 lv_partner-partner_no ='200010671'。
 lv_partner-display_type ='BP'。
 lv_partner-no_type ='BP'。
 lv_partner-mainpartner ='X'。
 将lv_partner插入表lt_partner。

 数据:l_key类型CRMT_LOGICAL_KEY。
 ***输入栏位
 将'000000000014''200010671''BPBP'放入l_key中。

 清除lw_field。
 清除lt_field。

 lw_field-ref_guid ='DDCBF5EB8FA58FF19F94001E6849B4E8'。
 lw_field-ref_handle ='0000000000'。
 lw_field-ref_kind ='A'。
 lw_field-objectname ='PARTNER'。
 lw_field-logical_key ='000000000014200010671 BPBP'。

 lw_fp-fieldname ='PARTNER_FCT'。

 将lw_fp插入表lt_fp。
 lw_field-field_names = lt_fp。

 插入lw_field插入表lt_field。


 数据:lt_mode类型CRMT_ORDERADM_H_COMT,
       lv_mode类型CRMT_ORDERADM_H_COM。

 lv_mode-guid ='DDCBF5EB8FA58FF19F94001E6849B4E8'。
 lv_mode-mode ='D'。
 将lv_mode附加到lt_mode。


 *用于BADI更改EMP响应,状态,文本注释
 通话功能'CRM_ORDER_MAINTAIN'
  出口
      it_partner = lt_partner
  改变
     CT_ORDERADM_H = lt_mode
     ct_input_fields = lt_field
           。
 如果sy-subrc <> 0。
   消息ID sy-msgid类型sy-msgty编号sy-msgno
           与sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4。
 万一。

 数据:it_guid类型为crmt_object_guid_tab。
 * Lv_header_guid类型为crmt_object_guid。

 Lv_header_guid ='DDCBF5EB8FA58FF19F94001E6849B4E8'。
 *
 将LV_HEADER_GUID附加到IT_GUID。

 通话功能'CRM_ORDER_SAVE'
   出口
     it_objects_to_save = it_guid
           。

 如果sy-subrc <> 0。
 *消息ID SY-MSGID类型SY-MSGTY编号SY-MSGNO
 *与SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4。
 万一。

 通话功能'BAPI_TRANSACTION_COMMIT'
 *出口
 *等待=
 *重要
 *返回=
           。
付费偷看设置
发送
10条回答
土豆飞人
1楼 · 2020-08-31 12:47.采纳回答

您好

在您提供给CRM_ORDER_MAINTAIN的所有表中," ref"字段(ref_part_no,ref_part_fct等)必须包含旧值(在进行更改之前)。 要输入的新值是不带" ref"的相同字段(partner_no,partner_fct,...)。

如果要删除特定的伙伴函数,则您的" ref"字段 应该包含当前输入的值(可以通过执行crm_order_read来完成此操作),并且非" ref"字段应该完全为空! (您要删除它们)

您忘了一个市长的事情是输入字段中的FIELD_NAMES。 您在结构中填写的每个字段(在这种情况下为合作伙伴)都应在input_fields-fieldnames中列出,而不仅是PARTNER字段。 (对ref_partner_no,partner_no,...都指定了值的所有字段也是如此,否则将忽略这些值)

我还认为您不应该在相应的字段中指定逻辑键 inpur字段,因为您要删除某些内容而不是创建或更改某些内容。 (所有其他input_fields应该保留)

问候,

Joost

土豆飞人
2楼-- · 2020-08-31 12:31

嗨,Dharmesh,

试一下FM'CRM_PARTNER_DELETE_EC'是否适合您。

此致

Saumya

SAP浪
3楼-- · 2020-08-31 12:33

大家好,

请允许我添加一些建议:我有类似的情况:

  • CRM_ORDER_MAINTAIN没有删除合作伙伴
  • 清除ls_partner-partner_fct
  • lt_field_names中仅需要一个⚠️字段名:" PARTNER_FCT"

这在我的情况下有效,但是在我更改了自定义相关伙伴功能之后,首先在适当的伙伴方案中自定义为"可更改"。

huskylover
4楼-- · 2020-08-31 12:51

我尝试了相同的操作,并在必填字段中仅添加了" PARTNER_FCT",但系统抛出了如下错误

我有什么建议可以克服这种情况

deletion-of-partner.png

此致

R.Naveen kumar。

一周热门 更多>