点击此处---> 群内免费提供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' *出口 *等待= *重要 *返回= 。
您好
在您提供给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
你好
是否放置了CHANGING CT_ORDERADM_H = lt_mode是否带有注释?
调用ORDER_MAINTAIN时,应始终提供CT_ORDERADM_H表,在这种情况下,该表应仅包含HEADER guid和MODE =" D"(删除)。
我还假设lv_partner-ref_guid ='DDCBF5EB8FA58FF19F94001E6849B4E8'。 是交易的HEADER指南,与您在orderadm_h中提供的指南相同。
希望这对您有所帮助,
致谢
Joost
您好,
您无法使用CRM_ORDER_MAINTAIN删除合作伙伴。
因为已经确定了合作伙伴。
为了从订单中删除负责员工,您需要实施BADI COMM_PARTNER_BADI以阻止在创建订单时确定负责员工。
这将实现您的目标。
致谢
Kapil Patil
Kapil,
感谢您的回复。 但是我希望负责员工的Empolyee不能在创建时更改订单时删除。
谢谢
Dharmesh
嗨,
您的代码几乎正确。 请尝试以下变体:
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
如果您不传递伙伴编号,SAP将如何知道应该删除哪个伙伴?
您好,
您必须传递伙伴编号。 我是说不要填充合作伙伴函数(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
一周热门 更多>