Created by Jerry Wang, last modified on Apr 02, 2015
use the report below:
report output:
source code:
REPORT prod_list_assigned_serv_contra.
PARAMETERS: id TYPE comm_product-product_id OBLIGATORY DEFAULT 'ZABAP'.
DATA: ls_comp_det TYPE ibap_comp1,
lt_comp_tmp TYPE ibap_comp4_tab,
lt_ibase_comp TYPE ibctr_input_tab,
ls_ibase_comp LIKE LINE OF lt_ibase_comp,
lv_guid TYPE comm_product-product_guid,
lt_contracts TYPE ibctr_contract_tab.
START-OF-SELECTION.
SELECT SINGLE product_guid FROM comm_product INTO lv_guid
WHERE product_id = id.
IF sy-subrc <> 0.
WRITE:/ 'specify a valid object id!' COLOR COL_NEGATIVE.
RETURN.
ENDIF.
ls_comp_det-object_guid = lv_guid.
CALL FUNCTION 'CRM_IBASE_COMP_FIND_MULTI'
EXPORTING
i_comp_det = ls_comp_det
iv_include_void = abap_true
IMPORTING
e_comp_tab = lt_comp_tmp
EXCEPTIONS
not_found = 1
OTHERS = 2.
IF sy-subrc <> 0.
WRITE: / 'no component found for given i-object' COLOR COL_NEGATIVE.
RETURN.
ENDIF.
* in CRM one object could only be assigned to ONE IBASE componment
READ TABLE lt_comp_tmp ASSIGNING FIELD-SYMBOL(<result>) INDEX 1.
ls_ibase_comp-ibase = <result>-ibase.
ls_ibase_comp-instance = <result>-instance.
WRITE:/ 'object belongs to ibase id: ' COLOR COL_NEGATIVE, <result>-ibase COLOR COL_GROUP,
'component id: ' COLOR COL_NEGATIVE , <result>-instance COLOR COL_GROUP.
APPEND ls_ibase_comp TO lt_ibase_comp.
CALL FUNCTION 'IB_CONTRACTS_TO_COMPONENT'
EXPORTING
it_inst_identifier = lt_ibase_comp
output_popup = ''
IMPORTING
et_contract_data = lt_contracts
EXCEPTIONS
input_error = 1
internal_error = 2
no_records_found = 3
OTHERS = 4.
IF sy-subrc <> 0.
WRITE: / 'no service contract found for given iobject' COLOR COL_NEGATIVE.
RETURN.
ENDIF.
LOOP AT lt_contracts ASSIGNING FIELD-SYMBOL(<contract>).
WRITE: / 'Service contract id: ' COLOR COL_POSITIVE, <contract>-crm_object_id COLOR COL_KEY.
WRITE: / 'service contract description: ' COLOR COL_HEADING, <contract>-description COLOR COL_HEADING.
WRITE: / 'line item id: ' COLOR COL_BACKGROUND, <contract>-number_int COLOR COL_TOTAL.
WRITE: / 'valid from: ' COLOR COL_POSITIVE, <contract>-date_from COLOR COL_KEY,
'valid to: ' COLOR COL_NORMAL, <contract>-date_to COLOR COL_NEGATIVE.
ENDLOOP.