点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)专家,我试图了解CRM_ORDE...
点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)专家,我试图了解CRM_ORDE...
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
专家,我试图了解CRM_ORDER_MAINTAIN的主要逻辑。
对于我来说,我需要更新 crmd_orderadm_i 和 crmd_customer_h。
这是我的参考链接::链接
这是我的代码块。
包含crm_object_names_con。 数据: lt_orderadm_i TYPE crmt_orderadm_i_comt, ls_orderadm_i TYPE crmt_orderadm_i_com, lt_customer_h TYPE crmt_customer_h_comt, ls_customer_h TYPE crmt_customer_h_com, *其他重要事项 lt_input_fields TYPE crmt_input_field_tab, ls_input_fields TYPE crmt_input_field, lt_nametab TYPE crmt_input_field_names_tab, ls_nametab TYPE crmt_input_field_names, lt_save_guid TYPE crmt_object_guid_tab, ls_save_guid TYPE crmt_object_guid, lt_saved_objects TYPE crmt_return_objects, ls_saved_objects类型crmt_return_objects_struc, lv_lin TYPE i, lv_order_object_id TYPE crmt_object_id, lv_order_object_guid TYPE crmt_object_guid32, lt_exception TYPE crmt_exception_t。 *更新ORDERADM_I *********************************** 清除:ls_nametab,lt_nametab [],ls_input_fields。 ls_orderadm_i-ordered_prod ='已更新'。 ls_nametab ='ORDERED_PROD'。 附加ls_nametab到lt_nametab。 ****************************************************** ************************************** *第一个错误发生在下面的描述中,附加ls_nametab,当我对其进行注释时,会发生另一个错误。 ******************************************* * ls_orderadm_i-description ='已更新'。 * ls_nametab ='DESCRIPTION'。 * APPEND ls_nametab至lt_nametab。 ls_orderadm_i-subst_reason ='更新'。 ls_nametab ='SUBST_REASON'。 附加ls_nametab到lt_nametab。 ls_orderadm_i-header ='DFCA012BA36C85F195C578E7D1DF19EC'。 附加ls_orderadm_i至lt_orderadm_i。 ls_input_fields-ref_kind ='A'。 ls_input_fields-ref_guid ='DFCA012BA36C85F195C578E7D1DF19EC'。 ls_input_fields-objectname ='ORDERADM_I'。 ls_input_fields-field_names [] = lt_nametab []。 将ls_input_fields插入表lt_input_fields中。 ****************************************************** *********** *更新COSTUMER_H 清除:ls_nametab,lt_nametab [],ls_input_fields。 ls_customer_h-zzafld00000p ='更新'。 ls_nametab ='ZZAFLD00000P'。 附加ls_nametab到lt_nametab。 ls_customer_h-zzafld00000q ='更新'。 ls_nametab ='ZZAFLD00000Q'。 附加ls_nametab到lt_nametab。 ls_customer_h-ref_guid ='DFCA012BA36C85F195C578E7D1DF19EC'。 APPEND ls_customer_h至lt_customer_h。 ls_input_fields-ref_kind ='A'。 ls_input_fields-ref_guid ='DFCA012BA36C85F195C578E7D1DF19EC'。 ls_input_fields-objectname ='CUSTOMER_H'。 ls_input_fields-field_names [] = lt_nametab []。 将ls_input_fields插入表lt_input_fields中。 ****************************************************** ******************** 通话功能'CRM_ORDER_MAINTAIN' 出口 it_customer_h = lt_customer_h 输入 et_exception = lt_exception 改变 ct_orderadm_i = lt_orderadm_i 例外情况 error_occurred = 1 document_locked = 2 no_change_allowed = 3 no_authority = 4 其他= 5。 案例sy-subrc。 何时0。 * ls_save_guid = iv_guid。 附录ls_save_guid至lt_save_guid。 结束。 通话功能'CRM_ORDER_SAVE' 出口 it_objects_to_save = lt_save_guid 输入 et_saved_objects = lt_saved_objects 例外情况 document_not_saved = 1 其他= 2。 案例sy-subrc。 当为" 0"时。 清除lv_lin。 描述表lt_saved_objects线lv_lin。 如果lv_lin = 1。 读取表lt_saved_objects INTO ls_saved_objects索引1。 lv_order_object_guid = ls_saved_objects-guid。 lv_order_object_id = ls_saved_objects-object_id。 * 5.调用该函数以提交对CRM的更改。 调用功能" BAPI_TRANSACTION_COMMIT"。 万一。 结束。
我想念什么? 我找不到关于此的任何官方文件。
亲切的问候。
对不起 ,但是您的编码有很多错误,随着我深入研究它,情况只会变得更糟。 请调试Trx。 CRMD_ORDER和CRM_ORDER_MAINTAIN中的断点,并查看如何对标头和位置值执行更改。 只有这样,您才能真正了解必须执行的操作。
1。 错误:程序错误; 接口参数值错误
在调用CRM_ORDER_SAVE时,您需要告诉FM您需要保存哪些已由CRM_ORDER_MAINTAIN更改的订单指南。 当前,在您的情况下,该GUID表为空,从而导致上述错误!
2.更改结构中字段的值并使lt_input_fields知道这些更改您很可能从CRMD_ORDERADM_H获得订单标头guid,并且正确地将其用作CRMD_CUSTOMER_H的ref_guid,但是您不能将其用于CRMD_ORDERADM_I的ref_guid 为此,您需要使用头寸guid,否则SAP标准将无法区分订单的头寸(仅设置orderadm_i-header guid并不能解决问题)。您实际上想实现什么?一周热门 更多>