‎2007 Jun 25 10:51 AM
hi all
I have the following scenario,
Actually i have used the FM CS_BOM_EXPL_MAT_V2 to collect all the bom
components against a material.It displays components in a unordered manner.
But now i want to display all the component in item wise or hierarchical view.
Iam using the alv grid also.
It displays as follows.
Item component
10 Aaaaa
20 b222
30 Ccccc
20 Bbbbb
10 a111
30 c111
10 a222
20 b111
30 c222
But i want to display as follows
Item Component
10 Aaaaa
10 a111
10 a222
20 Bbbbb
20 b111
20 b222
30 Ccccc
30 c111
30 c222
can you solve out this, Thanks in advance.
Regards
Rajaram
‎2007 Jun 25 10:54 AM
Hi,
plz use.REUSE_ALV_HIERSEQ_LIST_DISPLAY. for this kind of dispaly.
following is sample code.
REPORT ZHIERARCHYLIST .
TABLES: VBAK, VBAP.
TYPE-POOLS: SLIS.
DATA: GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,
WA_FIELDCAT TYPE SLIS_FIELDCAT_ALV,
GS_KEYINFO TYPE SLIS_KEYINFO_ALV.
DATA: BEGIN OF ITAB OCCURS 0,
VBELN LIKE VBAK-VBELN,
ERDAT LIKE VBAK-ERDAT,
END OF ITAB.
DATA: BEGIN OF ITAB1 OCCURS 0,
VBELN LIKE VBAP-VBELN,
POSNR LIKE VBAP-POSNR,
END OF ITAB1.
PERFORM SUB.
GS_KEYINFO-HEADER01 = 'VBELN'.
GS_KEYINFO-ITEM01 = 'VBELN'.
CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
EXPORTING
I_INTERFACE_CHECK = ' '
I_CALLBACK_PROGRAM = SY-REPID
I_CALLBACK_PF_STATUS_SET = ' '
I_CALLBACK_USER_COMMAND = ' '
IS_LAYOUT =
IT_FIELDCAT = GT_FIELDCAT
IT_EXCLUDING =
IT_SPECIAL_GROUPS =
IT_SORT =
IT_FILTER =
IS_SEL_HIDE =
I_SCREEN_START_COLUMN = 0
I_SCREEN_START_LINE = 0
I_SCREEN_END_COLUMN = 0
I_SCREEN_END_LINE = 0
I_DEFAULT = 'X'
I_SAVE = ' '
IS_VARIANT =
IT_EVENTS =
IT_EVENT_EXIT =
i_tabname_header = 'ITAB'
i_tabname_item = 'ITAB1'
I_STRUCTURE_NAME_HEADER =
I_STRUCTURE_NAME_ITEM =
is_keyinfo = GS_KEYINFO
IS_PRINT =
IS_REPREP_ID =
I_BYPASSING_BUFFER =
I_BUFFER_ACTIVE =
IMPORTING
E_EXIT_CAUSED_BY_CALLER =
ES_EXIT_CAUSED_BY_USER =
tables
t_outtab_header = ITAB
t_outtab_item = ITAB1
EXCEPTIONS
PROGRAM_ERROR = 1
OTHERS = 2
.
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
FORM SUB.
SELECT VBELN ERDAT FROM VBAK INTO TABLE ITAB UP TO 10 ROWS.
SELECT VBELN POSNR FROM VBAP INTO TABLE ITAB1 UP TO 10 ROWS.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
I_PROGRAM_NAME = SY-REPID
I_INTERNAL_TABNAME = 'ITAB'
I_STRUCTURE_NAME = 'ITAB'
I_CLIENT_NEVER_DISPLAY = 'X'
I_INCLNAME = SY-REPID
I_BYPASSING_BUFFER =
I_BUFFER_ACTIVE =
CHANGING
ct_fieldcat = GT_FIELDCAT
EXCEPTIONS
INCONSISTENT_INTERFACE = 1
PROGRAM_ERROR = 2
OTHERS = 3
.
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
I_PROGRAM_NAME = SY-REPID
I_INTERNAL_TABNAME = 'ITAB1'
I_STRUCTURE_NAME = 'ITAB1'
I_CLIENT_NEVER_DISPLAY = 'X'
I_INCLNAME = SY-REPID
I_BYPASSING_BUFFER =
I_BUFFER_ACTIVE =
CHANGING
ct_fieldcat = GT_FIELDCAT
EXCEPTIONS
INCONSISTENT_INTERFACE = 1
PROGRAM_ERROR = 2
OTHERS = 3
.
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM.
regards,
Ruchika
Reward if useful..........
‎2007 Jun 25 10:53 AM
Hi,
sort the internal table by itam.
SORT ITAB BY ITEM.
Regards,
nagaraj
‎2007 Jun 25 10:54 AM
Hi,
plz use.REUSE_ALV_HIERSEQ_LIST_DISPLAY. for this kind of dispaly.
following is sample code.
REPORT ZHIERARCHYLIST .
TABLES: VBAK, VBAP.
TYPE-POOLS: SLIS.
DATA: GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,
WA_FIELDCAT TYPE SLIS_FIELDCAT_ALV,
GS_KEYINFO TYPE SLIS_KEYINFO_ALV.
DATA: BEGIN OF ITAB OCCURS 0,
VBELN LIKE VBAK-VBELN,
ERDAT LIKE VBAK-ERDAT,
END OF ITAB.
DATA: BEGIN OF ITAB1 OCCURS 0,
VBELN LIKE VBAP-VBELN,
POSNR LIKE VBAP-POSNR,
END OF ITAB1.
PERFORM SUB.
GS_KEYINFO-HEADER01 = 'VBELN'.
GS_KEYINFO-ITEM01 = 'VBELN'.
CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
EXPORTING
I_INTERFACE_CHECK = ' '
I_CALLBACK_PROGRAM = SY-REPID
I_CALLBACK_PF_STATUS_SET = ' '
I_CALLBACK_USER_COMMAND = ' '
IS_LAYOUT =
IT_FIELDCAT = GT_FIELDCAT
IT_EXCLUDING =
IT_SPECIAL_GROUPS =
IT_SORT =
IT_FILTER =
IS_SEL_HIDE =
I_SCREEN_START_COLUMN = 0
I_SCREEN_START_LINE = 0
I_SCREEN_END_COLUMN = 0
I_SCREEN_END_LINE = 0
I_DEFAULT = 'X'
I_SAVE = ' '
IS_VARIANT =
IT_EVENTS =
IT_EVENT_EXIT =
i_tabname_header = 'ITAB'
i_tabname_item = 'ITAB1'
I_STRUCTURE_NAME_HEADER =
I_STRUCTURE_NAME_ITEM =
is_keyinfo = GS_KEYINFO
IS_PRINT =
IS_REPREP_ID =
I_BYPASSING_BUFFER =
I_BUFFER_ACTIVE =
IMPORTING
E_EXIT_CAUSED_BY_CALLER =
ES_EXIT_CAUSED_BY_USER =
tables
t_outtab_header = ITAB
t_outtab_item = ITAB1
EXCEPTIONS
PROGRAM_ERROR = 1
OTHERS = 2
.
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
FORM SUB.
SELECT VBELN ERDAT FROM VBAK INTO TABLE ITAB UP TO 10 ROWS.
SELECT VBELN POSNR FROM VBAP INTO TABLE ITAB1 UP TO 10 ROWS.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
I_PROGRAM_NAME = SY-REPID
I_INTERNAL_TABNAME = 'ITAB'
I_STRUCTURE_NAME = 'ITAB'
I_CLIENT_NEVER_DISPLAY = 'X'
I_INCLNAME = SY-REPID
I_BYPASSING_BUFFER =
I_BUFFER_ACTIVE =
CHANGING
ct_fieldcat = GT_FIELDCAT
EXCEPTIONS
INCONSISTENT_INTERFACE = 1
PROGRAM_ERROR = 2
OTHERS = 3
.
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
I_PROGRAM_NAME = SY-REPID
I_INTERNAL_TABNAME = 'ITAB1'
I_STRUCTURE_NAME = 'ITAB1'
I_CLIENT_NEVER_DISPLAY = 'X'
I_INCLNAME = SY-REPID
I_BYPASSING_BUFFER =
I_BUFFER_ACTIVE =
CHANGING
ct_fieldcat = GT_FIELDCAT
EXCEPTIONS
INCONSISTENT_INTERFACE = 1
PROGRAM_ERROR = 2
OTHERS = 3
.
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM.
regards,
Ruchika
Reward if useful..........
‎2007 Jun 25 11:19 AM
sorry yar
this is not suitable to my case, i want to display bom child components in a
hierarchical display.CS_BOM_EXPL_MAT_V2'.
It displays the component in un ordered manner.
I want to display Parent 1
child1
parent2
child2
parent3
child 3.1
child 3.2
like this
now it displays
parent1
parent2
child1
child3
child2
parent3
parent1, how can i correct this.
Regards
Rajaram
‎2007 Jun 25 11:23 AM
Hi,
Set this field MEHRS = 'X' in your exporting parameter. Check your itab in that sequence.
Thanks,
Senthil
‎2007 Jun 25 11:39 AM
HI FIRST
1) SORT UR ITAB WITH FIELD -> PARENT
SORT ITAB (DESCENDING / ASCENDING ) BY PARENT.
2) THEN USE AT NEW STATEMENT
LOOP AT ITAB.
AT NEW PARENT .
WRITE:/ITAB-PARENT.
WRITE:ITAB-CHILD.
ENDAT.
ENDLOOP.
OR USE ONCHANGE OF PARENT
STAT1
STAT2
ENDON.
ISTEAD OF AT NEW PARENT.
HOPE IT WILL WORK U WILL GET WHAT U WANT .
TRY THIS ALL THE BEST
‎2007 Jun 25 11:42 AM
‎2007 Jun 25 12:01 PM
still am not get convinced, can anybody help me,
Regards
Rajaram
‎2007 Jun 25 12:33 PM
hi all
I am attaching my code also. can you help me.
&----
*& Report ZSAB_BOM
*&
&----
*&
*&
&----
REPORT ZSAB_BOM.
TABLES : vbep,VBAP,stpo,mara,stpox,STKO.
TYPE-POOLS : slis.
DATA : fcat TYPE slis_t_fieldcat_alv,
it_sort TYPE SLIS_T_SORTINFO_ALV ,
wa_sort type slis_sortinfo_alv,
ls_fcat LIKE LINE OF fcat,
fheader TYPE TABLE OF slis_listheader WITH NON-UNIQUE DEFAULT KEY
WITH HEADER LINE INITIAL SIZE 0.
DATA :i_repid LIKE sy-repid,
gs_layout TYPE slis_layout_alv,
week type n.
*Internal Table
DATA : BEGIN OF it_final OCCURS 0,
VBELN like vbap-VBELN, "SALE ORDER
posnr LIKE vbap-POSNR, "LINE ITEM
STLNR1 like vbap-STLNR,"BOM
STLNR like STPO-STLNR, "BOM no
MATNR LIKE VBAP-MATNR, "MATERIAL
ARKTX LIKE VBAP-ARKTX, "DESC
MEINS LIKE VBAP-MEINS, "BUn
IDNRK LIKE STPO-IDNRK, "COMPONENT
werks like vbap-werks, "PLANT
MAKTX LIKE MAKT-MAKTX, "DESC
MNGKO LIKE STPO-MENGE, "CONSUMPTION
ROANZ LIKE STPO-ROANZ, "BASE QTY
MEINS1 LIKE STPO-MEINS, " Un
KWMENG LIKE VBAP-KWMENG, "ORDER QTY
END OF it_final.
data : ibom1 like stpox occurs 0 with header line,
ibom2 like stpox occurs 0 with header line.
SELECTION-SCREEN BEGIN OF BLOCK bk1 WITH FRAME TITLE text-001.
SELECT-OPTIONS: zso FOR vbep-vbeln OBLIGATORY.
SELECT-OPTIONS: zli FOR vbep-posnr.
SELECT-OPTIONS: ZPL FOR VBAP-WERKS.
PARAMETERS ZQTY TYPE STKO-BMENG.
SELECTION-SCREEN END OF BLOCK bk1.
gs_layout-colwidth_optimize = 'X'.
select vbeln
posnr
MATNR
ARKTX
STLNR
WERKS
KWMENG
MEINS
from vbap
into corresponding fields of table itab
where Vbeln in zso and
posnr in zli and
werks in zpl.
i_repid = sy-repid.
PERFORM fieldcat.
loop at itab.
if zqty is initial.
itab-meng = itab-KWMENG.
modify itab.
else.
MOVE ZQTY TO ITAB-meng.
modify itab.
endif.
endloop.
loop at itab.
clear : ibom1[].
if zqty is not initial.
itab-kwmeng = ITAB-MENG.
modify itab.
ENDIF.
CALL FUNCTION 'CS_BOM_EXPL_MAT_V2'
EXPORTING
capid = 'PP01'
datuv = sy-datum
emeng = itab-meng
mehrs = 'X'
mtnrv = itAB-matnr
stlal = '01'
werks = itAB-werks
TABLES
stb = ibom1
EXCEPTIONS
alt_not_found = 1
call_invalid = 2
material_not_found = 3
missing_authorization = 4
no_bom_found = 5
no_plant_data = 6
no_suitable_bom_found = 7
conversion_error = 8
OTHERS = 9.
IF sy-subrc <> 0.
ENDIF.
LOOP AT IBOM1.
MOVE-CORRESPONDING ITAB TO IT_FINAL.
MOVE IBOM1-IDNRK TO IT_FINAL-IDNRK.
MOVE IBOM1-OJTXP TO IT_FINAL-MAKTX.
IF IT_FINAL-KWMENG LE 0.
MOVE 0 TO IT_FINAL-MNGKO.
ELSE.
MOVE IBOM1-MNGKO TO IT_FINAL-MNGKO.
ENDIF.
MOVE IBOM1-MEINS TO IT_FINAL-MEINS1.
APPEND IT_FINAL.
ENDLOOP.
ENDLOOP.
wa_sort-fieldname = 'VBELN'.
wa_sort-tabname = 'IT_FINAL'.
wa_sort-up = 'X'.
APPEND wa_sort TO it_sort.
wa_sort-fieldname = 'POSNR'.
wa_sort-tabname = 'IT_FINAL'.
wa_sort-up = 'X'.
APPEND wa_sort TO it_sort.
wa_sort-fieldname = 'MATNR'.
wa_sort-tabname = 'IT_FINAL'.
wa_sort-up = 'X'.
APPEND wa_sort TO it_sort.
wa_sort-fieldname = 'ARKTX'.
wa_sort-tabname = 'IT_FINAL'.
wa_sort-up = 'X'.
APPEND wa_sort TO it_sort.
wa_sort-fieldname = 'KWMENG'.
wa_sort-tabname = 'IT_FINAL'.
wa_sort-up = 'X'.
APPEND wa_sort TO it_sort.
*SORT IT_FINAL ASCENDING BY VBELN POSNR MATNR.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = i_repid
is_layout = gs_layout
it_fieldcat = fcat
IT_SORT = it_sort
i_save = 'A'
TABLES
t_outtab = it_final
EXCEPTIONS
program_error = 1
OTHERS = 2.
FORM fieldcat .
MOVE sy-repid TO i_repid.
ls_fcat-tabname = 'IT_FINAL'.
ls_fcat-fieldname = 'VBELN'.
ls_fcat-outputlen = 10.
ls_fcat-seltext_m = 'Sales order'.
APPEND ls_fcat TO fcat.
ls_fcat-tabname = 'IT_FINAL'.
ls_fcat-fieldname = 'POSNR'.
ls_fcat-outputlen = 2.
ls_fcat-seltext_m = 'Item'.
APPEND ls_fcat TO fcat.
ls_fcat-tabname = 'IT_FINAL'.
ls_fcat-fieldname = 'MATNR'.
ls_fcat-outputlen = 20.
ls_fcat-seltext_m = 'Material'.
APPEND ls_fcat TO fcat.
ls_fcat-tabname = 'IT_FINAL'.
ls_fcat-fieldname = 'ARKTX'.
ls_fcat-outputlen = 30.
ls_fcat-seltext_m = 'Description'.
APPEND ls_fcat TO fcat.
ls_fcat-tabname = 'IT_FINAL'.
ls_fcat-fieldname = 'MEINS'.
ls_fcat-outputlen = 30.
ls_fcat-seltext_m = 'BUn'.
APPEND ls_fcat TO fcat.
ls_fcat-tabname = 'IT_FINAL'.
ls_fcat-outputlen = 5.
ls_fcat-fieldname = 'KWMENG'.
ls_fcat-seltext_m = 'Order Qty'.
endif.
APPEND ls_fcat TO fcat.
ls_fcat-tabname = 'IT_FINAL'.
ls_fcat-fieldname = 'IDNRK'.
ls_fcat-outputlen = 15.
ls_fcat-seltext_m = 'Component'.
APPEND ls_fcat TO fcat.
endform.
how can we correct this issue.
Regards
Rajram