12-27-2007 3:33 AM
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
12-27-2007 3:50 AM
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.
12-27-2007 4:21 AM
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.
12-27-2007 6:01 AM
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
12-27-2007 6:47 AM
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.