zl程序教程

您现在的位置是:首页 >  后端

当前栏目

列出系统所有未被Business transaction 引用的Products集合

集合系统 所有 引用 Transaction Business 列出
2023-09-14 09:03:03 时间

Created by Jerry Wang on Jul 25, 2014

需求是给出系统里所有products的列表,这些product尚未被assign到任何business transaction中去:
参数num 指定为100,意味着只显示前100个满足条件( 未加入到任何business transaction中去)的product信息:
image
image

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.