*& Form f_get_prodh
*&---------------------------------------------------------------------*
* Form to get value request for Product Hierarchy components
*----------------------------------------------------------------------*
* -->FP_C_PRODH Constant for product Hiararchy
*----------------------------------------------------------------------*
FORM F_GET_PRODH USING FP_C_PRODH TYPE ANY
CHANGING FP_PRODH TYPE ANY.
DATA: L_I_PRODHSINFO TYPE STANDARD TABLE OF DD03P,
L_WA_PRODHSINFO TYPE DD03P,
L_WA_PRODHS TYPE PRODHS.
DATA: L_ROOT TYPE T179-PRODH,
L_STUFE TYPE T179-STUFE VALUE 1,
L_KP_PRODH TYPE T179-PRODH,
L_PRODHS_NAME1 TYPE CHAR30,
L_PRODHS_NAME2 TYPE CHAR30.
FIELD-SYMBOLS: TYPE ANY.
CALL FUNCTION 'RV_PRODUKTHIERARCHIE_INFO' "#EC *
TABLES
FPRODHSINFO = L_I_PRODHSINFO
EXCEPTIONS
TOO_MANY_LEVEL = 1
OTHERS = 2.
IF SY-SUBRC <> 0. "#EC NEEDED
ENDIF.
CONCATENATE 'L_WA_PRODHS' '-' FP_C_PRODH INTO L_PRODHS_NAME1.
LOOP AT L_I_PRODHSINFO INTO L_WA_PRODHSINFO.
CONCATENATE 'L_WA_' L_WA_PRODHSINFO-TABNAME '-'
L_WA_PRODHSINFO-FIELDNAME INTO L_PRODHS_NAME2.
IF L_PRODHS_NAME1 = L_PRODHS_NAME2.
EXIT.
ELSE.
ASSIGN (L_PRODHS_NAME2) TO .
ENDIF.
IF IS ASSIGNED.
TRANSLATE USING ' +'.
CONCATENATE L_ROOT INTO L_ROOT.
L_STUFE = L_STUFE + 1.
ENDIF.
ENDLOOP.
CALL FUNCTION 'RV_PRODUKTHIERARCHIE_SHOW' "#EC *
EXPORTING
ROOT = L_ROOT
SELMODE = '2'
STUFE = L_STUFE
DISPLAY = 'X'
SHOW_ONLY = ' '
IMPORTING
NODE_PICKED = L_KP_PRODH
EXCEPTIONS
ROOT_NOT_EXIST = 1
TOO_MANY_LEVEL = 2
OTHERS = 3.
IF ( SY-SUBRC = 0 ) AND ( NOT L_KP_PRODH IS INITIAL ).
MOVE L_KP_PRODH TO L_WA_PRODHS .
ASSIGN (L_PRODHS_NAME1) TO .
IF IS ASSIGNED.
FP_PRODH = .
ENDIF.
ENDIF.
ENDFORM. " f_get_prodh
----------------------------------------------------------------------------
* Product Hierachy tree details *
----------------------------------------------------------------------------
IF NOT -PRODH+0(2) EQ SPACE.
-LINE = -PRODH+0(2).
L_WA_PRODH_LINE-SIGN = L_C_I.
L_WA_PRODH_LINE-OPTION = L_C_EQ.
L_WA_PRODH_LINE-LOW = -PRODH+0(2).
APPEND L_WA_PRODH_LINE TO L_R_PRODH.
ENDIF.
IF NOT -PRODH+2(2) EQ SPACE.
-BRDGRP = -PRODH+2(2).
L_WA_PRODH_LINE-SIGN = L_C_I.
L_WA_PRODH_LINE-OPTION = L_C_EQ.
L_WA_PRODH_LINE-LOW = -PRODH+0(4).
APPEND L_WA_PRODH_LINE TO L_R_PRODH.
ENDIF.
*End of Change by MOD-004.
IF NOT -PRODH+4(3) EQ SPACE.
-BRAND = -PRODH+4(3).
L_WA_PRODH_LINE-SIGN = L_C_I.
L_WA_PRODH_LINE-OPTION = L_C_EQ.
L_WA_PRODH_LINE-LOW = -PRODH+0(7).
APPEND L_WA_PRODH_LINE TO L_R_PRODH.
ENDIF.
IF NOT -PRODH+13(2) EQ SPACE.
-PACKAGE = -PRODH+13(2).
L_WA_PRODH_LINE-SIGN = 'I'.
L_WA_PRODH_LINE-OPTION = 'EQ'.
L_WA_PRODH_LINE-LOW = -PRODH+0(15).
APPEND L_WA_PRODH_LINE TO L_R_PRODH.
ENDIF.
IF NOT -PRODH+7(3) EQ SPACE.
-SBRAND = -PRODH+7(3).
L_WA_PRODH_LINE-SIGN = L_C_I.
L_WA_PRODH_LINE-OPTION = L_C_EQ.
L_WA_PRODH_LINE-LOW = -PRODH+0(10).
APPEND L_WA_PRODH_LINE TO L_R_PRODH.
ENDIF.
IF NOT -PRODH+10(3) EQ SPACE.
-FLAVOR = -PRODH+10(3).
L_WA_PRODH_LINE-SIGN = L_C_I.
L_WA_PRODH_LINE-OPTION = L_C_EQ.
L_WA_PRODH_LINE-LOW = -PRODH+0(13).
APPEND L_WA_PRODH_LINE TO L_R_PRODH.
ENDIF.
IF NOT -PRODH+15(3) EQ SPACE.
-SIZE = -PRODH+15(3).
L_WA_PRODH_LINE-SIGN = L_C_I.
L_WA_PRODH_LINE-OPTION = L_C_EQ.
L_WA_PRODH_LINE-LOW = -PRODH+0(18).
APPEND L_WA_PRODH_LINE TO L_R_PRODH.
ENDIF.