The SAP CRM Recursive call error for SAP function module CRM_ORDER_MAINTAIN is caused by nested calling of the FM i.e. calling it while already within a call to CRM_ORDER_MAINTAIN. Also happens via function module CRM_ORDER_MAINTAIN_MULTI_OW which also performs the recursive check.
Function module CRM_ORDER_MAINTAIN appears several times in the current hierarchy for the calls. This is not scheduled. There is an error in the program.
“MESSAGE_TYPE_X”
“SAPLCRM_ORDER_OW” or “LCRM_ORDER_OWU01”
“CRM_ORDER_MAINTAIN_MULTI_OW”
Solution for crm Recursive call
Try using different function modules to perform the CRM updates such as:
CRM_STATUS_MAINTAIN_OW to Update status values usking
This FM updates the STATUS values
CALL FUNCTION ‘CRM_STATUS_MAINTAIN_OW’EXPORTINGit_status_com = lt_user_status* IT_STATUS_COMINT =* IV_CHECK_ONLY = FALSE* IV_TRACE =* IV_NO_1O_MAINTAIN = FALSE* IV_FORCE_1O_MAINTAIN = FALSE* IV_GET_ACTUAL_EXCPN = FALSECHANGINGct_input_field_names = lt_input_field_namesEXCEPTIONSnot_allowed = 1error_occurred = 2warning_occurred = 3OTHERS = 4.
CRM_ORDER_I_MAINTAIN_SINGLE_OW to update ORDERADM values
Enter your text here…
Check if within CRM_ORDER_MAINTAIN update
DATA: lv_raise_exceptions TYPE crmt_boolean VALUE ‘X’, lv_recursive_call TYPE i, lv_maintain_active TYPE i, lv_recursive_save TYPE i.
* For the OW function modules to work it needs to be within an CRM_ORDER_MAINTAIN* update but too many recursive calls to this can cause SAP DUMP** CRM_ORDER_CHECK_RECURSIVE_OW check if you are already within an update and can use* The OW functionsCALL FUNCTION ‘CRM_ORDER_CHECK_RECURSIVE_OW’ EXPORTING iv_raise_exceptions = lv_raise_exceptions IMPORTING ev_recursive_call = lv_recursive_call ev_maintain_active = lv_maintain_active ev_recursive_save = lv_recursive_save EXCEPTIONS recursive_call = 2 recursive_save = 4 call_without_order_maintain = 6 OTHERS = 8.
* If return code is call_without_order_maintain then you need to perform update* using the CRM_ORDER_MAINTAINIF sy-subrc = 6. ” CALL FUNCTION ‘CRM_ORDER_MAINTAIN’ ” EXPORTING ” it_status = ” new status details ” CHANGING ” ct_orderadm_i = ” orderadm_i values ” ct_input_fields = ” input_field values ” EXCEPTIONS ” error_occurred = 1 ” document_locked = 2 ” no_change_allowed = 3 ” no_authority = 4 ” OTHERS = 5.* Else you can use OW function modulesELSE.* Call an alternate OW function module such as CRM_STATUS_MAINTAIN_OW to update STATUS ” CALL FUNCTION ‘CRM_STATUS_MAINTAIN_OW’ ” EXPORTING ” it_status_com = ” new status details ” CHANGING ” ct_input_field_names = ” input_field values ” EXCEPTIONS ” not_allowed = 1 ” error_occurred = 2 ” warning_occurred = 3 ” OTHERS = 4.ENDIF.
Other CRM update FM’s to check
CRM_ORDER_COPY_SINGLE_OWCRM_ORDER_H_MAINTAIN_OW CRM_ORDER_I_MAINTAIN_MULTI_OWCRM_ORDER_I_MAINTAIN_SINGLE_OWCRM_ORDER_MAINTAINCRM_ORDER_MAINTAIN_MULTI_OWCRM_ORDER_MAINTAIN_SINGLE_OWCRM_STATUS_COMINT_SAVE_OWCRM_STATUS_EXPORT_DATA_UICRM_STATUS_MAINTAIN_MUL_OWCRM_STATUS_MAINTAIN_OW