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

Cikesha
2楼-- · 2020-08-31 12:38

你好

是否放置了CHANGING CT_ORDERADM_H = lt_mode是否带有注释?

调用ORDER_MAINTAIN时,应始终提供CT_ORDERADM_H表,在这种情况下,该表应仅包含HEADER guid和MODE =" D"(删除)。

我还假设lv_partner-ref_guid ='DDCBF5EB8FA58FF19F94001E6849B4E8'。 是交易的HEADER指南,与您在orderadm_h中提供的指南相同。

希望这对您有所帮助,

致谢

Joost

hongfeng1314
3楼-- · 2020-08-31 12:29

您好,

您无法使用CRM_ORDER_MAINTAIN删除合作伙伴。

因为已经确定了合作伙伴。

为了从订单中删除负责员工,您需要实施BADI COMM_PARTNER_BADI以阻止在创建订单时确定负责员工。

这将实现您的目标。

致谢

Kapil Patil

N-Moskvin
4楼-- · 2020-08-31 12:46

Kapil,

感谢您的回复。 但是我希望负责员工的Empolyee不能在创建时更改订单时删除。

谢谢

Dharmesh

暮风yp
5楼-- · 2020-08-31 12:39

嗨,

您的代码几乎正确。 请尝试以下变体:

1)无需传递lt_mode。 注释掉与lt_mode对应的代码。

*更改

  • CT_ORDERADM_H = lt_mode

2)无需在lt_partner中填充partner_fct。

  • lv_partner-partner_fct ='00000014'。

3)我想您没有使用l_key。 如果要使用它,请尝试使用

的'Respecing blanks'子句

连接语句。

CONCATENATE'000000000014''200010671''BPBP'INTO l_key尊重空白。

4)使用带有等待参数的提交。

CALL FUNCTION'BAPI_TRANSACTION_COMMIT'

导出

WAIT ='X'。

尝试上述更改,如果不起作用,请尝试按以下提到的顺序调用crm_order_maintain:

CALL FUNCTION'DIALOG_SET_NO_DIALOG'。

CALL FUNCTION'CRM_ORDER_INITIALIZE'

导出

iv_initialize_whole_buffer ='X'

例外情况

其他= 2。

CALL FUNCTION'CRM_ORDER_MAINTAIN'

导出

it_partner = lt_partner

改变

ct_input_fields = lt_field。

如果sy-subrc EQ 0。

调用功能'CRM_STATUS_UPDATE_DIALOG'。

Lv_header_guid ='DDCBF5EB8FA58FF19F94001E6849B4E8'。

APPEND LV_HEADER_GUID到IT_GUID。

通话功能'CRM_ORDER_SAVE'

导出

it_objects_to_save = it_guid。

IF sy-subrc 0。

通话功能'BAPI_TRANSACTION_COMMIT'

导出

WAIT ='X'。

EndIf。

请让我知道以上版本是否无法删除合作伙伴。

谢谢

Vinny

compass1988
6楼-- · 2020-08-31 12:42

如果您不传递伙伴编号,SAP将如何知道应该删除哪个伙伴?

d56caomao
7楼-- · 2020-08-31 12:25

您好,

您必须传递伙伴编号。 我是说不要填充合作伙伴函数(partner_fct)。

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'。 "仅评论partner_fct

lv_partner-partner_no ='200010671'。

lv_partner-display_type ='BP'。

lv_partner-no_type ='BP'。

lv_partner-mainpartner ='X'。

将lv_partner插入表lt_partner。

仅注释partner_fct,crm_order_maintain将从ref_partner_fct获取伙伴函数。

谢谢

Vinny

一周热门 更多>