cancel
Showing results for 
Search instead for 
Did you mean: 

ALV REPORT WITH MULTIPLE BLOCKS - COLUM TOTAL

Former Member
0 Kudos

Hi friends,

In the following code, I am not getting the column total.

--- SAMPLE 1--


CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_INIT'

EXPORTING

i_callback_program = sy-cprog

i_callback_user_command = 'USER_COMMAND'.

PERFORM list_append TABLES IT_CTV

USING '1'

'IT_CTV'.

PERFORM list_append TABLES IT_APP

USING '2'

'IT_APP'.

PERFORM f_list_display.

----


  • FORM USER_COMMAND *

----


FORM user_command USING i_ucomm LIKE sy-ucomm

is_selfield TYPE slis_selfield. "#EC CALLED

ENDFORM. " USER_COMMAND

----


  • Form list_append

----


FORM list_append TABLES ut_table

USING u_no TYPE char1

u_tabname TYPE slis_tabname.

DEFINE m_fieldcat.

ls_fieldcat-fieldname = &1.

ls_fieldcat-ref_tabname = &2.

append ls_fieldcat to lt_fieldcat.

END-OF-DEFINITION.

DATA: GT_ZSUM TYPE SLIS_T_SORTINFO_ALV WITH HEADER LINE.

DEFINE m_sort.

ls_sort-fieldname = &1.

ls_sort-up = 'X'.

append ls_sort to lt_sort.

END-OF-DEFINITION.

DATA :

ls_fieldcat TYPE slis_fieldcat_alv,

lt_fieldcat TYPE slis_t_fieldcat_alv, " Field catalog

ls_sort TYPE slis_sortinfo_alv,

lt_sort TYPE slis_t_sortinfo_alv. " Sort table

DATA:

lt_events TYPE slis_t_event,

ls_event TYPE slis_alv_event,

ls_layout TYPE slis_layout_alv.

ls_layout-group_change_edit = 'X'.

ls_layout-colwidth_optimize = 'X'.

ls_layout-zebra = 'X'.

ls_layout-cell_merge = 'X'.

ls_layout-detail_popup = 'X'.

ls_layout-get_selinfos = 'X'.

ls_layout-max_linesize = '300'.

CASE u_no.

WHEN '1'.

ls_fieldcat-SELTEXT_L = ' REGION'.

m_fieldcat 'BZIRK' 'IT_CTV'.

ls_fieldcat-just = 'R'.

ls_fieldcat-SELTEXT_L = ' CTV STOCK'.

m_fieldcat 'CTVST' 'IT_CTV'.

ls_fieldcat-just = 'R'.

ls_fieldcat-SELTEXT_L = ' CTV VALUE'.

m_fieldcat 'CTVVL' 'IT_CTV'.

ls_fieldcat-DO_SUM = 'X'.

m_sort 'BZIRK'.

WHEN '2'.

ls_fieldcat-SELTEXT_L = ' REGION'.

m_fieldcat 'BZIRK' 'IT_APP'.

ls_fieldcat-just = 'R'.

ls_fieldcat-SELTEXT_L = ' RFG STK'.

m_fieldcat 'RFGST' 'IT_APP'.

ls_fieldcat-just = 'R'.

ls_fieldcat-SELTEXT_L = ' RFG VAL'.

m_fieldcat 'RFGVL' 'IT_APP'.

ls_fieldcat-just = 'R'.

ls_fieldcat-SELTEXT_L = ' WM STK'.

m_fieldcat 'WMCST' 'IT_APP'.

ls_fieldcat-just = 'R'.

ls_fieldcat-SELTEXT_L = ' WM VAL'.

m_fieldcat 'WMCVL' 'IT_APP'.

ls_fieldcat-just = 'R'.

ls_fieldcat-SELTEXT_L = ' MCCS STK'.

m_fieldcat 'MOVST' 'IT_APP'.

ls_fieldcat-just = 'R'.

ls_fieldcat-SELTEXT_L = ' MCCS VAL'.

m_fieldcat 'MOVVL' 'IT_APP'.

ls_fieldcat-just = 'R'.

ls_fieldcat-SELTEXT_L = ' APP STK'.

m_fieldcat 'APPST' 'IT_APP'.

ls_fieldcat-just = 'R'.

ls_fieldcat-SELTEXT_L = ' APP VAL'.

m_fieldcat 'APPVL' 'IT_APP'.

ls_fieldcat-just = 'R'.

ls_fieldcat-DO_SUM = 'X'.

m_sort 'BZIRK'.

ENDCASE.

  • ls_fieldcat-COL_POS = 1.

  • ls_fieldcat-FIELDNAME = 'BZIRK'.

  • ls_fieldcat-DO_SUM = 'X'.

  • ls_fieldcat-FIX_COLUMN = 'X'.

  • APPEND ls_fieldcat TO lT_fieldcat.

IF u_no CA '13'.

MOVE 'TOP_OF_PAGE' TO ls_event-name.

CONCATENATE 'TOP_OF_PAGE' u_no INTO ls_event-form.

APPEND ls_event TO lt_events.

ELSE.

MOVE 'TOP_OF_LIST' TO ls_event-name.

CONCATENATE 'TOP_OF_LIST' u_no INTO ls_event-form.

APPEND ls_event TO lt_events.

ENDIF.

CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'

EXPORTING

it_fieldcat = lt_fieldcat

is_layout = ls_layout

i_tabname = u_tabname

it_events = lt_events

it_sort = lt_sort

TABLES

t_outtab = ut_table

EXCEPTIONS

program_error = 1

maximum_of_appends_reached = 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. " LIST_APPEND

----


  • Form f_list_display

----


FORM f_list_display.

DATA ls_print TYPE slis_print_alv.

ls_print-no_print_selinfos = 'X'. " Display no selection infos

ls_print-no_print_listinfos = 'X'. " Display no listinfos

ls_print-reserve_lines = 2. " Lines reserved for end of page

CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_DISPLAY'

EXPORTING

i_interface_check = ' '

is_print = ls_print

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. " F_LIST_DISPLAY

----


  • FORM top_of_page1 *

----


FORM top_of_page1. "#EC CALLED

WRITE 'SALES REPORT'.

PERFORM TOP_LIST1.

ENDFORM.

----


  • FORM top_of_list2 *

----


FORM top_of_list2. "#EC CALLED

WRITE 'STOCK REPORT'.

PERFORM top_of_page.

ENDFORM.

*-----END OF SAMPLE 1 -


Could any help me.

Thanx in advance.

Regards,

A S VINCENT

Accepted Solutions (0)

Answers (5)

Answers (5)

Former Member
0 Kudos

This message was moderated.

Former Member
0 Kudos

Hai Vincent

Check & Run the follow ABAP Code

&----


*& Report ZALV_Block *

*& *

&----


*& *

*& *

&----


REPORT ZALV_block NO STANDARD PAGE HEADING

MESSAGE-ID ZZ.

*..Type Definitions for ALV Report

TYPE-POOLS SLIS.

----


  • Table Declarations. *

----


TABLES: MARA, "Material Master

MARC, "Plant Data for Material

MARD, "Storage Location Data for Material

VBAP, "Sales Document: Item Data

VBUP. "Sales Document: Item Status

----


----


  • Internal table to store sales orders.......

*.......................................................................

DATA: BEGIN OF IT_VBAP OCCURS 0,

VBELN LIKE VBAP-VBELN, "Sales Document

POSNR LIKE VBAP-POSNR, "Sales Document Item

KWMENG LIKE VBAP-KWMENG, "Cumulative order quantity in sales

" Units

END OF IT_VBAP.

*......................................................................

  • internal table to store final data

*----


DATA: BEGIN OF IT_FINAL OCCURS 0,

WERKS LIKE MARD-WERKS, "Plant

MATNR LIKE MARD-MATNR, "Material Number

LGORT LIKE MARD-LGORT, "Storage Location

LABST LIKE MARD-LABST, "Valuated stock with unrestricted use

INSME LIKE MARD-INSME, "Stock in quality inspection

RETME LIKE MARD-RETME, "Blocked Stock Returns

UMLME LIKE MARD-UMLME, "Stock in transfer

MAKTX LIKE MAKT-MAKTX, "Material description

VBELN LIKE VBAP-VBELN, "Sales Document

POSNR LIKE VBAP-POSNR, "Sales Document Item

KWMENG LIKE VBAP-KWMENG, "Cumulative order quantity in sales

" Units

END OF IT_FINAL.

----


  • ALV Type declaration *

----


*..Field Catalog for Basic List.

DATA : IT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,

WA_FIELDCAT TYPE SLIS_FIELDCAT_ALV.

*..Events For Basic List.

DATA : IT_EVENTS TYPE SLIS_T_EVENT,

WA_EVENTS TYPE SLIS_ALV_EVENT.

*..Layout For Basic List

DATA : WA_LAYOUT TYPE SLIS_LAYOUT_ALV.

*..Sort Table For Basic List

DATA: IT_SORT TYPE SLIS_SORTINFO_ALV OCCURS 0 WITH HEADER LINE.

----


  • DATA DECLARATIONS *

----


DATA: V_FLAG,

VINDEX TYPE SY-TABIX,

TOTAL TYPE VBAP-KWMENG. "Open order quantity

*..To Store Program Name

DATA: V_REPID TYPE SYREPID.

*..To know whether basic list contains any data

----


  • Selection Screen. *

----


SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-H01.

SELECT-OPTIONS: S_MATNR FOR MARA-MATNR,

S_WERKS FOR MARC-WERKS,

S_LGORT FOR MARD-LGORT.

SELECTION-SCREEN END OF BLOCK B1.

----


  • Event:Initialization *

----


INITIALIZATION.

V_REPID = SY-REPID.

----


  • AT Selection Screen. *

----


AT SELECTION-SCREEN.

PERFORM VALIDATIONS.

----


  • Event: Start-of-Selection *

----


START-OF-SELECTION.

&----


  • To get data from vbap into internal table IT_VBAP

----


PERFORM FETCH_OPEN_DATA.

&----


  • To get data into final internal table IT_FINAL

----


IF V_FLAG = 'X'.

PERFORM FETCH_FINAL_DATA.

ENDIF.

IF V_FLAG = ''.

MESSAGE I010 WITH 'NO DATA TO BE DISPLAYED'.

EXIT.

ELSE.

  • --Setting the FIELD CATALOG for ALV

PERFORM FILL_FIELDCAT_HEADER.

*-----Setting the LAYOUT for ALV

PERFORM GET_LAYOUT.

*-----Getting the ALV Events

PERFORM GET_EVENT.

*---- To Sort the list

PERFORM DO_SORT.

ENDIF.

----


  • Event: End-of-Selection *

----


END-OF-SELECTION.

*--Generating the ALV LIST DISPLAY

PERFORM DISPLAY_LIST.

//////////////////////////////////////////////////////////////////////

*

  • FORM DEFINITIONS *

*//////////////////////////////////////////////////////////////////////

&----


*& Form VALIDATIONS

&----


  • To validate data in selection screen

----


  • --> p1 text

  • <-- p2 text

----


FORM VALIDATIONS.

PERFORM VALIDATE_MATNR.

PERFORM VALIDATE_WERKS.

PERFORM VALIDATE_LGORT.

IF NOT ( ( MARA-MATNR IS INITIAL ) AND

( MARC-WERKS IS INITIAL ) AND

( MARD-LGORT IS INITIAL ) ).

SELECT SINGLE MATNR

WERKS

LGORT

FROM MARD

INTO (MARD-MATNR, MARD-WERKS, MARD-LGORT)

WHERE MATNR = MARA-MATNR

AND WERKS = MARC-WERKS

AND LGORT = MARD-LGORT.

ENDIF.

ENDFORM. " VALIDATIONS

&----


*& Form VALIDATE_MATNR

&----


  • To validate MATNR

----


  • --> p1 text

  • <-- p2 text

----


FORM VALIDATE_MATNR.

IF NOT S_MATNR[] IS INITIAL.

SELECT MATNR

UP TO 1 ROWS

INTO (MARD-MATNR)

FROM MARA

WHERE MATNR IN S_MATNR.

ENDSELECT.

ENDIF.

IF SY-SUBRC NE 0.

MESSAGE E000 WITH TEXT-001.

ENDIF.

ENDFORM. " VALIDATE_MATNR

&----


*& Form VALIDATE_WERKS

&----


  • To validate plant

----


  • --> p1 text

  • <-- p2 text

----


FORM VALIDATE_WERKS.

IF NOT S_WERKS[] IS INITIAL.

SELECT WERKS

UP TO 1 ROWS

INTO (MARD-WERKS)

FROM MARC

WHERE WERKS IN S_WERKS.

ENDSELECT.

ENDIF.

IF SY-SUBRC NE 0.

MESSAGE E000 WITH TEXT-002.

ENDIF.

ENDFORM. " VALIDATE_WERKS

&----


*& Form VALIDATE_LGORT

&----


  • To validate storage

----


  • --> p1 text

  • <-- p2 text

----


FORM VALIDATE_LGORT.

IF NOT S_LGORT[] IS INITIAL.

SELECT LGORT

UP TO 1 ROWS

INTO (MARD-LGORT)

FROM MARD

WHERE LGORT IN S_LGORT.

ENDSELECT.

ENDIF.

IF SY-SUBRC NE 0.

MESSAGE E000 WITH TEXT-003.

ENDIF.

ENDFORM. " VALIDATE_LGORT

&----


*& Form FETCH_OPEN_DATA

&----


  • To get data into internal table IT_VBAP

----


  • --> p1 text

  • <-- p2 text

----


FORM FETCH_OPEN_DATA.

IF NOT ( ( MARA-MATNR IS INITIAL ) AND

( MARC-WERKS IS INITIAL ) AND

( MARD-LGORT IS INITIAL ) ).

SELECT VBELN

POSNR

KWMENG

INTO CORRESPONDING FIELDS OF TABLE IT_VBAP

FROM VBAP

WHERE MATNR IN S_MATNR

AND WERKS IN S_WERKS

AND LGORT IN S_LGORT.

ENDIF.

LOOP AT IT_VBAP.

SELECT * FROM VBUP

INTO VBUP

WHERE VBELN = IT_VBAP-VBELN

AND POSNR = IT_VBAP-POSNR

AND LFSTA NE 'C'.

ENDSELECT.

ENDLOOP.

IF SY-SUBRC NE 0.

REFRESH IT_VBAP.

MESSAGE E000 WITH TEXT-004.

EXIT.

ELSE.

V_FLAG = 'X'.

ENDIF.

&----


  • To get sum of all quantities as open order quantity

----


LOOP AT IT_VBAP.

TOTAL = TOTAL + IT_VBAP-KWMENG.

ENDLOOP.

ENDFORM. " FETCH_OPEN_DATA

&----


*& Form FETCH_FINAL_DATA

&----


  • To get data into final internal table IT_FINAL

----


  • --> p1 text

  • <-- p2 text

----


FORM FETCH_FINAL_DATA.

SELECT A~MATNR

A~WERKS

A~LGORT

MAKTX

LABST

INSME

RETME

UMLME

VBELN

POSNR

KWMENG

INTO CORRESPONDING FIELDS OF TABLE IT_FINAL

FROM MARD AS A

INNER JOIN MAKT AS B

ON AMATNR = BMATNR

AND SPRAS = 'E'

INNER JOIN VBAP AS C

ON AMATNR = CMATNR

FOR ALL ENTRIES IN IT_VBAP

WHERE VBELN = IT_VBAP-VBELN

AND POSNR = IT_VBAP-POSNR

AND KWMENG = IT_VBAP-KWMENG

AND A~MATNR IN S_MATNR

AND A~WERKS IN S_WERKS

AND A~LGORT IN S_LGORT.

IF SY-SUBRC NE 0.

V_FLAG = SPACE.

MESSAGE E001 WITH 'No data found IN the selection criteria'.

EXIT.

ELSE.

V_FLAG = 'X'.

ENDIF.

ENDFORM. " FETCH_FINAL_DATA

&----


*& Form FILL_FIELDCAT_HEADER

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM FILL_FIELDCAT_HEADER .

CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'

EXPORTING

I_PROGRAM_NAME = V_REPID

I_INTERNAL_TABNAME = 'IT_FINAL'

  • I_STRUCTURE_NAME =

  • I_CLIENT_NEVER_DISPLAY = 'X'

I_INCLNAME = V_REPID

  • I_BYPASSING_BUFFER =

  • I_BUFFER_ACTIVE =

CHANGING

CT_FIELDCAT = IT_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.

LOOP AT IT_FIELDCAT INTO WA_FIELDCAT.

CASE WA_FIELDCAT-FIELDNAME.

WHEN 'KWMENG'.

  • WA_FIELDCAT-COL_POS = '11'.

  • WA_FIELDCAT-OUTPUTLEN = '22'.

  • WA_FIELDCAT-SELTEXT_L = 'Net Value'.

WA_FIELDCAT-DO_SUM = 'X'.

ENDCASE.

MODIFY IT_FIELDCAT FROM WA_FIELDCAT INDEX SY-TABIX.

ENDLOOP.

ENDFORM. " FILL_FIELDCAT_HEADER

&----


*& Form GET_LAYOUT

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM GET_LAYOUT .

WA_LAYOUT-TOTALS_TEXT = 'TOTAL'.

ENDFORM. " GET_LAYOUT

&----


*& Form GET_EVENT

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM GET_EVENT .

CALL FUNCTION 'REUSE_ALV_EVENTS_GET'

EXPORTING

I_LIST_TYPE = 0

IMPORTING

ET_EVENTS = IT_EVENTS

EXCEPTIONS

LIST_TYPE_WRONG = 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.

LOOP AT IT_EVENTS INTO WA_EVENTS.

CASE WA_EVENTS-NAME.

WHEN 'TOP_OF_PAGE'.

WA_EVENTS-FORM = 'FILL_LIST_HEADER'.

WHEN 'USER_COMMAND'.

WA_EVENTS-FORM = 'PROCESS_BASIC_LIST'.

ENDCASE.

MODIFY IT_EVENTS FROM WA_EVENTS INDEX SY-TABIX.

ENDLOOP.

ENDFORM. " GET_EVENT

----


  • FORM FILL_LIST_HEADER *

----


  • ........ *

----


FORM FILL_LIST_HEADER.

WRITE:2'Report :' , SY-REPID,

: 85 ' Intelligroup Asia Pvt Ltd' CENTERED,

: 159 'Date :' ,SY-DATUM,

:/2'User :', SY-UNAME,

: 82 ' Hyderabad ' CENTERED ,

: 159 'Pg.No :' ,SY-PAGNO,

:/86 ' Stock Report ' CENTERED.

SKIP 2.

ENDFORM. "FILL_LIST_HEADER

&----


*& Form DISPLAY_LIST

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM DISPLAY_LIST .

CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'

EXPORTING

  • I_INTERFACE_CHECK = ' '

  • I_BYPASSING_BUFFER =

  • I_BUFFER_ACTIVE = ' '

I_CALLBACK_PROGRAM = V_REPID

  • I_CALLBACK_PF_STATUS_SET = ' '

  • I_CALLBACK_USER_COMMAND = ' '

  • I_STRUCTURE_NAME =

IS_LAYOUT = WA_LAYOUT

IT_FIELDCAT = IT_FIELDCAT

  • IT_EXCLUDING =

  • IT_SPECIAL_GROUPS =

IT_SORT = IT_SORT[]

  • IT_FILTER =

  • IS_SEL_HIDE =

  • I_DEFAULT = 'X'

  • I_SAVE = ' '

  • IS_VARIANT =

IT_EVENTS = IT_EVENTS

  • IT_EVENT_EXIT =

  • IS_PRINT =

  • IS_REPREP_ID =

  • I_SCREEN_START_COLUMN = 0

  • I_SCREEN_START_LINE = 0

  • I_SCREEN_END_COLUMN = 0

  • I_SCREEN_END_LINE = 0

  • IMPORTING

  • E_EXIT_CAUSED_BY_CALLER =

  • ES_EXIT_CAUSED_BY_USER =

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_LIST

&----


*& Form do_sort

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM DO_SORT .

*-- Populating the sort table

IT_SORT-FIELDNAME = 'MATNR'.

IT_SORT-TABNAME = 'IT_FINAL'.

IT_SORT-UP = 'X'.

  • it_sort-subtot = 'X'.

APPEND IT_SORT.

ENDFORM. " do_sort

Thanks & Regards

Sreenivasulu P

former_member188685
Active Contributor
0 Kudos

Specify DO_SUM = 'X' option for the column which you want the totals while filling the fieldcat for it.

Regards

vijay

Former Member
0 Kudos

Hi,

When I do like the following, it creates a column instead of total at the last row.

  • ls_fieldcat-DO_SUM = 'X'.

  • APPEND ls_fieldcat TO lT_fieldcat.

Could u pls suggest.

Regards,

former_member181962
Active Contributor
0 Kudos

Aftre saying

do_sum = 'X'.

you are not calling your macro to append that to th field catalog.

REgrads,

Ravi

Former Member
0 Kudos

Hi,

set the field ls_sort-subtot = 'X'.

Regards,

Raghavendra