Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

PROBLEM IN REPORT

Former Member
0 Likes
1,212

hi experts,

how to calculate the total and sub total in this report.please tell where to write the subtotal and grand total.

please help me to solve the problem.

*TYPE POOLS DECLARATION

TYPE-POOLS : SLIS.

----


*STRUCTURES DECLARATIONS

----


*STRUCTURE DECLARATION FOR IKPF

TYPES : BEGIN OF TY_IKPF_ISEG,

WERKS TYPE WERKS_D, "PLANT

LGORT TYPE LGORT_D, "STORAGE LOCATION

MATNR TYPE MATNR, "MATERIAL NO

BUCHM TYPE BUCHM, "ON HAND STOCK

ERFMG TYPE ERFMG, "PHYSICAL QUANTITY

WRTBM TYPE WRTBM, "VALUE(ON HAND)

WRTZL TYPE WRTZL, "PHYSICAL STOCK

DIWZL TYPE DIWZL, "INVENTORY DIFFERENCE

END OF TY_IKPF_ISEG,

*STRUCTURE DECLARATION FOR MAKT

BEGIN OF TY_MAKT,

MAKTX TYPE MAKTX, "MATERIAL DESC

END OF TY_MAKT,

*STRUCTURE DECLARATION FOR HEADER

BEGIN OF TY_HEADER,

WERKS TYPE WERKS_D, "PLANT

LGORT TYPE LGORT_D, "STORAGE LOCATION

END OF TY_HEADER,

*STRUCTURE DECLARATION FOR ITEM

BEGIN OF TY_ITEM,

MATNR TYPE MATNR, "MATERIAL

MAKTX TYPE MAKTX, "MATERIAL DESCRIPTION

BUCHM TYPE BUCHM, "ON HAND STOCK

ERFMG TYPE ERFMG, "PHYSICAL QUANTITY

WRTBM TYPE WRTBM, "VALUE(ON HAND)

WRTZL TYPE WRTZL, "PHYSICAL STOCK

DIWZL TYPE DIWZL, "INVENTORY DIFFERENCE

END OF TY_ITEM,

*STRUCTURE DECLARATION FOR FINAL OUTPUT

BEGIN OF TY_OUTPUT,

WERKS TYPE WERKS_D, "PLANT

LGORT TYPE LGORT_D, "STORAGE LOCATION

MATNR TYPE MATNR, "MATERIAL NO

MAKTX TYPE MAKTX, "MATERIAL DESC

BUCHM TYPE BUCHM, "ON HAND STOCK

ERFMG TYPE ERFMG, "PHYSICAL QUANTITY

WRTBM TYPE WRTBM, "VALUE(ON HAND)

WRTZL TYPE WRTZL, "PHYSICAL STOCK

DIWZL TYPE DIWZL, "INVENTORY DIFFERENCE

END OF TY_OUTPUT.

----


*INTERNAL TABLES DECLARATIONS

----


*STRUCTURE DECLARATION FOR IKPF_ISEG

DATA : T_IKPF_ISEG TYPE STANDARD TABLE OF TY_IKPF_ISEG INITIAL SIZE 0,

*STRUCTURE DECLARATION FOR MAKT

T_MAKT TYPE STANDARD TABLE OF TY_MAKT INITIAL SIZE 0,

*STRUCTURE DECLARATION FOR HEADER

T_HEADER TYPE STANDARD TABLE OF TY_HEADER INITIAL SIZE 0,

*STRUCTURE DECLARATION FOR ITEM

T_ITEM TYPE STANDARD TABLE OF TY_ITEM INITIAL SIZE 0,

*STRUCTURE DECLARATION FOR FINAL OUTPUT

T_OUTPUT TYPE STANDARD TABLE OF TY_OUTPUT INITIAL SIZE 0.

----


*WORK AREAS DECLARATIONS

----


*WORK AREA DECLARATION FOR ISEG

DATA : W_IKPF_ISEG TYPE TY_IKPF_ISEG,

*WORK AREA DECLARATION FOR MAKT

W_MAKT TYPE TY_MAKT,

*WORK AREA DECLARATION FOR HEADER

W_HEADER TYPE TY_HEADER,

*WORK AREA DECLARATION FOR ITEM

W_ITEM TYPE TY_ITEM,

*WORK AREA DECLARATION FOR FINAL OUTPUT

W_OUTPUT TYPE TY_OUTPUT.

----


*GLOBAL DECLARATIONS

----


DATA : G_WERKS TYPE WERKS_D, "PLANT

G_LGORT TYPE LGORT_D, "STORAGE LOCATION

G_MATNR TYPE MATNR, "MATERIAL NUMBER

G_MAKTX TYPE MAKTX, "MATERIAL DESCRIPTION

G_BUCHM TYPE BUCHM, "ON HAND STOCK

G_ERFMG TYPE ERFMG, "PHYSICAL QUANTITY

G_WRTBM TYPE WRTBM, "VALUE(ON HAND)

G_WRTZL TYPE WRTZL, "PHYSICAL STOCK

G_DIWZL TYPE DIWZL, "INVENTORY DIFFERENCE

*----


*

*DECLARATIONS FOR ALV

----


*ALV DECLARATION

W_FIELDCAT TYPE SLIS_FIELDCAT_ALV,

T_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,

*WORK AREA FOR KEYINFO

W_KEYINFO TYPE SLIS_KEYINFO_ALV.

----


*SELECTION SCREEN DECLARATION

----


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

SELECT-OPTIONS : S_WERKS FOR G_WERKS, "PLANT

S_LGORT FOR G_LGORT. "STORAGE LOCATION

SELECTION-SCREEN END OF BLOCK B1.

SELECTION-SCREEN BEGIN OF BLOCK B2 WITH FRAME TITLE TEXT-002.

SELECT-OPTIONS : S_MATNR FOR G_MATNR, "MATERIAL NUMBER

S_MAKTX FOR G_MAKTX, "MATERIAL DESCRIPTION

S_BUCHM FOR G_BUCHM, "ON HAND STOCK

S_ERFMG FOR G_ERFMG, "REFERENCE DOCUMENT NUMBER

S_WRTBM FOR G_WRTBM, "VALUE (ON HAND)

S_WRTZL FOR G_WRTZL, "PHYSICAL STOCK

S_DIWZL FOR G_DIWZL. "INVENTORY DIFFERENCE

SELECT-OPTIONS : s_date for sy-datum.

SELECTION-SCREEN END OF BLOCK B2.

SELECTION-SCREEN BEGIN OF BLOCK B3 WITH FRAME TITLE TEXT-003.

PARAMETERS : P_R1 RADIOBUTTON GROUP HI, "RADIO BUTTON FOR NORMAL

P_R2 RADIOBUTTON GROUP HI. "RADIO BUTTON FOR ALV

SELECTION-SCREEN END OF BLOCK B3.

----


*INITIALIZATION EVENT

----


INITIALIZATION.

  • CLEARING WORK AREAS

CLEAR : W_IKPF_ISEG,

W_MAKT ,

W_HEADER,

W_ITEM,

W_OUTPUT.

  • REFRESHING INTERNAL TABLES

REFRESH : T_IKPF_ISEG ,

T_MAKT ,

T_HEADER,

T_ITEM,

T_OUTPUT.

&----


*& VALIDATION USING 'AT SELECTION-SCREEN EVENT'

&----


AT SELECTION-SCREEN.

  • SUBROUTINE TO VALIDATE PLANT

PERFORM SUB_VALIDATE_WERKS.

  • SUBROUTINE TO VALIDATE STORAGE LOCATION

PERFORM SUB_VALIDATE_LGORT.

  • SUBROUTINE TO VALIDATE MATERIAL

PERFORM SUB_VALIDATE_MATNR.

  • SUBROUTINE TO VALIDATE MATERIAL DESCRIPTION

PERFORM SUB_VALIDATE_MAKTX.

  • SUBROUTINE TO VALIDATE ON HAND STOCK

PERFORM SUB_VALIDATE_BUCHM.

  • SUBROUTINE TO VALIDATE PHYSICAL QUANTITY

PERFORM SUB_VALIDATE_ERFMG.

  • SUBROUTINE TO VALIDATE VALUE(ON HAND)

PERFORM SUB_VALIDATE_WRTBM.

  • SUBROUTINE TO VALIDATE PHYSICAL STOCK

PERFORM SUB_VALIDATE_WRTZL.

  • SUBROUTINE TO VALIDATE INVENTORY DIFFERENCE

PERFORM SUB_VALIDATE_DIWZL.

&----


*& START OF SELECTION EVENT FOR DATA FETCHING

&----


START-OF-SELECTION.

  • THIS SUBROUTINE IS TO FETCH DATA FROM ISEG TABLES

PERFORM SUB_GET_IKPF_ISEG.

  • THIS SUBROUTINE IS TO FETCH DATA FROM TABLE MAKT

PERFORM SUB_GET_MAKT.

  • THIS SUBROUTINE IS TO FETCH DATA INTO TABLE T_HEADER AND T_ITEM

PERFORM SUB_GET_ALV.

  • THIS SUBROUTINE IS TO FETCH DATA FOR OUTPUT

PERFORM SUB_GET_OUTPUT.

END-OF-SELECTION.

IF P_R1 = 'X'.

*DISPLAY THE NORMAL OUTPUT

PERFORM SUB_DISP_OUTPUT.

ELSE.

*DISPLAY THE ALV OUTPUT

PERFORM SUB_ALV_OUTPUT.

ENDIF.

&----


*& Form SUB_VALIDATE_WERKS

&----


FORM SUB_VALIDATE_WERKS .

SELECT SINGLE WERKS "PLANT

FROM IKPF

INTO G_WERKS

WHERE WERKS IN S_WERKS.

IF SY-SUBRC <> 0.

MESSAGE E002.

ENDIF.

ENDFORM. " SUB_VALIDATE_WERKS

&----


*& Form SUB_VALIDATE_LGORT

&----


FORM SUB_VALIDATE_LGORT .

SELECT SINGLE LGORT "STORAGE LOCATION

FROM IKPF

INTO G_LGORT

WHERE LGORT IN S_LGORT.

IF SY-SUBRC <> 0.

MESSAGE E003.

ENDIF.

ENDFORM. " SUB_VALIDATE_LGORT

----


*Form SUB_VALIDATE_MATNR

----


FORM SUB_VALIDATE_MATNR .

SELECT SINGLE MATNR "MATERIAL NUMBER

FROM ISEG

INTO G_MATNR

WHERE MATNR IN S_MATNR.

IF SY-SUBRC <> 0.

MESSAGE E001.

ENDIF.

ENDFORM. " SUB_VALIDATE_MATNR

&----


*& Form SUB_VALIDATE_MAKTX

&----


FORM SUB_VALIDATE_MAKTX .

SELECT SINGLE MAKTX "MATERIAL DESCRIPTION

FROM MAKT

INTO G_MAKTX

WHERE MAKTX IN S_MAKTX.

IF SY-SUBRC <> 0.

MESSAGE E004.

ENDIF.

ENDFORM. " SUB_VALIDATE_CHARG

&----


*& Form SUB_VALIDATE_BUCHM

&----


FORM SUB_VALIDATE_BUCHM .

SELECT SINGLE BUCHM "ON HAND STOCK

FROM ISEG

INTO G_BUCHM

WHERE BUCHM IN S_BUCHM.

IF SY-SUBRC <> 0.

MESSAGE E005.

ENDIF.

ENDFORM. " SUB_VALIDATE_LIFNR

&----


*& Form SUB_VALIDATE_ERFMG

&----


FORM SUB_VALIDATE_ERFMG .

SELECT SINGLE ERFMG "PHYSICAL QUANTITY

FROM ISEG

INTO G_ERFMG

WHERE ERFMG IN S_ERFMG.

IF SY-SUBRC <> 0.

MESSAGE E006.

ENDIF.

ENDFORM. " SUB_VALIDATE_ERFMG

&----


*& Form SUB_VALIDATE_WRTBM

&----


FORM SUB_VALIDATE_WRTBM .

SELECT SINGLE WRTBM "VALUE(ON HAND)

FROM ISEG

INTO G_WRTBM

WHERE WRTBM IN S_WRTBM.

IF SY-SUBRC <> 0.

MESSAGE E007.

ENDIF.

ENDFORM. " SUB_VALIDATE_WRTBM

&----


*& Form SUB_VALIDATE_WRTZL

&----


FORM SUB_VALIDATE_WRTZL .

SELECT SINGLE WRTZL "PHYSICAL STOCK

FROM ISEG

INTO G_WRTZL

WHERE WRTZL IN S_WRTZL.

IF SY-SUBRC <> 0.

MESSAGE E008.

ENDIF.

ENDFORM. " SUB_VALIDATE_WRTZL

&----


*& Form SUB_VALIDATE_DIWZL

&----


FORM SUB_VALIDATE_DIWZL .

SELECT SINGLE DIWZL "INVENTORY DIFFERENCE

FROM ISEG

INTO G_DIWZL

WHERE DIWZL IN S_DIWZL.

IF SY-SUBRC <> 0.

MESSAGE E009.

ENDIF.

ENDFORM. " SUB_VALIDATE_DIWZL

&----


*& Form SUB_GET_ISEG_IKPF

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM SUB_GET_IKPF_ISEG .

SELECT A~WERKS "PLANTS

A~LGORT "STORAGE LOCATION

B~MATNR "MATERIAL NUMBER

B~BUCHM "ON HAND STOCK

B~ERFMG "PHYSICAL QUANTITY

B~WRTBM "VALUE(ON HAND)

B~WRTZL "PHYSICAL STOCK

B~DIWZL "INVENTORY DIFFERENCE

FROM IKPF AS A INNER JOIN ISEG AS B

ON AWERKS = BWERKS AND "PLANT

ALGORT = BLGORT "STORAGE LOCATION

INTO CORRESPONDING FIELDS OF TABLE T_IKPF_ISEG

WHERE A~WERKS IN S_WERKS AND "PLANT

A~LGORT IN S_LGORT AND "STORAGE LOCATION

B~MATNR IN S_MATNR AND "MATERIAL NUMBER

B~BUCHM IN S_BUCHM AND "ON HAND STOCK

B~ERFMG IN S_ERFMG AND "PHYSICAL QUANTITY

B~WRTBM IN S_WRTBM AND "VALUE(ON HAND)

B~WRTZL IN S_WRTZL AND "PHYSICAL STOCK

B~DIWZL IN S_DIWZL . "INVENTORY DIFFERENCE

ENDFORM. " SUB_GET_IKPF_ISEG

----


*& Form SUB_GET_MAKT

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM SUB_GET_MAKT .

IF T_IKPF_ISEG IS NOT INITIAL.

SELECT SINGLE maktx

FROM makt

INTO W_MAKT

WHERE maktx IN S_maktx.

IF SY-SUBRC <> 0.

  • MESSAGE E001.

ENDIF.

ENDIF.

************************************************************************

************************************************************************

****************************************************************

ENDFORM. " SUB_GET_MAKT

&----


*& Form SUB_DISP_OUTPUT

&----


FORM SUB_DISP_OUTPUT .

WRITE : / 'PLANT |',

'STORAGE LOCATION |',

'MATERIAL NUMBER |',

'MATERIAL DESCRIPTION |',

'ON HAND STOCK |',

'PHYSICAL QUANTITY |',

'VALUE(ON HAND) |',

'PHYSICAL STOCK |',

'INVENTORY DIFFERENCE'.

LOOP AT T_OUTPUT INTO W_OUTPUT.

WRITE : / W_OUTPUT-WERKS COLOR 2, "PLANT

W_OUTPUT-LGORT COLOR 6, "STORAGE LOCATION

W_OUTPUT-MATNR COLOR 5, "MATERIAL NUMBER

W_OUTPUT-MAKTX COLOR 2, "MATERIAL DESCRIPTION

W_OUTPUT-BUCHM COLOR 6, "ON HAND STOCK

W_OUTPUT-ERFMG COLOR 5, "PHYSICAL QUANTITY

W_OUTPUT-WRTBM COLOR 2, "VALUE(ON HAND)

W_OUTPUT-WRTZL COLOR 6, "PHYSICAL STOCK

W_OUTPUT-DIWZL COLOR 6. "INVENTORY DIFFERENCE

ENDLOOP.

ENDFORM. " SUB_DISP_OUTPUT

&----


*& Form SUB_GET_OUTPUT

&----


FORM SUB_GET_OUTPUT .

LOOP AT T_IKPF_ISEG INTO W_IKPF_ISEG.

W_OUTPUT-WERKS = W_IKPF_ISEG-WERKS.

W_OUTPUT-LGORT = W_IKPF_ISEG-LGORT.

W_OUTPUT-MATNR = W_IKPF_ISEG-MATNR.

W_OUTPUT-MAKTX = W_MAKT-MAKTX.

W_OUTPUT-BUCHM = W_IKPF_ISEG-BUCHM.

W_OUTPUT-ERFMG = W_IKPF_ISEG-ERFMG.

W_OUTPUT-WRTBM = W_IKPF_ISEG-WRTBM.

W_OUTPUT-WRTZL = W_IKPF_ISEG-WRTZL.

W_OUTPUT-DIWZL = W_IKPF_ISEG-DIWZL.

CLEAR W_IKPF_ISEG.

READ TABLE T_IKPF_ISEG INTO W_IKPF_ISEG WITH KEY

WERKS = W_IKPF_ISEG-WERKS.

IF SY-SUBRC = 0.

W_OUTPUT-WERKS = W_IKPF_ISEG-WERKS.

ENDIF.

CLEAR W_MAKT.

READ TABLE T_MAKT INTO W_MAKT WITH KEY MAKTX = W_MAKT-MAKTX.

IF SY-SUBRC = 0.

W_OUTPUT-MAKTX = W_MAKT-MAKTX.

ENDIF.

CLEAR W_IKPF_ISEG.

READ TABLE T_IKPF_ISEG INTO W_IKPF_ISEG WITH KEY

WERKS = W_IKPF_ISEG-WERKS.

IF SY-SUBRC = 0.

W_OUTPUT-WERKS = W_IKPF_ISEG-WERKS.

ENDIF.

APPEND W_OUTPUT TO T_OUTPUT.

CLEAR W_OUTPUT.

ENDLOOP.

ENDFORM. " SUB_GET_OUTPUT

&----


*& Form SUB_ALV_OUTPUT

&----


FORM SUB_ALV_OUTPUT .

W_FIELDCAT-COL_POS = 1.

W_FIELDCAT-FIELDNAME = 'WERKS'.

W_FIELDCAT-SELTEXT_M = 'PLANT |'.

W_FIELDCAT-TABNAME = 'HEADER'.

APPEND W_FIELDCAT TO T_FIELDCAT.

CLEAR W_FIELDCAT.

W_FIELDCAT-COL_POS = 2.

W_FIELDCAT-FIELDNAME = 'LGORT'.

W_FIELDCAT-SELTEXT_M = 'STORAGE LOCATIONS |'.

W_FIELDCAT-TABNAME = 'HEADER'.

APPEND W_FIELDCAT TO T_FIELDCAT.

CLEAR W_FIELDCAT.

W_FIELDCAT-COL_POS = 1.

W_FIELDCAT-FIELDNAME = 'MATNR'.

W_FIELDCAT-SELTEXT_M = 'MATERIAL NUMBER |'.

W_FIELDCAT-TABNAME = 'ITEM'.

APPEND W_FIELDCAT TO T_FIELDCAT.

CLEAR W_FIELDCAT.

W_FIELDCAT-COL_POS = 2.

W_FIELDCAT-FIELDNAME = 'MAKTX'.

W_FIELDCAT-SELTEXT_M = 'MATERIAL DESCRIPTION |'.

W_FIELDCAT-TABNAME = 'ITEM'.

APPEND W_FIELDCAT TO T_FIELDCAT.

CLEAR W_FIELDCAT.

W_FIELDCAT-COL_POS = 3.

W_FIELDCAT-FIELDNAME = 'BUCHM'.

W_FIELDCAT-SELTEXT_M = 'ON HAND STOCK |'.

W_FIELDCAT-TABNAME = 'ITEM'.

APPEND W_FIELDCAT TO T_FIELDCAT.

CLEAR W_FIELDCAT.

W_FIELDCAT-COL_POS = 4.

W_FIELDCAT-FIELDNAME = 'ERFMG'.

W_FIELDCAT-SELTEXT_M = 'PHYSICAL QUANTITY |'.

W_FIELDCAT-TABNAME = 'ITEM'.

APPEND W_FIELDCAT TO T_FIELDCAT.

CLEAR W_FIELDCAT.

W_FIELDCAT-COL_POS = 5.

W_FIELDCAT-FIELDNAME = 'WRTBM'.

W_FIELDCAT-SELTEXT_M = 'VALUE(ON HAND) |'.

W_FIELDCAT-TABNAME = 'ITEM'.

APPEND W_FIELDCAT TO T_FIELDCAT.

CLEAR W_FIELDCAT.

W_FIELDCAT-COL_POS = 6.

W_FIELDCAT-FIELDNAME = 'WRTZL'.

W_FIELDCAT-SELTEXT_M = 'PHYSICAL STOCK |'.

W_FIELDCAT-TABNAME = 'ITEM'.

APPEND W_FIELDCAT TO T_FIELDCAT.

CLEAR W_FIELDCAT.

W_FIELDCAT-COL_POS = 7.

W_FIELDCAT-FIELDNAME = 'DIWZL'.

W_FIELDCAT-SELTEXT_M = 'INVENTORY DIFFERENCE |'.

W_FIELDCAT-TABNAME = 'ITEM'.

APPEND W_FIELDCAT TO T_FIELDCAT.

CLEAR W_FIELDCAT.

W_KEYINFO-HEADER01 = 'WERKS'.

W_KEYINFO-ITEM01 = 'MATNR'.

CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'

EXPORTING

  • I_INTERFACE_CHECK = ' '

I_CALLBACK_PROGRAM = SY-CPROG

  • I_CALLBACK_PF_STATUS_SET = ' '

  • I_CALLBACK_USER_COMMAND = ' '

  • IS_LAYOUT =

IT_FIELDCAT = T_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 = 'HEADER'

I_TABNAME_ITEM = 'ITEM'

  • I_STRUCTURE_NAME_HEADER =

  • I_STRUCTURE_NAME_ITEM =

IS_KEYINFO = W_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 = T_HEADER

T_OUTTAB_ITEM = T_ITEM

  • 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. " SUB_ALV_OUTPUT

&----


*& Form SUB_GET_ALV

&----


FORM SUB_GET_ALV.

LOOP AT T_IKPF_ISEG INTO W_IKPF_ISEG.

CLEAR W_IKPF_ISEG.

READ TABLE T_IKPF_ISEG INTO W_IKPF_ISEG WITH KEY

WERKS = W_IKPF_ISEG-WERKS.

IF SY-SUBRC = 0.

W_HEADER-WERKS = W_IKPF_ISEG-WERKS. "PLANT

W_HEADER-LGORT = W_IKPF_ISEG-LGORT. "STORAGE LOCATION

ENDIF.

CLEAR W_MAKT.

READ TABLE T_MAKT INTO W_MAKT WITH KEY MAKTX = W_MAKT-MAKTX.

IF SY-SUBRC = 0.

W_ITEM-MAKTX = W_MAKT-MAKTX. "MATERIAL DESCRIPTION

ENDIF.

CLEAR W_IKPF_ISEG.

READ TABLE T_IKPF_ISEG INTO W_IKPF_ISEG WITH KEY

MATNR = W_IKPF_ISEG-MATNR.

IF SY-SUBRC = 0.

W_ITEM-MATNR = W_IKPF_ISEG-MATNR. "MATERIAL NUMBER

W_ITEM-BUCHM = W_IKPF_ISEG-BUCHM. "ON HAND STOCK

W_ITEM-ERFMG = W_IKPF_ISEG-ERFMG. "PHYSICAL QUANTITY

W_ITEM-WRTBM = W_IKPF_ISEG-WRTBM. "VALUE(ON HAND)

W_ITEM-WRTZL = W_IKPF_ISEG-WRTZL. "PHYSICAL STOCK

W_ITEM-DIWZL = W_IKPF_ISEG-DIWZL. "INVENTORY DIFFERENCE

ENDIF.

APPEND W_HEADER TO T_HEADER.

CLEAR W_HEADER.

APPEND W_ITEM TO T_ITEM.

CLEAR W_ITEM.

ENDLOOP.

SORT T_HEADER BY WERKS.

DELETE ADJACENT DUPLICATES FROM T_HEADER.

ENDFORM. " SUB_GET_ALV

10 REPLIES 10
Read only

GauthamV
Active Contributor
0 Likes
1,174

hi,

for subtotal in structure slis_sortinfo_alv u have a field subtot use that.

for totals in structure slis_t_fieldcat_alv u have field do_sum use that.

for ex:

wa_sort-subtot = 'X'.

wa_-do_sum = 'X'.

Read only

Former Member
0 Likes
1,174

where to write sobtotal and grand total of the two field that is for iseg-buchm and iseg-wrtbm.and the material description field is not appearing.please help me to solve the problem.

Read only

Former Member
0 Likes
1,174

hi,

for subtotal u can try this.

wa_fieldcat-fieldname = 'COUNT1'.

wa_fieldcat-col_pos = 1.

wa_fieldcat-seltext_m = 'COUNT'.

wa_fieldcat-datatype = 'QUAN'.

wa_fieldcat-do_sum = 'X'.

wa_fieldcat-tabname = 'IT_OUT'.

APPEND wa_fieldcat TO it_fieldcat.

CLEAR wa_fieldcat.

REGARDS,

sreelakshmi

Read only

kesavadas_thekkillath
Active Contributor
0 Likes
1,174

Based on which field u need the subtotal and total..

Read only

0 Likes
1,174

how to write subtotal and grand total of the two field that is for iseg-buchm and iseg-wrtbm.please help me to solve the problem

Read only

Former Member
0 Likes
1,174

hi

Please refer the sample code in the below link..

http://saptechnical.com/Tutorials/ALV/Subtotals/text.htm

Regards,

Jaya Vani

Read only

Former Member
0 Likes
1,174

Hi,

Check the below code...

W_FIELDCAT-COL_POS = 3.

W_FIELDCAT-FIELDNAME = 'BUCHM'.

W_FIELDCAT-SELTEXT_M = 'ON HAND STOCK |'.

W_FIELDCAT-TABNAME = 'ITEM'.

W_FIELDCAT-DO_SUM = 'X'.

APPEND W_FIELDCAT TO T_FIELDCAT.

CLEAR W_FIELDCAT.

W_FIELDCAT-COL_POS = 4.

W_FIELDCAT-FIELDNAME = 'ERFMG'.

W_FIELDCAT-SELTEXT_M = 'PHYSICAL QUANTITY |'.

W_FIELDCAT-TABNAME = 'ITEM'.

W_FIELDCAT-DO_SUM = 'X'.

APPEND W_FIELDCAT TO T_FIELDCAT.

CLEAR W_FIELDCAT.

W_FIELDCAT-COL_POS = 5.

W_FIELDCAT-FIELDNAME = 'WRTBM'.

W_FIELDCAT-SELTEXT_M = 'VALUE(ON HAND) |'.

W_FIELDCAT-TABNAME = 'ITEM'.

W_FIELDCAT-DO_SUM = 'X'.

APPEND W_FIELDCAT TO T_FIELDCAT.

CLEAR W_FIELDCAT.

W_FIELDCAT-COL_POS = 6.

W_FIELDCAT-FIELDNAME = 'WRTZL'.

W_FIELDCAT-SELTEXT_M = 'PHYSICAL STOCK |'.

W_FIELDCAT-TABNAME = 'ITEM'.

W_FIELDCAT-DO_SUM = 'X'.

APPEND W_FIELDCAT TO T_FIELDCAT.

CLEAR W_FIELDCAT.

W_FIELDCAT-COL_POS = 7.

W_FIELDCAT-FIELDNAME = 'DIWZL'.

W_FIELDCAT-SELTEXT_M = 'INVENTORY DIFFERENCE |'.

W_FIELDCAT-TABNAME = 'ITEM'.

W_FIELDCAT-DO_SUM = 'X'.

APPEND W_FIELDCAT TO T_FIELDCAT.

CLEAR W_FIELDCAT.

For the sub totals you need to take one more internal table of type SLIS_T_SORTINFO_ALV, and need to fill the table in the belwo way..

up = 'X' <when you want to display your report in sorting up then use this up>

Fieldname = 'MATNR'. <when u want to subtotals grouped by mat number> or 'WERKS' when you want subtotals by werks

subtot = 'X'.

and need to pass this above internal table to IT_SORT in the function module.

Rgds,

Bujji

Edited by: Bujji on Jun 23, 2008 8:43 AM

Read only

kesavadas_thekkillath
Active Contributor
0 Likes
1,174

try this...im not sure

i_sort TYPE slis_t_sortinfo_alv,

w_sort LIKE LINE OF i_sort.

W_FIELDCAT-COL_POS = 1.

W_FIELDCAT-FIELDNAME = 'WERKS'.

W_FIELDCAT-SELTEXT_M = 'PLANT |'.

W_FIELDCAT-TABNAME = 'HEADER'.

APPEND W_FIELDCAT TO T_FIELDCAT.

CLEAR W_FIELDCAT.

w_sort-spos = 1.

w_sort-fieldname = 'WERKS'.

w_sort-up = true.

w_sort-subtot = 'X'.

APPEND w_sort TO i_sort.

W_FIELDCAT-COL_POS = 2.

W_FIELDCAT-FIELDNAME = 'LGORT'.

W_FIELDCAT-SELTEXT_M = 'STORAGE LOCATIONS |'.

W_FIELDCAT-TABNAME = 'HEADER'.

APPEND W_FIELDCAT TO T_FIELDCAT.

CLEAR W_FIELDCAT.

w_sort-spos = 2.

w_sort-fieldname = 'LGORT'.

w_sort-up = true.

w_sort-subtot = 'X'.

APPEND w_sort TO i_sort.

W_FIELDCAT-COL_POS = 1.

W_FIELDCAT-FIELDNAME = 'MATNR'.

W_FIELDCAT-SELTEXT_M = 'MATERIAL NUMBER |'.

W_FIELDCAT-TABNAME = 'ITEM'.

APPEND W_FIELDCAT TO T_FIELDCAT.

CLEAR W_FIELDCAT.

w_sort-spos = 1.

w_sort-fieldname = 'MATNR'.

w_sort-up = true.

w_sort-subtot = 'X'.

APPEND w_sort TO i_sort.

W_FIELDCAT-COL_POS = 2.

W_FIELDCAT-FIELDNAME = 'MAKTX'.

W_FIELDCAT-SELTEXT_M = 'MATERIAL DESCRIPTION |'.

W_FIELDCAT-TABNAME = 'ITEM'.

APPEND W_FIELDCAT TO T_FIELDCAT.

CLEAR W_FIELDCAT.

w_sort-spos = 2.

w_sort-fieldname = 'MATNR'.

w_sort-up = true.

APPEND w_sort TO i_sort.

in the alv fm it_sort = i_sort[]

or check it in tcode MB52

Read only

0 Likes
1,174

in the felds which u mentioned include

wa_fieldcat-do_sum = 'X'.

Read only

Former Member
0 Likes
1,174

Hi Rohit ,

Check this sample code it will help you out.

******************************************************************

*&----


*

*& Report ZSAND_SUBTOTAL *

*& *

&----


*& *

*& *

&----


REPORT ZSAND_SUBTOTAL LINE-COUNT 65 .

*&----


*& Report ZALV_LIST

*&

*&----


*&

*&

*&----


TABLES : mseg.

TYPE-POOLS : slis.

DATA : BEGIN OF itab OCCURS 0,

mblnr LIKE mseg-mblnr,

matnr LIKE mseg-matnr,

werks LIKE mseg-werks,

menge LIKE mseg-menge,

line_color(4) TYPE c,

END OF itab.

DATA : BEGIN OF itab1 OCCURS 0,

mblnr LIKE mseg-mblnr,

matnr LIKE mseg-matnr,

werks LIKE mseg-werks,

menge LIKE mseg-menge,

line_color(4) TYPE c,

END OF itab1.

data: it_sortcat type slis_sortinfo_alv occurs 1,

wa_sort like line of it_sortcat.

DATA: it_header TYPE slis_t_listheader,

wa_header TYPE slis_listheader.

data: var1(1).

DATA var2.

data:mytabix like sy-tabix.

data:wtab1 like line of itab,

wtab2 like line of itab.

DATA : t_fcat TYPE slis_t_fieldcat_alv,

t_eve TYPE slis_t_event,

t_subtot TYPE slis_t_sortinfo_alv,

subtot LIKE LINE OF t_subtot,

wa_fcat LIKE LINE OF t_fcat,

gd_layout TYPE slis_layout_alv.

DATA : gt_menge LIKE mseg-menge,

st_menge LIKE mseg-menge.

data:it_extab type SLIS_t_EXTAB,

wa_extab like line of it_extab.

SELECTION-SCREEN : BEGIN OF BLOCK blk1 WITH FRAME TITLE text-001.

SELECT-OPTIONS : doc FOR mseg-mblnr.

SELECTION-SCREEN : END OF BLOCK blk1.

START-OF-SELECTION.

PERFORM build_cat USING t_fcat.

PERFORM build_layout.

PERFORM build_eve.

perform fill_sort.

PERFORM get_data.

PERFORM display.

*&----


*& Form build_cat

*&----


*text

*----


*-->TEMP_FCAT text

*----


FORM build_cat USING temp_fcat TYPE slis_t_fieldcat_alv.

wa_fcat-tabname = 'ITAB'.

wa_fcat-fieldname = 'MBLNR'.

wa_fcat-seltext_m = 'Material Doc.'.

APPEND wa_fcat TO temp_fcat.

CLEAR wa_fcat.

wa_fcat-tabname = 'ITAB'.

wa_fcat-fieldname = 'MATNR'.

wa_fcat-seltext_m = 'Material'.

APPEND wa_fcat TO temp_fcat.

CLEAR wa_fcat.

wa_fcat-tabname = 'ITAB'.

wa_fcat-fieldname = 'WERKS'.

wa_fcat-seltext_m = 'Plant'.

APPEND wa_fcat TO temp_fcat.

CLEAR wa_fcat.

wa_fcat-tabname = 'ITAB'.

wa_fcat-fieldname = 'MENGE'.

wa_fcat-seltext_m = 'Quantity'.

wa_fcat-do_sum = 'Y'.

APPEND wa_fcat TO temp_fcat.

CLEAR wa_fcat.

ENDFORM. "build_cat

*&----


*& Form build_eve

*&----


*text

*----


FORM build_eve.

DATA : wa_eve TYPE slis_alv_event.

data:mytabix type sy-tabix.

CALL FUNCTION 'REUSE_ALV_EVENTS_GET'

EXPORTING

i_list_type = 0

IMPORTING

et_events = t_eve

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.

READ TABLE t_eve into wa_eve WITH KEY name = slis_ev_top_of_page.

*INTO wa_eve.

IF sy-subrc = 0.

mytabix = sy-tabix.

MOVE 'TOP_OF_PAGE' TO wa_eve-form.

append wa_eve to t_eve.

*modify t_eve from wa_eve index mytabix transporting form.

ENDIF.

READ TABLE t_eve into wa_eve WITH KEY name = slis_ev_end_of_page.

*INTO wa_eve.

IF sy-subrc = 0.

mytabix = sy-tabix.

MOVE 'END_OF_PAGE' TO wa_eve-form.

append wa_eve to t_eve.

*modify t_eve from wa_eve index mytabix transporting form.

ENDIF.

ENDFORM. "build_eve

*&----


*& Form build_layout

*&----


*text

*----


FORM build_layout.

*gd_layout-no_input = 'X'.

gd_layout-colwidth_optimize = 'X'.

gd_layout-info_fieldname = 'LINE_COLOR'.

gd_layout-subtotals_text = 'SUBTOTAL'.

*gd_layout-totals_text = 'TOTAL'.

gd_layout-EDIT = 'X'.

ENDFORM. " BUILD_LAYOUT

*&----


*& Form get_data

*&----


*text

*----


FORM get_data.

SELECT mblnr matnr werks menge FROM mseg INTO CORRESPONDING FIELDS OF

TABLE itab

WHERE mblnr IN doc.

SORT itab BY mblnr.

sort itab by mblnr matnr.

read table itab into wtab1 index 1.

mytabix = 1.

loop at itab into wtab2 from 2.

if wtab1-mblnr = wtab2-mblnr and wtab1-matnr = wtab2-matnr.

wtab1-menge = wtab1-menge + wtab2-menge.

modify itab from wtab1 index mytabix.

else.

modify itab from wtab1 index mytabix.

clear wtab1.

mytabix = sy-tabix.

move wtab2 to wtab1.

endif.

clear wtab2.

endloop.

delete ADJACENT DUPLICATES from itab comparing mblnr matnr.

ENDFORM. "get_data

*&----


*& Form display

*&----


*text

*----


FORM display.

*

wa_extab-fcode = '&ETA'.

append wa_extab to it_extab.

wa_header-typ = 'H'.

wa_header-info = 'SANDY is Great'.

append wa_header to it_header.

clear wa_header.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

  • I_INTERFACE_CHECK = ' '

  • I_BYPASSING_BUFFER = ' '

  • I_BUFFER_ACTIVE = ' '

I_CALLBACK_PROGRAM = 'ZSAND_SUBTOTAL'

  • I_CALLBACK_PF_STATUS_SET = ' '

I_CALLBACK_USER_COMMAND = 'USERCOMMAND'

  • I_CALLBACK_TOP_OF_PAGE = 'TOP_OF_PAGE'

  • I_CALLBACK_HTML_TOP_OF_PAGE = ' '

  • I_CALLBACK_HTML_END_OF_LIST = ' '

  • I_STRUCTURE_NAME =

  • I_BACKGROUND_ID = ' '

  • I_GRID_TITLE =

  • I_GRID_SETTINGS =

IS_LAYOUT = gd_layout

IT_FIELDCAT = t_fcat

IT_EXCLUDING = it_extab

  • IT_SPECIAL_GROUPS =

IT_SORT = it_sortcat

  • IT_FILTER =

  • IS_SEL_HIDE =

  • I_DEFAULT = 'X'

  • I_SAVE = ' '

  • IS_VARIANT =

IT_EVENTS = t_eve[]

  • IT_EVENT_EXIT = 'BUILD_EVE'

  • 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

  • IT_ALV_GRAPHICS =

  • IT_HYPERLINK =

  • IT_ADD_FIELDCAT =

  • IT_EXCEPT_QINFO =

  • I_HTML_HEIGHT_TOP =

  • I_HTML_HEIGHT_END =

  • IMPORTING

  • E_EXIT_CAUSED_BY_CALLER =

  • ES_EXIT_CAUSED_BY_USER =

TABLES

t_outtab = itab

  • 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

*

**&----


***& Form top_of_page

*&----


*

*text

*----


FORM top_of_page.

if var1 is initial.

wa_header-typ = 'H'.

wa_header-info = 'SANDY is Great'.

append wa_header to it_header.

clear wa_header.

CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'

EXPORTING

IT_LIST_COMMENTARY = it_header

I_LOGO = 'HR_LOGO'

  • I_END_OF_LIST_GRID =

.

var1 = 'X'.

endif.

ENDFORM. "top_of_page

FORM end_of_page.

if var2 is initial.

wa_header-typ = 'H'.

wa_header-info = 'SANDY is Great'.

append wa_header to it_header.

clear wa_header.

CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'

EXPORTING

IT_LIST_COMMENTARY = it_header

I_LOGO = 'HR_LOGO'

  • I_END_OF_LIST_GRID =

.

var2 = 'X'.

endif.

ENDFORM. "top_of_page

&----


*& Form fill_sort

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


form fill_sort .

wa_sort-spos = 1.

wa_sort-fieldname = 'MBLNR'.

wa_sort-SUBTOT = 'X'. "subtotals any totals column by this field

  • gd_sortcat-tabname

APPEND wa_sort TO it_sortcat.

wa_sort-spos = 2.

wa_sort-fieldname = 'MATNR'.

  • gd_sortcat-tabname

APPEND wa_sort TO it_sortcat.

endform. " fill_sort

FORM status USING rt_extab TYPE slis_t_extab.

set pf-status 'ZSTANDARD'.

endform.

form USERCOMMAND USING R_UCOMM type sy-ucomm

rselfield type slis_selfield .

set parameter id 'MAT' field rselfield-value .

call transaction 'MM03' and skip first screen.

endform.

I hope this will help you.

Help children of U.N World Food Program by rewarding points and encourage others to answer your queries