Application Development 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: 

How to get ALV Field Catalog/Layout AFTER user has changed the layout???

Former Member
0 Kudos

Hi Guys,

Here is the situation:

After displaying my data in a ALV List/Grid for the first time, it is necisarry for the user to change the layout (in other words: they choose the "Change Layout" button at the top and arrange the fields as they desire).

I then need to export the data in this newly arranged layout...

For example:

1. I have 3 fields: F1 F2 and F3.

2. There 3 fields get displayed in the order above.

3. The user then decides that they want the field order to be F3 F1 F2 and does so using the "Change Layout" SAP button.

4. I now have to export the data in the field layout as per point 3 above...

Therefore, WHICH FUNCTION MODULES/CLASSES CAN I USE TO GET THIS "NEW" INFORMATION!!!

I have tried Function Module 'REUSE_ALV_LIST_LAYOUT_INFO_GET' but it does not return the correct data... For example, when I remove some fields to be displayed after choosing "Change Layout", this Function Module returns ALL the fields I used...

Please advise,

MAX POINTS WILL BE REWARDED FOR USEFUL AWNSERS!!!

1 ACCEPTED SOLUTION

Former Member
0 Kudos

Hi,

Use this way,

Use the FM codeREUSE_ALV_LIST_LAYOUT_INFO_GET[/code]

Below is the sample code for it.

call function 'REUSE_ALV_LIST_LAYOUT_INFO_GET'
importing
es_layout = lv_layout1
et_fieldcat = i_fieldcat1
exceptions
no_infos = 1
program_error = 2
others = 3.

\[removed by moderator\]

Thanks

Vikranth

Edited by: Jan Stallkamp on Jun 11, 2008 10:51 AM

9 REPLIES 9

former_member435013
Active Participant
0 Kudos

Hi,

try

CALL METHOD grid1->get_frontend_fieldcatalog

IMPORTING

et_fieldcatalog = ls_fieldcatalog.

ls_fieldcatalog-row_pos = 0 indicates hidden fields.

ls_fieldcatalog-col_pos is the sequence number.

P.S: If you haven't got the grid you should use function GET_GLOBALS_FROM_SLVC_FULLSCR.

Regards

Walter Habich

Edited by: Walter Habich on Jun 10, 2008 3:26 PM

0 Kudos

Hi There,

Many tks for the awnser.

Im not using OO to do this... Im still using SLIS. Therefore, I cannot use the method you recommend.

I also tried the GET_GLOBALS_FROM_SLVC_FULLSCR Function, but I got a runtime error as the Function actually does a call to the method you recomended...

can you recommend anything else?

tks again,

C

0 Kudos

if u have any alternative solution plz let me knoe

thanks and regards

abpk

raymond_giuseppi
Active Contributor
0 Kudos

OO-ALV use METHOD get_frontend_fieldcatalog

FM-ALV use FM REUSE_ALV_GRID_LAYOUT_INFO_GET

Regards

Former Member
0 Kudos

Hi,

Use this way,

Use the FM codeREUSE_ALV_LIST_LAYOUT_INFO_GET[/code]

Below is the sample code for it.

call function 'REUSE_ALV_LIST_LAYOUT_INFO_GET'
importing
es_layout = lv_layout1
et_fieldcat = i_fieldcat1
exceptions
no_infos = 1
program_error = 2
others = 3.

\[removed by moderator\]

Thanks

Vikranth

Edited by: Jan Stallkamp on Jun 11, 2008 10:51 AM

0 Kudos

Hi,

Like I mentioned in my first post, I have tried this Function Module.

The thing is that sometimes fields are removed from the list being displayed. This Function Module (REUSE_ALV_LIST_LAYOUT_INFO_GET) returns ALL the fields REGARDLESS if you removed some from the display,

tks

C

0 Kudos

In the fieldcatalog, look for

- fieldcat-TECH " Field not displayable

- fieldcat-NO_OUT " Field not displayed

- fieldcat-COL_POS " position of field

Regards

Former Member
0 Kudos

Hi Guys!

I GOT IT RIGHT!!!!

Here is an extract and a very usefull function module that helped me out :

FORM save_pd .

DATA : ti_tabname TYPE kkblo_tabname.

DATA : tcs_layout TYPE kkblo_layout,

tct_default_fieldcat TYPE kkblo_t_fieldcat,

wa_tct_default_fieldcat TYPE kkblo_fieldcat,

ti_fcat_complete TYPE abap_bool,

ti_tabname_slave TYPE kkblo_tabname.

IF p_vari IS INITIAL.

MESSAGE 'Please enter a Layout' TYPE 'I'.

ELSE.

PERFORM get_report_data.

wa_tct_default_fieldcat-fieldname = 'ENTITYKEY'.

APPEND wa_tct_default_fieldcat TO tct_default_fieldcat.

wa_tct_default_fieldcat-fieldname = 'ANLKL'.

APPEND wa_tct_default_fieldcat TO tct_default_fieldcat.

wa_tct_default_fieldcat-fieldname = 'TXT50'.

APPEND wa_tct_default_fieldcat TO tct_default_fieldcat.

wa_tct_default_fieldcat-fieldname = 'AKTIV'.

APPEND wa_tct_default_fieldcat TO tct_default_fieldcat.

wa_tct_default_fieldcat-fieldname = 'AFABE'.

APPEND wa_tct_default_fieldcat TO tct_default_fieldcat.

wa_tct_default_fieldcat-fieldname = 'KANSW'.

APPEND wa_tct_default_fieldcat TO tct_default_fieldcat.

wa_tct_default_fieldcat-fieldname = 'KNAFA'.

APPEND wa_tct_default_fieldcat TO tct_default_fieldcat.

wa_tct_default_fieldcat-fieldname = 'NETBV'.

APPEND wa_tct_default_fieldcat TO tct_default_fieldcat.

wa_tct_default_fieldcat-fieldname = 'ERLBT'.

APPEND wa_tct_default_fieldcat TO tct_default_fieldcat.

wa_tct_default_fieldcat-fieldname = 'PROCD'.

APPEND wa_tct_default_fieldcat TO tct_default_fieldcat.

wa_tct_default_fieldcat-fieldname = 'DEAKT'.

APPEND wa_tct_default_fieldcat TO tct_default_fieldcat.

wa_tct_default_fieldcat-fieldname = 'KTOGR'.

APPEND wa_tct_default_fieldcat TO tct_default_fieldcat.

wa_tct_default_fieldcat-fieldname = 'XFIELD1'.

APPEND wa_tct_default_fieldcat TO tct_default_fieldcat.

wa_tct_default_fieldcat-fieldname = 'XFIELD2'.

APPEND wa_tct_default_fieldcat TO tct_default_fieldcat.

wa_tct_default_fieldcat-fieldname = 'XFIELD3'.

APPEND wa_tct_default_fieldcat TO tct_default_fieldcat.

wa_tct_default_fieldcat-fieldname = 'XFIELD4'.

APPEND wa_tct_default_fieldcat TO tct_default_fieldcat.

wa_tct_default_fieldcat-fieldname = 'XFIELD5'.

APPEND wa_tct_default_fieldcat TO tct_default_fieldcat.

wa_tct_default_fieldcat-fieldname = 'XFIELD6'.

APPEND wa_tct_default_fieldcat TO tct_default_fieldcat.

wa_tct_default_fieldcat-fieldname = 'XFIELD7'.

APPEND wa_tct_default_fieldcat TO tct_default_fieldcat.

wa_tct_default_fieldcat-fieldname = 'XFIELD8'.

APPEND wa_tct_default_fieldcat TO tct_default_fieldcat.

CLEAR wa_tct_default_fieldcat.

var-report = sy-repid.

var-variant = p_vari.

var-log_group = 'ZALV'.

var-username = sy-uname.

tcs_layout-zebra = 'X'.

tcs_layout-cwidth_opt = 'X'.

tcs_layout-rows_max = 0.

tcs_layout-new_fcodes = 'X'.

tcs_layout-col_offset = 0.

tcs_layout-row_offset = 0.

tcs_layout-keycols = 00.

tcs_layout-default = 'X'.

tcs_layout-save = 'A'.

tcs_layout-colwidth_optimize = 'X'.

tcs_layout-min_linesize = 0.

tcs_layout-max_linesize = 0.

tcs_layout-get_selinfos = 'X'.

tcs_layout-info_fieldname = 'COLOR'.

tcs_layout-no_print_selinfos = 'X'.

tcs_layout-no_coverpage = 'X'.

tcs_layout-reserve_lines = 0.

tcs_layout-no_print_listinfos = 'X'.

tcs_layout-rowno_change = 'X'.

tcs_layout-no_numc_sum = 'Z'.

tcs_layout-s_variant = var.

MOVE-CORRESPONDING layout TO tcs_layout.

ti_tabname = '1'.

CALL FUNCTION 'LT_FC_LOAD'

EXPORTING

is_variant = var

i_tabname = ti_tabname

i_tabname_slave = ti_tabname_slave

i_fcat_complete = ti_fcat_complete

IMPORTING

et_fieldcat = ttet_fieldcat[]

et_sort = ttet_sort[]

et_filter = ttet_filter[]

CHANGING

cs_layout = tcs_layout

ct_default_fieldcat = tct_default_fieldcat

EXCEPTIONS

fc_not_complete = 1

OTHERS = 2

.

IF sy-subrc <> 0.

ENDIF.

"Get all the fields that are/were selected in the List display. We will

"then loop at itab to create the list that will be donwloaded with a

"Pipe Delimiter...

LOOP AT ttet_fieldcat INTO wa_tct_default_fieldcat WHERE no_out <> 'X'.

itab_fcat-result = wa_tct_default_fieldcat-fieldname.

APPEND itab_fcat.

ENDLOOP.

PERFORM download_pipe_delim_format.

ENDIF.

Former Member
0 Kudos

Please see my last entry