REPORT zprod_not_used_anymore.
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_ibase_tab LIKE lt_item_tab,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_iFOR ALL ENTRIES IN lt_product WHERE product = lt_product-product_guid.SELECT product_guid APPENDING TABLE lt_item_tab FROM crmd_srv_refobjFOR ALL ENTRIES IN lt_product WHERE product_guid = lt_product-product_guid.SELECT warranty APPENDING TABLE lt_item_tab FROM crmd_service_iFOR 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.DATA:lv_handle TYPE ibxx_ref-handle,ls_sel TYPE ibxx_sel_rec,lt_obj TYPE ibco1_obj_tab,lo_product TYPE REF TO CL_IBASE_CRM_PRODUCT,lo_object TYPE REF TO CL_IBASE_CRM_object,lr_objnr TYPE RANGE OF ibxx_ref-objnr, "Guid 22 of the objectlr_objnr_line LIKE LINE OF lr_objnr,ls_product TYPE comm_product.lr_objnr_line-sign = 'I'.lr_objnr_line-option = 'EQ'.LOOP AT lt_product ASSIGNING FIELD-SYMBOL(<in_ibase>).lr_objnr_line-low = cl_ibase_service=>cl_convert_guid_16_22( <in_ibase>-product_guid ).INSERT lr_objnr_line INTO TABLE ls_sel-s_objnr.ENDLOOP.CALL FUNCTION 'IB_COM_NEW'IMPORTINGe_ibco_handle = lv_handle.CALL FUNCTION 'IB_COM1_READ_INSTANCES_OBJ_TAB'EXPORTINGi_ibco_handle = lv_handlei_sel_rec = ls_selCHANGINGe_obj_tab = lt_objEXCEPTIONSib_handle_not_defined = 1ib_not_successful = 2ib_criteria_incomplete = 3OTHERS = 4.ASSERT sy-subrc = 0.LOOP AT lt_obj ASSIGNING FIELD-SYMBOL(<obj>).TRY.lo_object = CAST cl_ibase_crm_object( <obj>-object ).ls_product = lo_object->get_product( ).CATCH cx_root.lo_product = CAST cl_ibase_crm_product( <obj>-object ).ls_product = lo_product->get_product( ).ENDTRY.APPEND ls_product-product_guid TO lt_ibase_tab.ENDLOOP.LOOP AT lt_product ASSIGNING FIELD-SYMBOL(<ibase>).READ TABLE lt_ibase_tab WITH KEY table_line = <ibase>-product_guid TRANSPORTING NO FIELDS.IF sy-subrc = 0.DELETE TABLE lt_product FROM <ibase>.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.