One order deletion tool

153 阅读1分钟

Created by Jerry Wang, last modified on Dec 13, 2014

wiki末尾的report能够删除指定id的one order document,例如希望删除ui上的Opportunity 1616:
clipboard1
执行report,指定id和Opportunity type OPPT:
clipboard2
CRM_ORDER_DELETE执行context会自动调用CRM_ORDER_SAVE保存save动作:
clipboard3
importing parameter lt_exception内的entry可以忽略:

clipboard4
clipboard5
report执行完毕后,该Opportunity已经成功被删除,UI上无法再搜索到。

clipboard6

REPORT zorder_delete.
PARAMETERS: id   TYPE crmd_orderadm_h-object_id OBLIGATORY DEFAULT '1616',
 
            type TYPE crmd_orderadm_h-process_type OBLIGATORY DEFAULT 'OPPT'.
DATA: lv_guid      TYPE crmt_object_guid,
 
      lt_delete    TYPE crmt_object_guid_tab,
 
      lt_deleted   TYPE crmt_return_objects,
 
      lt_saved     LIKE lt_deleted,
 
      lt_exception TYPE crmt_exception_t,
 
      lv_type      TYPE crmd_orderadm_h-process_type,
 
      lv_id        TYPE crmd_orderadm_h-object_id.
 
 
START-OF-SELECTION.
 
  lv_id = id.
 
  lv_type = type.
 
  SELECT SINGLE guid FROM crmd_orderadm_h INTO lv_guid WHERE object_id = lv_id AND process_type = lv_type.
 
  IF sy-subrc <> 0.
 
    WRITE: / 'No order found' COLOR COL_NEGATIVE.
 
    RETURN.
 
  ENDIF.
 
 
  APPEND lv_guid TO lt_delete.
 
 
  CALL FUNCTION 'CRM_ORDER_DELETE'
 
    EXPORTING
 
      it_objects_to_delete  = lt_delete
 
      iv_update_task_local  = abap_true
 
      iv_no_check           = abap_false
 
    IMPORTING
 
      et_deleted_objects    = lt_deleted
 
      et_exception          = lt_exception
 
    EXCEPTIONS
 
      single_deletion_error = 1
 
      deletion_error        = 2
 
      no_authority          = 3
 
      document_not_found    = 4.
 
 
  IF sy-subrc <> 0.
 
    WRITE: / 'Deletion failed, error code: ' , sy-subrc COLOR COL_NEGATIVE.
 
  ELSE.
 
    WRITE: / 'No error found after CRM_ORDER_DELETE call ' COLOR COL_POSITIVE.
 
  ENDIF.
 
 
  LOOP AT lt_deleted ASSIGNING FIELD-SYMBOL(<deleted>).
 
    WRITE: / 'Deleted object: ' , <deleted>-object_id COLOR COL_TOTAL.
 
  ENDLOOP.

  LOOP AT lt_exception ASSIGNING FIELD-SYMBOL(<exception>).
 
    WRITE:/ 'Error message class: ' , <exception>-class, ' id: ', <exception>-code COLOR COL_POSITIVE.
 
  ENDLOOP.
 
  COMMIT WORK AND WAIT.