版权声明:署名,允许他人基于本文进行创作,且必须基于与原先许可协议相同的许可协议分发本文 (Creative Commons)
wiki末尾的report能够删除指定id的one order document,例如希望删除ui上的Opportunity 1616:
执行report,指定id和Opportunity type OPPT:
CRM_ORDER_DELETE执行context会自动调用CRM_ORDER_SAVE保存save动作:
importing parameter lt_exception内的entry可以忽略:
report执行完毕后,该Opportunity已经成功被删除,UI上无法再搜索到。
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.