Created by Jerry Wang, last modified on Apr 22, 2015
首先执行如下的report,检测某个business document是否存在pricing document:
REPORT ZORDER_READ_PRICE_PROCEDURE.
PARAMETERS: id type crmd_orderadm_h-object_id OBLIGATORY.
START-OF-SELECTION.
DATA: lt_guid type STANDARD TABLE OF crmd_orderadm_h-guid,
lv_procedure TYPE PRCT_PRIC_PROC.
SELECT guid INTO TABLE lt_guid FROM crmd_orderadm_h WHERE object_id = id.
LOOP AT lt_guid ASSIGNING FIELD-SYMBOL(<guid>).
CLEAR: lv_procedure.
CALL FUNCTION 'CRM_PRIDOC_READ_PRICPROC_OW'
EXPORTING
IV_HEADER_GUID = <guid>
IMPORTING
EV_PRICING_PROCEDURE = lv_procedure.
WRITE: / 'price procedure: ' , lv_procedure.
ENDLOOP.
输出pricing procedure,证明该document 存在pricing document:
输出pricing procedure,证明该document 存在pricing document:
成功删除:
再执行pricing procedure的read report,输出为空,证明link已经成功删除了:
REPORT zremove_price_data.
PARAMETERS: id TYPE crmd_orderadm_h-object_id OBLIGATORY.
START-OF-SELECTION.
DATA: lt_guid TYPE STANDARD TABLE OF crmd_orderadm_h-guid,
lv_guid LIKE LINE OF lt_guid,
lt_link TYPE STANDARD TABLE OF crmd_link.
SELECT guid INTO TABLE lt_guid FROM crmd_orderadm_h WHERE object_id = id.
IF sy-subrc <> 0.
WRITE: / 'the id you have specified is not valid' , id.
RETURN.
ENDIF.
SELECT * INTO TABLE lt_link FROM crmd_link FOR ALL ENTRIES IN lt_guid
WHERE objtype_hi = '05' AND objtype_set = '18' AND guid_hi = lt_guid-table_line.
IF sy-subrc <> 0.
WRITE: / 'no pricing document link for this order.'.
RETURN.
ENDIF.
LOOP AT lt_guid INTO lv_guid.
DELETE FROM crmd_link WHERE objtype_hi = '05' AND objtype_set = '18'
AND guid_hi = lv_guid.
IF sy-subrc = 0.
WRITE: / 'pricing link for document:' , lv_guid, ' deleted successfully.'.
ELSE.
WRITE: / 'pricing link for document:' , lv_guid, ' deleted failed.'.
ENDIF.
ENDLOOP.
打印系统里所有具有Pricing document的One order ID
Created by Jerry Wang, last modified on Apr 21, 2015
执行如下report:
REPORT ZORDER_SEARCH_PRICING.
data: lt_order TYPE STANDARD TABLE OF crmd_orderadm_h,
lt_link_com TYPE CRMT_LINK_COMT.
START-OF-SELECTION.
SELECT * INTO TABLE lt_order FROM crmd_orderadm_h UP TO 1000 ROWS
WHERE process_type <> 'TA'.
LOOP AT lt_order ASSIGNING FIELD-SYMBOL(<order>).
CLEAR: lt_link_com.
CALL FUNCTION 'CRM_LINK_GET_OW'
EXPORTING
iv_guid_hi = <order>-guid
iv_objname_hi = 'ORDERADM_H'
iv_objname_set = 'PRIDOC'
IMPORTING
et_link = lt_link_com
EXCEPTIONS
no_allocated_obj_found = 1
invalid_input_data = 2
undefined_internal_error = 3
OTHERS = 4.
IF sy-subrc = 0.
WRITE: / 'id: ' , <order>-object_id, ' type: ' , <order>-process_type.
ENDIF.
ENDLOOP.