Calling two ALV in two subscreens
In my report i am caling two subscreens and passing two alv's to the same.But what is happening is when i pass both the alv's one of the subscreen does not display the ALV.
Can anyone suggest where am i going wrong.
Instead of using subscreens, you can do this in two other ways.
1. Have two containers and display each alv in each container using the same method
2. You can create only one container and use split container.
There are several threads and blogs which shows the usage of split container.
Regards,
Kiran
Similar Messages
-
Two ALV Grids in a single screen are overlapping eachother
Hi,
I have created two ALV grids in a single screen. I have used seperate containers for them.
But on executing them , both the ALV grids are overlapping eachother.
Please give me a solution.Hi,
IF w_custom_container IS INITIAL.
Creating Object for the Custom Container.
CREATE OBJECT w_custom_container
EXPORTING
container_name = w_container
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
create_error = 3
lifetime_error = 4
lifetime_dynpro_dynpro_link = 5
OTHERS = 6.
CASE sy-subrc.
WHEN 1.
MESSAGE e054. "CNTL ERROR
WHEN 2.
MESSAGE e055. "CNTL SYSTEM ERROR
WHEN 3.
MESSAGE e056. "CREATE ERROR
WHEN 4.
MESSAGE e057. "LIFETIME ERROR
WHEN 5.
MESSAGE e058. "LIFETIME DYNPRO DYNPRO LINK
ENDCASE.
Creating object for the Splitter Container.
CREATE OBJECT w_split_container
EXPORTING
parent = w_custom_container
orientation = 0
sash_position = 30
with_border = 2
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
OTHERS = 3.
CASE sy-subrc.
WHEN 1.
MESSAGE e054. "CNTL_ERROR
WHEN 2.
MESSAGE e055. "CNTL_SYSTEM_ERROR
ENDCASE.
Creating Grid Control.
CREATE OBJECT w_grid1
EXPORTING
i_parent = w_split_container->top_left_container.
CREATE OBJECT w_grid2
EXPORTING
i_parent = w_split_container->bottom_right_container.
Building field catalog for ALV.
Fieldcat for the Detail Record.
PERFORM build_fieldcat USING: c_1 c_code c_output c_check
c_comcode c_olength,
c_2 c_fileno c_output c_check
c_filenum c_olength,
c_3 c_dedcod c_output c_check
c_dedcode c_olength,
c_4 c_dedfac c_output c_check
c_dedf c_olength.
FieldCatlog for the Error Records.
PERFORM build_fieldcat_error USING: c_1 c_pernr c_error c_check
c_person c_olength,
c_2 c_desc c_error c_check
c_descp c_olength.
ALV Display.
CALL METHOD w_grid1->set_table_for_first_display
EXPORTING
i_buffer_active =
i_bypassing_buffer =
i_consistency_check =
i_structure_name =
is_variant =
i_save =
i_default = 'X'
is_layout =
is_print =
it_special_groups =
it_toolbar_excluding =
it_hyperlink =
it_alv_graphics =
it_except_qinfo =
ir_salv_adapter =
CHANGING
it_outtab = t_error
it_fieldcatalog = t_fieldcat_error
it_sort =
it_filter =
EXCEPTIONS
invalid_parameter_combination = 1
program_error = 2
too_many_lines = 3
OTHERS = 4
CASE sy-subrc.
WHEN 1.
MESSAGE e076. "invalid parameter combination
WHEN 2.
MESSAGE e001. "program error
WHEN 3.
MESSAGE e078. "too many lines
ENDCASE.
CALL METHOD w_grid2->set_table_for_first_display
EXPORTING
i_buffer_active =
i_bypassing_buffer =
i_consistency_check =
i_structure_name =
is_variant =
i_save =
i_default = 'X'
is_layout =
is_print =
it_special_groups =
it_toolbar_excluding =
it_hyperlink =
it_alv_graphics =
it_except_qinfo =
ir_salv_adapter =
CHANGING
it_outtab = t_output
it_fieldcatalog = t_fieldcat
it_sort =
it_filter =
EXCEPTIONS
invalid_parameter_combination = 1
program_error = 2
too_many_lines = 3
OTHERS = 4
CASE sy-subrc.
WHEN 1.
MESSAGE e076. "invalid parameter combination
WHEN 2.
MESSAGE e001. "program error
WHEN 3.
MESSAGE e078. "too many lines
ENDCASE.
ELSE.
CALL METHOD w_grid1->refresh_table_display
EXPORTING
i_soft_refresh = 'X'.
CALL METHOD w_grid2->refresh_table_display
EXPORTING
i_soft_refresh = 'X'.
ENDIF.
Hope it Helps,
Jayant Sahu. -
Can we have two alv grid in the output
Hi
Can we have two alv grid in the output?. If yes how can we do that using oops alv. I think first need to create the container on that two subscreen. is this correct? Thanks.
Regards
Raj>
Rajitha1234 wrote:
> Hi
>
> Can we have two alv grid in the output?. If yes how can we do that using oops alv. I think first need to create the container on that two subscreen. is this correct? Thanks.
>
> Regards
> Raj
Hi Rajitha,
You can have as many as ALV output in the screen By using OOPS.
By using Container you can pass ALV output.
see the sample Program SALV_TEST_TABLE.
Regards,
Prabhudas -
I want to create an ALV with two row fields name
Hi
I want to create an ALV with two row fields name. please suggest how to do it or send some sample code
thanksHi,
see this link
http://****************/Tutorials/ALV/ALVMainPage.htm
http://www.alvrobot.com.ar/tutorial.php
https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/b09ac4d5-e3ad-2910-6a81-96d1b861928c
http://abapprogramming.blogspot.com/2007/11/alv-check-boxes-sample-code.html
REPORT zalv5 NO STANDARD PAGE HEADING.
Description----
TOPICS INTRODUCED:
1. Learn about the u2018Standardu2019 PF-Status that comes as default.
2. Exclude function codes from u2018Standardu2019 PF-Status and customize it.
TYPE-POOLS: slis.
DATA: BEGIN OF i_data OCCURS 0,
qmnum LIKE qmel-qmnum,
qmart LIKE qmel-qmart,
qmtxt LIKE qmel-qmtxt,
ws_row TYPE i,
ws_char(5) TYPE c,
chk,
END OF i_data.
DATA: report_id LIKE sy-repid.
DATA: ws_title TYPE lvc_title VALUE 'An ALV Report'.
DATA: i_layout TYPE slis_layout_alv.
DATA: i_fieldcat TYPE slis_t_fieldcat_alv.
DATA: i_events TYPE slis_t_event.
DATA: i_header TYPE slis_t_listheader.
DATA: i_extab TYPE slis_t_extab.
SELECT qmnum
qmart
qmtxt
INTO TABLE i_data
FROM qmel
WHERE qmnum <= '00030000010'. LOOP AT i_data. i_data-ws_row = sy-tabix. i_data-ws_char = 'AAAAA'. MODIFY i_data. ENDLOOP. report_id = sy-repid. PERFORM f1000_layout_init CHANGING i_layout. PERFORM f2000_fieldcat_init CHANGING i_fieldcat. PERFORM f3000_build_header CHANGING i_header. PERFORM f4000_events_init CHANGING i_events. CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' EXPORTING * I_INTERFACE_CHECK = ' ' * I_BYPASSING_BUFFER = * I_BUFFER_ACTIVE = ' ' i_callback_program = report_id * I_CALLBACK_PF_STATUS_SET = ' ' * I_CALLBACK_USER_COMMAND = ' ' * I_CALLBACK_TOP_OF_PAGE = ' ' * I_CALLBACK_HTML_TOP_OF_PAGE = ' ' * I_CALLBACK_HTML_END_OF_LIST = ' ' * i_structure_name = ' ' * I_BACKGROUND_ID = ' ' i_grid_title = ws_title * I_GRID_SETTINGS = is_layout = i_layout it_fieldcat = i_fieldcat * IT_EXCLUDING = * IT_SPECIAL_GROUPS = * IT_SORT = * IT_FILTER = * IS_SEL_HIDE = * I_DEFAULT = 'X' i_save = 'A' * IS_VARIANT = it_events = i_events * IT_EVENT_EXIT = * IS_PRINT = * IS_REPREP_ID = * I_SCREEN_START_COLUMN = 0 * I_SCREEN_START_LINE = 0 * I_SCREEN_END_COLUMN = 0 * I_SCREEN_END_LINE = 0 * IT_ALV_GRAPHICS = * IT_ADD_FIELDCAT = * IT_HYPERLINK = * IMPORTING * E_EXIT_CAUSED_BY_CALLER = * ES_EXIT_CAUSED_BY_USER = TABLES t_outtab = i_data 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.
*& Form F1000_Layout_Init
FORM f1000_layout_init USING i_layout TYPE slis_layout_alv.
CLEAR i_layout.
i_layout-colwidth_optimize = 'X'.
i_layout-edit = 'X'.
ENDFORM. " F1000_Layout_Init
*& Form f2000_fieldcat_init
FORM f2000_fieldcat_init CHANGING i_fieldcat TYPE slis_t_fieldcat_alv.
DATA: line_fieldcat TYPE slis_fieldcat_alv.
CLEAR line_fieldcat.
line_fieldcat-fieldname = 'QMNUM'. " The field name and the table
line_fieldcat-tabname = 'I_DATA'. " name are the two minimum req.
line_fieldcat-key = 'X'. " Specifies the column as a key (Blue)
line_fieldcat-seltext_m = 'Notification No.'. " Column Header
APPEND line_fieldcat TO i_fieldcat.
CLEAR line_fieldcat.
line_fieldcat-fieldname = 'QMART'.
line_fieldcat-ref_tabname = 'I_DATA'.
line_fieldcat-hotspot = 'X'. " Shows the field as a hotspot.
line_fieldcat-seltext_m = 'Notif Type'.
APPEND line_fieldcat TO i_fieldcat.
CLEAR line_fieldcat.
line_fieldcat-fieldname = 'QMTXT'.
line_fieldcat-tabname = 'I_DATA'.
line_fieldcat-seltext_m = 'Description'.
APPEND line_fieldcat TO i_fieldcat.
CLEAR line_fieldcat.
line_fieldcat-fieldname = 'WS_ROW'.
line_fieldcat-tabname = 'I_DATA'.
line_fieldcat-seltext_m = 'Row Number'.
APPEND line_fieldcat TO i_fieldcat.
CLEAR line_fieldcat.
line_fieldcat-fieldname = 'WS_CHAR'.
line_fieldcat-tabname = 'I_DATA'.
line_fieldcat-seltext_l = 'Test Character Field'.
line_fieldcat-datatype = 'CHAR'.
line_fieldcat-outputlen = '15'. " You can specify the width of a
APPEND line_fieldcat TO i_fieldcat. " column.
CLEAR line_fieldcat.
line_fieldcat-fieldname = 'CHK'.
line_fieldcat-tabname = 'I_DATA'.
line_fieldcat-seltext_l = 'Checkbox'.
line_fieldcat-checkbox = 'X'. " Display this field as a checkbox
line_fieldcat-edit = 'X'. " This option ensures that you can
" edit the checkbox. Else it will
" be protected.
APPEND line_fieldcat TO i_fieldcat.
ENDFORM. " f2000_fieldcat_init
*& Form f3000_build_header
FORM f3000_build_header USING i_header TYPE slis_t_listheader.
DATA: gs_line TYPE slis_listheader.
CLEAR gs_line.
gs_line-typ = 'H'.
gs_line-info = 'This is line of type HEADER'.
APPEND gs_line TO i_header.
CLEAR gs_line.
gs_line-typ = 'S'.
gs_line-key = 'STATUS 1'.
gs_line-info = 'This is line of type STATUS'.
APPEND gs_line TO i_header.
gs_line-key = 'STATUS 2'.
gs_line-info = 'This is also line of type STATUS'.
APPEND gs_line TO i_header.
CLEAR gs_line.
gs_line-typ = 'A'.
gs_line-info = 'This is line of type ACTION'.
APPEND gs_line TO i_header.
ENDFORM. " f3000_build_header
*& Form f4000_events_init
FORM f4000_events_init CHANGING i_events TYPE slis_t_event.
DATA: line_event TYPE slis_alv_event.
CLEAR line_event.
line_event-name = 'TOP_OF_PAGE'.
line_event-form = 'F4100_TOP_OF_PAGE'.
APPEND line_event TO i_events.
CLEAR line_event.
line_event-name = 'PF_STATUS_SET'.
line_event-form = 'F4200_PF_STATUS_SET'.
APPEND line_event TO i_events.
ENDFORM. " f3000_events_init
FORM F4100_TOP_OF_PAGE *
FORM f4100_top_of_page.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
it_list_commentary = i_header.
ENDFORM.
FORM F4200_PF_STATUS_SET *
FORM f4200_pf_status_set USING i_extab TYPE slis_t_extab.
REFRESH i_extab.
PERFORM f4210_exclude_fcodes CHANGING i_extab.
SET PF-STATUS 'STANDARD' OF PROGRAM 'SAPLSALV' EXCLUDING i_extab.
ENDFORM.
*& Form f4210_exclude_fcodes
FORM f4210_exclude_fcodes USING i_extab TYPE slis_t_extab.
DATA: ws_fcode TYPE slis_extab.
CLEAR ws_fcode.
ws_fcode = '&EB9'. " Call up Report.
APPEND ws_fcode TO i_extab.
ws_fcode = '&ABC'. " ABC Analysis.
APPEND ws_fcode TO i_extab.
ws_fcode = '&NFO'. " Info Select.
APPEND ws_fcode TO i_extab.
ws_fcode = '&LFO'. " Information.
APPEND ws_fcode TO i_extab.
ENDFORM. " f4210_exclude_fcodes
thanks
karthik
reward me if usefull -
Two ALVs in the same component
Hello,
I need to develop a WDA ALV component with two ALVs, the first one display a list of documents and once the user select one document and press a custom function, it should call another ALV to display a list of all the itens linked to the selected document.
But when I try to call the second ALV, it reaises a short dump:
There is already an instance of view TABLE in the component.
So to solve this problem I need to create another separated component for the second list and then call this separated component?
Regards,
MauricioHello Regina,
That is what I did, and after your answer I checked everything again and I saw I did all right but when embeding the second ALV view by mistake I embeded the first one again.
Now it is working!
Thanks,
Mauricio -
Drag and Drop between two ALV Tree Controls
Hello all,
I have designed a spilt control of two ALV Trees using CL_GUI_ALV_TREE.
I have a top node as the Sales order Number and the child node as the items belonging to that sales order number.
Now i need to drag and drop the lines from one sales order to another.
Also these drag drop can take place between the nodes of the two different trees.
Can someone provide with a detail example as i need to complete the same urgently.
Regards,
ArunOnce check the Below code For tree to tree drag an drop
* CLASS lcl_main DEFINITION
CLASS lcl_main DEFINITION.
PUBLIC SECTION.
* Types
TYPES:
BEGIN OF t_ekpo,
ebeln TYPE ebeln,
ebelp TYPE ebelp,
END OF t_ekpo.
TYPES:
BEGIN OF t_vbap,
vbeln TYPE vbeln,
posnr TYPE vbelp,
END OF t_vbap.
* Internal Tables
DATA:
i_ekpo TYPE STANDARD TABLE OF t_ekpo,
i_ekpo_op TYPE STANDARD TABLE OF t_ekpo,
i_vbap TYPE STANDARD TABLE OF t_vbap,
i_vbap_op TYPE STANDARD TABLE OF t_vbap,
i_fcat_ekpo TYPE lvc_t_fcat,
i_fcat_vbap TYPE lvc_t_fcat.
* Work Areas
DATA:
wa_ekpo TYPE t_ekpo,
wa_ekpo1 TYPE t_ekpo,
wa_vbap TYPE t_vbap,
wa_vbap1 TYPE t_vbap.
* Data Declarations
DATA:
g_ebeln TYPE ebeln,
g_vbeln TYPE vbeln_va.
DATA: g_variant TYPE disvariant,
g_hierarchy_header TYPE treev_hhdr,
g_handle_drag TYPE i,
g_handle_drop TYPE i.
* Class data
DATA:
splitter TYPE REF TO cl_gui_splitter_container,
container TYPE REF TO cl_gui_custom_container,
container_1 TYPE REF TO cl_gui_container,
container_2 TYPE REF TO cl_gui_container,
tree1 TYPE REF TO cl_gui_alv_tree,
tree2 TYPE REF TO cl_gui_alv_tree,
g_drag TYPE REF TO cl_dragdrop,
g_drop TYPE REF TO cl_dragdrop.
* Constants
CONSTANTS:
c_30(2) TYPE c VALUE '30'.
* Methods
METHODS:
get_data, " Data Fatch
build_display, " Display Container
display_ekpo, " Ekpo table display
display_vbap, " Vbap table display
add_node_ekpo " Add node to Ekpo
IMPORTING table TYPE t_ekpo
key TYPE lvc_nkey
text TYPE lvc_value
flag TYPE c
CHANGING i_key TYPE lvc_nkey,
add_node_vbap " Add node to vbap
IMPORTING table TYPE t_vbap
key TYPE lvc_nkey
text TYPE lvc_value
flag TYPE c
CHANGING i_key TYPE lvc_nkey,
dnd_behaviour, " Drag and drop behavour
register_events_ekpo, " Register Events Ekpo
register_events_vbap, " Register events vbap
handle_drag_multiple " Drag Multiple Values
FOR EVENT on_drag_multiple
OF cl_gui_alv_tree
IMPORTING sender node_key_table fieldname drag_drop_object,
handle_drop " Drop the values
FOR EVENT on_drop
OF cl_gui_alv_tree
IMPORTING sender node_key drag_drop_object,
add_node_drop " Add node to Drop Node
IMPORTING table TYPE t_ekpo
key TYPE lvc_nkey
text TYPE lvc_value
CHANGING i_key TYPE lvc_nkey.
ENDCLASS. " Lcl_main DEFINITION
* CLASS LCL_DRAGOBJ DEFINITION
* Drag And drop Structure
CLASS lcl_dragobj DEFINITION INHERITING FROM lcl_main FINAL.
PUBLIC SECTION.
* Types
TYPES: BEGIN OF t_node_info,
l_ekpo TYPE t_ekpo,
l_node_text TYPE lvc_value,
l_node_key TYPE lvc_nkey,
END OF t_node_info.
* Data
DATA: i_node_info TYPE TABLE OF t_node_info,
wa_node_info TYPE t_node_info.
ENDCLASS. " LCL_DRAGOBJ DEFINITION
* Object Declarations
DATA obj_main TYPE REF TO lcl_main.
* Initialization *
INITIALIZATION.
CREATE OBJECT obj_main.
* Selection Screen *
SELECTION-SCREEN BEGIN OF BLOCK block1 WITH FRAME.
SELECT-OPTIONS:
s_ebeln FOR obj_main->g_ebeln,
s_vbeln FOR obj_main->g_vbeln MATCHCODE OBJECT cs_vbeln.
SELECTION-SCREEN END OF BLOCK block1.
* Start of Selection *
START-OF-SELECTION.
* Call Screen
CALL SCREEN 100.
* CLASS lcl_main IMPLEMENTATION
* Local class Implementation
CLASS lcl_main IMPLEMENTATION.
* Get Data *
METHOD get_data.
* Data from Ekpo
SELECT ebeln
ebelp
FROM ekpo
UP TO 100 ROWS
INTO TABLE i_ekpo
WHERE ebeln IN s_ebeln.
* Data from Vbap
SELECT vbeln
posnr
FROM vbap
UP TO 100 ROWS
INTO TABLE i_vbap
WHERE vbeln IN s_vbeln.
ENDMETHOD. " Get_data
* Build Display *
METHOD build_display.
* Create Container
CREATE OBJECT container
EXPORTING
container_name = 'CUST_CONT'.
* Split the container
CREATE OBJECT splitter
EXPORTING
parent = container
rows = 1
columns = 2.
CALL METHOD splitter->get_container
EXPORTING
row = 1
column = 1
RECEIVING
container = container_1.
CALL METHOD splitter->get_container
EXPORTING
row = 1
column = 2
RECEIVING
container = container_2.
* create tree control
CREATE OBJECT tree1
EXPORTING
parent = container_1
node_selection_mode = cl_gui_column_tree=>node_sel_mode_multiple
item_selection = 'X'
no_html_header = 'X'
no_toolbar = 'X'
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
create_error = 3
lifetime_error = 4
illegal_node_selection_mode = 5
failed = 6
illegal_column_name = 7.
IF sy-subrc NE 0.
CLEAR sy-subrc.
ENDIF. " IF sy-subrc NE 0.
CREATE OBJECT tree2
EXPORTING
parent = container_2
node_selection_mode = cl_gui_column_tree=>node_sel_mode_multiple
item_selection = 'X'
no_html_header = 'X'
no_toolbar = 'X'
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
create_error = 3
lifetime_error = 4
illegal_node_selection_mode = 5
failed = 6
illegal_column_name = 7.
IF sy-subrc NE 0.
CLEAR sy-subrc.
ENDIF. " IF sy-subrc NE 0.
g_variant-report = sy-repid.
g_variant-handle = space.
g_variant-log_group = space.
g_variant-username = space.
g_variant-text = space.
g_variant-dependvars = space.
* Call method for get data
CALL METHOD get_data.
* Drap And Drop behaviour method
CALL METHOD dnd_behaviour.
* Display the Ekpo table
CALL METHOD obj_main->display_ekpo.
* Diaplay the vbap table
CALL METHOD obj_main->display_vbap.
CALL METHOD tree1->frontend_update.
CALL METHOD tree2->frontend_update.
ENDMETHOD. " Build_display
* Display EKPO *
METHOD display_ekpo.
* Data
DATA:
l_key1 TYPE lvc_nkey,
l_key2 TYPE lvc_nkey,
l_key3 TYPE lvc_nkey,
l_node_text TYPE lvc_value.
* ALV control service modules
CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
EXPORTING
i_buffer_active = 'X'
i_structure_name = 'EKPO'
i_client_never_display = 'X'
i_bypassing_buffer = space
CHANGING
ct_fieldcat = i_fcat_ekpo
EXCEPTIONS
inconsistent_interface = 1
program_error = 2
OTHERS = 3.
IF sy-subrc EQ 0.
DELETE i_fcat_ekpo FROM 4.
ENDIF. " IF sy-subrc EQ 0.
g_hierarchy_header-heading = 'Purchase Order Details'(001).
g_hierarchy_header-tooltip = 'Purchase Order'(002).
g_hierarchy_header-width = c_30.
g_hierarchy_header-width_pix = ' '.
* Diaply
CALL METHOD tree1->set_table_for_first_display
EXPORTING
is_hierarchy_header = g_hierarchy_header
is_variant = g_variant
CHANGING
it_outtab = obj_main->i_ekpo_op
it_fieldcatalog = i_fcat_ekpo.
LOOP AT i_ekpo INTO wa_ekpo1.
MOVE wa_ekpo1 TO wa_ekpo.
l_key1 = ''.
AT NEW ebeln.
MOVE wa_ekpo-ebeln TO l_node_text.
* Call method for Add Node to Ekpo
CALL METHOD add_node_ekpo
EXPORTING
table = wa_ekpo
key = l_key1
text = l_node_text
flag = space
CHANGING
i_key = l_key2.
ENDAT.
CLEAR l_node_text.
MOVE wa_ekpo-ebelp TO l_node_text.
* Call method for Add Node to Ekpo
CALL METHOD add_node_ekpo
EXPORTING
table = wa_ekpo
key = l_key2
text = l_node_text
flag = 'X'
CHANGING
i_key = l_key3.
ENDLOOP. " LOOP AT i_ekpo INTO wa_ekpo1.
* Call method For Register events
CALL METHOD register_events_ekpo.
ENDMETHOD. " Display_ekpo
* Display VBAP *
METHOD display_vbap.
* Data
DATA:
l_key1 TYPE lvc_nkey,
l_key2 TYPE lvc_nkey,
l_key3 TYPE lvc_nkey,
l_node_text TYPE lvc_value.
REFRESH i_fcat_vbap.
* ALV control service modules
CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
EXPORTING
i_buffer_active = 'X'
i_structure_name = 'VBAP'
i_client_never_display = 'X'
i_bypassing_buffer = space
CHANGING
ct_fieldcat = i_fcat_vbap
EXCEPTIONS
inconsistent_interface = 1
program_error = 2
OTHERS = 3.
IF sy-subrc EQ 0.
DELETE i_fcat_vbap FROM 4.
ENDIF. " IF sy-subrc EQ 0.
g_hierarchy_header-heading = 'Sales Order Details'(003).
g_hierarchy_header-tooltip = 'Sales Order'(004).
g_hierarchy_header-width = c_30.
g_hierarchy_header-width_pix = ' '.
* Display
CALL METHOD tree2->set_table_for_first_display
EXPORTING
is_hierarchy_header = g_hierarchy_header
is_variant = g_variant
CHANGING
it_outtab = obj_main->i_vbap_op
it_fieldcatalog = i_fcat_vbap.
LOOP AT i_vbap INTO wa_vbap1.
MOVE wa_vbap1 TO wa_vbap.
l_key1 = ''.
AT NEW vbeln.
MOVE wa_vbap-vbeln TO l_node_text.
* Call method for Add Node to vbap
CALL METHOD add_node_vbap
EXPORTING
table = wa_vbap
key = l_key1
text = l_node_text
flag = 'X'
CHANGING
i_key = l_key2.
ENDAT.
CLEAR l_node_text.
MOVE wa_vbap-posnr TO l_node_text.
* Call method for Add Node to vbap
CALL METHOD add_node_vbap
EXPORTING
table = wa_vbap
key = l_key2
text = l_node_text
flag = space
CHANGING
i_key = l_key3.
ENDLOOP. " LOOP AT i_vbap INTO wa_vbap1.
* Call method For Register events
CALL METHOD register_events_vbap.
ENDMETHOD. " Display_vbap
* Add Node to Ekko *
METHOD add_node_ekpo.
* Data
DATA: l_layout_node TYPE lvc_s_layn.
IF flag = 'X'.
l_layout_node-dragdropid = g_handle_drag.
ENDIF. " IF flag = 'X'.
* Add node to tree1
CALL METHOD tree1->add_node
EXPORTING
i_relat_node_key = key
i_relationship = cl_gui_column_tree=>relat_last_child
is_outtab_line = table
i_node_text = text
is_node_layout = l_layout_node
IMPORTING
e_new_node_key = i_key
EXCEPTIONS
relat_node_not_found = 1
node_not_found = 2
OTHERS = 3.
IF sy-subrc NE 0.
CLEAR sy-subrc.
ENDIF. " IF sy-subrc NE 0.
ENDMETHOD. " Add_node_ekpo
* Add Node to Vbap *
METHOD add_node_vbap.
* Data
DATA: l_layout_node TYPE lvc_s_layn.
IF flag = 'X'.
l_layout_node-dragdropid = g_handle_drop.
ENDIF. " IF flag = 'X'.
* Add node for tree2
CALL METHOD tree2->add_node
EXPORTING
i_relat_node_key = key
i_relationship = cl_gui_column_tree=>relat_last_child
is_outtab_line = table
i_node_text = text
is_node_layout = l_layout_node
IMPORTING
e_new_node_key = i_key
EXCEPTIONS
relat_node_not_found = 1
node_not_found = 2
OTHERS = 3.
IF sy-subrc NE 0.
CLEAR sy-subrc.
ENDIF. " IF sy-subrc NE 0.
ENDMETHOD. " Add_node_vbap
* Dnd behaviour *
METHOD dnd_behaviour.
* Data
DATA: effect TYPE i,
l_flavor TYPE c VALUE 'f'.
* For drag
CREATE OBJECT g_drag.
effect = cl_dragdrop=>copy.
CALL METHOD g_drag->add
EXPORTING
flavor = l_flavor
dragsrc = 'X'
droptarget = ' '
effect = effect
effect_in_ctrl = effect.
CALL METHOD g_drag->get_handle
IMPORTING
handle = g_handle_drag.
* For Drop
CREATE OBJECT g_drop.
effect = cl_dragdrop=>copy.
CALL METHOD g_drop->add
EXPORTING
flavor = l_flavor
dragsrc = ' '
droptarget = 'X'
effect = effect
effect_in_ctrl = effect.
CALL METHOD g_drop->get_handle
IMPORTING
handle = g_handle_drop.
ENDMETHOD. " Dnd_behaviour
* register events *
METHOD register_events_ekpo.
* Data
DATA: lt_events TYPE cntl_simple_events.
* Tree events registers ALV Tree
CALL METHOD tree1->get_registered_events
IMPORTING
events = lt_events.
* Register events on frontend
CALL METHOD tree1->set_registered_events
EXPORTING
events = lt_events
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
illegal_event_combination = 3.
IF sy-subrc NE 0.
CLEAR sy-subrc.
ENDIF. " IF sy-subrc NE 0.
* Event Handling
SET HANDLER obj_main->handle_drag_multiple FOR tree1.
ENDMETHOD. " Register_events_ekpo
* register events *
METHOD register_events_vbap.
* Data
DATA: lt_events TYPE cntl_simple_events.
* Tree events registers ALV Tree
CALL METHOD tree2->get_registered_events
IMPORTING
events = lt_events.
* Register events on frontend
CALL METHOD tree2->set_registered_events
EXPORTING
events = lt_events
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
illegal_event_combination = 3.
IF sy-subrc NE 0.
CLEAR sy-subrc.
ENDIF. " IF sy-subrc NE 0.
* Event
SET HANDLER obj_main->handle_drop FOR tree2.
ENDMETHOD. " Register_events_vbap
* Handle drag multiple Values *
METHOD handle_drag_multiple.
* Data
DATA: dataobj TYPE REF TO lcl_dragobj,
l_node_key TYPE lvc_nkey,
l_ekpo TYPE t_ekpo,
l_node_text TYPE lvc_value,
l_node_layout TYPE lvc_s_layn.
* Create and fill dataobject for event ON_DROP.
CREATE OBJECT dataobj.
* Loop the Node key Table
LOOP AT node_key_table INTO l_node_key.
CALL METHOD sender->get_outtab_line
EXPORTING
i_node_key = l_node_key
IMPORTING
e_outtab_line = l_ekpo
e_node_text = l_node_text
es_node_layout = l_node_layout.
IF l_node_layout-isfolder NE 'X'.
dataobj->wa_node_info-l_node_key = l_node_key.
dataobj->wa_node_info-l_ekpo = l_ekpo.
dataobj->wa_node_info-l_node_text = l_node_text.
APPEND dataobj->wa_node_info TO dataobj->i_node_info.
ENDIF. " IF l_node_layout-isfolder NE 'X'.
ENDLOOP. " LOOP AT node_key_table INTO l_node_key
drag_drop_object->object = dataobj.
ENDMETHOD. " Handle_drag_multiple
* Handle drop multiple Values *
METHOD handle_drop.
DATA: dataobj TYPE REF TO lcl_dragobj,
l_new_key TYPE lvc_nkey,
l_node_text TYPE lvc_value.
CATCH SYSTEM-EXCEPTIONS move_cast_error = 1.
* ON_DROP
dataobj ?= drag_drop_object->object.
LOOP AT dataobj->i_node_info INTO dataobj->wa_node_info.
MOVE dataobj->wa_node_info-l_node_text TO l_node_text.
* Call method for Add Node to vbap
CALL METHOD add_node_drop
EXPORTING
table = dataobj->wa_node_info-l_ekpo
key = node_key
text = l_node_text
CHANGING
i_key = l_new_key.
ENDLOOP. " LOOP AT dataobj->i_node_info INTO dataobj->wa_node_inf
* Expand the node
CALL METHOD sender->expand_node
EXPORTING
i_node_key = node_key
CALL METHOD sender->frontend_update.
ENDCATCH.
IF sy-subrc NE 0.
CALL METHOD drag_drop_object->abort.
ENDIF. " IF sy-subrc NE 0
ENDMETHOD. " Handle_drop
* Add Node to drop *
METHOD add_node_drop.
* Add node to drop tree
CALL METHOD tree2->add_node
EXPORTING
i_relat_node_key = key
i_relationship = cl_gui_column_tree=>relat_last_child
is_outtab_line = table
i_node_text = text
* is_node_layout = l_layout_node
IMPORTING
e_new_node_key = i_key
EXCEPTIONS
relat_node_not_found = 1
node_not_found = 2
OTHERS = 3.
IF sy-subrc NE 0.
CLEAR sy-subrc.
ENDIF. " IF sy-subrc NE 0
ENDMETHOD. " Add_node_drop
ENDCLASS. " lcl_main IMPLEMENTATION
*& Module STATUS_0100 OUTPUT
* Screen 100 Pbo
MODULE status_0100 OUTPUT.
SET PF-STATUS 'BACK'.
* SET TITLEBAR 'xxx'.
CALL METHOD obj_main->build_display.
ENDMODULE. " Status_0100 OUTPUT
*& Module USER_COMMAND_0100 INPUT
* Screen 100 Pai
MODULE user_command_0100 INPUT.
IF sy-ucomm EQ 'BACK'.
LEAVE TO SCREEN 0.
ENDIF. " IF sy-ucomm EQ 'BACK'
ENDMODULE. " USER_COMMAND_0100 INPUT
*& Report ZBPS_TREE_DRAG_DROP
REPORT zbps_tree_drag_drop.
* CLASS lcl_main DEFINITION
CLASS lcl_main DEFINITION.
PUBLIC SECTION.
* Types
TYPES:
BEGIN OF t_ekpo,
ebeln TYPE ebeln,
ebelp TYPE ebelp,
END OF t_ekpo.
TYPES:
BEGIN OF t_vbap,
vbeln TYPE vbeln,
posnr TYPE vbelp,
END OF t_vbap.
* Internal Tables
DATA:
i_ekpo TYPE STANDARD TABLE OF t_ekpo,
i_ekpo_op TYPE STANDARD TABLE OF t_ekpo,
i_vbap TYPE STANDARD TABLE OF t_vbap,
i_vbap_op TYPE STANDARD TABLE OF t_vbap,
i_fcat_ekpo TYPE lvc_t_fcat,
i_fcat_vbap TYPE lvc_t_fcat.
* Work Areas
DATA:
wa_ekpo TYPE t_ekpo,
wa_ekpo1 TYPE t_ekpo,
wa_vbap TYPE t_vbap,
wa_vbap1 TYPE t_vbap.
* Data Declarations
DATA:
g_ebeln TYPE ebeln,
g_vbeln TYPE vbeln_va.
DATA: g_variant TYPE disvariant,
g_hierarchy_header TYPE treev_hhdr,
g_handle_drag TYPE i,
g_handle_drop TYPE i.
* Class data
DATA:
splitter TYPE REF TO cl_gui_splitter_container,
container TYPE REF TO cl_gui_custom_container,
container_1 TYPE REF TO cl_gui_container,
container_2 TYPE REF TO cl_gui_container,
tree1 TYPE REF TO cl_gui_alv_tree,
tree2 TYPE REF TO cl_gui_alv_tree,
g_drag TYPE REF TO cl_dragdrop,
g_drop TYPE REF TO cl_dragdrop.
* Constants
CONSTANTS:
c_30(2) TYPE c VALUE '30'.
* Methods
METHODS:
get_data, " Data Fatch
build_display, " Display Container
display_ekpo, " Ekpo table display
display_vbap, " Vbap table display
add_node_ekpo " Add node to Ekpo
IMPORTING table TYPE t_ekpo
key TYPE lvc_nkey
text TYPE lvc_value
flag TYPE c
CHANGING i_key TYPE lvc_nkey,
add_node_vbap " Add node to vbap
IMPORTING table TYPE t_vbap
key TYPE lvc_nkey
text TYPE lvc_value
flag TYPE c
CHANGING i_key TYPE lvc_nkey,
dnd_behaviour, " Drag and drop behavour
register_events_ekpo, " Register Events Ekpo
register_events_vbap, " Register events vbap
handle_drag_multiple " Drag Multiple Values
FOR EVENT on_drag_multiple
OF cl_gui_alv_tree
IMPORTING sender node_key_table fieldname drag_drop_object,
handle_drop " Drop the values
FOR EVENT on_drop
OF cl_gui_alv_tree
IMPORTING sender node_key drag_drop_object,
add_node_drop " Add node to Drop Node
IMPORTING table TYPE t_ekpo
key TYPE lvc_nkey
text TYPE lvc_value
CHANGING i_key TYPE lvc_nkey.
ENDCLASS. " Lcl_main DEFINITION
* CLASS LCL_DRAGOBJ DEFINITION
* Drag And drop Structure
CLASS lcl_dragobj DEFINITION INHERITING FROM lcl_main FINAL.
PUBLIC SECTION.
* Types
TYPES: BEGIN OF t_node_info,
l_ekpo TYPE t_ekpo,
l_node_text TYPE lvc_value,
l_node_key TYPE lvc_nkey,
END OF t_node_info.
* Data
DATA: i_node_info TYPE TABLE OF t_node_info,
wa_node_info TYPE t_node_info.
ENDCLASS. " LCL_DRAGOBJ DEFINITION
* Object Declarations
DATA obj_main TYPE REF TO lcl_main.
* Initialization *
INITIALIZATION.
CREATE OBJECT obj_main.
* Selection Screen *
SELECTION-SCREEN BEGIN OF BLOCK block1 WITH FRAME.
SELECT-OPTIONS:
s_ebeln FOR obj_main->g_ebeln,
s_vbeln FOR obj_main->g_vbeln MATCHCODE OBJECT cs_vbeln.
SELECTION-SCREEN END OF BLOCK block1.
* Start of Selection *
START-OF-SELECTION.
* Call Screen
CALL SCREEN 100.
* CLASS lcl_main IMPLEMENTATION
* Local class Implementation
CLASS lcl_main IMPLEMENTATION.
* Get Data *
METHOD get_data.
* Data from Ekpo
SELECT ebeln
ebelp
FROM ekpo
UP TO 100 ROWS
INTO TABLE i_ekpo
WHERE ebeln IN s_ebeln.
* Data from Vbap
SELECT vbeln
posnr
FROM vbap
UP TO 100 ROWS
INTO TABLE i_vbap
WHERE vbeln IN s_vbeln.
ENDMETHOD. " Get_data
* Build Display *
METHOD build_display.
* Create Container
CREATE OBJECT container
EXPORTING
container_name = 'CUST_CONT'.
* Split the container
CREATE OBJECT splitter
EXPORTING
parent = container
rows = 1
columns = 2.
CALL METHOD splitter->get_container
EXPORTING
row = 1
column = 1
RECEIVING
container = container_1.
CALL METHOD splitter->get_container
EXPORTING
row = 1
column = 2
RECEIVING
container = container_2.
* create tree control
CREATE OBJECT tree1
EXPORTING
parent = container_1
node_selection_mode = cl_gui_column_tree=>node_sel_mode_multiple
item_selection = 'X'
no_html_header = 'X'
no_toolbar = 'X'
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
create_error = 3
lifetime_error = 4
illegal_node_selection_mode = 5
failed = 6
illegal_column_name = 7.
IF sy-subrc NE 0.
CLEAR sy-subrc.
ENDIF. " IF sy-subrc NE 0.
CREATE OBJECT tree2
EXPORTING
parent = container_2
node_selection_mode = cl_gui_column_tree=>node_sel_mode_multiple
item_selection = 'X'
no_html_header = 'X'
no_toolbar = 'X'
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
create_error = 3
lifetime_error = 4
illegal_node_selection_mode = 5
failed = 6
illegal_column_name = 7.
IF sy-subrc NE 0.
CLEAR sy-subrc.
ENDIF. " IF sy-subrc NE 0.
g_variant-report = sy-repid.
g_variant-handle = space.
g_variant-log_group = space.
g_variant-username = space.
g_variant-text = space.
g_variant-dependvars = space.
* Call method for get data
CALL METHOD get_data.
* Drap And Drop behaviour method
CALL METHOD dnd_behaviour.
* Display the Ekpo table
CALL METHOD obj_main->display_ekpo.
* Diaplay the vbap table
CALL METHOD obj_main->display_vbap.
CALL METHOD tree1->frontend_update.
CALL METHOD tree2->frontend_update.
ENDMETHOD. " Build_display
* Display EKPO *
METHOD display_ekpo.
* Data
DATA:
l_key1 TYPE lvc_nkey,
l_key2 TYPE lvc_nkey,
l_key3 TYPE lvc_nkey,
l_node_text TYPE lvc_value.
* ALV control service modules
CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
EXPORTING
i_buffer_active = 'X'
i_structure_name = 'EKPO'
i_client_never_display = 'X'
i_bypassing_buffer = space
CHANGING
ct_fieldcat = i_fcat_ekpo
EXCEPTIONS
inconsistent_interface = 1
program_error = 2
OTHERS = 3.
IF sy-subrc EQ 0.
DELETE i_fcat_ekpo FROM 4.
ENDIF. " IF sy-subrc EQ 0.
g_hierarchy_header-heading = 'Purchase Order Details'(001).
g_hierarchy_header-tooltip = 'Purchase Order'(002).
g_hierarchy_header-width = c_30.
g_hierarchy_header-width_pix = ' '.
* Diaply
CALL METHOD tree1->set_table_for_first_display
EXPORTING
is_hierarchy_header = g_hierarchy_header
is_variant = g_variant
CHANGING
it_outtab = obj_main->i_ekpo_op
it_fieldcatalog = i_fcat_ekpo.
LOOP AT i_ekpo INTO wa_ekpo1.
MOVE wa_ekpo1 TO wa_ekpo.
l_key1 = ''.
AT NEW ebeln.
MOVE wa_ekpo-ebeln TO l_node_text.
* Call method for Add Node to Ekpo
CALL METHOD add_node_ekpo
EXPORTING
table = wa_ekpo
key = l_key1
text = l_node_text
flag = space
CHANGING
i_key = l_key2.
ENDAT.
CLEAR l_node_text.
MOVE wa_ekpo-ebelp TO l_node_text.
* Call method for Add Node to Ekpo
CALL METHOD add_node_ekpo
EXPORTING
table = wa_ekpo
key = l_key2
text = l_node_text
flag = 'X'
CHANGING
i_key = l_key3.
ENDLOOP. " LOOP AT i_ekpo INTO wa_ekpo1.
* Call method For Register events
CALL METHOD register_events_ekpo.
ENDMETHOD. " Display_ekpo
* Display VBAP *
METHOD display_vbap.
* Data
DATA:
l_key1 TYPE lvc_nkey,
l_key2 TYPE lvc_nkey,
l_key3 TYPE lvc_nkey,
l_node_text TYPE lvc_value.
REFRESH i_fcat_vbap.
* ALV control service modules
CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
EXPORTING
i_buffer_active = 'X'
i_structure_name = 'VBAP'
i_client_never_display = 'X'
i_bypassing_buffer = space
CHANGING
ct_fieldcat = i_fcat_vbap
EXCEPTIONS
inconsistent_interface = 1
program_error = 2
OTHERS = 3.
IF sy-subrc EQ 0.
DELETE i_fcat_vbap FROM 4.
ENDIF. " IF sy-subrc EQ 0.
g_hierarchy_header-heading = 'Sales Order Details'(003).
g_hierarchy_header-tooltip = 'Sales Order'(004).
g_hierarchy_header-width = c_30.
g_hierarchy_header-width_pix = ' '.
* Display
CALL METHOD tree2->set_table_for_first_display
EXPORTING
is_hierarchy_header = g_hierarchy_header
is_variant = g_variant
CHANGING
it_outtab = obj_main->i_vbap_op
it_fieldcatalog = i_fcat_vbap.
LOOP AT i_vbap INTO wa_vbap1.
MOVE wa_vbap1 TO wa_vbap.
l_key1 = ''.
AT NEW vbeln.
MOVE wa_vbap-vbeln TO l_node_text.
* Call method for Add Node to vbap
CALL METHOD add_node_vbap
EXPORTING
table = wa_vbap
key = l_key1
text = l_node_text
flag = 'X'
CHANGING
i_key = l_key2.
ENDAT.
CLEAR l_node_text.
MOVE wa_vbap-posnr TO l_node_text.
* Call method for Add Node to vbap
CALL METHOD add_node_vbap
EXPORTING
table = wa_vbap
key = l_key2
text = l_node_text
flag = space
CHANGING
i_key = l_key3.
ENDLOOP. " LOOP AT i_vbap INTO wa_vbap1.
* Call method For Register events
CALL METHOD register_events_vbap.
ENDMETHOD. " Display_vbap
* Add Node to Ekko *
METHOD add_node_ekpo.
* Data
DATA: l_layout_node TYPE lvc_s_layn.
IF flag = 'X'.
l_layout_node-dragdropid = g_handle_drag.
ENDIF. " IF flag = 'X'.
* Add node to tree1
CALL METHOD tree1->add_node
EXPORTING
i_relat_node_key = key
i_relationship = cl_gui_column_tree=>relat_last_child
is_outtab_line = table
i_node_text = text
is_node_layout = l_layout_node
IMPORTING
e_new_node_key = i_key
EXCEPTIONS
relat_node_not_found = 1
node_not_found = 2
OTHERS = 3.
IF sy-subrc NE 0.
CLEAR sy-subrc.
ENDIF. " IF sy-subrc NE 0.
ENDMETHOD. " Add_node_ekpo
* Add Node to Vbap *
METHOD add_node_vbap.
* Data
DATA: l_layout_node TYPE lvc_s_layn.
IF flag = 'X'.
l_layout_node-dragdropid = g_handle_drop.
ENDIF. " IF flag = 'X'.
* Add node for tree2
CALL METHOD t -
Two ALV's in single report without Using Containers
Hi All,
I have a requirement to show two ALV reports in a single report and the thing is I am not supposed to use Containers(Screen Painter). and OOPS concepts.
Is there a way we can achieve this?
Any valuable suggestion is highly appreciated.
Thanks-Hi rahul,
1. This simple program will give u an idea
of block alv.
-> Two or more alvs on same screen, without
using container or oops.
2. It will print two alv
a) itab = table from t001
b) ptab = table from t000
3. Just copy paste in new program.
REPORT zam_temp54 .
type-pools : slis.
data : alvfc type slis_t_fieldcat_alv.
data : alvly type slis_layout_alv.
data : alvev type slis_t_event .
DATA : BEGIN OF itab OCCURS 0.
include structure t001.
DATA: END OF itab.
DATA : BEGIN OF ptab OCCURS 0.
INCLUDE STRUCTURE t000.
DATA: END OF ptab..
PARAMETERS : a TYPE c.
start-of-selection.
*--------------- SELECT DATA
SELECT * FROM t001 into table itab.
select * from t000 into table ptab.
*--------------- INIT BLOCK ALV
CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_INIT'
EXPORTING
i_callback_program = sy-repid.
*--------------- ADD INTERNAL TABLE ITAB
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
I_PROGRAM_NAME = SY-REPID
I_INTERNAL_TABNAME = 'ITAB'
I_INCLNAME = SY-REPID
CHANGING
CT_FIELDCAT = ALVFC.
CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'
EXPORTING
is_layout = alvly
it_fieldcat = alvfc
i_tabname = 'ITAB'
it_events = alvev
TABLES
t_outtab = ITAB
EXCEPTIONS
program_error = 1
maximum_of_appends_reached = 2
OTHERS = 3.
*------------------- ADD INTERNAL TABLE PTAB
REFRESH ALVFC[].
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
I_PROGRAM_NAME = SY-REPID
I_INTERNAL_TABNAME = 'PTAB'
I_INCLNAME = SY-REPID
CHANGING
CT_FIELDCAT = ALVFC.
CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'
EXPORTING
is_layout = alvly
it_fieldcat = alvfc
i_tabname = 'PTAB'
it_events = alvev
TABLES
t_outtab = PTAB
EXCEPTIONS
program_error = 1
maximum_of_appends_reached = 2
OTHERS = 3.
*--------------- DISPLAY
CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_DISPLAY'
EXCEPTIONS
program_error = 1
OTHERS = 2.
regards,
amit m. -
Two ALV in Same Screen..
Hello Guys.....
As Per My New Requirement I Have to Display Data in two ALV Drid . like.........
ALV1
ALV2
In a sample Program at SAP slis library I found Two ALV in same screen but they are in ALV1 ALV2 format.. it's will not fullfill my requirement..
any one have any idea..
Please send me test program ..
Regard
Swati Namdev..Hi Swati,
see given code
REPORT Z7RNP_ALV_SO_BLOCK MESSAGE-ID Z7NEW .
TABLE DECLARATION
TABLES: VBAK , "Sales Document: Header Data
VBAP , "Sales Document: Item Data
MAKT , "Material Descriptions
LIPS . "SD document: Delivery: Item data
DECLARATION OF TYPE-POOL
*THIS TYPE-POOL CONTAINS THE EVENTS,
TYPE-POOLS : SLIS.
DECLARATION OF EVENTS
DECLARATION OF FIELD LAYOUT
DATA: I_LAYOUT TYPE SLIS_LAYOUT_ALV.
DATA: T_LAYOUT TYPE SLIS_LAYOUT_ALV.
DATA: T_EVENT TYPE SLIS_T_EVENT.
DATA: X_EVENT TYPE SLIS_ALV_EVENT.
DECLARATION OF LIST HEADER
DATA: I_LISTHEADER TYPE SLIS_T_LISTHEADER.
DECLARATION OF FIELD CATALOG FOR SCREEN 1
DATA: I_FLDCAT TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE.
DECLARATION OF FIELD CATALOG FOR SCREEN 2
DATA: I_FLDCAT2 TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE.
SORTING OF OUTPUT
DATA: I_SORT TYPE SLIS_T_SORTINFO_ALV.
DATA: T_SORT TYPE SLIS_T_SORTINFO_ALV.
*DATA DECLARATION
DATA: V_AUART TYPE TVAK-AUART,
V_VKORG TYPE TVKO-VKORG,
V_KUNNR TYPE KNA1-KUNNR,
V_MATNR TYPE MARA-MATNR ,
V_SPART TYPE TVTA-SPART .
DATA: V_REPID LIKE SY-REPID .
TYPES: BEGIN OF IT_SO ,
VBELN TYPE VBELN_VA , "SALES ORDER NO.
AUART TYPE AUART , "SALES DOC. TYPE
VKORG TYPE VKORG , "SALES ORG.
SPART TYPE SPART , "DIVISION
KUNNR TYPE KUNAG , "SOLD TO PARTY
POSNR TYPE POSNR_VA , "SALES DOC. ITEM
MATNR TYPE MATNR , "MATERIAL NO
MAKTX TYPE MAKTX , "DESCRIPTION
KWMENG TYPE KWMENG , "QUANTITY
VRKME TYPE VRKME , "SALES UNIT
END OF IT_SO .
TYPES: BEGIN OF IT_DEL ,
VBELN TYPE VBELN_VL , "SALES ORDER NO.
POSNR TYPE POSNR_VL , "SALES DOC. ITEM
MATNR TYPE MATNR , "MATERIAL NO
WERKS TYPE WERKS_D , "PLANT
LGORT TYPE LGORT_D , "STORAGE LOCATION
CHARG TYPE CHARG_D , "BATCH NO.
LFIMG TYPE LFIMG , "ACTUAL DELIVERY QTY.
VRKME TYPE VRKME , "SALES UNIT
END OF IT_DEL .
TYPES: BEGIN OF TYPE_VBFA ,
VBELV TYPE VBELN_VON ,
"Preceding sales and distribution document
POSNV TYPE POSNR_VON , "Preceding item of an SD document
VBELN TYPE VBELN_NACH ,
"Subsequent sales and distribution document
POSNN TYPE POSNR_NACH,
"Document category of subsequent document
VBTYP_N TYPE VBTYP_N ,
END OF TYPE_VBFA .
DATA: IT_SO1 TYPE STANDARD TABLE OF IT_SO ,
IT_DEL1 TYPE STANDARD TABLE OF IT_DEL ,
IT_VBFA TYPE STANDARD TABLE OF TYPE_VBFA,
IT_DEL_FUL TYPE STANDARD TABLE OF IT_DEL.
DATA: WA_SO TYPE IT_SO ,
WA_DEL TYPE IT_DEL ,
WA_VBFA TYPE TYPE_VBFA,
wa_IT_DEL_FUL TYPE IT_DEL.
*SELECTION SCREEN
SELECTION-SCREEN BEGIN OF BLOCK BLK1 WITH FRAME TITLE TEXT-004 .
SELECT-OPTIONS: S_VBELN FOR VBAK-VBELN ,
S_AUART FOR V_AUART ,
S_VKORG FOR V_VKORG ,
S_SPART FOR V_SPART ,
S_KUNNR FOR V_KUNNR ,
S_MATNR FOR V_MATNR .
SELECTION-SCREEN END OF BLOCK BLK1 .
*AT SELECTION SCREEN
AT SELECTION-SCREEN.
SELECT SINGLE VBELN
FROM VBAK INTO VBAK-VBELN
WHERE VBELN IN S_VBELN.
IF SY-SUBRC <> 0.
MESSAGE E202.
ENDIF.
*START OF SELECTION
INITIALIZATION.
V_REPID = SY-REPID.
START-OF-SELECTION .
PERFORM DATA_SELECT.
FOR BLOCK 1
PERFORM INITIALIZE_BLOCK .
PERFORM FLD_CAT USING I_FLDCAT[] .
PERFORM T_LAYOUT USING I_LAYOUT .
PERFORM I_SORT USING I_SORT .
PERFORM EVENT USING T_EVENT .
PERFORM CALL_ALV.
FOR BLOCK 2
PERFORM FLD_CAT2 USING I_FLDCAT2[] .
PERFORM I_LAYOUT USING I_LAYOUT .
PERFORM T_SORT USING I_SORT .
PERFORM EVENT1 USING T_EVENT .
PERFORM CALL_ALV1.
PERFORM BLOCK-DISPLAY .
*& Form DATA_SELECT
text
--> p1 text
<-- p2 text
FORM DATA_SELECT .
REFRESH: IT_VBFA, IT_SO1, IT_DEL1, IT_DEL_FUL.
SELECT
A~VBELN
A~AUART
A~VKORG
A~SPART
A~KUNNR
B~POSNR
B~MATNR
C~MAKTX
B~KWMENG
B~VRKME
INTO TABLE IT_SO1 FROM VBAK AS A
JOIN VBAP AS B ON BVBELN = AVBELN
JOIN MAKT AS C ON CMATNR = BMATNR
AND C~SPRAS = SY-LANGU
WHERE A~VBELN IN S_VBELN .
IF SY-SUBRC = 0.
SELECT VBELV POSNV VBELN POSNN VBTYP_N INTO TABLE IT_VBFA
FROM VBFA
FOR ALL ENTRIES IN IT_SO1
WHERE VBELV = IT_SO1-VBELN
AND POSNN = IT_SO1-POSNR
AND VBTYP_N ='J' .
IF SY-SUBRC = 0.
SELECT VBELN POSNR MATNR WERKS LGORT CHARG LFIMG VRKME
FROM LIPS INTO TABLE IT_DEL_FUL
FOR ALL ENTRIES IN IT_VBFA
WHERE VBELN = IT_VBFA-VBELN
AND POSNR = IT_VBFA-POSNN.
ENDIF.
ENDIF .
V_REPID = SY-REPID .
ENDFORM. " DATA_SELECT
*& Form INITIALIZE_BLOCK
text
--> p1 text
<-- p2 text
FORM INITIALIZE_BLOCK .
CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_INIT'
EXPORTING
I_CALLBACK_PROGRAM = V_REPID .
I_CALLBACK_PF_STATUS_SET = ' '
I_CALLBACK_USER_COMMAND = ' '
IT_EXCLUDING =
ENDFORM. " INITIALIZE_BLOCK
*& Form FLD_CAT
text
-->P_I_FLDCAT[] text
FORM FLD_CAT USING P_I_FLDCAT TYPE SLIS_T_FIELDCAT_ALV.
CLEAR I_FLDCAT.
I_FLDCAT-FIELDNAME = 'VBELN'. "FIELD FOR WHICH CATALOG ID FILLED
I_FLDCAT-TABNAME = 'IT_SO1'.
I_FLDCAT-SELTEXT_M = 'SALES ORDER NO.'.
I_FLDCAT-COL_POS = 1. " POSITION OF THE COLUMN.
I_FLDCAT-OUTPUTLEN = 20. " SET THE OUTPUT LENGTH.
I_FLDCAT-EMPHASIZE = 'X'. " COLOR OF THIS COLUMN.
I_FLDCAT-KEY = 'X'. " SO THAT THIS FIELD IS NOT
"SCROLLABLE AND HIDDABLE.
I_FLDCAT-HOTSPOT = 'X'.
APPEND I_FLDCAT.
CLEAR I_FLDCAT.
I_FLDCAT-FIELDNAME = 'AUART'. "FIELD FOR WHICH CATALOG ID FILLED
I_FLDCAT-TABNAME = 'IT_SO1'.
I_FLDCAT-SELTEXT_M = 'SALES DOC. TYPE'.
I_FLDCAT-COL_POS = 2. " POSITION OF THE COLUMN.
I_FLDCAT-OUTPUTLEN = 20. " SET THE OUTPUT LENGTH.
I_FLDCAT-EMPHASIZE = 'X'. " COLOR OF THIS COLUMN.
I_FLDCAT-KEY = 'X'.
" SO THAT THIS FIELD IS NOT SCROLLABLE AND HIDDABLE.
I_FLDCAT-HOTSPOT = 'X'.
APPEND I_FLDCAT.
CLEAR I_FLDCAT.
I_FLDCAT-FIELDNAME = 'VKORG'. "FIELD FOR WHICH CATALOG ID FILLED
I_FLDCAT-TABNAME = 'IT_SO1'.
I_FLDCAT-SELTEXT_M = 'SALES ORG.'.
I_FLDCAT-COL_POS = 3. " POSITION OF THE COLUMN.
I_FLDCAT-OUTPUTLEN = 20. " SET THE OUTPUT LENGTH.
I_FLDCAT-EMPHASIZE = 'X'. " COLOR OF THIS COLUMN.
I_FLDCAT-KEY = 'X'.
" SO THAT THIS FIELD IS NOT SCROLLABLE AND HIDDABLE.
I_FLDCAT-HOTSPOT = 'X'.
APPEND I_FLDCAT.
CLEAR I_FLDCAT.
I_FLDCAT-FIELDNAME = 'SPART'. "FIELD FOR WHICH CATALOG ID FILLED
I_FLDCAT-TABNAME = 'IT_SO1'.
I_FLDCAT-SELTEXT_M = 'DIVISION'.
I_FLDCAT-COL_POS = 4. " POSITION OF THE COLUMN.
I_FLDCAT-OUTPUTLEN = 20. " SET THE OUTPUT LENGTH.
I_FLDCAT-EMPHASIZE = 'X'. " COLOR OF THIS COLUMN.
I_FLDCAT-KEY = 'X'.
" SO THAT THIS FIELD IS NOT SCROLLABLE AND HIDDABLE.
I_FLDCAT-HOTSPOT = 'X'.
APPEND I_FLDCAT.
CLEAR I_FLDCAT.
I_FLDCAT-FIELDNAME = 'KUNNR'. "FIELD FOR WHICH CATALOG ID FILLED
I_FLDCAT-TABNAME = 'IT_SO1'.
I_FLDCAT-SELTEXT_M = 'SOLD TO PARTY'.
I_FLDCAT-COL_POS = 5. " POSITION OF THE COLUMN.
I_FLDCAT-OUTPUTLEN = 20. " SET THE OUTPUT LENGTH.
I_FLDCAT-EMPHASIZE = 'X'. " COLOR OF THIS COLUMN.
I_FLDCAT-KEY = 'X'.
" SO THAT THIS FIELD IS NOT SCROLLABLE AND HIDDABLE.
I_FLDCAT-HOTSPOT = 'X'.
APPEND I_FLDCAT.
CLEAR I_FLDCAT.
I_FLDCAT-FIELDNAME = 'POSNR'. "FIELD FOR WHICH CATALOG ID FILLED
I_FLDCAT-TABNAME = 'IT_SO1'.
I_FLDCAT-SELTEXT_M = 'SALES DOC. ITEM'.
I_FLDCAT-COL_POS = 6. " POSITION OF THE COLUMN.
I_FLDCAT-OUTPUTLEN = 20. " SET THE OUTPUT LENGTH.
I_FLDCAT-EMPHASIZE = 'X'. " COLOR OF THIS COLUMN.
I_FLDCAT-KEY = 'X'.
" SO THAT THIS FIELD IS NOT SCROLLABLE AND HIDDABLE.
I_FLDCAT-HOTSPOT = 'X'.
APPEND I_FLDCAT.
CLEAR I_FLDCAT.
I_FLDCAT-FIELDNAME = 'MATNR'. "FIELD FOR WHICH CATALOG ID FILLED
I_FLDCAT-TABNAME = 'IT_SO1'.
I_FLDCAT-SELTEXT_M = 'MATERIAL NO.'.
I_FLDCAT-COL_POS = 7. " POSITION OF THE COLUMN.
I_FLDCAT-OUTPUTLEN = 20. " SET THE OUTPUT LENGTH.
I_FLDCAT-EMPHASIZE = 'X'. " COLOR OF THIS COLUMN.
I_FLDCAT-KEY = 'X'.
" SO THAT THIS FIELD IS NOT SCROLLABLE AND HIDDABLE.
I_FLDCAT-HOTSPOT = 'X'.
APPEND I_FLDCAT.
CLEAR I_FLDCAT.
I_FLDCAT-FIELDNAME = 'MAKTX'. "FIELD FOR WHICH CATALOG ID FILLED
I_FLDCAT-TABNAME = 'IT_SO1'.
I_FLDCAT-SELTEXT_M = 'DESCRIPTION'.
I_FLDCAT-COL_POS = 8. " POSITION OF THE COLUMN.
I_FLDCAT-OUTPUTLEN = 20. " SET THE OUTPUT LENGTH.
I_FLDCAT-EMPHASIZE = 'X'. " COLOR OF THIS COLUMN.
I_FLDCAT-KEY = 'X'.
" SO THAT THIS FIELD IS NOT SCROLLABLE AND HIDDABLE.
I_FLDCAT-HOTSPOT = 'X'.
APPEND I_FLDCAT.
CLEAR I_FLDCAT.
I_FLDCAT-FIELDNAME = 'KWMENG'. "FIELD FOR WHICH CATALOG ID FILLED
I_FLDCAT-TABNAME = 'IT_SO1'.
I_FLDCAT-SELTEXT_M = 'QUANTITY'.
I_FLDCAT-COL_POS = 9. " POSITION OF THE COLUMN.
I_FLDCAT-OUTPUTLEN = 20. " SET THE OUTPUT LENGTH.
I_FLDCAT-EMPHASIZE = 'X'. " COLOR OF THIS COLUMN.
I_FLDCAT-KEY = 'X'.
" SO THAT THIS FIELD IS NOT SCROLLABLE AND HIDDABLE.
I_FLDCAT-HOTSPOT = 'X'.
APPEND I_FLDCAT.
CLEAR I_FLDCAT.
I_FLDCAT-FIELDNAME = 'VRKME'. "FIELD FOR WHICH CATALOG ID FILLED
I_FLDCAT-TABNAME = 'IT_SO1'.
I_FLDCAT-SELTEXT_M = 'SALES UNIT'.
I_FLDCAT-COL_POS = 10. " POSITION OF THE COLUMN.
I_FLDCAT-OUTPUTLEN = 20. " SET THE OUTPUT LENGTH.
I_FLDCAT-EMPHASIZE = 'X'. " COLOR OF THIS COLUMN.
I_FLDCAT-KEY = 'X'.
" SO THAT THIS FIELD IS NOT SCROLLABLE AND HIDDABLE.
I_FLDCAT-HOTSPOT = 'X'.
APPEND I_FLDCAT.
ENDFORM. " FLD_CAT
*& Form T_LAYOUT
text
-->P_I_LAYOUT text
FORM T_LAYOUT USING P_I_LAYOUT TYPE SLIS_LAYOUT_ALV .
P_I_LAYOUT-ZEBRA = 'X'.
P_I_LAYOUT-KEY_HOTSPOT = 'X'.
P_I_LAYOUT-F2CODE = 'DISP'.
ENDFORM. " T_LAYOUT
*& Form I_SORT
text
-->P_I_SORT text
FORM I_SORT USING P_I_SORT TYPE SLIS_T_SORTINFO_ALV .
DATA: I_SORT TYPE SLIS_SORTINFO_ALV .
REFRESH P_I_SORT .
CLEAR I_SORT.
I_sort-spos = 1.
I_sort-fieldname = 'VBELN'.
I_sort-up = 'X'.
I_sort-subtot = 'X'.
I_sort-group = '*'.
APPEND I_SORT TO P_I_SORT.
ENDFORM. " I_SORT
*& Form CALL_ALV
text
--> p1 text
<-- p2 text
FORM CALL_ALV .
CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'
EXPORTING
IS_LAYOUT = T_LAYOUT
IT_FIELDCAT = I_FLDCAT[]
I_TABNAME = 'IT_SO1'
IT_EVENTS = T_EVENT
IT_SORT = I_SORT
I_TEXT = TEXT-202
TABLES
T_OUTTAB = IT_SO1
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.
REFRESH T_EVENT .
CLEAR T_EVENT .
ENDFORM. " CALL_ALV
*& Form FLD_CAT2
text
-->P_I_FLDCAT2[] text
FORM FLD_CAT2 USING P_I_FLDCAT2 TYPE SLIS_T_FIELDCAT_ALV.
CLEAR I_FLDCAT2.
I_FLDCAT2-FIELDNAME = 'VBELN'. "FIELD FOR WHICH CATALOG ID FILLED
I_FLDCAT2-SELTEXT_M = 'DELIVERY NO.'.
I_FLDCAT2-COL_POS = 1. " POSITION OF THE COLUMN.
I_FLDCAT2-OUTPUTLEN = 20. " SET THE OUTPUT LENGTH.
I_FLDCAT2-EMPHASIZE = 'X'. " COLOR OF THIS COLUMN.
I_FLDCAT2-KEY = 'X'. " SO THAT THIS FIELD IS NOT
"SCROLLABLE AND HIDDABLE.
I_FLDCAT2-HOTSPOT = 'X'.
APPEND I_FLDCAT2.
CLEAR I_FLDCAT2.
I_FLDCAT2-FIELDNAME = 'POSNR'. "FIELD FOR WHICH CATALOG ID FILLED
I_FLDCAT2-SELTEXT_M = 'DELIVERY ITEM'.
I_FLDCAT2-COL_POS = 2. " POSITION OF THE COLUMN.
I_FLDCAT2-OUTPUTLEN = 20. " SET THE OUTPUT LENGTH.
I_FLDCAT2-EMPHASIZE = 'X'. " COLOR OF THIS COLUMN.
I_FLDCAT2-KEY = 'X'. " SO THAT THIS FIELD IS NOT
"SCROLLABLE AND HIDDABLE.
I_FLDCAT-HOTSPOT = 'X'.
APPEND I_FLDCAT2.
CLEAR I_FLDCAT2.
I_FLDCAT2-FIELDNAME = 'MATNR'. "FIELD FOR WHICH CATALOG ID FILLED
I_FLDCAT2-SELTEXT_M = 'MATERIAL NO.'.
I_FLDCAT2-COL_POS = 3. " POSITION OF THE COLUMN.
I_FLDCAT2-OUTPUTLEN = 20. " SET THE OUTPUT LENGTH.
I_FLDCAT2-EMPHASIZE = 'X'. " COLOR OF THIS COLUMN.
I_FLDCAT2-KEY = 'X'. " SO THAT THIS FIELD IS NOT
"SCROLLABLE AND HIDDABLE.
I_FLDCAT-HOTSPOT = 'X'.
APPEND I_FLDCAT2.
CLEAR I_FLDCAT2.
I_FLDCAT2-FIELDNAME = 'WERKS'. "FIELD FOR WHICH CATALOG ID FILLED
I_FLDCAT2-SELTEXT_M = 'PLANT.'.
I_FLDCAT2-COL_POS = 4. " POSITION OF THE COLUMN.
I_FLDCAT2-OUTPUTLEN = 20. " SET THE OUTPUT LENGTH.
I_FLDCAT2-EMPHASIZE = 'X'. " COLOR OF THIS COLUMN.
I_FLDCAT2-KEY = 'X'. " SO THAT THIS FIELD IS NOT
"SCROLLABLE AND HIDDABLE.
I_FLDCAT-HOTSPOT = 'X'.
APPEND I_FLDCAT2.
CLEAR I_FLDCAT2.
I_FLDCAT2-FIELDNAME = 'LGORT'. "FIELD FOR WHICH CATALOG ID FILLED
I_FLDCAT2-SELTEXT_M = 'ST. LOCATION'.
I_FLDCAT2-COL_POS = 5. " POSITION OF THE COLUMN.
I_FLDCAT2-OUTPUTLEN = 20. " SET THE OUTPUT LENGTH.
I_FLDCAT2-EMPHASIZE = 'X'. " COLOR OF THIS COLUMN.
I_FLDCAT2-KEY = 'X'. " SO THAT THIS FIELD IS NOT
"SCROLLABLE AND HIDDABLE.
I_FLDCAT-HOTSPOT = 'X'.
APPEND I_FLDCAT2.
CLEAR I_FLDCAT2.
I_FLDCAT2-FIELDNAME = 'CHARG'. "FIELD FOR WHICH CATALOG ID FILLED
I_FLDCAT2-SELTEXT_M = 'BATCH NO.'.
I_FLDCAT2-COL_POS = 6. " POSITION OF THE COLUMN.
I_FLDCAT2-OUTPUTLEN = 20. " SET THE OUTPUT LENGTH.
I_FLDCAT2-EMPHASIZE = 'X'. " COLOR OF THIS COLUMN.
I_FLDCAT2-KEY = 'X'. " SO THAT THIS FIELD IS NOT
"SCROLLABLE AND HIDDABLE.
I_FLDCAT-HOTSPOT = 'X'.
APPEND I_FLDCAT2.
CLEAR I_FLDCAT2.
I_FLDCAT2-FIELDNAME = 'LFIMG'. "FIELD FOR WHICH CATALOG ID FILLED
I_FLDCAT2-SELTEXT_M = 'ACT. DEL. QTY.'.
I_FLDCAT2-COL_POS = 7. " POSITION OF THE COLUMN.
I_FLDCAT2-OUTPUTLEN = 20. " SET THE OUTPUT LENGTH.
I_FLDCAT2-EMPHASIZE = 'X'. " COLOR OF THIS COLUMN.
I_FLDCAT2-KEY = 'X'. " SO THAT THIS FIELD IS NOT
"SCROLLABLE AND HIDDABLE.
I_FLDCAT-HOTSPOT = 'X'.
APPEND I_FLDCAT2.
CLEAR I_FLDCAT2.
I_FLDCAT2-FIELDNAME = 'VRKME'. "FIELD FOR WHICH CATALOG ID FILLED
I_FLDCAT2-SELTEXT_M = 'SALES UNIT.'.
I_FLDCAT2-COL_POS = 8. " POSITION OF THE COLUMN.
I_FLDCAT2-OUTPUTLEN = 20. " SET THE OUTPUT LENGTH.
I_FLDCAT2-EMPHASIZE = 'X'. " COLOR OF THIS COLUMN.
I_FLDCAT2-KEY = 'X'. " SO THAT THIS FIELD IS NOT
"SCROLLABLE AND HIDDABLE.
I_FLDCAT-HOTSPOT = 'X'.
APPEND I_FLDCAT2.
ENDFORM. " FLD_CAT2
*& Form I_LAYOUT
text
-->P_I_LAYOUT text
FORM I_LAYOUT USING P_I_LAYOUT TYPE SLIS_LAYOUT_ALV .
P_I_LAYOUT-ZEBRA = 'X'.
P_I_LAYOUT-KEY_HOTSPOT = 'X'.
P_I_LAYOUT-F2CODE = 'DISP'.
ENDFORM. " I_LAYOUT
*& Form CALL_ALV1
text
--> p1 text
<-- p2 text
FORM CALL_ALV1 .
CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'
EXPORTING
IS_LAYOUT = I_LAYOUT
IT_FIELDCAT = I_FLDCAT2[]
I_TABNAME = 'IT_DEL_FUL'
IT_EVENTS = T_EVENT
IT_SORT =
I_TEXT = ' '
TABLES
T_OUTTAB = IT_DEL_FUL
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. " CALL_ALV1
*& Form BLOCK-DISPLAY
text
--> p1 text
<-- p2 text
FORM BLOCK-DISPLAY .
CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_DISPLAY'
EXPORTING
I_INTERFACE_CHECK = ' '
IS_PRINT =
I_SCREEN_START_COLUMN = 0
I_SCREEN_START_LINE = 0
I_SCREEN_END_COLUMN = 0
I_SCREEN_END_LINE = 0
IMPORTING
E_EXIT_CAUSED_BY_CALLER =
ES_EXIT_CAUSED_BY_USER =
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. " BLOCK-DISPLAY
*& Form EVENT
text
-->P_T_EVENT text
FORM EVENT USING P_T_EVENT type slis_t_event.
x_event-form = 'TOP_OF_LIST1'.
x_event-name = slis_ev_top_of_list.
append x_event to p_t_event.
clear x_event .
ENDFORM. " EVENT
*& Form EVENT1
text
-->P_T_EVENT text
FORM EVENT1 USING P_T_EVENT type slis_t_event.
x_event-form = 'TOP_OF_LIST2'.
x_event-name = slis_ev_top_of_list.
append x_event to p_t_event.
ENDFORM. " EVENT1
FORM TOP_OF_LIST1.
SKIP 1.
WRITE: 10 'BLOCK LIST 1 FOR SALES ORDER DETAILS ' COLOR 4 .
skip 1.
format reset.
endform.
FORM TOP_OF_LIST2.
skip 1.
WRITE: 10 'BLOCK LIST 2 FOR DELIVERY ORDER DETAILS ' COLOR 4 .
skip 1.
format reset.
endform.
Reward point if useful. -
Hi Abapers,
I have small query
<b>Can we add Two ALV on the selection Screen. I am not talking about OOALV or not Block ALV</b>
Please suggest if it can be possible to create two ALV on screen using Simple ABAP.HI,
REPORT YMS_TWOALV .
TYPE-POOLS: slis.
DATA: BEGIN OF i_clients OCCURS 0,
mandt LIKE t000-mandt,
mtext LIKE t000-mtext,
ort01 LIKE t000-ort01.
DATA: END OF i_clients.
DATA: BEGIN OF i_industry OCCURS 0,
mandt LIKE t016t-mandt,
spras LIKE t016t-spras,
brsch LIKE t016t-brsch,
brtxt LIKE t016t-brtxt.
DATA: END OF i_industry.
DATA: i_fcat_c TYPE slis_t_fieldcat_alv,
i_fcat_i TYPE slis_t_fieldcat_alv.
DATA: i_layout_c TYPE slis_layout_alv.
DATA: i_layout_i TYPE slis_layout_alv.
DATA: i_events_c TYPE slis_t_event.
DATA: i_events_i TYPE slis_t_event.
DATA: gt_print TYPE slis_print_alv.
START-OF-SELECTION.
*BREAK-POINT.
SELECT mandt mtext ort01
FROM t000 INTO CORRESPONDING FIELDS OF TABLE i_clients.
SELECT mandt spras brsch brtxt
FROM t016t INTO CORRESPONDING FIELDS OF TABLE i_industry.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
i_program_name = 'ZKB_BLOCK_LIST_REPORT'
i_internal_tabname = 'I_CLIENTS'
I_STRUCTURE_NAME = 'T000'
I_CLIENT_NEVER_DISPLAY = 'X'
I_INCLNAME = 'ZKB_BLOCK_LIST_REPORT'
I_BYPASSING_BUFFER =
I_BUFFER_ACTIVE =
CHANGING
ct_fieldcat = i_fcat_c
EXCEPTIONS
inconsistent_interface = 1
program_error = 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.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
i_program_name = 'ZKB_BLOCK_LIST_REPORT'
i_internal_tabname = 'I_INDUSTRY'
I_STRUCTURE_NAME =
I_CLIENT_NEVER_DISPLAY = 'X'
I_INCLNAME = 'ZKB_BLOCK_LIST_REPORT'
I_BYPASSING_BUFFER =
I_BUFFER_ACTIVE =
CHANGING
ct_fieldcat = i_fcat_i
EXCEPTIONS
inconsistent_interface = 1
program_error = 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.
CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_INIT'
EXPORTING
i_callback_program = 'ZKB_BLOCK_LIST_REPORT'
I_CALLBACK_PF_STATUS_SET = ' '
I_CALLBACK_USER_COMMAND = ' '
IT_EXCLUDING =
CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'
EXPORTING
is_layout = i_layout_c
it_fieldcat = i_fcat_c
i_tabname = 'I_CLIENTS'
it_events = i_events_c
IT_SORT =
I_TEXT = ' '
TABLES
t_outtab = i_clients
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.
CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'
EXPORTING
is_layout = i_layout_i
it_fieldcat = i_fcat_i
i_tabname = 'I_INDUSTRY'
it_events = i_events_i
IT_SORT =
I_TEXT = ' '
TABLES
t_outtab = i_industry
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.
gt_print-reserve_lines = 2.
CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_DISPLAY'
EXPORTING
I_INTERFACE_CHECK = ' '
is_print = gt_print
I_SCREEN_START_COLUMN = 0
I_SCREEN_START_LINE = 0
I_SCREEN_END_COLUMN = 0
I_SCREEN_END_LINE = 0
IMPORTING
E_EXIT_CAUSED_BY_CALLER =
ES_EXIT_CAUSED_BY_USER =
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.
Thanks,
Sankar M -
Hi all.
I'm facing the problem to generate two PDFs from two ALVs contained in the same screen (in two different containers).
I was thinking to use FM CONVERT_ABAPSPOOLJOB_2_PDF, but the problem is that in the spool I only see one ALV.
Does anybody knows how to find some workaround?
Thanks in advance.
JordiHello,
Does the report produces two Spool Id or only one.
If the report produces two spool id then call the FM for both the spools.
Cheers,
Vasanth -
How can I get the selected rows from two ALV grids at the same time?
I have a program that uses two ALV grids in one dialog screen. I'm using the OO ALV model (SALV* classes).
The user can select any number of rows from each grid. Then, when a toolbar pushbutton is pressed, I'd have to retrieve the selected rows from both grids and start some processing with these rows.
It is no problem to assign event handlers to both grids, and use the CL_SALV_TABLE->GET_SELECTIONS and CL_SALV_SELECTIONS->GET_SELECTED_ROWS methods to find out which rows were marked by the user. Trouble is, this only works when I raise an event in each grid separately, for instance via an own function that I added to the grid's toolbar. So, I can only see the selected rows of the same grid where such an event was raised.
If I try to do this in the PBO of the dialog screen (that contains the two grids), the result of CL_SALV_SELECTIONS->GET_SELECTED_ROWS will be empty, as the program does not recognize the marked entries in the grids. Also, an event for grid1 does not see the selected rows from grid2 either.
As it is right now, I can have an own button in both grid's toolbar, select the rows, click on the extra button in each grid (this will tell me what entries were selected per grid). Then, I'd have to click on a third button (the one in the dialog screen's toolbar), and process the selected rows from both grids.
How can I select the rows, then click on just one button, and process the marked entries from both grids?
Is it somehow possible to raise an event belonging to each grid programmatically, so that then the corresponding CL_SALV_SELECTIONS->GET_SELECTED_ROWS will work?
Thanks.Hello Tamas ,
If I try to do this in the PBO of the dialog screen (that contains the two grids), the result of CL_SALV_SELECTIONS->GET_SELECTED_ROWS will be empty, as the program does not recognize the marked entries in the grids. Also, an event for grid1 does not see the selected rows from grid2 either.--->
is it possible to have a check box in each grid & get the selected lines in PAI of the screen ?
regards
prabhu -
I have two IPhones and one IPad all with the same Apple ID. I can call facetime between the two IPhones, but I cannot call the IPAD from either of the IPhones and when I call my IPhone from the IPad it rings my wife's IPhone after briefly calling mine.
Each device needs a separate address. Use an email address (gmail.com) on the iPad.
Using FaceTime http://support.apple.com/kb/ht4319
Troubleshooting FaceTime http://support.apple.com/kb/TS3367
The Complete Guide to FaceTime + iMessage: Setup, Use, and Troubleshooting
http://tinyurl.com/a7odey8
Troubleshooting FaceTime and iMessage activation
http://support.apple.com/kb/TS4268
Using FaceTime and iMessage behind a firewall
http://support.apple.com/kb/HT4245
iOS: About Messages
http://support.apple.com/kb/HT3529
Set up iMessage
http://www.apple.com/ca/ios/messages/
Troubleshooting Messages
http://support.apple.com/kb/TS2755
Setting Up Multiple iOS Devices for iMessage and Facetime
http://macmost.com/setting-up-multiple-ios-devices-for-messages-and-facetime.htm l
FaceTime and iMessage not accepting Apple ID password
http://www.ilounge.com/index.php/articles/comments/facetime-and-imessage-not-acc epting-apple-id-password/
Unable to use FaceTime and iMessage with my apple ID
https://discussions.apple.com/thread/4649373?tstart=90
For non-Apple devices, check out the TextFree app https://itunes.apple.com/us/app/text-free-textfree-sms-real/id399355755?mt=8
How to Send SMS from iPad
http://www.iskysoft.com/apple-ipad/send-sms-from-ipad.html
Cheers, Tom -
Two AlV Grids in a single screen
I want to bring two ALV GRIDS in a single report output screen.How can i achieve this through Classical coding( not OBJECT ORIENTED ). If possible please provide with codes.
thanks,
VenkatHello Venkat
I agree that using fm's this is an almost impossible task whereas using OO-based ALV lists it is just a piece of cake.
For a sample have a look at report ZUS_SDN_TWO_ALV_GRIDS in thread alv
or report ZUS_SDN_THREE_ALV_GRIDS in thread Alv
Regards
Uwe -
Drag and Drop between two ALV Tree.
Hi,
I am trying the drag and drop event between two ALV Tree.
After the occurence of drag and drop event , I am able to get the node key of the source tree node which is dragged . But when the node is dropped onto the target ALV Tree the target node does not gets selected, instead a plus mark appears focussing on the target node in the target ALV Tree. Can anyone suggest a way to get the node key of the focussed target node. Thanks.
Regards,
Prabaharanhey Prabaharan,
y don't u check this link once
u may get some idea
Re: ALV tree - change node text
Regards
Naveen -
Report with two ALV grids and a header
Hi experts,
I have a report with two ALV grids in the same screen, each one in a separated container. The information displays it correctly. The report has been implemented by using OO Programming.
My real trouble is in the header. It must have a logo, a title with a specific font and other information.
I'll attach a capture of my need:
[Report with two ALV grids and a header|http://picasaweb.google.com/lh/photo/AcQD49QPmm-0L_jL2iMedA?feat=directlink]
Then, I want to set up the header you can see, with logo, a font with specific features. Obviously, the header you see has taken from another report. But is the same idea.
I've tried with a third container, using the CL_GUI_CONTAINER and CL_GUI_CONTAINER classes, but it doesn't work.
Any idea? Would welcome any help you can provide.
Thanks in advance,
Jorge RojasHi, Jorge.
Should the header be a"attached" to any of the ALV? Or it should be carried alone?
If first applies, you've given the solution yourself: put the info & logo in first ALV's header and invoke it from the proper method.
You could use CL_GUI_DOCKING_CONTAINER CLASS to divide screen in several containers and then, in the upper one, I would create another one docking container to divide the screen into two: the written info could be performed with an HTML viewer class and the logo with a CL_GUI_PICTURE element.
Cheers.
Maybe you are looking for
-
My Downloads folder has reached 30GB. I am not sure why I keep adding files without ever cleaning up what's there. As a matter of fact, what's there can easily be re-downloaded from the web in case of need. Can I safely trash 100% of the content of m
-
How to run the form that is only installed on a PC and not using a server?
Hi I am new to Oracle and have taken the forms class. But I do not understand how to run the form from my PC using XP windows. (Do not have access to a server). I have started the OC4J, made sure the listener was started, compiled the form and then w
-
How to find out the customer name
I m making a report for qm I need the customer name against the KUNNR field I have tried to find the customer name but i didnt plz anyone can tell me where can i find the customer name and address. thanks
-
Dynamic internal table+function module
Hi guys, I need a help.Could u plz tell me how to pass a field symbol contexts inside an export parameter? Points will be rewarded for helpful answers....
-
Question on process integrator
Sir i need to merge two tables from heterogeneous data sources and apply multiple join conditions. The tables contain very large data volumes. What is the recommended method to maximize performance and reduce system resources pls reply back soon sir