‎2016 Feb 16 7:37 AM
Hello experts,
I have a field in my internal table, which is of type p with decimal 2.
further i am creating a dynamic internal table and displaying it using OO ALV (cl_salv_table).
In the output when i am trying to sort this field via standard toolbar, it is not getting sorted properly.
for e.g. - values before sort
10.00
30.00
8.10
50.60
9.40
when i sort it in descending - the output comes as
9.40
8.10
50.60
30.00
10.00
in ascending -
10.00
30.00
50.60
8.10
9.40
I searched the forum, but couldn't find any solution. Your views will be really helpful.
Thanks
‎2016 Feb 16 9:52 AM
Hi.
Does your internal table have only this packed decimal field? Could you please show your code?
This raw example has no sorting issues.
DATA: v_pack TYPE p DECIMALS 2.
DATA: BEGIN OF it_vpack OCCURS 0,
v_pack TYPE p DECIMALS 2,
END OF it_vpack.
TYPES:BEGIN OF ty_vpack,
v_pack TYPE p DECIMALS 2,
END OF ty_vpack.
DATA: dref TYPE REF TO data.
DATA alv TYPE REF TO cl_salv_table.
DATA message TYPE REF TO cx_salv_msg.
FIELD-SYMBOLS: <itab> TYPE ANY TABLE.
v_pack = '10.00'.
MOVE v_pack TO it_vpack-v_pack.
APPEND it_vpack.
v_pack = '30.00'.
MOVE v_pack TO it_vpack-v_pack.
APPEND it_vpack.
v_pack = '8.10'.
MOVE v_pack TO it_vpack-v_pack.
APPEND it_vpack.
v_pack = '50.60'.
MOVE v_pack TO it_vpack-v_pack.
APPEND it_vpack.
v_pack = '9.40'.
MOVE v_pack TO it_vpack-v_pack.
APPEND it_vpack.
SORT it_vpack BY v_pack ASCENDING.
* dynamically create appropriate internal table
CREATE DATA dref TYPE TABLE OF ty_vpack.
ASSIGN dref->* TO <itab>.
* fetch the data
<itab>[] = it_vpack[].
TRY.
cl_salv_table=>factory(
IMPORTING
r_salv_table = alv
CHANGING
t_table = <itab> ).
CATCH cx_salv_msg INTO message.
" error handling
ENDTRY.
DATA: gr_functions TYPE REF TO cl_salv_functions.
gr_functions = alv->get_functions( ).
gr_functions->set_all( abap_true ).
alv->display( ).
Let us know.
Hope to help
Bye
‎2016 Feb 16 9:52 AM
Hi.
Does your internal table have only this packed decimal field? Could you please show your code?
This raw example has no sorting issues.
DATA: v_pack TYPE p DECIMALS 2.
DATA: BEGIN OF it_vpack OCCURS 0,
v_pack TYPE p DECIMALS 2,
END OF it_vpack.
TYPES:BEGIN OF ty_vpack,
v_pack TYPE p DECIMALS 2,
END OF ty_vpack.
DATA: dref TYPE REF TO data.
DATA alv TYPE REF TO cl_salv_table.
DATA message TYPE REF TO cx_salv_msg.
FIELD-SYMBOLS: <itab> TYPE ANY TABLE.
v_pack = '10.00'.
MOVE v_pack TO it_vpack-v_pack.
APPEND it_vpack.
v_pack = '30.00'.
MOVE v_pack TO it_vpack-v_pack.
APPEND it_vpack.
v_pack = '8.10'.
MOVE v_pack TO it_vpack-v_pack.
APPEND it_vpack.
v_pack = '50.60'.
MOVE v_pack TO it_vpack-v_pack.
APPEND it_vpack.
v_pack = '9.40'.
MOVE v_pack TO it_vpack-v_pack.
APPEND it_vpack.
SORT it_vpack BY v_pack ASCENDING.
* dynamically create appropriate internal table
CREATE DATA dref TYPE TABLE OF ty_vpack.
ASSIGN dref->* TO <itab>.
* fetch the data
<itab>[] = it_vpack[].
TRY.
cl_salv_table=>factory(
IMPORTING
r_salv_table = alv
CHANGING
t_table = <itab> ).
CATCH cx_salv_msg INTO message.
" error handling
ENDTRY.
DATA: gr_functions TYPE REF TO cl_salv_functions.
gr_functions = alv->get_functions( ).
gr_functions->set_all( abap_true ).
alv->display( ).
Let us know.
Hope to help
Bye
‎2016 Feb 16 10:12 AM
Hi,
Thanks for your response.
The problem is resolved now.
Solution was to give the reference of DDIC field of decimal type while creating fieldcatalog.
Thanks