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

hi

Former Member
0 Likes
516

can anyone pls help me to guide how to calculate the subtotals and totals in ALV and also to include the buttons in different colurs.....

1 ACCEPTED SOLUTION
Read only

S0025444845
Active Participant
0 Likes
495

Hi,

try with this,

DATA : p_it_sortinfo type slis_t_sortinfo_alv,

wa_sortinfo TYPE slis_sortinfo_alv.

wa_sortinfo-fieldname = 'VBELN'.

wa_sortinfo-tabname = 'VBAK'.

wa_sortinfo-up = 'X'.

wa_sortinfo-subtot = 'X'.

APPEND wa_sortinfo TO p_it_sortinfo.

and pass p_it_sort info in FM

like this

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

i_callback_program = repid

i_callback_pf_status_set = 'PF_STATUS_SET'

i_callback_user_command = l_wa_callback_ucomm

it_fieldcat = p_it_fieldcat

it_sort = p_it_sortinfo

i_save = c_switch_on

is_variant = l_wa_variant

TABLES

t_outtab = p_it_output

EXCEPTIONS

program_error = 1

OTHERS = 2.

regard ,

sudha,

reward points if useful.

5 REPLIES 5
Read only

Former Member
0 Likes
495

Hi,

Let's say if you want to do sub totals based on customer..

1) For the amount field have DO_SUM = 'X' in the field catalog internal table.

2) Prepare a sort internal table with the customer field..

DATA: T_SORT TYPE SLIS_T_SORTINFO_ALV.

DATA: S_SORT LIKE LINE OF T_SORT.

S_SORT-SPOS = '1'.

S_SORT-FIELDNAME = 'FIELD1'. "VENDOR field name.

S_SORT-UP = 'X'.

S_SORT-SUBTOT = 'X'.

APPEND S_SORT TO T_SORT.

3)

Pass the internal table T_SORT to the parameter IT_SORT when calling the Function module.

Thanks,

Naren

Read only

p291102
Active Contributor
0 Likes
495

HI,

This is the sample report for ALV SUBTOTAL.

REPORT YMS_ALVSUBTOTAL.

TYPE-POOLS: slis.

DATA: BEGIN OF it_output OCCURS 0,

var1(8) TYPE n,

var2(10),

var3 TYPE I,

END OF it_output.

DATA: it_fieldcat TYPE slis_t_fieldcat_alv,

t_fieldcat TYPE slis_fieldcat_alv,

it_sort TYPE slis_t_sortinfo_alv,

t_sort TYPE slis_sortinfo_alv,

v_repid LIKE sy-repid,

ilayout type slis_layout_alv.

INITIALIZATION.

v_repid = sy-repid.

START-OF-SELECTION.

PERFORM get_data.

PERFORM sort_fields.

PERFORM fill_fieldcat.

PERFORM list_display.

&----


*& Form GET_DATA

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM get_data.

it_output-var1 = 1000.

it_output-var2 = 'anupama'.

it_output-var3 = '10000'.

  • it_output-key = 'X'.

APPEND it_output.

CLEAR it_output.

it_output-var1 = 1000.

it_output-var2 = 'siddhu'.

it_output-var3 = '20000'.

APPEND it_output.

CLEAR it_output.

it_output-var1 = 1000.

it_output-var2 = 'chinni'.

it_output-var3 = '100000'.

APPEND it_output.

CLEAR it_output.

it_output-var1 = 2000.

it_output-var2 = 'chicchu'.

it_output-var3 = '10000'.

APPEND it_output.

CLEAR it_output.

it_output-var1 = 2000.

it_output-var2 = 'candy'.

it_output-var3 = '10000'.

APPEND it_output.

CLEAR it_output.

it_output-var1 = 1000.

it_output-var2 = 'anupama'.

it_output-var3 = '10000'.

APPEND it_output.

CLEAR it_output.

it_output-var1 = 4000.

it_output-var2 = 'anupama'.

it_output-var3 = '10000'.

APPEND it_output.

CLEAR it_output.

ENDFORM. " GET_DATA

&----


*& Form fill_fieldcat

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM fill_fieldcat.

PERFORM fill_fields USING: 'IT_OUTPUT' 'VAR1' 'Variable 1' ' ',

'IT_OUTPUT' 'VAR2' 'Variable 2' ' ',

'IT_OUTPUT' 'VAR3' 'Variable 3' 'X'.

ENDFORM. " fill_fieldcat

&----


*& Form fill_fields

&----


  • text

----


  • -->P_0146 text

  • -->P_0147 text

  • -->P_0148 text

  • -->P_0149 text

----


FORM fill_fields USING value(tabname) TYPE slis_tabname

value(fieldname) TYPE slis_fieldname

value(seltext_m) LIKE dd03p-scrtext_m

value(do_sum) TYPE c.

t_fieldcat-tabname = tabname.

t_fieldcat-fieldname = fieldname.

t_fieldcat-seltext_m = seltext_m.

IF do_sum = 'X'.

t_fieldcat-datatype = 'CURR'.

ENDIF.

t_fieldcat-do_sum = do_sum.

APPEND t_fieldcat TO it_fieldcat.

CLEAR t_fieldcat.

ENDFORM. " fill_fields

&----


*& Form list_display

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM list_display.

CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'

EXPORTING

i_callback_program = v_repid

it_fieldcat = it_fieldcat

it_sort = it_sort[]

TABLES

t_outtab = it_output

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

&----


*& Form sort_fields

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM sort_fields.

t_sort-fieldname = 'VAR1'.

t_sort-tabname = 'IT_OUTPUT'.

t_sort-spos = 1.

t_sort-up = 'X'.

t_sort-subtot = 'X'.

APPEND t_sort TO it_sort.

CLEAR t_sort.

t_sort-fieldname = 'VAR3'.

t_sort-tabname = 'IT_OUTPUT'.

t_sort-spos = 2.

t_sort-up = 'X'.

APPEND t_sort TO it_sort.

CLEAR t_sort.

ENDFORM. " sort_fields

Thanks,

Sankar M

Read only

Former Member
0 Likes
495
REPORT  zmy_alv.
 
TABLES : vbak.
 
TYPE-POOLS: slis.  " ALV Global types
 
 
SELECT-OPTIONS :
 
  s_vkorg FOR vbak-vkorg,  " Sales organization
  s_kunnr FOR vbak-kunnr,  " Sold-to party
  s_vbeln FOR vbak-vbeln.  " Sales document
 
 
SELECTION-SCREEN :
  SKIP, BEGIN OF LINE,COMMENT 5(27) v_1 FOR FIELD p_max.
PARAMETERS p_max(2) TYPE n DEFAULT '20' OBLIGATORY.
SELECTION-SCREEN END OF LINE.
 
DATA:
 
  ls_fieldcat TYPE slis_fieldcat_alv,
 
  lt_fieldcat TYPE slis_t_fieldcat_alv,
 
  lt_sort TYPE slis_t_sortinfo_alv,
 
  ls_sort TYPE slis_sortinfo_alv,
 
  ls_layout TYPE slis_layout_alv.
 
DATA:
 
  BEGIN OF gt_vbak OCCURS 0,
 
  vkorg LIKE vbak-vkorg, " Sales organization
 
  kunnr LIKE vbak-kunnr, " Sold-to party
 
  vbeln LIKE vbak-vbeln, " Sales document
 
  netwr LIKE vbak-netwr, " Net Value of the Sales Order
 
  waerk LIKE vbak-waerk, " Document currency
 
  END OF gt_vbak.
 
TYPES:
 
  BEGIN OF t_vbak,
 
  vkorg LIKE vbak-vkorg, " Sales organization
 
  kunnr LIKE vbak-kunnr, " Sold-to party
 
  vbeln LIKE vbak-vbeln, " Sales document
 
  netwr LIKE vbak-netwr, " Net Value of the Sales Order
 
  waerk LIKE vbak-waerk, " Document currency
 
  END OF t_vbak.
 
DATA: it_vbak TYPE t_vbak OCCURS 0 WITH HEADER LINE.
 
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
     EXPORTING
          i_program_name         = sy-repid
          i_internal_tabname     = 'IT_VBAK'
          i_inclname             = sy-repid
     CHANGING
          ct_fieldcat            = lt_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     = 'GT_VBAK'
          i_inclname             = sy-repid
     CHANGING
          ct_fieldcat            = lt_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.
 
*---------------------------------------------------------------------*
 
INITIALIZATION.
 
 
 
  v_1 = 'Maximum of records to read'.
 
 
 
*---------------------------------------------------------------------*
 
START-OF-SELECTION.
 
 
 
  PERFORM f_read_data.
 
 
 
  PERFORM f_display_data.
 
 
 
*---------------------------------------------------------------------*
 
*  Form  f_read_data
 
*---------------------------------------------------------------------*
 
FORM f_read_data.
 
 
 
  SELECT * INTO CORRESPONDING FIELDS OF TABLE gt_vbak
 
 FROM vbak
 
 UP TO p_max ROWS
 
  WHERE kunnr IN s_kunnr
 
  AND vbeln IN s_vbeln
 
  AND vkorg IN s_vkorg.
 
 
 
ENDFORM. " F_READ_DATA
 
*---------------------------------------------------------------------*
 
*  Form  f_display_data
 
*---------------------------------------------------------------------*
 
FORM f_display_data.
 
 
 
  DEFINE m_fieldcat.
 
    add 1 to ls_fieldcat-col_pos.
 
    ls_fieldcat-fieldname = &1.
 
    ls_fieldcat-ref_tabname = 'VBAK'.
 
    ls_fieldcat-do_sum  = &2.
 
    ls_fieldcat-cfieldname  = &3.
 
    append ls_fieldcat to lt_fieldcat.
 
  END-OF-DEFINITION.
 
 
 
  DEFINE m_sort.
 
    add 1 to ls_sort-spos.
 
    ls_sort-fieldname = &1.
 
    ls_sort-up  = 'X'.
 
    ls_sort-subtot  = &2.
 
    ls_sort-group = '*'.
 
    append ls_sort to lt_sort.
 
  END-OF-DEFINITION.
 
 
 
  DATA:
 
  ls_fieldcat TYPE slis_fieldcat_alv,
 
  lt_fieldcat TYPE slis_t_fieldcat_alv,
 
  lt_sort TYPE slis_t_sortinfo_alv,
 
  ls_sort TYPE slis_sortinfo_alv,
 
  ls_layout TYPE slis_layout_alv.
 
 
 
  m_fieldcat 'VKORG' ''  ''.
 
  m_fieldcat 'KUNNR' ''  ''.
 
  m_fieldcat 'VBELN' ''  ''.
 
  m_fieldcat 'NETWR' 'C' 'WAERK'.
 
  m_fieldcat 'WAERK' ''  ''.
 
 
 
  m_sort 'VKORG' 'X'.  " Sort by vkorg and subtotal
 
  m_sort 'KUNNR' 'X'.  " Sort by kunnr and subtotal
 
  m_sort 'VBELN' ''. " Sort by vbeln
 
 
 
*  ls_layout-cell_merge = 'X'.
 
  ls_layout-window_titlebar = 'test window'.
 
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
       EXPORTING
            is_layout   = ls_layout
            it_fieldcat = lt_fieldcat
            it_sort     = lt_sort
       TABLES
            t_outtab    = gt_vbak.
 
ENDFORM. " F_DISPLAY_DATA
Read only

Former Member
0 Likes
495

Hi,

For the totals in fieldcatalog pass do_sum = 'X'.

WA-FIELDNAME = <fieldname>(in capitals)

WA-TABNAME= <tablename>(in capitals)

WA-DO_SUM = 'X'.

APPEND WA TO IT_FIELDCAT.

CLEAR WA.

for subtotals..

LS_SORT-SPOS = 1.

LS_SORT-TABNAME = <TABLE>.

LS_SORT-FIELDNAME = <FIELD>.

LS_SORT-UP = 'X'.

LS_SORT-SUBTOT = 'X'.

APPEND LS_SORT TO IT_SORT.

now pass these two tables (it_fieldcat and it_sort) to you fn module 'REUSE_ALV_GRID_DISPLAY'

Read only

S0025444845
Active Participant
0 Likes
496

Hi,

try with this,

DATA : p_it_sortinfo type slis_t_sortinfo_alv,

wa_sortinfo TYPE slis_sortinfo_alv.

wa_sortinfo-fieldname = 'VBELN'.

wa_sortinfo-tabname = 'VBAK'.

wa_sortinfo-up = 'X'.

wa_sortinfo-subtot = 'X'.

APPEND wa_sortinfo TO p_it_sortinfo.

and pass p_it_sort info in FM

like this

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

i_callback_program = repid

i_callback_pf_status_set = 'PF_STATUS_SET'

i_callback_user_command = l_wa_callback_ucomm

it_fieldcat = p_it_fieldcat

it_sort = p_it_sortinfo

i_save = c_switch_on

is_variant = l_wa_variant

TABLES

t_outtab = p_it_output

EXCEPTIONS

program_error = 1

OTHERS = 2.

regard ,

sudha,

reward points if useful.