检测Product 或者Object是否被IBASE 引用的report

66 阅读1分钟

Created by Jerry Wang, last modified on May 29, 2014

输入product ID:
clipboard1
执行report 打印出引用该product的IBASE ID 和component ID:
clipboard2
在UI上验证结果是否正确:
clipboard3

REPORT zprod_used_in_ibase.
 
PARAMETERS: id type comm_product-product_id OBLIGATORY DEFAULT '1002029'.
 
DATA: lv_prod_guid  TYPE comm_product-product_guid, 
      lv_handle     TYPE ibxx_ref-handle,
      ls_sel        TYPE ibxx_sel_rec,
      lt_obj        TYPE ibco1_obj_tab,
      lr_objnr      TYPE RANGE OF ibxx_ref-objnr, "Guid 22 of the object
      lr_objnr_line LIKE LINE OF lr_objnr.
 
START-OF-SELECTION.
 
  SELECT SINGLE product_guid  FROM comm_product INTO lv_prod_guid WHERE product_id = id.
  IF sy-subrc <> 0.
     WRITE: / 'Product: ' , id, ' does not exist!' COLOR COL_NEGATIVE.
     RETURN.
  ENDIF.
 
  lr_objnr_line-sign    = 'I'.
  lr_objnr_line-option  = 'EQ'.
  lr_objnr_line-low = cl_ibase_service=>cl_convert_guid_16_22( lv_prod_guid ).
 
  INSERT lr_objnr_line INTO TABLE ls_sel-s_objnr.
 
  CALL FUNCTION 'IB_COM_NEW'
    IMPORTING
      e_ibco_handle = lv_handle.
 
  CALL FUNCTION 'IB_COM1_READ_INSTANCES_OBJ_TAB'
    EXPORTING
      i_ibco_handle          = lv_handle
      i_sel_rec              = ls_sel
    CHANGING
      e_obj_tab              = lt_obj
    EXCEPTIONS
      ib_handle_not_defined  = 1
      ib_not_successful      = 2
      ib_criteria_incomplete = 3
      OTHERS                 = 4.
 
  ASSERT sy-subrc = 0.
 
  LOOP AT lt_obj ASSIGNING FIELD-SYMBOL(<obj>).
     WRITE: / 'IBASE ID: ', <obj>-ibase COLOR COL_NEGATIVE, ' Component ID:' , <obj>-instance COLOR COL_TOTAL.
  ENDLOOP.