REPORT ZORDER_MODIFY_LAUNCHER.PARAMETERS: num type i OBLIGATORY DEFAULT 1,txt type char20 OBLIGATORY DEFAULT 'new text'.DATA: lt_rspar TYPE TABLE OF rsparams,ls_rspar LIKE LINE OF lt_rspar,lt_order_index TYPE STANDARD TABLE OF crmd_order_index-header,lt_order_tab TYPE STANDARD TABLE OF crmd_orderadm_h-object_id,lv_order_id LIKE LINE OF lt_order_tab.AT SELECTION-SCREEN.CHECK num > 0.PERFORM fill_order_tab.
START-OF-SELECTION.LOOP AT lt_order_tab INTO lv_order_id.ls_rspar = VALUE #( selname = 'ORDERID'kind = 'S'sign = 'I'option = 'EQ'low = lv_order_id ).APPEND ls_rspar TO lt_rspar.ls_rspar = VALUE #( selname = 'TXT'kind = 'P'low = txt ).APPEND ls_rspar TO lt_rspar.ENDLOOP.submit zorder_modify WITH SELECTION-TABLE lt_rspar.FORM fill_order_tab.CLEAR: lt_order_index.SELECT DISTINCT crmd_order_index~HEADER INTO TABLE @lt_order_indexup to @num rows FROM CRMD_ORDER_INDEX INNER JOIN CRM_JEST ON CRM_JEST~OBJNR = CRMD_ORDER_INDEX~HEADERWHERE CRMD_ORDER_INDEX~PROCESS_TYPE_IX = 'SRVO' ANDCRMD_ORDER_INDEX~STAT_OPEN = 'X' ANDCRM_JEST~INACT = @abap_false AND CRM_JEST~STAT IN ('E0001', 'I1002') ANDCRMD_ORDER_INDEX~OBJECT_TYPE = 'BUS2000116'.CHECK lt_order_index IS NOT INITIAL.SELECT object_id INTO TABLE lt_order_tab FROM CRMD_ORDERADM_H FOR ALL ENTRIES IN lt_order_indexWHERE guid = lt_order_index-table_line.ENDFORM.REPORT zorder_modify.DATA: lt_exception TYPE crmt_exception_t,ls_exception LIKE LINE OF lt_exception,lt_header TYPE crmt_orderadm_h_comt,lt_saved_object TYPE crmt_return_objects,lt_save_failed TYPE crmt_object_guid_tab,lt_to_be_save TYPE crmt_object_guid_tab,lt_changed_input TYPE crmt_input_field_tab,ls_changed_input LIKE LINE OF lt_changed_input,ls_header LIKE LINE OF lt_header,lv_start TYPE i,lv_end TYPE i,lv_object_id TYPE crmd_orderadm_h-object_id.SELECTION-SCREEN BEGIN OF BLOCK b1WITH FRAME TITLE txt1.
SELECT-OPTIONS: orderid FOR lv_object_id OBLIGATORY. "DEFAULT '8000000110' OBLIGATORY.
PARAMETERS: txt TYPE char20 OBLIGATORY."DEFAULT 'new description'.
SELECTION-SCREEN END OF BLOCK b1.INITIALIZATION.txt1 = 'Specify Service order ID and new description to be changed.'.START-OF-SELECTION.PERFORM get_guid_by_id.PERFORM fill_header_tab.GET RUN TIME FIELD lv_start.CALL FUNCTION 'CRM_ORDER_MAINTAIN'IMPORTINGet_exception = lt_exceptionCHANGINGct_orderadm_h = lt_headerct_input_fields = lt_changed_inputEXCEPTIONSerror_occurred = 1document_locked = 2no_change_allowed = 3no_authority = 4OTHERS = 5.IF sy-subrc <> 0 OR lt_exception IS NOT INITIAL.WRITE: / 'Modify API call failed.' COLOR COL_NEGATIVE.LOOP AT lt_exception INTO ls_exception.WRITE: / ls_exception-code COLOR COL_GROUP.ENDLOOP.RETURN.ENDIF.CALL FUNCTION 'CRM_ORDER_SAVE'EXPORTINGit_objects_to_save = lt_to_be_saveIMPORTINGet_saved_objects = lt_saved_objectet_exception = lt_exceptionet_objects_not_saved = lt_save_failedEXCEPTIONSdocument_not_saved = 1.IF sy-subrc <> 0 OR lt_exception IS NOT INITIAL OR lt_save_failed IS NOT INITIAL.WRITE: / 'Save API call failed.' COLOR COL_NEGATIVE.RETURN.ENDIF.COMMIT WORK AND WAIT.GET RUN TIME FIELD lv_end.lv_end = lv_end - lv_start.FIELD-SYMBOLS: <line> LIKE LINE OF orderid.LOOP AT orderid ASSIGNING <line>.WRITE: / 'Order saved successfully: ' , <line>-low COLOR COL_TOTAL.ENDLOOP.WRITE:/ 'Time spent(microsecond): ', lv_end COLOR COL_POSITIVE.FORM get_guid_by_id.DATA: lt_temp TYPE STANDARD TABLE OF crmd_orderadm_h.FIELD-SYMBOLS:<line> TYPE crmd_orderadm_h.SELECT guid INTO CORRESPONDING FIELDS OF TABLE lt_temp FROM crmd_orderadm_h WHERE object_id IN orderid ANDprocess_type = 'SRVO'.LOOP AT lt_temp ASSIGNING <line>.INSERT <line>-guid INTO TABLE lt_to_be_save.ENDLOOP.
ENDFORM.FORM fill_header_tab.FIELD-SYMBOLS: <guid_line> LIKE LINE OF lt_to_be_save.LOOP AT lt_to_be_save ASSIGNING <guid_line>.ls_header-guid = <guid_line>.ls_header-description = txt.APPEND ls_header TO lt_header.clear: ls_changed_input.ls_changed_input-ref_guid = <guid_line>.ls_changed_input-objectname = 'ORDERADM_H'.APPEND 'DESCRIPTION' TO ls_changed_input-field_names.APPEND ls_changed_input TO lt_changed_input.ENDLOOP.
ENDFORM.