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: 

Problem with FM REUSE_ALV_BLOCK_LIST_APPEND for saving layout

Former Member
0 Kudos

In my program, user wants to show 4 alv list on same screen so i use FM REUSE_ALV_BLOCK_LIST_APPEND to show them.

but i have a problem that ALV list can adjust the layout but can not save.

when i go to see into the FM there is no parameters

i_save = .....

is_variant = .....

like REUSE_ALV_LIST_DISPLAY

Functional Consultant showed me T-Code: FBL5N that the standard can do so u also can do !

when i debugged the standard , it use REUSE_ALV_LIST_DISPLAY (in FM FI_ITEMS_DISPLAY)

but i can't copy it coz it's too complicated.

How do I solve this problem ?

Thanks in advance

4 REPLIES 4

Former Member
0 Kudos

Hi,

it is not possible to show four alv list on one sceeen in normal alv.

we can do it in OOABAP ALV.

for this we can use this class CL_GUI_ALV_GRID.

by using this we can display.

first we create a container.usnig this class

CL_GUI_ALV_CONTAINER.

to this we add that cl_gui_alv_grid.

to show the data in that grids we use the method

set_table_first_dispaly.

we can do the process like this.

if u want more infromation i wil send to ur mail id if u mention ur mail id.

please reward points, if it is useful.

regards,

satish.

Former Member
0 Kudos

Thank you but

Actually, my output on the screen now is correct.

I have 4 internal tables, show in 4 alv list on same screen by using REUSE_ALV_BLOCK_LIST_APPEND.

but i have only 1 problem that users want to save the layout when they adjust.

former_member402443
Contributor
0 Kudos

Hi Zulkiff,

Check this code yaar. This might solve your problem.

----


  • Demo of FM ALV_BLOCK_LIST_APPEND * *

----


CONSTANTS :

c_x VALUE 'X'.

----


TYPE-POOLS: slis. " ALV Global types

TYPES:

  • 1st Table

BEGIN OF ty_kna1,

kunnr TYPE kna1-kunnr, " Customer number

ernam TYPE kna1-ernam, " Name of Person who Created

erdat TYPE kna1-erdat, " Creation date

name1 TYPE kna1-name1, " Name 1 .

END OF ty_kna1,

  • 2nd Table

BEGIN OF ty_mara,

matnr TYPE mara-matnr, " Material number

ernam TYPE mara-ernam, " Name of Person who Created

ersda TYPE mara-ersda, " Creation date

mtart TYPE mara-mtart, " Material type

matkl TYPE mara-matkl, " Material group

END OF ty_mara,

  • 3rd Table

BEGIN OF ty_vbak,

vbeln TYPE vbak-vbeln, " Sales document

vkorg TYPE vbak-vkorg, " Sales organization

vtweg TYPE vbak-vtweg, " Distribution channel

kunnr TYPE vbak-kunnr, " Sold-to party

erdat TYPE vbak-erdat, " Creation date

END OF ty_vbak.

----


DATA:

gt_kna1 TYPE TABLE OF ty_kna1,

gt_mara TYPE TABLE OF ty_mara,

gt_vbak TYPE TABLE OF ty_vbak.

----


SELECTION-SCREEN :

SKIP, BEGIN OF LINE,COMMENT 5(27) v_1 FOR FIELD p_max. "#EC NEEDED

PARAMETERS p_max(2) TYPE n DEFAULT '02' OBLIGATORY.

SELECTION-SCREEN END OF LINE.

----


INITIALIZATION.

v_1 = 'Maximum of records to read'.

----


START-OF-SELECTION.

  • Read data

SELECT kunnr ernam erdat name1

FROM kna1

UP TO p_max ROWS

INTO TABLE gt_kna1.

SELECT matnr ernam ersda mtart matkl

FROM mara

UP TO p_max ROWS

INTO TABLE gt_mara.

SELECT vbeln vkorg vtweg kunnr erdat

FROM vbak

UP TO p_max ROWS

INTO TABLE gt_vbak.

CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_INIT'

EXPORTING

i_callback_program = sy-cprog

i_callback_user_command = 'USER_COMMAND'.

PERFORM list_append TABLES gt_kna1

USING '1'

'GT_KNA1'.

PERFORM list_append TABLES gt_mara

USING '2'

'GT_MARA'.

PERFORM list_append TABLES gt_vbak

USING '3'

'GT_VBAK'.

----


END-OF-SELECTION.

PERFORM f_list_display.

----


  • FORM USER_COMMAND *

----


FORM user_command USING u_ucomm TYPE sy-ucomm

us_selfield TYPE slis_selfield. "#EC CALLED

DATA:

ls_vbak TYPE ty_vbak.

CASE u_ucomm.

WHEN '&IC1'. " Pick

CASE us_selfield-tabname.

WHEN 'GT_MARA'.

WHEN 'GT_KNA1'.

WHEN 'GT_VBAK'.

READ TABLE gt_vbak INDEX us_selfield-tabindex INTO ls_vbak.

IF sy-subrc EQ 0.

  • Sales order number

SET PARAMETER ID 'AUN' FIELD ls_vbak-vbeln.

  • Display Sales Order

CALL TRANSACTION 'VA03' AND SKIP FIRST SCREEN.

ENDIF.

ENDCASE.

ENDCASE.

ENDFORM. " USER_COMMAND

----


  • Form list_append

----


FORM list_append TABLES ut_table TYPE table

USING u_no TYPE numc1

u_tabname TYPE slis_tabname.

  • Macro definition

DEFINE m_fieldcat.

ls_fieldcat-fieldname = &1.

ls_fieldcat-ref_tabname = &2.

append ls_fieldcat to lt_fieldcat.

END-OF-DEFINITION.

DEFINE m_sort.

ls_sort-fieldname = &1.

ls_sort-up = c_x.

append ls_sort to lt_sort.

END-OF-DEFINITION.

DATA :

ls_fieldcat TYPE slis_fieldcat_alv,

lt_fieldcat TYPE slis_t_fieldcat_alv, " Field catalog

ls_sort TYPE slis_sortinfo_alv,

lt_sort TYPE slis_t_sortinfo_alv. " Sort table

DATA:

lt_events TYPE slis_t_event,

ls_event TYPE slis_alv_event,

ls_layout TYPE slis_layout_alv.

ls_layout-group_change_edit = c_x.

ls_layout-colwidth_optimize = c_x.

ls_layout-zebra = c_x.

ls_layout-cell_merge = c_x.

ls_layout-detail_popup = c_x.

ls_layout-get_selinfos = c_x.

ls_layout-max_linesize = '200'.

CASE u_no.

WHEN '1'.

  • Build field catalog and sort table

m_fieldcat 'KUNNR' 'KNA1'.

m_fieldcat 'ERNAM' 'KNA1'.

m_fieldcat 'ERDAT' 'KNA1'.

m_fieldcat 'NAME1' 'KNA1'.

m_sort 'KUNNR'.

WHEN '2'.

m_fieldcat 'MATNR' 'MARA'.

m_fieldcat 'ERNAM' 'MARA'.

m_fieldcat 'ERSDA' 'MARA'.

m_fieldcat 'MTART' 'MARA'.

m_fieldcat 'MATKL' 'MARA'.

m_sort 'MATNR'.

WHEN '3'.

m_fieldcat 'VBELN' 'VBAK'.

m_fieldcat 'VKORG' 'VBAK'.

m_fieldcat 'VTWEG' 'VBAK'.

m_fieldcat 'KUNNR' 'VBAK'.

m_fieldcat 'ERDAT' 'VBAK'.

m_sort 'VBELN'.

ENDCASE.

IF u_no CA '13'.

MOVE 'TOP_OF_PAGE' TO ls_event-name.

CONCATENATE 'TOP_OF_PAGE' u_no INTO ls_event-form.

APPEND ls_event TO lt_events.

ELSE.

MOVE 'TOP_OF_LIST' TO ls_event-name.

CONCATENATE 'TOP_OF_LIST' u_no INTO ls_event-form.

APPEND ls_event TO lt_events.

ENDIF.

CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'

EXPORTING

it_fieldcat = lt_fieldcat

is_layout = ls_layout

i_tabname = u_tabname

it_events = lt_events

it_sort = lt_sort

TABLES

t_outtab = ut_table

EXCEPTIONS

program_error = 1

maximum_of_appends_reached = 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.

ENDFORM. " LIST_APPEND

----


  • Form f_list_display

----


FORM f_list_display.

DATA ls_print TYPE slis_print_alv.

ls_print-no_print_selinfos = c_x. " Display no selection infos

ls_print-no_print_listinfos = c_x. " Display no listinfos

ls_print-reserve_lines = 2. " Lines reserved for end of page

CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_DISPLAY'

EXPORTING

i_interface_check = ' '

is_print = ls_print

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

----


  • FORM top_of_page1 *

----


FORM top_of_page1. "#EC CALLED

PERFORM top_of_page.

ENDFORM. "TOP_OF_PAGE1

----


  • FORM top_of_page3 *

----


FORM top_of_page3. "#EC CALLED

PERFORM top_of_page.

ENDFORM. "TOP_OF_PAGE3

----


  • FORM top_of_page *

----


FORM top_of_page.

ULINE.

WRITE : sy-uname, sy-title(56) CENTERED, sy-datum.

ULINE.

ENDFORM. "TOP_OF_PAGE

----


  • FORM top_of_list2 *

----


FORM top_of_list2. "#EC CALLED

WRITE 'TOP OF LIST2'.

ENDFORM. "TOP_OF_LIST2

                            • END OF PROGRAM Z_ALV_LIST_BLOCK ***********************

Reward Points, if useful.

Regards,

Manoj Kumar

Former Member
0 Kudos

Thank you Manoj Kumar.

but it's still can't save layout (there is no Save Layout button or even i copy GUI Status from standard the button it don't work).

i still find the solution.

maybe i won't use FM REUSE_ALV_BLOCK_LIST_APPEND

I used to use FM REUSE_ALV_LIST_DISPLAY

by get the event END_OF_LIST then display alv list again 4 times for 4 internal tables but it's incorrect layout.