CASE i_datasource.
WHEN '0GLACCEXT_T011_HIER'.
PERFORM jerarquia_balance TABLES c_t_hienode c_t_hienode3.
PERFORM jerarquia_carpetas TABLES C_T_FOLDERT.
WHEN '0PROFIT_CTR_0106_HIER'.
PERFORM profit_carpetas TABLES C_T_FOLDERT.
WHEN '0ACCOUNT_0109_HIER'.
PERFORM cuenta_carpetas TABLES C_T_FOLDERT.
ENDCASE.
*****************************
*&---------------------------------------------------------------------*
*& Form jerarquia_balance
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_I_T_DATA text
*----------------------------------------------------------------------*
TYPE-POOLS: rsap.
TYPES: BEGIN OF s_reorg,
nodo TYPE rshienodid,
nodo_n TYPE rshienodid,
END OF s_reorg.
TYPES t_reorg TYPE TABLE OF s_reorg.
TYPES: BEGIN OF s_node3,
nodeid(8) TYPE n,
iobjnm(30) TYPE c,
nodename(32) TYPE c,
tlevel(2) TYPE n,
link TYPE c,
parentid(8) TYPE n,
childid(8) TYPE n,
nextid(8) TYPE n,
datefrom TYPE d,
dateto TYPE d,
intervl TYPE c,
fieldnm(30) TYPE c,
glaccext(18) TYPE c,
rsign TYPE c,
plumi TYPE c,
END OF s_node3.
*&---------------------------------------------------------------------*
*& Form jerarquia_balance
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->I_T_DATA text
*----------------------------------------------------------------------*
FORM jerarquia_balance TABLES i_t_data TYPE rsap_t_hienode
i_t_data3.
DATA it_nodos TYPE rsap_t_hienode.
DATA wa_nodos TYPE rsap_s_hienode.
DATA wa_nodos_companyb33 TYPE rsap_s_hienode.
DATA wa_nodos_companyb195 TYPE rsap_s_hienode.
DATA lineas TYPE i.
DATA nod_piv TYPE rshienodid.
DATA ztab LIKE sy-tabix.
DATA ztab_companyb33 LIKE sy-tabix.
DATA ztab_companyb195 LIKE sy-tabix.
DATA nodo_companyb126 TYPE rshienodid.
DATA nodo_companyb138 TYPE rshienodid.
DATA nodo_companybobsnotes TYPE rshienodid.
* DATA nodo_companyb2 TYPE rshienodid.
DATA nodo_companyb26 TYPE rshienodid.
*
*
READ TABLE i_t_data INTO wa_nodos
WITH KEY nodename = 'companyB126'.
IF sy-subrc EQ 0.
nodo_companyb126 = wa_nodos-nodeid.
ENDIF.
READ TABLE i_t_data INTO wa_nodos
WITH KEY nodename = 'companyB138'.
IF sy-subrc EQ 0.
nodo_companyb138 = wa_nodos-nodeid.
ENDIF.
READ TABLE i_t_data INTO wa_nodos
WITH KEY nodename = 'companyB26'.
IF sy-subrc EQ 0.
nodo_companyb26 = wa_nodos-nodeid.
ENDIF.
READ TABLE i_t_data INTO wa_nodos
WITH KEY nodename = 'companyB0BSNOTES'.
IF sy-subrc EQ 0.
nodo_companybobsnotes = wa_nodos-nodeid.
ENDIF.
* READ TABLE i_t_data INTO wa_nodos
* WITH KEY nodename = 'companyB2'.
*
* IF sy-subrc EQ 0.
* nodo_companyb2 = wa_nodos-nodeid.
* ENDIF.
* En esta extraccion tenemos que colocar
* el nodo companyB138-Resultado del ejercicio
* entre los nodos companyB33 y companyB195
* Así el nodo companyB138 tiene que ser nodo HIJO del nodo companyB26
DATA it_reorg TYPE t_reorg.
DATA wa_reorg TYPE s_reorg.
DESCRIBE TABLE i_t_data LINES lineas.
READ TABLE i_t_data INTO wa_nodos INDEX lineas.
IF sy-subrc EQ 0.
nod_piv = wa_nodos-nodeid.
ENDIF.
LOOP AT i_t_data INTO wa_nodos.
IF wa_nodos-nodeid > nodo_companyb126. "1277
EXIT.
ENDIF.
IF wa_nodos-nodeid >= nodo_companyb138. "875
DELETE i_t_data INDEX sy-tabix.
ADD 1 TO nod_piv.
wa_reorg-nodo = wa_nodos-nodeid.
wa_reorg-nodo_n = nod_piv.
APPEND wa_reorg TO it_reorg.
ADD 2 TO wa_nodos-tlevel.
APPEND wa_nodos TO it_nodos.
ENDIF.
ENDLOOP.
LOOP AT it_nodos INTO wa_nodos.
IF wa_nodos-nodeid <> nodo_companyb138. "875
ztab = sy-tabix.
PERFORM dame_nuevo_nodo
TABLES
it_reorg
USING
wa_nodos-nodeid.
PERFORM dame_nuevo_nodo
TABLES
it_reorg
USING
wa_nodos-parentid.
PERFORM dame_nuevo_nodo
TABLES
it_reorg
USING
wa_nodos-childid.
PERFORM dame_nuevo_nodo
TABLES
it_reorg
USING
wa_nodos-nextid.
MODIFY it_nodos FROM wa_nodos INDEX ztab.
ENDIF.
ENDLOOP.
*------------------------------
LOOP AT it_nodos INTO wa_nodos WHERE nodeid = nodo_companyb138. "875
ztab = sy-tabix.
PERFORM dame_nuevo_nodo
TABLES
it_reorg
USING
wa_nodos-nodeid.
PERFORM dame_nuevo_nodo
TABLES
it_reorg
USING
wa_nodos-childid.
READ TABLE i_t_data INTO wa_nodos_companyb33
WITH KEY nodename = 'companyB33'.
IF sy-subrc EQ 0.
ztab_companyb33 = sy-tabix.
wa_nodos_companyb33-nextid = wa_nodos-nodeid.
MODIFY i_t_data FROM wa_nodos_companyb33 INDEX ztab_companyb33.
ENDIF.
READ TABLE i_t_data INTO wa_nodos_companyb195
WITH KEY nodename = 'companyB195'.
IF sy-subrc EQ 0.
ztab_companyb195 = sy-tabix.
wa_nodos-nextid = wa_nodos_companyb195-nodeid.
ENDIF.
MODIFY it_nodos FROM wa_nodos INDEX ztab.
ENDLOOP.
*****************
* DATA ztab_companyb180 LIKE sy-tabix.
* DATA wa_nodos_companyb180 TYPE rsap_s_hienode.
*
*
*
* READ TABLE i_t_data INTO wa_nodos_companyb180
* WITH KEY nodename = 'companyB180'.
*
* IF sy-subrc EQ 0.
* ztab_companyb180 = sy-tabix.
* wa_nodos_companyb180-nextid = nodo_companybobsnotes. "1278
* MODIFY i_t_data FROM wa_nodos_companyb180 INDEX ztab_companyb180.
* ENDIF.
**********************************************
DATA ztab_companyb0bsnotes LIKE sy-tabix.
DATA wa_nodos_companyb0bsnotes TYPE rsap_s_hienode.
READ TABLE i_t_data INTO wa_nodos_companyb0bsnotes
WITH KEY nodename = 'companyB0BSNOTES'.
IF sy-subrc EQ 0.
ztab_companyb0bsnotes = sy-tabix.
CLEAR wa_nodos_companyb0bsnotes-childid.
MODIFY i_t_data
FROM wa_nodos_companyb0bsnotes INDEX ztab_companyb0bsnotes.
ENDIF.
*******************************
DATA ztab_companyb138 LIKE sy-tabix.
DATA wa_nodos_companyb138 TYPE rsap_s_hienode.
READ TABLE it_nodos INTO wa_nodos_companyb138
WITH KEY nodename = 'companyB138'.
IF sy-subrc EQ 0.
ztab_companyb138 = sy-tabix.
wa_nodos_companyb138-parentid = nodo_companyb26. "483
wa_nodos_companyb138-tlevel = 5.
MODIFY it_nodos FROM wa_nodos_companyb138 INDEX ztab_companyb138.
ENDIF.
********************************************
DATA ztab_companyb125 LIKE sy-tabix.
DATA wa_nodos_companyb125 TYPE rsap_s_hienode.
READ TABLE it_nodos INTO wa_nodos_companyb125
WITH KEY nodename = 'companyB125'.
IF sy-subrc EQ 0.
ztab_companyb125 = sy-tabix.
wa_nodos_companyb125-tlevel = 6.
MODIFY it_nodos FROM wa_nodos_companyb125 INDEX ztab_companyb125.
ENDIF.
********************************************
DATA ztab_companyb126 LIKE sy-tabix.
DATA wa_nodos_companyb126 TYPE rsap_s_hienode.
READ TABLE it_nodos INTO wa_nodos_companyb126
WITH KEY nodename = 'companyB126'.
IF sy-subrc EQ 0.
ztab_companyb126 = sy-tabix.
wa_nodos_companyb126-tlevel = 6.
MODIFY it_nodos FROM wa_nodos_companyb126 INDEX ztab_companyb126.
ENDIF.
*******************************
APPEND LINES OF it_nodos TO i_t_data.
* sincroniza
i_t_data3[] = i_t_data[].
FIELD-SYMBOLS
DATA long TYPE i.
LOOP AT i_t_data3 ASSIGNING
IF
ENDIF.
IF
long = STRLEN(
long = long - 2.
IF
ENDIF.
IF
ENDIF.
ENDIF.
ENDLOOP.
ENDFORM. " jerarquia_balance
*&---------------------------------------------------------------------*
*& Form dame_nuevo_nodo
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->T_REORG text
* -->NODO text
*----------------------------------------------------------------------*
FORM dame_nuevo_nodo TABLES it_reorg TYPE t_reorg
USING nodo TYPE rshienodid.
DATA wa_reorg TYPE s_reorg.
IF NOT nodo IS INITIAL.
READ TABLE it_reorg INTO wa_reorg
WITH KEY nodo = nodo.
IF sy-subrc EQ 0.
nodo = wa_reorg-nodo_n.
ELSE.
BREAK-POINT.
ENDIF.
ENDIF.
ENDFORM. "dame_nuevo_nodo
*----------------------------------------------------------------------*
FORM jerarquia_carpetas TABLES C_T_FOLDERT TYPE RSAP_T_FOLDERT.
* LOOP at C_T_FOLDERT..
* C_T_FOLDERT-LANGU = 'EN'.
* MODIFY C_T_FOLDERT.
* ENDLOOP.
ENDFORM. "jerarquia_carpetas
*----------------------------------------------------------------------*
FORM profit_carpetas TABLES C_T_FOLDERT TYPE RSAP_T_FOLDERT.
LOOP at C_T_FOLDERT..
IF C_T_FOLDERT-LANGU = 'E'.
select single DESCRIPT into C_T_FOLDERT-TXTLG
from SETHEADERT where
LANGU = 'S' and
SUBCLASS = C_T_FOLDERT-NODENAME(4) and
SETCLASS = '0106' and
SETNAME = C_T_FOLDERT-NODENAME+4(24).
C_T_FOLDERT-TXTSH = C_T_FOLDERT-TXTLG.
C_T_FOLDERT-TXTMD = C_T_FOLDERT-TXTLG.
ENDIF.
MODIFY C_T_FOLDERT.
ENDLOOP..
ENDFORM. "profit_carpetas
*----------------------------------------------------------------------*
FORM cuenta_carpetas TABLES C_T_FOLDERT TYPE RSAP_T_FOLDERT.
LOOP at C_T_FOLDERT..
IF C_T_FOLDERT-LANGU = 'E'.
select single DESCRIPT into C_T_FOLDERT-TXTLG
from SETHEADERT where
LANGU = 'S' and
SUBCLASS = C_T_FOLDERT-NODENAME(4) and
* SETCLASS = '0106' and
SETNAME = C_T_FOLDERT-NODENAME+4(10).
C_T_FOLDERT-TXTSH = C_T_FOLDERT-TXTLG.
C_T_FOLDERT-TXTMD = C_T_FOLDERT-TXTLG.
ENDIF.
MODIFY C_T_FOLDERT.
ENDLOOP..
ENDFORM. "cuenta_carpetas
No hay comentarios:
Publicar un comentario