Hi community,
I try to change an existing condition with the function module crm_order_maintain.
Everything looks fine, no error no dump, but no success
The condition stays the same!
Can anybody find a solution for this?
Heres my report so far:
*&---------------------------------------------------------------------* *& Report ZTEST_PRICING2 *& *&---------------------------------------------------------------------* *& *& *&---------------------------------------------------------------------* REPORT ztest_pricing2. DATA: lt_guid TYPE crmt_object_guid_tab, lt_item TYPE crmt_object_guid_tab, lt_saved TYPE crmt_return_objects, lt_pridoc TYPE crmt_pric_cond_t, ls_pridoc TYPE crmt_pric_cond, lt_pricom TYPE crmt_pridoc_comt, ls_pricom TYPE crmt_pridoc_com, lt_header TYPE crmt_orderadm_h_comt, lt_input TYPE crmt_input_field_tab, ls_input TYPE crmt_input_field, ls_input_fn TYPE CRMT_INPUT_FIELD_NAMES, ls_cond_chg TYPE prct_cond_external_change, ls_cond TYPE PRCT_COND_DU, lt_pricing_i TYPE CRMT_PRICING_I_WRKT. PARAMETERS: lv_head TYPE crmt_object_guid DEFAULT 'C4C61C4E35DDF306E10000000A024089'. PARAMETERS: lv_item TYPE crmt_object_guid DEFAULT '09C71C4E35DDF306E10000000A024089'. PARAMETERS: lv_kbetr TYPE prct_cond_rate DEFAULT '100'. INSERT lv_head INTO TABLE lt_guid. INSERT lv_item INTO TABLE lt_item. CALL FUNCTION 'CRM_ORDER_READ' EXPORTING it_header_guid = lt_guid it_item_guid = lt_item * IV_MODE = * IV_ONLY_SPEC_ITEMS = * IT_REQUESTED_OBJECTS = * IV_NO_AUTH_CHECK = * IT_ITEM_USAGE_RANGE = * IV_SUBITEM_DEPTH = -1 * IT_OBJECT_FILTER = * IV_ONLY_CHANGED_OBJ = FALSE * IV_STATUS_H_CHECK_RELEVANCE = FALSE IMPORTING et_pridoc = lt_pridoc et_pricing_i = lt_pricing_i * CHANGING * CV_LOG_HANDLE = EXCEPTIONS document_not_found = 1 error_occurred = 2 document_locked = 3 no_change_authority = 4 no_display_authority = 5 no_change_allowed = 6 OTHERS = 7. IF sy-subrc <> 0 AND lt_pridoc IS NOT INITIAL. WRITE: / 'ERROR'. EXIT. ENDIF. READ TABLE lt_pridoc INDEX 1 INTO ls_pridoc. IF sy-subrc <> 0. WRITE: / 'ERROR'. EXIT. ENDIF. READ TABLE ls_pridoc-pric_cond INTO ls_cond WITH KEY kschl = 'PB00'. IF sy-subrc <> 0. WRITE: / 'ERROR'. EXIT. ENDIF. ls_input-ref_guid = lv_head. ls_input-ref_kind = 'A'. ls_input-objectname = 'PRIDOC'. ls_input_fn-fieldname = 'WAERS'. INSERT ls_input_fn INTO TABLE ls_input-field_names. ls_input_fn-fieldname = 'KBETR'. INSERT ls_input_fn INTO TABLE ls_input-field_names. INSERT ls_input INTO TABLE lt_input. ls_pricom-ref_guid = lv_head. ls_pricom-ref_kind = 'A'. *ls_pricom-PRICING_TYPE = 'B'. *ls_pricom-pricing_procedure = 'ZZMTA'. ls_pricom-pric_cond[] = ls_pridoc-pric_cond[]. MOVE-CORRESPONDING ls_cond TO ls_cond_chg. ls_cond_chg-waers = 'EUR'. ls_cond_chg-kbetr = lv_kbetr. INSERT ls_cond_chg INTO TABLE ls_pricom-cond_change. APPEND ls_pricom TO lt_pricom. CALL FUNCTION 'CRM_ORDER_MAINTAIN' EXPORTING it_pridoc = lt_pricom CHANGING * ct_orderadm_h = lt_header ct_input_fields = lt_input EXCEPTIONS error_occurred = 1 document_locked = 2 no_change_allowed = 3 no_authority = 4 OTHERS = 5. IF sy-subrc <> 0. EXIT. ENDIF. CALL FUNCTION 'CRM_ORDER_SAVE' EXPORTING it_objects_to_save = lt_guid IMPORTING et_saved_objects = lt_saved * ET_EXCEPTION = * ET_OBJECTS_NOT_SAVED = EXCEPTIONS document_not_saved = 1 OTHERS = 2. IF sy-subrc EQ 0. COMMIT WORK AND WAIT. ELSE. ROLLBACK WORK. ENDIF.
regards
Markus