使用report 打印category 03的IBASE hierarchy

113 阅读1分钟

Created by Jerry Wang, last modified on Sep 16, 2014

 

clipboard1

 

 

 

clipboard2

 

 

 

clipboard3

 

 

使用report 打印hierarchy:

 

clipboard4

 

 

 

*&---------------------------------------------------------------------*

 

*& Report  ZIBASE_READ_STRUCTURE

 

*&

 

*&---------------------------------------------------------------------*

 

*&

 

*&

 

*&---------------------------------------------------------------------*

 

 

REPORT zibase_read_structure_03.

 

 

PARAMETERS: id TYPE ibib-ibase OBLIGATORY DEFAULT '112448'.

 

 

START-OF-SELECTION.

 

 

DATA: ls_header      TYPE ibap_head1,

 

      lt_struc_tab   TYPE ibap_struc1_tab,

 

      ls_line        LIKE LINE OF lt_struc_tab,

 

      ls_comp        TYPE ibap_dat1,

 

      ls_comp_detail TYPE ibap_comp2.

 

 

ls_header-ibase = id.

 

 

PERFORM handle_ibase USING ls_header-ibase.

 

 

FORM print_object_str USING iv_ibase_id TYPE ibib-ibase.

 

* source - object guid target: ibase guid

 

   DATA: ls_link TYPE COMM_IL_PRDIB,

 

         lv_id TYPE comm_product-product_id.

 

 

   SELECT SINGLE * INTO CORRESPONDING FIELDS OF ls_link FROM COMM_IL_PRDIB AS A INNER JOIN ibib AS B ON

 

      A~destinguid = B~ib_guid_16 WHERE B~ibase = iv_ibase_id.

 

   CHECK sy-subrc = 0.

 

 

   SELECT SINGLE product_id FROM comm_product INTO lv_id WHERE product_guid = ls_link-sourceguid.

 

 

   CHECK sy-subrc = 0.

 

 

   WRITE: / 'Object ID: ', lv_id COLOR COL_HEADING.

 

ENDFORM.

 

 

FORM get_obj_struc USING iv_obj_guid TYPE comm_product-product_guid.

 

  " try to find object structure IBASE id

 

  " source obj_guid destination ibase guid

 

   DATA:

 

         lv_id TYPE ibib-ibase.

 

 

   SELECT SINGLE ibase INTO lv_id FROM ibib AS A INNER JOIN COMM_IL_PRDIB AS B ON

 

      A~ib_guid_16 = B~destinguid WHERE B~sourceguid = iv_obj_guid.

 

   CHECK sy-subrc = 0.

 

 

   PERFORM handle_ibase USING lv_id.

 

ENDFORM.

 

 

FORM handle_obj_component USING iv_ibase_id TYPE ibib_ibase.

 

 

  WRITE: / 'IBASE ID: ', iv_ibase_id COLOR COL_POSITIVE.

 

  ls_header-ibase = iv_ibase_id.

 

  CALL FUNCTION 'CRM_IBASE_GET_DETAIL'

 

   EXPORTING

 

     i_ibase_head      = ls_header

 

   IMPORTING

 

     e_struc_ibase_tab = lt_struc_tab

 

   EXCEPTIONS

 

     not_specified     = 1

 

     doesnt_exist      = 2

 

     no_authority      = 3.

 

 

  ASSERT sy-subrc = 0.

 

 

  LOOP AT lt_struc_tab INTO ls_line.

 

    WRITE: / 'Component ID: ' , ls_line-instance COLOR COL_NEGATIVE.

 

    ls_comp-ibase = iv_ibase_id.

 

    ls_comp-instance = ls_line-instance.

 

    CALL FUNCTION 'CRM_IBASE_COMP_GET_DETAIL'

 

       EXPORTING

 

         i_comp        = ls_comp

 

       IMPORTING

 

         e_comp_det    = ls_comp_detail

 

       EXCEPTIONS

 

         not_specified = 1

 

         doesnt_exist  = 2

 

         no_authority  = 3.

 

 

   WRITE: / 'Component Description:' , ls_comp_detail-descr COLOR COL_POSITIVE,

 

  'Object ID: ', ls_comp_detail-object_id COLOR COL_GROUP.

 

   WRITE: / 'Component guid: ' , ls_comp_detail-guid_comp COLOR COL_KEY,

 

    'component guidc: ' , ls_comp_detail-guid_compc COLOR COL_HEADING.

 

   PERFORM get_obj_struc USING ls_comp_detail-object_guid.

 

  ENDLOOP.

 

 

ENDFORM.

 

 

 

FORM handle_ibase USING iv_ibase_id TYPE ibib-ibase.

 

   PERFORM print_object_str USING iv_ibase_id.

 

   PERFORM handle_obj_component USING iv_ibase_id.

 

 

 

ENDFORM.