2007 Aug 07 9:25 AM
Hi Experts,
This is my code i want to display my quantity total according to material group but i can't do it.
I attached all code as follows.Please correct it if it has any mistake or any code missing pls.
REPORT ZZABCTEST2.
TABLES: MARA,
MAKT.
TYPE-POOLS: SLIS.
TYPES: BEGIN OF TY_MARA,
MATNR TYPE MATNR,
MTART TYPE MTART,
MATKL TYPE MATKL,
BRGEW TYPE BRGEW,
END OF TY_MARA,
BEGIN OF TY_MAKT,
MATNR TYPE MATNR,
SPRAS TYPE SPRAS,
MAKTX TYPE MAKTX,
END OF TY_MAKT,
BEGIN OF TY_FINAL,
MATNR TYPE MATNR,
MAKTX TYPE MAKTX,
MTART TYPE MTART,
MATKL TYPE MATKL,
BRGEW TYPE BRGEW,
TOTBW TYPE BRGEW,
END OF TY_FINAL.
CONSTANTS: C_X VALUE 'X',
C_H VALUE 'H',
C_S VALUE 'S'.
DATA: IT_MARA TYPE STANDARD TABLE OF TY_MARA INITIAL SIZE 0,
IT_MAKT TYPE STANDARD TABLE OF TY_MAKT INITIAL SIZE 0,
IT_FINAL TYPE STANDARD TABLE OF TY_FINAL INITIAL SIZE 0,
WA_MARA TYPE TY_MARA,
WA_MAKT TYPE TY_MAKT,
WA_FINAL TYPE TY_FINAL,
G_TOTAL TYPE BRGEW,
G_SNO TYPE I.
DECLARATION FOR ALV.
DATA: FLDCAT TYPE SLIS_T_FIELDCAT_ALV,
LAYOUT TYPE SLIS_LAYOUT_ALV,
TOPPAGE TYPE SLIS_T_LISTHEADER,
ALVSORT TYPE SLIS_T_SORTINFO_ALV.
INITIALIZATION BLOCK ****************************
INITIALIZATION.
SELECTION SCREEN *****************************
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
SELECT-OPTIONS : S_MAT FOR MARA-MATNR.
SELECTION-SCREEN END OF BLOCK B1.
START OF SELECTION ******************************
START-OF-SELECTION.
PERFORM DATA_RETRIVAL.
IF IT_FINAL[] IS NOT INITIAL.
PERFORM BUILD_FIELDCAT.
PERFORM BUILD_LAYOUT.
PERFORM BUILD_HEADER.
PERFORM ALV_SORT.
PERFORM DISPLAY_OUTPUT.
ENDIF.
***********END OF SEL;ECTION ********************************
END-OF-SELECTION.
CLEAR: IT_MARA,
IT_MAKT,
IT_FINAL.
&----
*& Form DATA_RETRIVAL
&----
FORM DATA_RETRIVAL .
SELECT MATNR MTART MATKL BRGEW
FROM MARA
INTO TABLE IT_MARA
WHERE MATNR IN S_MAT.
IF IT_MARA[] IS NOT INITIAL.
SELECT MATNR SPRAS MAKTX
FROM MAKT
INTO TABLE IT_MAKT
FOR ALL ENTRIES IN IT_MARA
WHERE MATNR EQ IT_MARA-MATNR
AND SPRAS BETWEEN L_SPRAS AND H_SPRAS.
AND SPRAS EQ SY-LANGU.
ENDIF.
CLEAR G_SNO.
LOOP AT IT_MARA INTO WA_MARA WHERE MATNR IS NOT INITIAL.
READ TABLE IT_MAKT INTO WA_MAKT WITH KEY MATNR = WA_MARA-MATNR BINARY SEARCH.
WA_FINAL-MATNR = WA_MARA-MATNR.
WA_FINAL-MAKTX = WA_MAKT-MAKTX.
WA_FINAL-MTART = WA_MARA-MTART.
WA_FINAL-MATKL = WA_MARA-MATKL.
WA_FINAL-BRGEW = WA_MARA-BRGEW.
ON CHANGE OF MTART.
G_TOTAL = WA_FINAL-BRGEW + G_TOTAL.
ENDAT.
APPEND WA_FINAL TO IT_FINAL.
CLEAR WA_FINAL.
ENDLOOP.
SORT IT_FINAL BY MTART.
ENDFORM. " DATA_RETRIVAL
&----
*& Form BUILD_FIELDCAT
&----
FORM BUILD_FIELDCAT .
DATA: L_POS TYPE I,
WA_FLDCAT TYPE SLIS_FIELDCAT_ALV.
WA_FLDCAT-FIELDNAME = 'SNO'.
WA_FLDCAT-TABNAME = 'IT_FINAL'.
WA_FLDCAT-SELTEXT_M = TEXT-000.
WA_FLDCAT-OUTPUTLEN = 10.
WA_FLDCAT-KEY = C_X.
WA_FLDCAT-COL_POS = L_POS.
APPEND WA_FLDCAT TO FLDCAT.
CLEAR WA_FLDCAT.
L_POS = L_POS + 1.
WA_FLDCAT-FIELDNAME = 'MATNR'.
WA_FLDCAT-TABNAME = 'IT_FINAL'.
WA_FLDCAT-SELTEXT_M = TEXT-002.
WA_FLDCAT-OUTPUTLEN = 10.
WA_FLDCAT-KEY = C_X.
WA_FLDCAT-COL_POS = L_POS.
APPEND WA_FLDCAT TO FLDCAT.
CLEAR WA_FLDCAT.
L_POS = L_POS + 1.
WA_FLDCAT-FIELDNAME = 'MAKTX'.
WA_FLDCAT-TABNAME = 'IT_FINAL'.
WA_FLDCAT-SELTEXT_M = TEXT-003.
WA_FLDCAT-OUTPUTLEN = 40.
WA_FLDCAT-KEY = C_X.
WA_FLDCAT-EMPHASIZE = C_X.
WA_FLDCAT-COL_POS = L_POS.
APPEND WA_FLDCAT TO FLDCAT.
CLEAR WA_FLDCAT.
L_POS = L_POS + 1.
WA_FLDCAT-FIELDNAME = 'MTART'.
WA_FLDCAT-TABNAME = 'IT_FINAL'.
WA_FLDCAT-SELTEXT_M = TEXT-004.
WA_FLDCAT-OUTPUTLEN = 4.
WA_FLDCAT-KEY = C_X.
WA_FLDCAT-COL_POS = L_POS.
APPEND WA_FLDCAT TO FLDCAT.
CLEAR WA_FLDCAT.
L_POS = L_POS + 1.
WA_FLDCAT-FIELDNAME = 'MATKL'.
WA_FLDCAT-TABNAME = 'IT_FINAL'.
WA_FLDCAT-SELTEXT_M = TEXT-005.
WA_FLDCAT-KEY = C_X.
WA_FLDCAT-OUTPUTLEN = 9.
WA_FLDCAT-COL_POS = L_POS.
APPEND WA_FLDCAT TO FLDCAT.
CLEAR WA_FLDCAT.
L_POS = L_POS + 1.
*
WA_FLDCAT-FIELDNAME = 'BRGEW'.
WA_FLDCAT-TABNAME = 'IT_FINAL'.
WA_FLDCAT-SELTEXT_M = TEXT-005.
WA_FLDCAT-KEY = C_X.
WA_FLDCAT-OUTPUTLEN = 13.
WA_FLDCAT-COL_POS = L_POS.
APPEND WA_FLDCAT TO FLDCAT.
CLEAR WA_FLDCAT.
L_POS = L_POS + 1.
WA_FLDCAT-FIELDNAME = 'TOTBW'.
WA_FLDCAT-TABNAME = 'IT_FINAL'.
WA_FLDCAT-SELTEXT_M = TEXT-005.
WA_FLDCAT-KEY = C_X.
WA_FLDCAT-OUTPUTLEN = 13.
WA_FLDCAT-DO_SUM = C_X.
WA_FLDCAT-COL_POS = L_POS.
APPEND WA_FLDCAT TO FLDCAT.
CLEAR WA_FLDCAT.
L_POS = L_POS + 1.
ENDFORM. " BUILD_FIELDCAT
&----
*& Form BUILD_LAYOUT
&----
FORM BUILD_LAYOUT .
LAYOUT-ZEBRA = C_X.
LAYOUT-COLWIDTH_OPTIMIZE = C_X.
ENDFORM. " BUILD_LAYOUT
&----
*& Form BUILD_HEADER
&----
FORM BUILD_HEADER .
DATA: L_TP TYPE SLIS_LISTHEADER.
L_TP-TYP = C_H.
L_TP-INFO = TEXT-006.
APPEND L_TP TO TOPPAGE.
L_TP-TYP = C_S.
L_TP-INFO = TEXT-007.
APPEND L_TP TO TOPPAGE.
ENDFORM. " BUILD_HEADER
&----
*& Form BUILD_COMMENTRY
&----
FORM BUILD_COMMENTRY .
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
IT_LIST_COMMENTARY = TOPPAGE.
ENDFORM.
&----
*& Form DISPLAY_OUTPUT
&----
FORM DISPLAY_OUTPUT .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = SY-REPID
I_CALLBACK_TOP_OF_PAGE = 'BUILD_COMMENTRY'
IT_SORT = ALVSORT
IS_LAYOUT = LAYOUT
IT_FIELDCAT = FLDCAT[]
I_SAVE = C_X
TABLES
T_OUTTAB = IT_FINAL
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.
ENDFORM. " DISPLAY_OUTPUT
&----
*& Form ALV_SORT
&----
FORM ALV_SORT .
DATA: WA_SORT TYPE SLIS_SORTINFO_ALV.
WA_SORT-FIELDNAME = 'MTART'.
WA_SORT-SUBTOT = C_X.
WA_SORT-UP = C_X.
APPEND WA_SORT TO ALVSORT.
CLEAR WA_SORT.
ENDFORM.
Help will be awarded by points.
Regards,
Gurprit Bhatia
2007 Aug 07 9:43 AM
just uncomment
PERFORM ALV_SORT.
it is working for me after uncommenting.
regards
shiba dutta
just uncomment
PERFORM ALV_SORT.
it is working for me after uncommenting.
regards
shiba dutta
2007 Aug 07 9:32 AM
2007 Aug 07 9:43 AM
just uncomment
PERFORM ALV_SORT.
it is working for me after uncommenting.
regards
shiba dutta
2007 Aug 07 9:46 AM
Hi ur code is correct please add the highlighted section to complete it.
FORM display_output .
<b> PERFORM alv_sort.</b>
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = sy-repid
i_callback_top_of_page = 'BUILD_COMMENTRY'
it_sort = alvsort
is_layout = layout
it_fieldcat = fldcat[]
i_save = c_x
TABLES
t_outtab = it_final
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.
ENDFORM. " DISPLAY_OUTPUTHope that Helps
Anirban M.
2007 Aug 07 9:53 AM
Hi,
Check this code for subtotal:
Define
DATA: wa_sort TYPE slis_sortinfo_alv..
it_sort TYPE slis_t_sortinfo_alv.
CLEAR wa_sort.
wa_sort-spos = 2.
wa_sort-fieldname = 'FIELDNAME'.
wa_sort-tabname = 'ITAB'.
wa_sort-subtot = 'X'.
APPEND wa_sort TO it_sort.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
it_sort = it_sort .
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
The ' wa_sort-subtot = 'X'.' is used fo the subtotal display.
You have to sort on the basis of material grp...
Reward points if this helped.
Regards,
Neslin.
Message was edited by:
neslin
Message was edited by:
neslin
| User | Count |
|---|---|
| 3 | |
| 2 | |
| 2 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |