Created by Jerry Wang, last modified on May 08, 2014
如果想知道一个product 被其他business transaction 引用的详细情况,可以执行下面的report:
输出所有使用该product的Order ID和order type:
可以到UI上验证引用情况:
REPORT ZPROD_REFERENCE_CHECK.
PARAMETERS: id type comm_product-product_id OBLIGATORY DEFAULT 'AS-PROD-ID-002'.
DATA: lv_prod_guid TYPE comm_product-product_guid,
lt_item_guid TYPE STANDARD TABLE OF crmd_orderadm_i-guid,
lt_header TYPE STANDARD TABLE OF crmd_orderadm_h,
lt_header_guid LIKE lt_item_guid.
START-OF-SELECTION.
SELECT SINGLE product_guid INTO lv_prod_guid FROM comm_product WHERE product_id = id.
IF sy-subrc <> 0.
WRITE: / 'Product: ', id, ' does not exist!' COLOR COL_NEGATIVE.
RETURN.
ENDIF.
SELECT guid INTO TABLE lt_item_guid FROM crmd_orderadm_i WHERE product = lv_prod_guid.
SELECT guid APPENDING TABLE lt_item_guid FROM CRMD_SRV_REFOBJ WHERE product_guid = lv_prod_guid.
SELECT guid APPENDING TABLE lt_item_guid FROM crmd_service_i WHERE warranty = lv_prod_guid.
IF lt_item_guid IS INITIAL.
WRITE: / 'Product is not included in any business transaction' COLOR COL_NEGATIVE.
RETURN.
ENDIF.
SORT lt_item_guid.
DELETE ADJACENT DUPLICATES FROM lt_item_guid.
SELECT header FROM crmd_orderadm_i INTO TABLE lt_header_guid FOR ALL ENTRIES IN lt_item_guid
WHERE guid = lt_item_guid-table_line.
ASSERT lt_header_guid IS NOT INITIAL.
SELECT object_id process_type FROM crmd_orderadm_h INTO CORRESPONDING FIELDS OF TABLE lt_header
FOR ALL ENTRIES IN lt_header_guid WHERE guid = lt_header_guid-table_line.
LOOP AT lt_header ASSIGNING FIELD-SYMBOL(<header>).
WRITE: / 'Object ID: ' , <header>-object_id, ' Type: ', <header>-process_type COLOR COL_TOTAL.
ENDLOOP.