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

ALV Grid

Former Member
0 Likes
2,573

Hi all,

Please reply me if anybody knows how to 'SORT' Currency field Value in ALV grid display.

Thanks,

Hi all,

Please reply me if anybody knows how to 'SORT' Currency field Value in ALV grid display.

Thanks,

12 REPLIES 12
Read only

Former Member
0 Likes
1,982

Hi Busam,

While displaying ypur ALV report, You write a select query right?So there itself sort it by currency field.

Or else in your ALV report who have a symbol to sort.Choose your field and sort it.

Much Regards,

Amuktha.

Read only

Former Member
0 Likes
1,982

Hi,

data:

t_sort type slis_t_sortinfo_alv,

wa_sort like line of t_sort.

wa_sort-spos = 1.

wa_sort-fieldname = 'CARRID'.

wa_sort-tabname = 'T_SPFLI'.

wa_sort-up = 'X'.

*WA_SORT-DOWN = 'X'.

append wa_sort to t_sort.

clear wa_sort.

Sort up is for ascending,

Sort down is for descending.

Thanks,

Nithya

Read only

0 Likes
1,982

Hi Nitya,

Thanks for your reply, I have tried this but this logic not working for 'Currency (VALUE) fields' , and there is no TABNAME field in LVC_S_SORT structure.

Please let me know if you have any other solution.

Thanks.

Read only

0 Likes
1,982

Hi Busam,

I have done a small example for u.I have checked with both CUURENCY and PRICE fields. Its working fine..


data:

R_CONTAINER TYPE REF TO CL_GUI_CUSTOM_CONTAINER,
R_GRID TYPE REF TO CL_GUI_ALV_GRID.

data:
      t_sort type lvc_t_sort,
      fs_sort type lvc_s_sort,
      t_sflight type table of sflight.

select * from sflight into table t_sflight.

 fs_sort-SPOS = 4.
*  fs_sort-SPOS = 5.
*fs_sort-FIELDNAME = 'CURRENCY'.
fs_sort-FIELDNAME = 'PRICE'.
fs_sort-down = 'X'.
append fs_sort to t_sort.
CALL SCREEN 100.

MODULE LIST_OUTPUT OUTPUT.

CREATE OBJECT
R_CONTAINER
EXPORTING
CONTAINER_NAME = 'CONTAINER1'.

CREATE OBJECT R_GRID
EXPORTING
I_PARENT = R_CONTAINER.

CALL METHOD R_GRID->SET_TABLE_FOR_FIRST_DISPLAY
EXPORTING
I_STRUCTURE_NAME = 'SFLIGHT'
CHANGING
IT_OUTTAB = T_SFLIGHT
IT_SORT = T_SORT.

ENDMODULE.

SPOS - position of the field in the display.

Regards,

Nithya

Read only

Former Member
0 Likes
1,982

Hi Busam

Have a look at this wiki.It explains the SORT statement with screen shots and example.

[https://wiki.sdn.sap.com/wiki/display/ABAP/SORTinALV]

Hope this helps you.

Regards

Hareesh Menon

Read only

Former Member
0 Likes
1,982

Hi,

there are 3 possible ways of sorting..

1. Sort the Internal Table w.r.t the curr field and than pass that to alv.

2. Use the Sort Class and appl;y the sort on the sort field.

3. In table choose the sort tool from the standard toolbar of alv.

thanks

ravi

Read only

Former Member
0 Likes
1,982

hi

Inorder to SORT the table data,you have to create an internal table of type LVC_T_SORT.

LVC_T_SORT is a table type whic has a line type LVC_S_SORT.

You need to create a work area of type LVC_S_SORT

Then populate the internal table using this work area and pass it to the method

SET_TABLE_FOR_FIRST_DISPLAY using the parameter IT_SORT.

Regards

Read only

Former Member
0 Likes
1,982

hi,

declare a data type as:

data: it_sort type slis_t_sortinfo_alv,

wa_sort type slis_sortinfo_alv.

then after creating the fieldcatalog give

wa_sort-spos = '1'.

wa_sort-fieldname = 'name of d field u wanna sort'.

wa_sort-tabname = 'name of the table u hv used'.

wa_sort-up = ' X'.

wa_sort-down = 'X'

  • use any 1 either up or down,up is used for ascending and down for descending

append wa_sort to it_sort

clear wa_sort.

then in fm

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

exporting

IT_SORT = IT_SORT

i think this wl solve ur problem

thanks

shivraj

Read only

Former Member
0 Likes
1,982

hi,

Sort Using sort structure----- This is can be used while displaying the data using "REUSE_ALV_GRID_DISPLAY" or " REUSE_ALV_GRID_DISPLAY_LVC" .

Steps for sorting in this way ,

If you are using REUSE_ALV_GRID_DISPALY

a). We have to decare a structure of sort type slis_sortinfo_alv

Like:

it_sort TYPE TABLE OF slis_sortinfo_alv "Internal Table

wa_sort TYPE slis_sortinfo_alv, "Work area

b) Then before calling the function REUSE_ALV_GRID_DISPALY sort like...

wa_sort-spos = '01' .

wa_sort-fieldname = 'RACCT'.

wa_sort-tabname = 'IT_FAGLFLEXA'.

wa_sort-up = 'X'.

wa_sort-subtot = 'X'.

APPEND wa_sort TO it_sort .

CLEAR wa_sort.

c) When calling the function REUSE_ALV_GRID_DISPALY ,U must have to specify the sorting structure

it_sort = it_sort

Note: This field is optional and will be commented while u are calling the fucntion..So u have to uncomment this particular field and assign the sorting internal table of ur program.

If you are using REUSE_ALV_GRID_DISPALY_LVC

a). We have to decare a structure of sort type lvc_t_sort

Like:

it_sort TYPE TABLE OF lvc_t_sort "Internal Table

wa_sort TYPE lvc_s_sort, "Work area

b) Then before calling the function REUSE_ALV_GRID_DISPALY sort like...

wa_sort-spos = '01' .

wa_sort-fieldname = 'RACCT'.

wa_sort-tabname = 'IT_FAGLFLEXA'.

wa_sort-up = 'X'.

wa_sort-subtot = 'X'.

APPEND wa_sort TO it_sort .

CLEAR wa_sort.

c) When calling the function REUSE_ALV_GRID_DISPALY_LVC , U must have to specify the sorting structure

it_sort_lvc = it_sort

Note: This field is optional and will be commented while u are calling the fucntion..So u have to uncomment this particular field and assign the sorting internal table of ur program.

hope it will help you.

regards,

lokesh

Edited by: Lokesh Tripathi on Apr 21, 2009 4:48 PM

Read only

Former Member
0 Likes
1,982

Hi,

you can try this code for sorting :

  • Sort Criteria.

IT_SORT-FIELDNAME = 'Give you field name'.

IT_SORT-UP = 'X'.

APPEND IT_SORT.

CLEAR IT_SORT.

***

IT_SORT-FIELDNAME = 'Give you field name'.

IT_SORT-UP = 'X'.

APPEND IT_SORT.

if you use the Function module then there is a Internale table Caled IT_SORT,

if you use the Class then there is also a Internal table IT_SORT,

Thanks,

Sarita Singh Rathour

Read only

Former Member
0 Likes
1,982

Hi,

when u r selecting data from database table you get data n sorted order (if the field is of type n).

1. even after writing sort if u r not geting currency field in sorted order the probably you have taken currency field as type text. if so make it as type P or num with x decimal places. and jst sorting using sort statement will work.

ex: sort itab with <currency>.

2. else it_sort-up = 'X' in your layout should work.

3. you can even give in function module REUSE_ALV_GRID_DISPLAY.

Read only

0 Likes
1,982

If you want you can use it with alv_grid_object_name_here->set_table_for_first_diplay


FORM build_fieldsort  CHANGING p_field_sort TYPE lvc_t_sort.
  DATA: wa_sort TYPE lvc_s_sort.
  REFRESH p_field_sort.
  CLEAR wa_sort.
  wa_sort-spos = '2'.  " number of the col in the fieldcatalog corresponding to the fieldname
  wa_sort-fieldname = 'BDEGR'.
  wa_sort-down = 'X'.
  APPEND wa_sort TO p_field_sort.
  CLEAR wa_sort.
ENDFORM.  



CALL METHOD g_grid_03->set_table_for_first_display
    EXPORTING
      is_layout            = gs_layout
      it_toolbar_excluding = lt_exclude
    CHANGING
      it_sort              = gs_field_sort   " required
      it_fieldcatalog      = gt_fieldcat   " required 
      it_outtab            = it_zhrgt_t705l[]. " required

there's a catch if you want cells to merge when they have equal fields

you must not use the

- alv_grid_object_name_here->SET_READY_FOR_INPUT

- or change the fieldcatlog edit property to editable