Created by Jerry Wang on Jul 25, 2014
需求是给出系统里所有products的列表,这些product尚未被assign到任何business transaction中去:
参数num 指定为100,意味着只显示前100个满足条件( 未加入到任何business transaction中去)的product信息:
REPORT ZPROD_LIST_NOT_ASSIGNED.
PARAMETERS: num TYPE i OBLIGATORY DEFAULT 100.
DATA: lv_prod_guid TYPE comm_product-product_guid,
lt_item_tab TYPE STANDARD TABLE OF comm_product-product_guid,
lt_product TYPE STANDARD TABLE OF comm_product.
START-OF-SELECTION.
SELECT product_guid product_id object_family FROM comm_product INTO CORRESPONDING FIELDS OF TABLE lt_product.
ASSERT lt_product IS NOT INITIAL.
SELECT product INTO TABLE lt_item_tab FROM crmd_orderadm_i
FOR ALL ENTRIES IN lt_product WHERE product = lt_product-product_guid.
SELECT product_guid APPENDING TABLE lt_item_tab FROM CRMD_SRV_REFOBJ
FOR ALL ENTRIES IN lt_product WHERE product_guid = lt_product-product_guid.
SELECT warranty APPENDING TABLE lt_item_tab FROM crmd_service_i
FOR ALL ENTRIES IN lt_product WHERE warranty = lt_product-product_guid.
SORT lt_item_tab.
DELETE ADJACENT DUPLICATES FROM lt_item_tab.
LOOP AT lt_product ASSIGNING FIELD-SYMBOL(<product>).
READ TABLE lt_item_tab WITH KEY table_line = <product>-product_guid TRANSPORTING NO FIELDS.
IF sy-subrc = 0.
DELETE TABLE lt_product FROM <product>.
ENDIF.
ENDLOOP.
DO num TIMES.
READ TABLE lt_product ASSIGNING FIELD-SYMBOL(<result>) INDEX sy-index.
IF sy-subrc = 0.
IF <result>-object_family IS INITIAL.
WRITE: / 'Product ID: ' , <result>-product_id COLOR COL_NEGATIVE.
ELSE.
WRITE: / 'Object ID: ' , <result>-product_id COLOR COL_NEGATIVE.
ENDIF.
ELSE.
RETURN.
ENDIF.
ENDDO.