You are on page 1of 4

www.biportal.

org

3. Create infoobject ZBPSHIE that will contain the hierarchy


Create a new infoobject (ZBPSHIE) compounded with Credit Segment (0CDM_CSEG), insert
characteristic as infoprovider and prepare for loading hierarchy and texts from a flat file.

4. Introduce logic in the Transformation to the Open Hub so that


the proper hierarchy file is generated
I suggest using an Expert routine so that we can easily combine source fields with the target
fields in one code.

FIELD-SYMBOLS: <RESULT_FIELDS> TYPE _ty_s_TG_1.


TYPES: ty_bptext TYPE /BI0/TBPARTNER.
DATA: t_bptxt TYPE SORTED TABLE OF ty_bptext
WITH UNIQUE KEY BPARTNER.
FIELD-SYMBOLS: <txt> TYPE ty_bptext.

DATA: t_bp TYPE SORTED TABLE OF _ty_s_SC_1


WITH NON-UNIQUE KEY BPARTNER2 CDM_CSEG.
FIELD-SYMBOLS: <bp> TYPE _ty_s_SC_1.

DATA: nid TYPE N LENGTH 8.

2
www.biportal.org

DATA: rp TYPE _ty_s_TG_1.


DATA: nname TYPE C LENGTH 32.
FIELD-SYMBOLS: <rp> TYPE _ty_s_TG_1.

IF t_bptxt IS INITIAL.
SELECT * FROM /BI0/TBPARTNER INTO TABLE t_bptxt.
ENDIF.

DELETE SOURCE_PACKAGE WHERE BP_RELDIR <> '1'.


SORT SOURCE_PACKAGE BY BPARTNER2 CDM_CSEG BPRELATION DESCENDING.
DELETE ADJACENT DUPLICATES FROM SOURCE_PACKAGE COMPARING BPARTNER2
CDM_CSEG.
t_bp[] = SOURCE_PACKAGE[].

nid = 1.
rp-LANGU = 'EN'.
rp-IOBJNM = 'ZBPSHIE'.

LOOP AT SOURCE_PACKAGE ASSIGNING <SOURCE_FIELDS>.

* Insert upper most level node


READ TABLE t_bp ASSIGNING <bp>
WITH TABLE KEY BPARTNER2 = <SOURCE_FIELDS>-BPARTNER1 CDM_CSEG =
<SOURCE_FIELDS>-CDM_CSEG.

IF sy-subrc <> 0.
rp-NODEID = nid. nid = nid + 1.
CONCATENATE <SOURCE_FIELDS>-BPARTNER1 '.'
<SOURCE_FIELDS>-CDM_CSEG INTO nname.
rp-NODENAME = nname.

* read text from master data


READ TABLE t_bptxt ASSIGNING <txt>
WITH TABLE KEY BPARTNER = <SOURCE_FIELDS>-BPARTNER1.
IF sy-subrc = 0.
rp-TXTSH = <txt>-TXTSH.
rp-TXTMD = <txt>-TXTMD.
rp-TXTLG = <txt>-TXTLG.
ENDIF.
INSERT rp INTO TABLE RESULT_PACKAGE.
ENDIF.

rp-NODEID = nid. nid = nid + 1.

CONCATENATE <SOURCE_FIELDS>-BPARTNER2 '.' <SOURCE_FIELDS>-CDM_CSEG


INTO nname.
rp-NODENAME = nname.

* read text from master data


READ TABLE t_bptxt ASSIGNING <txt>
WITH TABLE KEY BPARTNER = <SOURCE_FIELDS>-BPARTNER2.
IF sy-subrc = 0.
rp-TXTSH = <txt>-TXTSH.

3
www.biportal.org

rp-TXTMD = <txt>-TXTMD.
rp-TXTLG = <txt>-TXTLG.
ENDIF.
INSERT rp INTO TABLE RESULT_PACKAGE.
ENDLOOP.

* assign parent node ids


LOOP AT RESULT_PACKAGE ASSIGNING <RESULT_FIELDS>.
READ TABLE t_bp ASSIGNING <bp>
WITH TABLE KEY BPARTNER2 = <RESULT_FIELDS>-nodename(10)
CDM_CSEG = <RESULT_FIELDS>-nodename+11(10).
IF sy-subrc = 0.
CONCATENATE <bp>-BPARTNER1 '.' <bp>-CDM_CSEG INTO nname.
READ TABLE RESULT_PACKAGE ASSIGNING <rp>
WITH KEY NODENAME = nname.
IF sy-subrc = 0.
<RESULT_FIELDS>-PARENTID = <rp>-NODEID.
ENDIF.
ENDIF.
ENDLOOP.

SORT RESULT_PACKAGE BY NODEID NODENAME ASCENDING.


DELETE ADJACENT DUPLICATES FROM RESULT_PACKAGE COMPARING NODEID.

5. Set up Transformation and Load Hierarchy


In this transformation we have to connect the new infoobject ZBPSHIE with the flat file datasource
that contains input data for the hierarchy.

Hierarchy Description mapping

Hierarchy Structure: Credit Segment should be extracted from the Nodename field by skipping first
10 digits assigned to the BP code and a dot (RESULT = SOURCE_FIELDS_3-NODENAME+11(10).)

4
www.biportal.org

7. Test results

Here is the generated hierarchy populated in the infoobject ZBPSHIE. This infoobject will be used in
the reports and related infoproviders where the hierarchical view on Business Partner relationships
is required.

You might also like