Created by Jerry Wang, last modified on Sep 16, 2014
使用report 打印hierarchy:
*&---------------------------------------------------------------------*
*& 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.