Sorting ALV grid by clicking on header.
Hey everyone.
I've got a report displaying an ALV grid where I really don't want to have the toolbar for it showing, so i've taken that out. But I would like to be able to sort the data in the grid by clicking on a field in the header.
I've seen this in some standard SAP programs, is it very easy to implement?
Any help much appreciated,
Cheers.
Hi,
Go through the following link.
https://www.sdn.sap.com/irj/scn/go/portal/prtroot/docs/library/uuid/e8a1d690-0201-0010-b7ad-d9719a415907
hope it helps.
Regards
Rajesh Kumar
Similar Messages
-
I have created an ALV grid with a dropdown as one of the columns. This all works fine, except that I want to be able to react to a change in the value of each line's dropdown.
Currently I am reacting to the DATA_CHANGED event of the ALV grid, but that is too late. This event is only triggered if you change the value of the dropdown and then hit enter, or click on another cell or row.
I want to be able to react to a change in the value immediately without having to lose focus of the dropdown.
Is this possible?
As an example, I have a table of records with one column as a dropdown called "Reason". A change in "reason" should change which fields in the row are editable. I'm sure I could just make sure to call the check_changed_data method before saving but I am hoping for a more user-friendly approach where as the new value is selected, the columns in the row can change to their required editable status.
Of course points will be awarded.Hi David,
Instead of using delayed call back event here i hav used data_changed event and this exacty suits ur requirement.....
even here we have to register the edit events............
PROGRAM bcalv_edit_06.
* Purpose:
* ~~~~~~~~
* This example shows how to define a dropdown listbox for all cells
* of one column in an editable ALV Grid Control.
* To check program behavior
* ~~~~~~~~~~~~~~~~~~~~~~~~~
* Klick on the dropdown button of column 'WUNIT'. It shows
* 'KG' and 'G' as suitable units for luggage weight.
* (The standard F4-Help shows many other units that does not
* make sense in this context).
* Essential steps (search for '§')
* ~~~~~~~~~~~~~~~
* 1.Define a dropdown table and pass it to ALV.
* 2.Set status of column WUNIT to editable and set a dropdown handle.
CLASS lcl_event_responder DEFINITION.
PUBLIC SECTION.
METHODS refresh_changed_data FOR EVENT data_changed
OF cl_gui_alv_grid
IMPORTING er_data_changed
e_ucomm.
ENDCLASS. "event_responder DEFINITION
DATA: ok_code LIKE sy-ucomm,
save_ok LIKE sy-ucomm,
g_container TYPE scrfname VALUE 'BCALV_GRID_DEMO_0100_CONT1',
handler TYPE REF TO lcl_event_responder,
g_grid TYPE REF TO cl_gui_alv_grid,
g_custom_container TYPE REF TO cl_gui_custom_container,
gt_fieldcat TYPE lvc_t_fcat,
gs_layout TYPE lvc_s_layo,
g_max TYPE i VALUE 100.
DATA: gt_outtab TYPE TABLE OF sbook.
* MAIN *
END-OF-SELECTION.
CALL SCREEN 100.
* MODULE PBO OUTPUT *
MODULE pbo OUTPUT.
SET PF-STATUS 'MAIN100'.
SET TITLEBAR 'MAIN100'.
IF g_custom_container IS INITIAL.
PERFORM create_and_init_alv CHANGING gt_outtab
gt_fieldcat.
ENDIF.
ENDMODULE. "pbo OUTPUT
* MODULE PAI INPUT *
MODULE pai INPUT.
save_ok = ok_code.
CLEAR ok_code.
CASE save_ok.
WHEN 'EXIT'.
PERFORM exit_program.
WHEN OTHERS.
* do nothing
ENDCASE.
ENDMODULE. "pai INPUT
* FORM EXIT_PROGRAM *
FORM exit_program.
LEAVE PROGRAM.
ENDFORM. "exit_program
*& Form BUILD_FIELDCAT
* text
* <--P_GT_FIELDCAT text
FORM build_fieldcat CHANGING pt_fieldcat TYPE lvc_t_fcat.
DATA ls_fcat TYPE lvc_s_fcat.
CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
EXPORTING
i_structure_name = 'SBOOK'
CHANGING
ct_fieldcat = pt_fieldcat.
LOOP AT pt_fieldcat INTO ls_fcat.
IF ls_fcat-fieldname EQ 'WUNIT'.
*§2.Set status of column WUNIT to editable and set a dropdown handle.
ls_fcat-edit = 'X'.
ls_fcat-drdn_hndl = '1'.
ls_fcat-outputlen = 7.
* Field 'checktable' is set to avoid shortdumps that are caused
* by inconsistend data in check tables. You may comment this out
* when the test data of the flight model is consistent in your system.
ls_fcat-checktable = '!'. "do not check foreign keys
MODIFY pt_fieldcat FROM ls_fcat.
ENDIF.
ENDLOOP.
ENDFORM. "build_fieldcat
*& Form CREATE_AND_INIT_ALV
* text
* <--P_GT_OUTTAB text
* <--P_GT_FIELDCAT text
* <--P_GS_LAYOUT text
FORM create_and_init_alv CHANGING pt_outtab LIKE gt_outtab[]
pt_fieldcat TYPE lvc_t_fcat.
DATA: lt_exclude TYPE ui_functions,
lt_f4 TYPE lvc_t_f4 WITH HEADER LINE.
CREATE OBJECT g_custom_container
EXPORTING container_name = g_container.
CREATE OBJECT g_grid
EXPORTING i_parent = g_custom_container.
* Build fieldcat and set column WUNIT
* edit enabled. Assign a handle for the dropdown listbox.
PERFORM build_fieldcat CHANGING pt_fieldcat.
* Optionally restrict generic functions to 'change only'.
* (The user shall not be able to add new lines).
PERFORM exclude_tb_functions CHANGING lt_exclude.
* Define a drop down table.
PERFORM set_drdn_table.
SELECT * FROM sbook INTO TABLE pt_outtab UP TO g_max ROWS.
IF sy-subrc NE 0.
* generate own entries if database table is empty
PERFORM generate_entries CHANGING pt_outtab.
ENDIF.
CALL METHOD g_grid->set_table_for_first_display
EXPORTING
it_toolbar_excluding = lt_exclude
CHANGING
it_fieldcatalog = pt_fieldcat
it_outtab = pt_outtab.
* Set editable cells to ready for input initially
CALL METHOD g_grid->set_ready_for_input
EXPORTING
i_ready_for_input = 1.
g_grid->register_edit_event(
EXPORTING
i_event_id = cl_gui_alv_grid=>mc_evt_modified ). "Registering edit events
CREATE OBJECT handler.
SET HANDLER handler->refresh_changed_data FOR g_grid.
CLEAR lt_f4.
lt_f4-fieldname = 'WUNIT'.
lt_f4-register = 'X'.
APPEND lt_f4.
ENDFORM. "CREATE_AND_INIT_ALV
*& Form EXCLUDE_TB_FUNCTIONS
* text
* <--P_LT_EXCLUDE text
FORM exclude_tb_functions CHANGING pt_exclude TYPE ui_functions.
* Only allow to change data not to create new entries (exclude
* generic functions).
DATA ls_exclude TYPE ui_func.
ls_exclude = cl_gui_alv_grid=>mc_fc_loc_copy_row.
APPEND ls_exclude TO pt_exclude.
ls_exclude = cl_gui_alv_grid=>mc_fc_loc_delete_row.
APPEND ls_exclude TO pt_exclude.
ls_exclude = cl_gui_alv_grid=>mc_fc_loc_append_row.
APPEND ls_exclude TO pt_exclude.
ls_exclude = cl_gui_alv_grid=>mc_fc_loc_insert_row.
APPEND ls_exclude TO pt_exclude.
ls_exclude = cl_gui_alv_grid=>mc_fc_loc_move_row.
APPEND ls_exclude TO pt_exclude.
ls_exclude = cl_gui_alv_grid=>mc_fc_loc_copy.
APPEND ls_exclude TO pt_exclude.
ls_exclude = cl_gui_alv_grid=>mc_fc_loc_cut.
APPEND ls_exclude TO pt_exclude.
ls_exclude = cl_gui_alv_grid=>mc_fc_loc_paste.
APPEND ls_exclude TO pt_exclude.
ls_exclude = cl_gui_alv_grid=>mc_fc_loc_paste_new_row.
APPEND ls_exclude TO pt_exclude.
ls_exclude = cl_gui_alv_grid=>mc_fc_loc_undo.
APPEND ls_exclude TO pt_exclude.
ENDFORM. " EXCLUDE_TB_FUNCTIONS
*& Form set_drdn_table
* text
* --> p1 text
* <-- p2 text
FORM set_drdn_table.
*§1.Define a dropdown table and pass it to ALV.
* One listbox is referenced by a handle, e.g., '1'.
* For each entry that shall appear in this listbox
* you have to append a line to the dropdown table
* with handle '1'.
* This handle can be assigned to several columns
* of the output table using the field catalog.
DATA: lt_dropdown TYPE lvc_t_drop,
ls_dropdown TYPE lvc_s_drop.
* First listbox (handle '1').
ls_dropdown-handle = '1'.
ls_dropdown-value = 'KG'.
APPEND ls_dropdown TO lt_dropdown.
ls_dropdown-handle = '1'.
ls_dropdown-value = 'G'.
APPEND ls_dropdown TO lt_dropdown.
CALL METHOD g_grid->set_drop_down_table
EXPORTING
it_drop_down = lt_dropdown.
ENDFORM. " set_drdn_table
*& Form generate_entries
* text
* <--P_LT_SLFIGHT text
FORM generate_entries CHANGING pt_sbook TYPE STANDARD TABLE.
* This form is only needed if database table sbook is empty.
* It generates some entries so that you may
* still try out this example program.
DATA: ls_sbook TYPE sbook,
l_month(2) TYPE c,
l_day(2) TYPE c,
l_date(8) TYPE c,
l_prebookid TYPE i.
ls_sbook-carrid = 'LH'.
ls_sbook-connid = '0400'.
ls_sbook-forcurkey = 'DEM'.
ls_sbook-loccurkey = 'USD'.
ls_sbook-custtype = 'B'.
DO 110 TIMES.
l_prebookid = sy-index.
ls_sbook-forcuram = sy-index * 10.
ls_sbook-loccuram = ls_sbook-loccuram * 2.
ls_sbook-customid = sy-index.
ls_sbook-counter = 18.
ls_sbook-agencynum = 11.
l_month = sy-index / 10 + 1.
DO 2 TIMES.
l_day = 3 + l_month + sy-index * 2.
l_date+0(4) = '2000'.
l_date+4(2) = l_month.
l_date+6(2) = l_day.
ls_sbook-fldate = l_date.
SUBTRACT 3 FROM l_day.
ls_sbook-order_date+0(6) = l_date+0(6).
ls_sbook-order_date+6(2) = l_day.
ls_sbook-bookid = l_prebookid * 2 + sy-index.
IF sy-index EQ 1.
ls_sbook-smoker = 'X'.
ELSE.
ls_sbook-smoker = space.
ENDIF.
ls_sbook-luggweight = l_prebookid * 10.
IF ls_sbook-luggweight GE 1000.
ls_sbook-wunit = 'G'.
ls_sbook-class = 'C'.
ELSE.
ls_sbook-wunit = 'KG'.
ls_sbook-class = 'Y'.
ENDIF.
IF ls_sbook-bookid > 40 AND ls_sbook-wunit EQ 'KG'.
ls_sbook-invoice = 'X'.
ENDIF.
IF ls_sbook-bookid EQ 2.
ls_sbook-cancelled = 'X'.
ls_sbook-class = 'F'.
ENDIF.
APPEND ls_sbook TO pt_sbook.
ENDDO.
ENDDO.
ENDFORM. " generate_entries
* CLASS event_responder IMPLEMENTATION
CLASS lcl_event_responder IMPLEMENTATION.
METHOD refresh_changed_data.
BREAK-POINT.
ENDMETHOD. "click
ENDCLASS. "event_responder IMPLEMENTATION -
Print Issue with Sorted ALV Grid
Hi Team,
I am using ALV display for my Program. Iam using REUSE_ALV_GRID_DISPLAY. Also i have a Sorting condition for my ALV grid. So iam filling the Sort table & passing it to the Function module. The data is displayed correctly with Sorting as required in the Output.
Now the issue is with: Print from this ALV. When we try to print the data, The requirement is that the Print should be same as how it is displayed in the ALV. "Grouped Columns"..... But now, the Print is that all the data is filled in all the columns. But user wants the Print also to appear same as it is shown in a Sorted ALV display.(With some similar column data missing in succeding sort columns until new entry starts)
Please suggest a solution to acheive the same.
Thanks & regards,
ChaitanyaLook at Q#19 in the note 1009650. Merging functionality is available only for ALV grid display.
Related Note: 447055
Work around would be to display the excel in the SAP window (Excel in Place) and print it from Excel. Read the following thread to make the necessary settings to make it work. Download Report exactly same as seems with Layout set !!
Edited by: Jeevan Sagar on Jan 19, 2012 12:38 AM -
ALV GRID - double click event - hot spot event
Dear developers
I am building a custom application using ALV GRID (OO method).
I have three ALV's on the screen.
User selects a cell on the first ALV from the list. say a specific product group.
The second ALV displays the product records depnding on selection of first ALV. (this works fine).
when the user selects a cell of a specific column on ALV grid 2 using double click event or hotspot I am always getting row ID as 1 , irrespective of the user clickin on row 2 or 3 on the specific cell.
To carry out further processing , I need to get the exact row the user is selecting which I expected to be available in LVC_S_ROID. My further process works always with ROW ID as 1.
I am using event hot spot in alv grid 1. In grid 2 I tried both hot spot and double click . But both returns the index value of row as 1 , irrespective of the cell being clicked is beyond row 1. in second grid.
Looking forward for help or suggestion on this,
Regards
KumarHi
The handler is implemented as follows for all ALV GRIDs.
I give below only the relevant one grid 2 from my code.
Class definition
**03/17/2005 skulist hotspot
handle_skulist FOR EVENT hotspot_click OF cl_gui_alv_grid
IMPORTING e_row_id e_column_id es_row_no,
Class implementation
**03/17/2005 sku list by currency hotspot on listprice
METHOD handle_skulist .
PERFORM handle_skulist USING e_row_id e_column_id es_row_no.
ENDMETHOD. "HANDLE_HOTSPOT_CLICK
DATA gr_event_handler TYPE REF TO lcl_event_handler.
DATA gr_event_handler_4 TYPE REF TO lcl_event_handler.
The above are done in an include and are public in nature.
Also note that I have similar implementation for similar events for grid 1 bu the event handlers are registered in different names.
The code below is in the maib program , under a custom container for grid 2
CREATE OBJECT gr_event_handler_4.
SET HANDLER gr_event_handler_4->handle_skulist FOR gr_alvgrid1.
*Based on the user action on grid 2 this form is getting executed. But as I said earlier the parameter I am getting for index is 1 always.
FORM handle_skulist USING i_row_id1 TYPE lvc_s_row
i_column_id1 TYPE lvc_s_col
is_row_no1 TYPE lvc_s_roid. -
Problem in handling double click in the second alv grid control
Hi all,
I have a screen. In the screen , I have 2 custom container and each custom container has 1 alv grid control.
I need to handle double click event for both of alv grid controls in my screen.
I defined 2 local event handler class for each alv grid and defined 2 handle_double_click event.
In the first Alv grid double click works fine , everything is ok, world is peaceful.
But in the second alvgrid, the row parameters (E_ROW, E_COLUMN, ES_ROW_NO) comes initial so i cannot handle it.
All i need is to call a different transaction (displaying the equipment-IE03) when user double-click on a field in the second alv grid control. I tried to use hotspot_click event too but it does'nt give the row id either.
I read some posts in the forms ([Double click event of alv grid control|Double click event of alv grid control]).
I tried everything but nothing works.
Please help. Your answers will be appreciated.Hello Eagle
I am not sure where the problem lies in your case but sample report ZUS_SDN_THREE_ALV_GRIDS_01 shows that you can always find out the current cell after the double-click event (in any case you have the current cell already as IMPORTING parameters of the event):
*& Report ZUS_SDN_THREE_ALV_GRIDS_01
*& Flow logic of screen '0100' (no screen elements, ok-code => GD_OKCODE):
** PROCESS BEFORE OUTPUT.
** MODULE STATUS_0100.
** PROCESS AFTER INPUT.
** MODULE USER_COMMAND_0100.
*& Thread: problem in handling double click in the second alv grid control
*& <a class="jive_macro jive_macro_thread" href="" __jive_macro_name="thread" modifiedtitle="true" __default_attr="1172052"></a>
REPORT zus_sdn_three_alv_grids_01.
DATA:
gd_okcode TYPE ui_func,
gd_repid TYPE syst-repid,
go_docking TYPE REF TO cl_gui_docking_container,
go_splitter TYPE REF TO cl_gui_splitter_container,
go_splitter_2 TYPE REF TO cl_gui_splitter_container,
go_cell_top TYPE REF TO cl_gui_container,
go_cell_bottom TYPE REF TO cl_gui_container,
go_cell_left TYPE REF TO cl_gui_container,
go_cell_right TYPE REF TO cl_gui_container,
go_grid1 TYPE REF TO cl_gui_alv_grid,
go_grid2 TYPE REF TO cl_gui_alv_grid,
go_grid3 TYPE REF TO cl_gui_alv_grid.
DATA:
gt_outtab TYPE STANDARD TABLE OF vbak,
gt_outtab_2 TYPE STANDARD TABLE OF vbap,
gt_outtab_3 TYPE STANDARD TABLE OF vbep.
**PARAMETERS:
** p_bukrs TYPE bukrs DEFAULT '1000'.
* CLASS lcl_eventhandler DEFINITION
CLASS lcl_eventhandler DEFINITION.
PUBLIC SECTION.
CLASS-DATA:
ms_row TYPE lvc_s_row,
ms_col TYPE lvc_s_col.
CLASS-METHODS:
handle_double_click FOR EVENT double_click OF cl_gui_alv_grid
IMPORTING
e_row
e_column
es_row_no
sender.
ENDCLASS. "lcl_eventhandler DEFINITION
* CLASS lcl_eventhandler IMPLEMENTATION
CLASS lcl_eventhandler IMPLEMENTATION.
METHOD handle_double_click.
* define local data
DATA:
ls_outtab TYPE vbak,
ls_outtab_2 TYPE vbap,
ls_outtab_3 TYPE vbep.
" Initialize class data
CLEAR: ms_row,
ms_col.
CASE sender.
WHEN go_grid1.
ms_row = e_row.
ms_col = e_column.
* Triggers PAI of the dynpro with the specified ok-code
CALL METHOD cl_gui_cfw=>set_new_ok_code
EXPORTING
new_code = 'GET_ITEMS'
* IMPORTING
* rc =
WHEN go_grid2.
ms_row = e_row.
ms_col = e_column.
* Triggers PAI of the dynpro with the specified ok-code
CALL METHOD cl_gui_cfw=>set_new_ok_code
EXPORTING
new_code = 'GET_SCHEDULE_LINES'
* IMPORTING
* rc =
WHEN go_grid3.
** READ TABLE gt_vbap INTO ls_vbap INDEX e_row-index.
** CHECK ( ls_vbap-matnr IS NOT INITIAL ).
** SET PARAMETER ID 'MAT' FIELD ls_vbap-matnr.
** CALL TRANSACTION 'MM02' AND SKIP FIRST SCREEN.
WHEN OTHERS.
RETURN.
ENDCASE.
ENDMETHOD. "handle_double_click
ENDCLASS. "lcl_eventhandler IMPLEMENTATION
START-OF-SELECTION.
SELECT * FROM vbak INTO TABLE gt_outtab UP TO 100 ROWS.
PERFORM init_controls.
* Display data
CALL METHOD go_grid1->set_table_for_first_display
EXPORTING
i_structure_name = 'VBAK'
CHANGING
it_outtab = gt_outtab
EXCEPTIONS
OTHERS = 4.
IF sy-subrc NE 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
REFRESH: gt_outtab_2.
CALL METHOD go_grid2->set_table_for_first_display
EXPORTING
i_structure_name = 'VBAP'
CHANGING
it_outtab = gt_outtab_2 " empty !!!
EXCEPTIONS
OTHERS = 4.
IF sy-subrc NE 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
REFRESH: gt_outtab_3.
CALL METHOD go_grid3->set_table_for_first_display
EXPORTING
i_structure_name = 'VBEP'
CHANGING
it_outtab = gt_outtab_3 " empty !!!
EXCEPTIONS
OTHERS = 4.
IF sy-subrc NE 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
* Link the docking container to the target dynpro
gd_repid = syst-repid.
CALL METHOD go_docking->link
EXPORTING
repid = gd_repid
dynnr = '0100'
* CONTAINER =
EXCEPTIONS
OTHERS = 4.
IF sy-subrc NE 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
* NOTE: dynpro does not contain any elements
CALL SCREEN '0100'.
* Flow logic of dynpro:
*PROCESS BEFORE OUTPUT.
* MODULE STATUS_0100.
*PROCESS AFTER INPUT.
* MODULE USER_COMMAND_0100.
END-OF-SELECTION.
*& Module STATUS_0100 OUTPUT
* text
MODULE status_0100 OUTPUT.
SET PF-STATUS 'STATUS_0100'. " contains push button "ORDERS"
* SET TITLEBAR 'xxx'.
* Refresh display of detail ALV list
CALL METHOD go_grid2->refresh_table_display
* EXPORTING
* IS_STABLE =
* I_SOFT_REFRESH =
EXCEPTIONS
OTHERS = 2.
IF sy-subrc NE 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
* Refresh display of detail ALV list
CALL METHOD go_grid3->refresh_table_display
* EXPORTING
* IS_STABLE =
* I_SOFT_REFRESH =
EXCEPTIONS
OTHERS = 2.
IF sy-subrc NE 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDMODULE. " STATUS_0100 OUTPUT
*& Module USER_COMMAND_0100 INPUT
* text
MODULE user_command_0100 INPUT.
CASE gd_okcode.
WHEN 'BACK' OR
'END' OR
'CANC'.
SET SCREEN 0. LEAVE SCREEN.
" Double-click on first or second ALV grid
WHEN 'GET_ITEMS' OR
'GET_SCHEDULE_LINES'.
PERFORM get_details.
WHEN OTHERS.
ENDCASE.
CLEAR: gd_okcode.
ENDMODULE. " USER_COMMAND_0100 INPUT
*& Form INIT_CONTROLS
* text
* --> p1 text
* <-- p2 text
FORM init_controls .
* Create docking container
CREATE OBJECT go_docking
EXPORTING
parent = cl_gui_container=>screen0
ratio = 90
EXCEPTIONS
OTHERS = 6.
IF sy-subrc NE 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
* Create splitter container
CREATE OBJECT go_splitter
EXPORTING
parent = go_docking
rows = 1
columns = 2
* NO_AUTODEF_PROGID_DYNNR =
* NAME =
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
OTHERS = 3.
IF sy-subrc NE 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
* Get cell container
CALL METHOD go_splitter->get_container
EXPORTING
row = 1
column = 1
RECEIVING
container = go_cell_left.
CALL METHOD go_splitter->get_container
EXPORTING
row = 1
column = 2
RECEIVING
container = go_cell_right.
* Create 2nd splitter container
CREATE OBJECT go_splitter_2
EXPORTING
parent = go_cell_left
rows = 2
columns = 1
* NO_AUTODEF_PROGID_DYNNR =
* NAME =
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
OTHERS = 3.
IF sy-subrc NE 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
* Get cell container
CALL METHOD go_splitter_2->get_container
EXPORTING
row = 1
column = 1
RECEIVING
container = go_cell_top.
CALL METHOD go_splitter_2->get_container
EXPORTING
row = 2
column = 1
RECEIVING
container = go_cell_bottom.
* Create ALV grids
CREATE OBJECT go_grid1
EXPORTING
i_parent = go_cell_top
EXCEPTIONS
OTHERS = 5.
IF sy-subrc NE 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
CREATE OBJECT go_grid2
EXPORTING
i_parent = go_cell_bottom
EXCEPTIONS
OTHERS = 5.
IF sy-subrc NE 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
CREATE OBJECT go_grid3
EXPORTING
i_parent = go_cell_right
EXCEPTIONS
OTHERS = 5.
IF sy-subrc NE 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
* Set event handler
SET HANDLER: lcl_eventhandler=>handle_double_click FOR go_grid1.
SET HANDLER: lcl_eventhandler=>handle_double_click FOR go_grid2.
SET HANDLER: lcl_eventhandler=>handle_double_click FOR go_grid3.
ENDFORM. " INIT_CONTROLS
*& Form GET_DETAILS
* text
* --> p1 text
* <-- p2 text
FORM get_details .
* define local data
DATA: ls_row TYPE lvc_s_row,
ls_col TYPE lvc_s_col.
data: ls_outtab type vbak,
ls_outtab_2 type vbap,
ls_outtab_3 type vbep.
BREAK-POINT.
CASE gd_okcode.
WHEN 'GET_ITEMS'.
CALL METHOD go_grid1->get_current_cell
IMPORTING
* e_row =
* e_value =
* e_col =
es_row_id = ls_row
es_col_id = ls_col
* es_row_no =
read TABLE gt_outtab into ls_outtab index ls_row-index.
refresh: gt_outtab_2,
gt_outtab_3.
SELECT * FROM vbap into TABLE gt_outtab_2
WHERE vbeln = ls_outtab-vbeln.
WHEN 'GET_SCHEDULE_LINES'.
CALL METHOD go_grid2->get_current_cell
IMPORTING
* e_row =
* e_value =
* e_col =
es_row_id = ls_row
es_col_id = ls_col
* es_row_no =
READ TABLE gt_outtab_2 into ls_outtab_2 index ls_row-index.
refresh: gt_outtab_3.
SELECT * FROM vbep into TABLE gt_outtab_3
WHERE vbeln = ls_outtab_2-vbeln
AND posnr = ls_outtab_2-posnr.
WHEN OTHERS.
RETURN.
ENDCASE.
IF ( lcl_eventhandler=>ms_row = ls_row AND
lcl_eventhandler=>ms_col = ls_col ).
MESSAGE 'Current cell identical' TYPE 'I'.
ELSE.
MESSAGE 'Current cell NOT identical' TYPE 'I'.
ENDIF.
ENDFORM. " GET_DETAILS
Regards
Uwe -
Problem with ALV Grid (created via FM)
Dear forumers,
When double-clicking on any data row of an ALV grid, the following runtime error occurs:
Runtime error: PERFORM_NOT_FOUND
Exception: CX_SY_DYN_CALL_ILLEGAL_FORM
Short Text
=======
Call (PERFORM) to a non-existent routine.
What happened?
==========
There exist various options:
Error in the ABAP Application Program
The current ABAP program "SAPLSLVC_FULLSCREEN" had to be terminated
because it has come across a statement that unfortunately cannot be executed.
or
Error in the SAP kernel.
The current ABAP "SAPLSLVC_FULLSCREEN" program had to be terminated because the
ABAP processor detected an internal system error.
How can I resolve this error for an ALV grid? The ALV grid is created via the FM, 'REUSE_ALV_GRID_DISPLAY' and the field catalog is built via the FM, 'REUSE_ALV_FIELDCATALOG_MERGE'.
Please help. Thanks so much.
I also noticed in the Data Browser, SE16 - that if the table contents are displayed in an ALV Grid, double-clicking on any data row will not generate the same error. It also has an additional column on the leftmost to aid the data row selection. Any other ideas on this?
Edited by: Deborah Tan on Jun 23, 2010 8:16 AMHi Deborah,
While calling 'REUSE_ALV_GRID_DISPLAY', You should have also passed the parameter I_CALLBACK_USER_COMMAND with any form name, or You have passed table IT_EVENTS with form name 'USER_COMMAND' with a form mentioned in it.
If You do not require any user interaction on your ALV, comment the line where I_CALLBACK_USER_COMMAND is passed, or delete the line for 'USER_COMMAND' from the table that is passed in IT_EVENTS.
Else, if You require user interaction, You need to code a form for user command in your program as FORM_USER_COMMAND USING OK_CODE SELFIELD.
Remember the name of the form (for e.g. 'FORM_USER_COMMAND') should be the same that you pass in CALLBACKUSER_COMMAND or the one in 'USER_COMMAND' in table for IT_EVENTS.
Regards,
Birendra -
ALV Grid/Tree in Dialog Popup
Hi,
I have requirement whereby I display an partially filled ALV Grid.
To populate a specific field of the ALV I need to pop-up a dialog form on which is displayed either another ALV Grid or preferably an ALV Tree.
The data behind the Dilog ALV/Tree is a table of Parent-Child relationships.
The user will either navigate the ALV Grid by clicking on a 'Parent' and refreshing the ALV with the Children etc or do the same by expanding nodes on the ALV Tree.
When the user has reached the lowest level of the 'hierarchy' this value is returned to the initial ALV Grid.
I have had a look around the ABAP and OO Demo's and in the Weblogs etc on SDN.
However I cannot seem to 'manipulate' these into my specific requirements.
Ideally, I need to create either a FM or Class/Method which takes as input the above table of relationships, displays the dilog and then returns the selected child.
My questions are:
Can this be done?
Which is the best way for me to approach this?
Thanks,
MartinHi,
I have requirement whereby I display an partially filled ALV Grid.
To populate a specific field of the ALV I need to pop-up a dialog form on which is displayed either another ALV Grid or preferably an ALV Tree.
The data behind the Dilog ALV/Tree is a table of Parent-Child relationships.
The user will either navigate the ALV Grid by clicking on a 'Parent' and refreshing the ALV with the Children etc or do the same by expanding nodes on the ALV Tree.
When the user has reached the lowest level of the 'hierarchy' this value is returned to the initial ALV Grid.
I have had a look around the ABAP and OO Demo's and in the Weblogs etc on SDN.
However I cannot seem to 'manipulate' these into my specific requirements.
Ideally, I need to create either a FM or Class/Method which takes as input the above table of relationships, displays the dilog and then returns the selected child.
My questions are:
Can this be done?
Which is the best way for me to approach this?
Thanks,
Martin -
Want to export output of alv grid to excel automatically
hi friends.............
i want to export output of alv grid without displaying on screen to excel file .......................
how i m able to do it ..............................
in the same way as after alv grid display click on LOCAL FILE-> SPREADSHEET-> ........................
plz rply me soon if anyone of u know abt that.................
thanks allot.............actually in output through 'REUSE_ALV_GRID_DISPLAY' some title is also there through TOP_OF_PAGE how can download it also and data table in excel sheet ...................
actually when an alv output is displayed then some title data is also displayed in alv grid then we can download it by clicking on icon 'local file--> spreadsheet........and soon ' ..........
my req. is download it automatically without doing this process and without displaying it on screen......... it means i want to interrupt to alv grid output to only download without displaying it in output screen............
if u clear my question then reply me............. -
Hello Experts,
I have an ALV Grid where the last column is displayed as push buttons. When i click on a pushbutton, a text editor is opened up using ABAP OO. Now, I enter the text and SAve it. A standard text is created against the selected row in ALV Grid. Then I come back to the alv grid and click on another button of some different row. Again the text editor opens up with the previous text. I nter the new text and click on save. However, this time the standard text is not created. I have am making the container and text editor free as i click on 'back'. Still the data is not getting refreshed.
Please, let me know where m i going wrong.
Regards,
SonalHi Sonal,
I have faced similar issue with respect to module pool with container on the screen.
Try using the following on back action....
call method wf_init_edit->delete_text. (wf_init_edit -> editor reference - type ref to cl_gui_textedit )
Also we can free the container using
call method wf_init_cont->free. (wf_init_cont -> container reference - type ref to cl_gui_custom_container )
Hope it helps.
Regards,
Byju -
Hi!
I created an ALV grid.
But the header and the footer part are not seen in the print preview, in which i think won't also be printed.
What will I do for it to be printed?
Thanks.Hi Shiva,
Yeah, i passed it ALL CAPS.
But the header and footer still won't be printed.
Thanks. -
Hi Friends,
Let me know how to handle the event raised by clicking the hotspot of an ALV grid that is placed over one splitter container.
I am explaining the problem in detail:
(1) I have to display an ALV grid and when any hotspot of that ALV grid is clicked,
the row-id should be captured and used to fetch corresponding records from
child table (primarykey-foreign key relationship) and the resulting grid should be
displayed on the same screen at the same time and for any further click, the
child grid is to be refreshed.
(2) For this, I have created one custom container, placed one splitter container having two rows & one column over it and placed the ALV grids over that by getting the corresponding containers of the splitter.
(3) Now, when the hotspot is clicked the SY-UCOMM is empty (even it is not entering the PAI block if I do not place the back button). So, I am not able to get the row-id of the clicked row & without that, can't proceed any further.
(4) Rest of the things are working fine and I have tested that also.
Please help me out as I am new to this field and started practicing ABAP just a month back.
Thanks & Regards
Aditya P. SrivastavaHi Aditya
Here is the complete for the same,
<b>Some Prerequisites in terms of screen, custom control & flow logic</b>
<i>Screen Name: 9000, Custom Container name : CONTAINER.
flow logic in screen 9000
PROCESS BEFORE OUTPUT.
MODULE status_9000.
MODULE init_9000.
PROCESS AFTER INPUT.
MODULE user_command_9000.</i>
<b>
Here goes the code,</b>
REPORT zkb_2alv_grids.
DATA: i_t000 TYPE TABLE OF t000,
w_t000 TYPE t000,
i_tcurr TYPE TABLE OF tcurr.
Declaration for all the objects required
DATA: o_container TYPE REF TO cl_gui_custom_container,
o_splitter TYPE REF TO cl_gui_easy_splitter_container,
o_container_top TYPE REF TO cl_gui_container,
o_container_bottom TYPE REF TO cl_gui_container,
o_salv_table1 TYPE REF TO cl_salv_table,
o_salv_table2 TYPE REF TO cl_salv_table,
o_salv_columns TYPE REF TO cl_salv_columns_table,
o_salv_column TYPE REF TO cl_salv_column_table.
DATA: o_events TYPE REF TO cl_salv_events_table.
CLASS lcl_handle_events DEFINITION
CLASS lcl_handle_events DEFINITION.
PUBLIC SECTION.
METHODS: on_link_click
FOR EVENT link_click
OF cl_salv_events_table
IMPORTING row column.
ENDCLASS. "lcl_handle_events DEFINITION
CLASS lcl_handle_events IMPLEMENTATION
CLASS lcl_handle_events IMPLEMENTATION.
METHOD on_link_click.
READ TABLE i_t000 INTO w_t000 INDEX row.
SELECT * FROM tcurr
INTO TABLE i_tcurr
WHERE fcurr = w_t000-mwaer.
o_salv_table2->refresh( ).
ENDMETHOD. "lcl_handle_events
ENDCLASS. "lcl_handle_events IMPLEMENTATION
START-OF-SELECTION.
DATA: event_handler TYPE REF TO lcl_handle_events.
Select Data
SELECT * FROM t000 INTO TABLE i_t000.
CALL SCREEN 9000.
*& Module init_9000 OUTPUT
text
MODULE init_9000 OUTPUT.
DATA: lv_cx_salv_msg TYPE REF TO cx_salv_msg,
lw_bal_s_msg TYPE bal_s_msg.
IF NOT o_container IS BOUND.
Create a Custom Control
CREATE OBJECT o_container
EXPORTING
container_name = 'CONTAINER'
repid = sy-repid
dynnr = '9000'
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
create_error = 3
lifetime_error = 4
lifetime_dynpro_dynpro_link = 5
OTHERS = 6.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
Create splitter control
CREATE OBJECT o_splitter
EXPORTING
parent = o_container
orientation = 0
sash_position = 30
with_border = 1
EXCEPTIONS
cntl_error = 1
cntl_system_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.
Assign the left and right control that were splitted
o_container_top = o_splitter->top_left_container.
o_container_bottom = o_splitter->bottom_right_container.
ENDIF. " IF NOT o_container IS BOUND.
TRY.
CALL METHOD cl_salv_table=>factory
EXPORTING
r_container = o_container_top
IMPORTING
r_salv_table = o_salv_table1
CHANGING
t_table = i_t000.
CATCH cx_salv_msg INTO lv_cx_salv_msg.
lv_cx_salv_msg->if_alv_message~get_message(
RECEIVING
r_s_msg = lw_bal_s_msg ).
MESSAGE ID lw_bal_s_msg-msgid
TYPE lw_bal_s_msg-msgty
NUMBER lw_bal_s_msg-msgno
WITH lw_bal_s_msg-msgv1 lw_bal_s_msg-msgv2
lw_bal_s_msg-msgv3 lw_bal_s_msg-msgv4.
ENDTRY.
Column Settings
o_salv_columns = o_salv_table1->get_columns( ).
o_salv_column ?= o_salv_columns->get_column( 'MWAER' ).
o_salv_column->set_cell_type( 5 ).
o_events = o_salv_table1->get_event( ).
CREATE OBJECT event_handler.
SET HANDLER event_handler->on_link_click FOR o_events.
TRY.
CALL METHOD cl_salv_table=>factory
EXPORTING
r_container = o_container_bottom
IMPORTING
r_salv_table = o_salv_table2
CHANGING
t_table = i_tcurr.
CATCH cx_salv_msg INTO lv_cx_salv_msg.
lv_cx_salv_msg->if_alv_message~get_message(
RECEIVING
r_s_msg = lw_bal_s_msg ).
MESSAGE ID lw_bal_s_msg-msgid
TYPE lw_bal_s_msg-msgty
NUMBER lw_bal_s_msg-msgno
WITH lw_bal_s_msg-msgv1 lw_bal_s_msg-msgv2
lw_bal_s_msg-msgv3 lw_bal_s_msg-msgv4.
ENDTRY.
Display the ALV Grid
o_salv_table1->display( ).
o_salv_table2->display( ).
ENDMODULE. " init_9000 OUTPUT
*& Module user_command_9000 INPUT
text
MODULE user_command_9000 INPUT.
CASE sy-ucomm .
WHEN 'BACK' OR 'EXIT' OR 'CANC'.
SET SCREEN 0.
LEAVE SCREEN.
ENDCASE.
ENDMODULE. " user_command_9000 INPUT
*& Module status_9000 OUTPUT
text
MODULE status_9000 OUTPUT.
SET PF-STATUS '9000'.
ENDMODULE. " status_9000 OUTPUT
Regards
Kathirvel -
Layout selection in ALV grid.
Hi All,
I have one requirement to change the existing program. Currently it is displaying all the fields in the ALV grid. Now i need to make the selection screen with two options for Header data selection and Item data selection. So now if I select the Header data only to be displayed (in the coding I made the changes in the field catalog and hidded some fields using
WHEN 'FKART'
if p_header = 'X'.
<fc>-no_out = 'X'.
endif.
so now it should not display the FKART field in the output. My question is, If I select some different layout in the ALV GRID even this hidden header fields are also getting displayed. Please help me and give me the solution for this.
Regards,
AL.Hi Anbu,
You can try like this, Modify your Col Position like this...
IF P_HEARDER = 'X'.
COL_POS = COL_POS + 1.
FIELDCATALOG-COL_POS = COL_POS.
FIELDCATALOG-FIELDNAME = 'FKART'.
FIELDCATALOG-OUTPUTLEN = 10.
FIELDCATALOG-NO_OUT = 'X'.
APPEND FIELDCATALOG TO FIELDCATALOG.
ELSE.
COL_POS = COL_POS + 1.
FIELDCATALOG-COL_POS = COL_POS.
FIELDCATALOG-FIELDNAME = 'FKART'.
FIELDCATALOG-OUTPUTLEN = 10.
APPEND FIELDCATALOG TO FIELDCATALOG.
ENDIF.
Thanks & regards,
Dileep .C -
Problem in GET_CURRENT_CELL method in oops ALV GRID
Hi,
I got output records int eh ALV GRID and i have a one push button in the report. When i select any CELL(say 5 row) in ALV GRID and click on this push Button, it should display me the Row number (row number = 5). I have used the GET_CURRENT_CELL. when I execute the report and select one cell (5 row cell )and click on push button, it is giving me the Row number(row number = 5) correctly. Again when i choose the cell (say 8 record)second time, it should display give the row number = 8 but always it is giving me the First row number .
Get selected row
PERFORM get_selected_row CHANGING l_sel_row.
FORM get_selected_row CHANGING p_l_sel_row.
DATA: li_sel_row TYPE i, "Selected row
lv_rowid TYPE lvc_s_row.
Query which row was selected.
CALL METHOD grid_brr_main->get_current_cell
IMPORTING
e_row = li_sel_row
es_row_id = lv_rowid.
MOVE lv_rowid-index TO p_l_sel_row.
ENDFORM. " get_selected_row
Regards,
Deepthi.Hi,
Probably the data is not getting refreshed.
Please call the following methods.
REFRESH_TABLE_DISPLAY in PBO.
Call this method only if the grid has been created and called once using SET_TABLE_FOR_FIRST_DISPLAY.
As follows:-
If grid is initial.
call method grid-set_table_for_first_display
else
call method grid->REFRESH_TABLE_DISPLAY.
endif.
In the PAI.
call the following method.
grid->CHECK_CHANGED_DATA
So that the data changes are transferred.
Regards,
Ankur Parab
Edited by: Ankur Parab on Jun 4, 2009 5:18 PM -
Error whil adding Header to the ALV grid using OO
Hi Guys,
I want to display the Header for the ALV grid using Splitter .
when i am doing like that .I am getting a screen on the top of that screen I am getting a EMPTY screen .I don't know why likat.
What i need is just to display a Grid with header?Can anybody Please help me reagarding this problem.
the Code is Below.
*& Report Z_TEST_PGM
REPORT Z_TEST_PGM NO STANDARD PAGE HEADING
LINE-SIZE 120 MESSAGE-ID zotc.
Tables : CKMLMV003 , CKMLMV001.
TYPE-POOLS: slis.
Types : Begin of t_CKMLMV003_out,
WERKS type CKMLMV003-WERKS,
MATNR type CKMLMV003-MATNR,
MISCH_VERH type CKMLMV003-MISCH_VERH,
KALNR_BAL type CKMLMV003-KALNR_BAL,
GJAHR type CKMLMV003-GJAHR,
PERIO type CKMLMV003-PERIO,
MGTYP type CKMLMV003-MGTYP,
End of t_CKMLMV003_out,
Begin of t_CKMLMV001_out,
MATNR type CKMLMV001-MATNR,
KALNR type CKMLMV001-KALNR,
LIFNR_ND type CKMLMV001-LIFNR_ND,
EKORG_ND type CKMLMV001-EKORG_ND,
End of t_CKMLMV001_out,
Begin of t_CKMLMV003_Temp,
MATNR type CKMLMV003-MATNR,
GJAHR type CKMLMV003-GJAHR,
PERIO type CKMLMV003-PERIO,
End of t_CKMLMV003_Temp,
Begin of t_Final_out,
MATNR type CKMLMV003-MATNR,
GJAHR type CKMLMV003-GJAHR,
PERIO type CKMLMV003-PERIO,
WERKS type CKMLMV003-WERKS,
LIFNR_ND1 type CKMLMV001-LIFNR_ND,
MISCH_VERH1 type CKMLMV003-MISCH_VERH,
LIFNR_ND2 type CKMLMV001-LIFNR_ND,
MISCH_VERH2 type CKMLMV003-MISCH_VERH,
LIFNR_ND3 type CKMLMV001-LIFNR_ND,
MISCH_VERH3 type CKMLMV003-MISCH_VERH,
LIFNR_ND4 type CKMLMV001-LIFNR_ND,
MISCH_VERH4 type CKMLMV003-MISCH_VERH,
LIFNR_ND5 type CKMLMV001-LIFNR_ND,
MISCH_VERH5 type CKMLMV003-MISCH_VERH,
LIFNR_ND6 type CKMLMV001-LIFNR_ND,
MISCH_VERH6 type CKMLMV003-MISCH_VERH,
LIFNR_ND7 type CKMLMV001-LIFNR_ND,
MISCH_VERH7 type CKMLMV003-MISCH_VERH,
LIFNR_ND8 type CKMLMV001-LIFNR_ND,
MISCH_VERH8 type CKMLMV003-MISCH_VERH,
LIFNR_ND9 type CKMLMV001-LIFNR_ND,
MISCH_VERH9 type CKMLMV003-MISCH_VERH,
LIFNR_ND10 type CKMLMV001-LIFNR_ND,
MISCH_VERH10 type CKMLMV003-MISCH_VERH,
LIFNR_ND11 type CKMLMV001-LIFNR_ND,
MISCH_VERH11 type CKMLMV003-MISCH_VERH,
LIFNR_ND12 type CKMLMV001-LIFNR_ND,
MISCH_VERH12 type CKMLMV003-MISCH_VERH,
LIFNR_ND13 type CKMLMV001-LIFNR_ND,
MISCH_VERH13 type CKMLMV003-MISCH_VERH,
End of t_Final_out,
Begin of t_Final_out1,
MATNR type CKMLMV003-MATNR,
GJAHR type CKMLMV003-GJAHR,
PERIO type CKMLMV003-PERIO,
LIFNR_ND1 type CKMLMV001-LIFNR_ND,
MISCH_VERH1 type CKMLMV003-MISCH_VERH,
LIFNR_ND2 type CKMLMV001-LIFNR_ND,
MISCH_VERH2 type CKMLMV003-MISCH_VERH,
LIFNR_ND3 type CKMLMV001-LIFNR_ND,
MISCH_VERH3 type CKMLMV003-MISCH_VERH,
LIFNR_ND4 type CKMLMV001-LIFNR_ND,
MISCH_VERH4 type CKMLMV003-MISCH_VERH,
LIFNR_ND5 type CKMLMV001-LIFNR_ND,
MISCH_VERH5 type CKMLMV003-MISCH_VERH,
LIFNR_ND6 type CKMLMV001-LIFNR_ND,
MISCH_VERH6 type CKMLMV003-MISCH_VERH,
LIFNR_ND7 type CKMLMV001-LIFNR_ND,
MISCH_VERH7 type CKMLMV003-MISCH_VERH,
LIFNR_ND8 type CKMLMV001-LIFNR_ND,
MISCH_VERH8 type CKMLMV003-MISCH_VERH,
LIFNR_ND9 type CKMLMV001-LIFNR_ND,
MISCH_VERH9 type CKMLMV003-MISCH_VERH,
LIFNR_ND10 type CKMLMV001-LIFNR_ND,
MISCH_VERH10 type CKMLMV003-MISCH_VERH,
LIFNR_ND11 type CKMLMV001-LIFNR_ND,
MISCH_VERH11 type CKMLMV003-MISCH_VERH,
LIFNR_ND12 type CKMLMV001-LIFNR_ND,
MISCH_VERH12 type CKMLMV003-MISCH_VERH,
LIFNR_ND13 type CKMLMV001-LIFNR_ND,
MISCH_VERH13 type CKMLMV003-MISCH_VERH,
End of t_Final_out1.
Global Structures *
Data : i_CKMLMV003_str type t_CKMLMV003_out,
i_CKMLMV001_str type t_CKMLMV001_out,
i_Final_str type t_Final_out,
i_Final_str1 type t_Final_out,
i_CKMLMV003_Temp type t_CKMLMV003_Temp.
Global Internal Tables *
Data : i_CKMLMV003_out type standard table of t_CKMLMV003_out,
i_CKMLMV001_out type standard table of t_CKMLMV001_out,
i_Final_out type standard table of t_Final_out,
i_Final_out1 type standard table of t_Final_out.
ALV Report Internal tables *
DATA : t_fieldcatalog TYPE slis_t_fieldcat_alv,
s_fieldcatalog TYPE slis_fieldcat_alv,
t_basic_fieldcatalog TYPE slis_t_fieldcat_alv,
s_basic_fieldcatalog TYPE slis_fieldcat_alv,
t_sort TYPE slis_t_sortinfo_alv,
v_repid TYPE sy-repid.
*ALV Header declarations
Data: t_header type slis_t_listheader,
i_header_str type slis_listheader,
i_line_event_str TYPE slis_alv_event,
i_events TYPE slis_t_event,
wa_layout type slis_layout_alv.
Data : grid1 type ref to cl_gui_alv_grid,
g_custom_container1 type ref to cl_gui_custom_container,
grid2 type ref to cl_gui_alv_grid,
g_custom_container2 type ref to cl_gui_custom_container,
i_FCAT TYPE LVC_T_FCAT,
i_FCAT_str type lvc_s_fcat,
Structure for layout
i_layout_s TYPE lvc_s_layo,
gt_final1 type table of t_Final_out.
DATA: CCCONTAINER1 TYPE SCRFNAME VALUE 'CCCONTAINER1',
CCCONTAINER2 TYPE SCRFNAME VALUE 'CCCONTAINER2',
G_PARENT_TOP TYPE REF TO CL_GUI_CONTAINER ,
G_SPLITTER TYPE REF TO CL_GUI_SPLITTER_CONTAINER,
G_DYNDOC_ID TYPE REF TO CL_DD_DOCUMENT,
G_PARENT_GRID TYPE REF TO CL_GUI_CONTAINER.
Global Variables *
Data :cnt(4) type n value '0',
g_plant type CKMLMV003-WERKS ,
g_QuanTStr type CKMLMV003-MGTYP ,
g_PurchOrg type CKMLMV001-EKORG_ND,
flag type n value '0',
g_cnt6 type n value '0',
g_cnt7 type n value '0',
g_cnt8 type n value '0',
g_cnt9 type n value '0',
g_cnt10 type n value '0',
g_cnt11 type n value '0',
g_cnt12 type n value '0',
g_cnt13 type n value '0'.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-011.
SELECTION-SCREEN: BEGIN OF LINE.
SELECTION-SCREEN COMMENT 2(20) TEXT-006 for field s_matnr.
Select-Options : S_MATNR for CKMLMV003-MATNR .
SELECTION-SCREEN: END OF LINE.
SELECTION-SCREEN: BEGIN OF LINE.
SELECTION-SCREEN COMMENT 2(20) TEXT-007 for field S_WERKS.
SELECT-OPTIONS:S_WERKS for CKMLMV003-WERKS Default '2003'.
SELECTION-SCREEN: END OF LINE.
SELECTION-SCREEN: BEGIN OF LINE.
SELECTION-SCREEN COMMENT 2(20) TEXT-008 for field S_GJAHR.
SELECT-OPTIONS:S_GJAHR for CKMLMv003-GJAHR default Sy-DATUM(4) .
SELECTION-SCREEN: END OF LINE.
SELECTION-SCREEN: BEGIN OF LINE.
SELECTION-SCREEN COMMENT 2(20) TEXT-009 for field S_PERIO.
SELECT-OPTIONS:S_PERIO for CKMLMV003-PERIO .
SELECTION-SCREEN: END OF LINE.
SELECTION-SCREEN: BEGIN OF LINE.
SELECTION-SCREEN COMMENT 2(25) TEXT-010 for field P_MGTYP.
Parameters : P_MGTYP type CKMLMV003-MGTYP .
SELECTION-SCREEN: END OF LINE.
SELECTION-SCREEN END OF BLOCK b1 .
At Selection-Screen on s_matnr .
Perform Validate_MatNumber.
At Selection-Screen on s_werks .
Perform Validate_CostingPlant.
At Selection-Screen on s_GJAHR .
Perform Validate_FiscalYear.
At Selection-Screen on s_PERIO .
Perform Validate_Period.
At Selection-Screen on p_MGTYP .
Perform Validate_QuantityStrType.
*& Form Validate_MatNumber
text
Form Validate_MatNumber.
DATA l_MATNR TYPE CKMLMV003-MATNR.
IF NOT S_MATNR[] IS INITIAL .
CLEAR L_MATNR.
SELECT single MATNR FROM CKMLMV003
INTO l_MATNR
WHERE MATNR = s_MATNR-LOW or MATNR = s_MATNR-HIGH.
ENDSELECT.
IF sy-subrc NE 0.
MESSAGE e999 WITH
'Enter a Valid Material Number'(001).
ENDIF.
ENDIF.
ENDFORM. "Validate_MatNumber
*& Form Validate_CostingPlant
text
Form Validate_CostingPlant.
DATA l_werks TYPE CKMLMV003-WERKS.
IF NOT S_WERKS[] IS INITIAL .
CLEAR L_WERKS.
SELECT single WERKS FROM T001W
INTO l_WERKS
WHERE WERKS = s_WERKS-low or WERKS = s_WERKS-high.
ENDSELECT.
IF sy-subrc NE 0.
MESSAGE e999 WITH
'Enter a Valid Costing Plant'(002).
ENDIF.
ENDIF.
ENDFORM. "Validate_CostingPlant
*& Form Validate_FiscalYear
text
Form Validate_FiscalYear.
DATA l_GJAHR TYPE CKMLMV003-GJAHR.
IF NOT S_GJAHR-low IS INITIAL or S_GJAHR-high IS INITIAL.
CLEAR L_GJAHR.
SELECT SINGLE GJAHR FROM CKMLMV003
INTO l_GJAHR
WHERE GJAHR LE sy-DATUM(4) .
IF NOT S_GJAHR-low LE sy-DATUM(4) or S_GJAHR-high LE sy-DATUM(4).
MESSAGE e999 WITH
'Enter a Valid Fiscal year'(003).
ENDIF.
ENDIF.
ENDFORM. "Validate_FiscalYear
*& Form Validate_Period
text
Form Validate_Period.
DATA l_PERIO TYPE CKMLMV003-PERIO.
IF NOT S_PERIO[] IS INITIAL .
CLEAR L_PERIO.
SELECT single PERIO FROM CKMLMV003
INTO l_PERIO
WHERE PERIO GE 1 and PERIO LE 12 .
ENDSELECT.
IF sy-subrc NE 0.
MESSAGE e999 WITH
'Enter a Valid Period'(004).
ENDIF.
ENDIF.
ENDFORM. "Validate_Period
*& Form Validate_QuantityStrType
text
Form Validate_QuantityStrType.
DATA l_MGTYP TYPE CKMLMV003-MGTYP.
IF NOT p_MGTYP IS INITIAL.
CLEAR L_MGTYP.
SELECT SINGLE MGTYP FROM CKMLMV003
INTO l_MGTYP
WHERE MGTYP = p_MGTYP .
IF sy-subrc NE 0.
MESSAGE e999 WITH
'Enter a Valid Quantity Structure Type'(005).
ENDIF.
ENDIF.
ENDFORM. "Validate_QuantityStrType
INITIALIZATION of Fields
Class LCL_EVENT_HANDLER DEFINITION.
Public section.
Methods:
TOP_OF_PAGE for Event TOP_OF_PAGE OF CL_GUI_ALV_GRID
IMPORTING E_DYNDOC_ID.
ENDCLASS. "LCL_EVENT_HANDLER DEFINITION
CLASS LCL_EVENT_HANDLER IMPLEMENTATION.
METHOD TOP_OF_PAGE.
Top-of-page event <br />
PERFORM EVENT_TOP_OF_PAGE USING G_DYNDOC_ID.
ENDMETHOD. "top_of_page
ENDCLASS. "LCL_EVENT_HANDLER IMPLEMENTATION
Data : G_HANDLER TYPE REF TO LCL_EVENT_HANDLER.
Initialization.
v_repid = sy-repid.
Start-of-Selection.
Perform get_CKMLMV003.
Perform get_CKMLMV001.
Perform Get_Finaldata.
Perform Layout_FieldCatalog.
call screen '101'.
Perform ALVGrid_Final_Display.
*& Form Layout_FieldCatalog
text
Form Layout_FieldCatalog.
s_fieldcatalog-col_pos = 1.
s_fieldcatalog-fieldname = 'MATNR'.
s_fieldcatalog-tabname = 'I_FINAL_OUT1'.
s_fieldcatalog-seltext_l = Text-024.
append s_fieldcatalog to t_fieldcatalog.
clear s_fieldcatalog.
s_fieldcatalog-col_pos = 2.
s_fieldcatalog-fieldname = 'GJAHR'.
s_fieldcatalog-tabname = 'I_FINAL_OUT1'.
s_fieldcatalog-seltext_l = Text-012.
append s_fieldcatalog to t_fieldcatalog.
clear s_fieldcatalog.
s_fieldcatalog-col_pos = 3.
s_fieldcatalog-fieldname = 'PERIO'.
s_fieldcatalog-tabname = 'I_FINAL_OUT1'.
s_fieldcatalog-seltext_l = Text-013.
append s_fieldcatalog to t_fieldcatalog.
clear s_fieldcatalog.
s_fieldcatalog-col_pos = 4.
s_fieldcatalog-fieldname = 'WERKS'.
s_fieldcatalog-tabname = 'I_FINAL_OUT1'.
s_fieldcatalog-seltext_l = Text-025.
append s_fieldcatalog to t_fieldcatalog.
clear s_fieldcatalog.
s_fieldcatalog-col_pos = 5.
s_fieldcatalog-fieldname = 'LIFNR_ND1'.
s_fieldcatalog-tabname = 'I_FINAL_OUT1'.
s_fieldcatalog-seltext_l = Text-014.
append s_fieldcatalog to t_fieldcatalog.
clear s_fieldcatalog.
s_fieldcatalog-col_pos = 6.
s_fieldcatalog-fieldname = 'MISCH_VERH1'.
s_fieldcatalog-tabname = 'I_FINAL_OUT1'.
s_fieldcatalog-seltext_l = Text-015.
append s_fieldcatalog to t_fieldcatalog.
clear s_fieldcatalog.
s_fieldcatalog-col_pos = 7.
s_fieldcatalog-fieldname = 'LIFNR_ND2'.
s_fieldcatalog-tabname = 'I_FINAL_OUT1'.
s_fieldcatalog-seltext_l = Text-016.
append s_fieldcatalog to t_fieldcatalog.
clear s_fieldcatalog.
s_fieldcatalog-col_pos = 8.
s_fieldcatalog-fieldname = 'MISCH_VERH2'.
s_fieldcatalog-tabname = 'I_FINAL_OUT1'.
s_fieldcatalog-seltext_l = Text-017.
append s_fieldcatalog to t_fieldcatalog.
clear s_fieldcatalog.
s_fieldcatalog-col_pos = 9.
s_fieldcatalog-fieldname = 'LIFNR_ND3'.
s_fieldcatalog-tabname = 'I_FINAL_OUT1'.
s_fieldcatalog-seltext_l = Text-018.
append s_fieldcatalog to t_fieldcatalog.
clear s_fieldcatalog.
s_fieldcatalog-col_pos = 10.
s_fieldcatalog-fieldname = 'MISCH_VERH3'.
s_fieldcatalog-tabname = 'I_FINAL_OUT1'.
s_fieldcatalog-seltext_l = Text-019.
append s_fieldcatalog to t_fieldcatalog.
clear s_fieldcatalog.
s_fieldcatalog-col_pos = 11.
s_fieldcatalog-fieldname = 'LIFNR_ND4'.
s_fieldcatalog-tabname = 'I_FINAL_OUT1'.
s_fieldcatalog-seltext_l = Text-020.
append s_fieldcatalog to t_fieldcatalog.
clear s_fieldcatalog.
s_fieldcatalog-col_pos = 12.
s_fieldcatalog-fieldname = 'MISCH_VERH4'.
s_fieldcatalog-tabname = 'I_FINAL_OUT1'.
s_fieldcatalog-seltext_l = Text-021.
append s_fieldcatalog to t_fieldcatalog.
clear s_fieldcatalog.
s_fieldcatalog-col_pos = 13.
s_fieldcatalog-fieldname = 'LIFNR_ND5'.
s_fieldcatalog-tabname = 'I_FINAL_OUT1'.
s_fieldcatalog-seltext_l = Text-022.
append s_fieldcatalog to t_fieldcatalog.
clear s_fieldcatalog.
s_fieldcatalog-col_pos = 14.
s_fieldcatalog-fieldname = 'MISCH_VERH5'.
s_fieldcatalog-tabname = 'I_FINAL_OUT1'.
s_fieldcatalog-seltext_l = Text-023.
append s_fieldcatalog to t_fieldcatalog.
clear s_fieldcatalog.
if g_cnt6 <> '0'.
s_fieldcatalog-col_pos = 14.
s_fieldcatalog-fieldname = 'LIFNR_ND6'.
s_fieldcatalog-tabname = 'I_FINAL_OUT1'.
s_fieldcatalog-NO_OUT = 'X'.
s_fieldcatalog-seltext_l = Text-022.
append s_fieldcatalog to t_fieldcatalog.
clear s_fieldcatalog.
s_fieldcatalog-col_pos = 15.
s_fieldcatalog-fieldname = 'MISCH_VERH6'.
s_fieldcatalog-tabname = 'I_FINAL_OUT1'.
s_fieldcatalog-NO_OUT = 'X'.
s_fieldcatalog-seltext_l = Text-023.
append s_fieldcatalog to t_fieldcatalog.
clear s_fieldcatalog.
ENDIF.
if g_cnt7 <> '0'.
s_fieldcatalog-col_pos = 16.
s_fieldcatalog-fieldname = 'LIFNR_ND7'.
s_fieldcatalog-tabname = 'I_FINAL_OUT1'.
s_fieldcatalog-NO_OUT = 'X'.
s_fieldcatalog-seltext_l = Text-022.
append s_fieldcatalog to t_fieldcatalog.
clear s_fieldcatalog.
s_fieldcatalog-col_pos = 17.
s_fieldcatalog-fieldname = 'MISCH_VERH7'.
s_fieldcatalog-tabname = 'I_FINAL_OUT1'.
s_fieldcatalog-NO_OUT = 'X'.
s_fieldcatalog-seltext_l = Text-023.
append s_fieldcatalog to t_fieldcatalog.
clear s_fieldcatalog.
ENDIF.
if g_cnt8 <> '0'.
s_fieldcatalog-col_pos = 18.
s_fieldcatalog-fieldname = 'LIFNR_ND8'.
s_fieldcatalog-tabname = 'I_FINAL_OUT1'.
s_fieldcatalog-NO_OUT = 'X'.
s_fieldcatalog-seltext_l = Text-022.
append s_fieldcatalog to t_fieldcatalog.
clear s_fieldcatalog.
s_fieldcatalog-col_pos = 19.
s_fieldcatalog-fieldname = 'MISCH_VERH8'.
s_fieldcatalog-tabname = 'I_FINAL_OUT1'.
s_fieldcatalog-NO_OUT = 'X'.
s_fieldcatalog-seltext_l = Text-023.
append s_fieldcatalog to t_fieldcatalog.
clear s_fieldcatalog.
ENDIF.
if g_cnt9 <> '0'.
s_fieldcatalog-col_pos = 20.
s_fieldcatalog-fieldname = 'LIFNR_ND9'.
s_fieldcatalog-tabname = 'I_FINAL_OUT1'.
s_fieldcatalog-NO_OUT = 'X'.
s_fieldcatalog-seltext_l = Text-022.
append s_fieldcatalog to t_fieldcatalog.
clear s_fieldcatalog.
s_fieldcatalog-col_pos = 21.
s_fieldcatalog-fieldname = 'MISCH_VERH9'.
s_fieldcatalog-tabname = 'I_FINAL_OUT1'.
s_fieldcatalog-NO_OUT = 'X'.
s_fieldcatalog-seltext_l = Text-023.
append s_fieldcatalog to t_fieldcatalog.
clear s_fieldcatalog.
ENDIF.
if g_cnt10 <> '0'.
s_fieldcatalog-col_pos = 22.
s_fieldcatalog-fieldname = 'LIFNR_ND10'.
s_fieldcatalog-tabname = 'I_FINAL_OUT1'.
s_fieldcatalog-NO_OUT = 'X'.
s_fieldcatalog-seltext_l = Text-022.
append s_fieldcatalog to t_fieldcatalog.
clear s_fieldcatalog.
s_fieldcatalog-col_pos = 23.
s_fieldcatalog-fieldname = 'MISCH_VERH10'.
s_fieldcatalog-tabname = 'I_FINAL_OUT1'.
s_fieldcatalog-NO_OUT = 'X'.
s_fieldcatalog-seltext_l = Text-023.
append s_fieldcatalog to t_fieldcatalog.
clear s_fieldcatalog.
ENDIF.
if g_cnt11 <> '0'.
s_fieldcatalog-col_pos = 24.
s_fieldcatalog-fieldname = 'LIFNR_ND11'.
s_fieldcatalog-tabname = 'I_FINAL_OUT1'.
s_fieldcatalog-NO_OUT = 'X'.
s_fieldcatalog-seltext_l = Text-022.
append s_fieldcatalog to t_fieldcatalog.
clear s_fieldcatalog.
s_fieldcatalog-col_pos = 25.
s_fieldcatalog-fieldname = 'MISCH_VERH11'.
s_fieldcatalog-tabname = 'I_FINAL_OUT1'.
s_fieldcatalog-NO_OUT = 'X'.
s_fieldcatalog-seltext_l = Text-023.
append s_fieldcatalog to t_fieldcatalog.
clear s_fieldcatalog.
ENDIF.
if g_cnt12 <> '0'.
s_fieldcatalog-col_pos = 26.
s_fieldcatalog-fieldname = 'LIFNR_ND12'.
s_fieldcatalog-tabname = 'I_FINAL_OUT1'.
s_fieldcatalog-NO_OUT = 'X'.
s_fieldcatalog-seltext_l = Text-022.
append s_fieldcatalog to t_fieldcatalog.
clear s_fieldcatalog.
s_fieldcatalog-col_pos = 27.
s_fieldcatalog-fieldname = 'MISCH_VERH12'.
s_fieldcatalog-tabname = 'I_FINAL_OUT1'.
s_fieldcatalog-NO_OUT = 'X'.
s_fieldcatalog-seltext_l = Text-023.
append s_fieldcatalog to t_fieldcatalog.
clear s_fieldcatalog.
ENDIF.
if g_cnt13 <> '0'.
s_fieldcatalog-col_pos = 29.
s_fieldcatalog-fieldname = 'LIFNR_ND13'.
s_fieldcatalog-tabname = 'I_FINAL_OUT1'.
s_fieldcatalog-NO_OUT = 'X'.
s_fieldcatalog-seltext_l = Text-022.
append s_fieldcatalog to t_fieldcatalog.
clear s_fieldcatalog.
s_fieldcatalog-col_pos = 30.
s_fieldcatalog-fieldname = 'MISCH_VERH13'.
s_fieldcatalog-tabname = 'I_FINAL_OUT1'.
s_fieldcatalog-NO_OUT = 'X'.
s_fieldcatalog-seltext_l = Text-023.
append s_fieldcatalog to t_fieldcatalog.
clear s_fieldcatalog.
ENDIF.
ENDFORM. "Layout_FieldCatalog
*& Form get_CKMLMV003
text
Form get_CKMLMV003.
Select WERKS
MATNR
MISCH_VERH
KALNR_BAL
GJAHR
PERIO
MGTYP
from CKMLMV003
into table i_CKMLMV003_out
Where ( MATNR in s_MATNR and
WERKS in s_WERKS and
GJAHR in s_GJAHR and
PERIO in s_PERIO and
MGTYP = p_MGTYP ).
Sort i_CKMLMV003_out by MATNR KALNR_BAL.
ENDFORM. "get_CKMLMV003
*& Form get_CKMLMV001
text
Form get_CKMLMV001.
If Not i_CKMLMV003_out is Initial.
Select MATNR
KALNR
LIFNR_ND
EKORG_ND
from CKMLMV001
into Table i_CKMLMV001_out
for all entries in i_CKMLMV003_out
Where ( KALNR = i_CKMLMV003_out-KALNR_BAL
and WERKS = i_CKMLMV003_out-WERKS
and MATNR = i_CKMLMV003_out-MATNR ).
sort i_CKMLMV001_out by MATNR KALNR.
ENDIF.
ENDFORM. "get_CKMLMV001
*& Form Get_Finaldata
text
Form Get_Finaldata.
Loop at i_CKMLMV001_out into i_CKMLMV001_str.
Loop at i_CKMLMV003_out into i_CKMLMV003_str.
If ( i_CKMLMV001_str-KALNR = i_CKMLMV003_str-KALNR_BAL and i_CKMLMV003_str-MATNR = i_CKMLMV001_str-MATNR ) .
If ( flag = 0 ).
g_plant = i_CKMLMV003_str-WERKS.
g_PurchOrg = i_CKMLMV001_str-EKORG_ND.
g_quantstr = i_CKMLMV003_str-MGTYP.
flag = 1.
ENDIF.
Move i_CKMLMV003_str-MATNR to i_Final_str-MATNR.
Move i_CKMLMV003_str-WERKS to i_Final_str-WERKS.
Move i_CKMLMV003_str-GJAHR to i_Final_str-GJAHR.
Move i_CKMLMV003_str-PERIO to i_Final_str-PERIO.
Move i_CKMLMV003_str-MISCH_VERH to i_Final_str-MISCH_VERH1.
Move i_CKMLMV001_str-LIFNR_ND to i_Final_str-LIFNR_ND1.
Move-Corresponding i_CKMLMV003_str to i_CKMLMV003_temp.
Append i_Final_str to i_Final_out.
Clear : i_CKMLMV003_str .
ENDIF.
ENDLOOP.
Clear : i_CKMLMV001_str , i_Final_str , i_CKMLMV003_temp.
ENDLOOP.
Sort i_Final_out by WERKS MATNR GJAHR PERIO .
Loop at i_Final_out into i_Final_str.
if i_Final_str-MATNR = i_Final_str1-MATNR and i_Final_str-GJAHR = i_Final_str1-GJAHR and i_Final_str-PERIO = i_Final_str1-PERIO and i_Final_str-WERKS = i_Final_str1-WERKS.
cnt = cnt + 1.
Case cnt.
When 2.
Move i_Final_str-MISCH_VERH1 to i_Final_str1-MISCH_VERH2.
Move i_Final_str-LIFNR_ND1 to i_Final_str1-LIFNR_ND2.
When 3.
Move i_Final_str-MISCH_VERH1 to i_Final_str1-MISCH_VERH3.
Move i_Final_str-LIFNR_ND1 to i_Final_str1-LIFNR_ND3.
When 4.
Move i_Final_str-MISCH_VERH1 to i_Final_str1-MISCH_VERH4.
Move i_Final_str-LIFNR_ND1 to i_Final_str1-LIFNR_ND4.
When 5.
Move i_Final_str-MISCH_VERH1 to i_Final_str1-MISCH_VERH5.
Move i_Final_str-LIFNR_ND1 to i_Final_str1-LIFNR_ND5.
When 6.
Move i_Final_str-MISCH_VERH1 to i_Final_str1-MISCH_VERH6.
Move i_Final_str-LIFNR_ND1 to i_Final_str1-LIFNR_ND6.
g_cnt6 = 1.
When 7.
Move i_Final_str-MISCH_VERH1 to i_Final_str1-MISCH_VERH7.
Move i_Final_str-LIFNR_ND1 to i_Final_str1-LIFNR_ND7.
g_cnt7 = 1.
When 8.
Move i_Final_str-MISCH_VERH1 to i_Final_str1-MISCH_VERH8.
Move i_Final_str-LIFNR_ND1 to i_Final_str1-LIFNR_ND8.
g_cnt8 = 1.
When 9.
Move i_Final_str-MISCH_VERH1 to i_Final_str1-MISCH_VERH9.
Move i_Final_str-LIFNR_ND1 to i_Final_str1-LIFNR_ND9.
g_cnt9 = 1.
When 10.
Move i_Final_str-MISCH_VERH1 to i_Final_str1-MISCH_VERH10.
Move i_Final_str-LIFNR_ND1 to i_Final_str1-LIFNR_ND10.
g_cnt10 = 1.
When 11.
Move i_Final_str-MISCH_VERH1 to i_Final_str1-MISCH_VERH11.
Move i_Final_str-LIFNR_ND1 to i_Final_str1-LIFNR_ND11.
g_cnt11 = 1.
When 12.
Move i_Final_str-MISCH_VERH1 to i_Final_str1-MISCH_VERH12.
Move i_Final_str-LIFNR_ND1 to i_Final_str1-LIFNR_ND12.
g_cnt12 = 1.
When 13.
Move i_Final_str-MISCH_VERH1 to i_Final_str1-MISCH_VERH13.
Move i_Final_str-LIFNR_ND1 to i_Final_str1-LIFNR_ND13.
g_cnt13 = 1.
ENDCASE.
ELSE.
if cnt GE 1 .
append i_Final_str1 to i_Final_out1.
Clear : i_Final_str1.
ENDIF.
Move-Corresponding i_Final_str to i_Final_str1.
cnt = 0.
cnt = cnt + 1.
ENDIF.
Clear : i_Final_str.
Endloop.
append i_Final_str1 to i_Final_out1.
if i_Final_str-MATNR = i_Final_str1-MATNR and i_Final_str-GJAHR = i_Final_str1-GJAHR and i_Final_str-PERIO = i_Final_str1-PERIO .
cnt = cnt + 1.
Case cnt.
When 2.
Move i_Final_str-MISCH_VERH1 to i_Final_str1-MISCH_VERH2.
Move i_Final_str-LIFNR_ND1 to i_Final_str1-LIFNR_ND2.
When 3.
Move i_Final_str-MISCH_VERH1 to i_Final_str1-MISCH_VERH3.
Move i_Final_str-LIFNR_ND1 to i_Final_str1-LIFNR_ND3.
When 4.
Move i_Final_str-MISCH_VERH1 to i_Final_str1-MISCH_VERH4.
Move i_Final_str-LIFNR_ND1 to i_Final_str1-LIFNR_ND4.
When 5.
Move i_Final_str-MISCH_VERH1 to i_Final_str1-MISCH_VERH5.
Move i_Final_str-LIFNR_ND1 to i_Final_str1-LIFNR_ND5.
ENDCASE.
**Move-Corresponding i_Final_str to i_Final_str1.
ELSE.
if cnt GE 1 .
append i_Final_str1 to i_Final_out1.
Clear : i_Final_str1.
ENDIF.
Move-Corresponding i_Final_str to i_Final_str1.
cnt = 0.
cnt = cnt + 1.
ENDIF.
Clear : i_Final_str.
Endloop.
append i_Final_str1 to i_Final_out1.
ENDFORM. "Get_Finaldata
*& Form top_of_page
text
Form top_of_page.
clear t_header.
refresh t_header.
i_header_str-typ = 'H'.
I_header_Str-info = Text-035.
append I_header_str to t_header.
clear I_header_str.
Date
I_header_str-typ = 'S'.
I_header_str-key = Text-036.
CONCATENATE sy-datum+6(2) '.'
sy-datum+4(2) '.'
sy-datum(4) INTO I_header_str-info. "todays date
append I_header_str to t_header.
clear: I_header_str.
i_header_str-typ = 'S'.
I_header_Str-Key = 'Quantity Structure Type :'.
I_header_Str-info = g_QuantStr.
append I_header_str to t_header.
clear I_header_str.
i_header_str-typ = 'S'.
I_header_Str-Key = 'Purchase Org :'.
I_header_Str-info = g_PurchOrg.
append I_header_str to t_header.
clear I_header_str.
i_header_str-typ = 'S'.
I_header_Str-Key = 'Plant :'.
I_header_Str-info = g_Plant.
append I_header_str to t_header.
clear I_header_str.
CLEAR i_line_event_str.
i_line_event_str-name = 'TOP_OF_PAGE'.
APPEND i_line_event_str TO i_events.
call function 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
it_list_commentary = t_header.
i_logo = 'Z_LOGO'.
ENDFORM. "top_of_page
*& ALVGrid_Final_Display
Form ALVGrid_Final_Display.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = v_repid
i_DEFAULt = c_valx
i_callback_top_of_page = 'TOP_OF_PAGE'
i_Save = c_valx
it_fieldcat = t_fieldcatalog
it_sort = t_sort
it_events = I_events
TABLES
t_outtab = i_final_out1.
ENDFORM. "ALVGrid_Final_Display
*& Form ALVGRID_OO_Display
text
Form ALVGRID_OO_Display.
i_FCAT_str-col_pos = 1.
i_FCAT_str-fieldname = 'MATNR'.
i_FCAT_str-tabname = 'I_FINAL_OUT1'.
i_fcat_str-seltext = 'MATERIAL'.
i_fcat_str-scrtext_m = Text-024.
append i_FCAT_str to i_FCAT.
clear i_FCAT_str.
i_FCAT_str-col_pos = 2.
i_FCAT_str-fieldname = 'GJAHR'.
i_FCAT_str-tabname = 'I_FINAL_OUT1'.
i_fcat_str-scrtext_m = Text-012.
append i_FCAT_str to i_FCAT.
clear i_FCAT_str.
i_FCAT_str-col_pos = 3.
i_FCAT_str-fieldname = 'PERIO'.
i_FCAT_str-tabname = 'I_FINAL_OUT1'.
i_fcat_str-scrtext_m = Text-013.
append i_FCAT_str to i_FCAT.
clear i_FCAT_str.
i_FCAT_str-col_pos = 4.
i_FCAT_str-fieldname = 'WERKS'.
i_FCAT_str-tabname = 'I_FINAL_OUT1'.
i_FCAT_str-scrtext_m = Text-025.
append i_FCAT_str to i_FCAT.
clear i_FCAT_str.
i_FCAT_str-col_pos = 5.
i_FCAT_str-fieldname = 'LIFNR_ND1'.
i_FCAT_str-tabname = 'I_FINAL_OUT1'.
i_fcat_str-scrtext_m = Text-014.
append i_FCAT_str to i_FCAT.
clear i_FCAT_str.
i_FCAT_str-col_pos = 6.
i_FCAT_str-fieldname = 'MISCH_VERH1'.
i_FCAT_str-tabname = 'I_FINAL_OUT1'.
i_FCAT_str-scrtext_m = Text-015.
append i_FCAT_str to i_FCAT.
clear i_FCAT_str.
i_FCAT_str-col_pos = 7.
i_FCAT_str-fieldname = 'LIFNR_ND2'.
i_FCAT_str-tabname = 'I_FINAL_OUT1'.
i_FCAT_str-scrtext_m = Text-016.
append i_FCAT_str to i_FCAT.
clear i_FCAT_str.
i_FCAT_str-col_pos = 8.
i_FCAT_str-fieldname = 'MISCH_VERH2'.
i_FCAT_str-tabname = 'I_FINAL_OUT1'.
i_FCAT_str-scrtext_m = Text-017.
append i_FCAT_str to i_FCAT.
clear i_FCAT_str.
i_FCAT_str-col_pos = 9.
i_FCAT_str-fieldname = 'LIFNR_ND3'.
i_FCAT_str-tabname = 'I_FINAL_OUT1'.
i_FCAT_str-scrtext_m = Text-018.
append i_FCAT_str to i_FCAT.
clear i_FCAT_str.
i_FCAT_str-col_pos = 10.
i_FCAT_str-fieldname = 'MISCH_VERH3'.
i_FCAT_str-tabname = 'I_FINAL_OUT1'.
i_FCAT_str-scrtext_m = Text-019.
append i_FCAT_str to i_FCAT.
clear i_FCAT_str.
i_FCAT_str-col_pos = 11.
i_FCAT_str-fieldname = 'LIFNR_ND4'.
i_FCAT_str-tabname = 'I_FINAL_OUT1'.
i_FCAT_str-scrtext_m = Text-020.
append i_FCAT_str to i_FCAT.
clear i_FCAT_str.
i_FCAT_str-col_pos = 12.
i_FCAT_str-fieldname = 'MISCH_VERH4'.
i_FCAT_str-tabname = 'I_FINAL_OUT1'.
i_FCAT_str-scrtext_m = Text-021.
append i_FCAT_str to i_FCAT.
clear i_FCAT_str.
i_FCAT_str-col_pos = 13.
i_FCAT_str-fieldname = 'LIFNR_ND5'.
i_FCAT_str-tabname = 'I_FINAL_OUT1'.
i_FCAT_str-scrtext_m = Text-022.
append i_FCAT_str to i_FCAT.
clear i_FCAT_str.
i_FCAT_str-col_pos = 14.
i_FCAT_str-fieldname = 'MISCH_VERH5'.
i_FCAT_str-tabname = 'I_FINAL_OUT1'.
i_FCAT_str-scrtext_m = Text-023.
append i_FCAT_str to i_FCAT.
clear i_FCAT_str.
if g_cnt6 <> '0'.
i_FCAT_str-col_pos = 15.
i_FCAT_str-fieldname = 'LIFNR_ND6'.
i_FCAT_str-tabname = 'I_FINAL_OUT1'.
s_fieldcatalog-NO_OUT = 'X'.
i_FCAT_str-scrtext_m = Text-022.
append i_FCAT_str to i_FCAT.
clear i_FCAT_str.
i_FCAT_str-col_pos = 16.
i_FCAT_str-fieldname = 'MISCH_VERH6'.
i_FCAT_str-tabname = 'I_FINAL_OUT1'.
s_fieldcatalog-NO_OUT = 'X'.
i_FCAT_str-scrtext_m = Text-023.
append i_FCAT_str to i_FCAT.
clear i_FCAT_str.
ENDIF.
*if not grid1 is Initial.
If sy-SUBRC = 0.
Call Method grid1->set_table_for_first_display
CHANGING
it_outtab = i_final_out1[]
it_fieldcatalog = I_FCAT
EXCEPTIONS
Invalid_parameter_combination = 1
program_error = 2
too_many_lines = 3
Others = 4.
If sy-subrc <> 0.
ENDIF.
CALL METHOD G_DYNDOC_ID->INITIALIZE_DOCUMENT
EXPORTING
BACKGROUND_COLOR = CL_DD_AREA=>COL_TEXTAREA.
Processing events <br />
CALL METHOD GRID1->LIST_PROCESSING_EVENTS
EXPORTING
I_EVENT_NAME = 'TOP_OF_PAGE'
I_DYNDOC_ID = G_DYNDOC_ID.
Call Method grid2->set_table_for_first_display
CHANGING
it_outtab = i_final_out1[]
it_fieldcatalog = I_FCAT
EXCEPTIONS
Invalid_parameter_combination = 1
program_error = 2
too_many_lines = 3
Others = 4.
If sy-subrc <> 0.
ENDIF.
ENDIF.
ENDIF.
Endform. "ALVGRID_OO_Display
Form EVENT_TOP_OF_PAGE using DG_DYNDOC_ID
TYPE REF TO CL_DD_DOCUMENT.
DATA : DL_TEXT(255) TYPE C.
CALL METHOD DG_DYNDOC_ID->ADD_TEXT
EXPORTING
TEXT = 'Flight Details'
SAP_STYLE = CL_DD_AREA=>HEADING
SAP_FONTSIZE = CL_DD_AREA=>LARGE
SAP_COLOR = CL_DD_AREA=>LIST_HEADING_INT.
Endform.
*& Module STATUS_0101 OUTPUT
text
MODULE STATUS_0101 OUTPUT.
SET PF-STATUS 'xxxxxxxx'.
SET TITLEBAR 'xxx'.
SET PF-STATUS 'STATUS'.
SET TITLEBAR 'TITLE'.
Create Object G_DYNDOC_ID
EXPORTING STYLE = 'ALV_GRID'.
if g_custom_container1 is initial .
create object g_custom_container1
Exporting
Container_name = CCCONTAINER1
Exceptions
cntl_error = 1
cntl_system_error = 2
create_error = 3
lifetime_error = 4
Others = 5.
Create Object G_SPLITTER
Exporting PARENT = g_custom_container1.
CALL METHOD G_SPLITTER->GET_CONTAINER
EXPORTING
ROW = 1
COLUMN = 1
RECEIVING
CONTAINER = G_PARENT_TOP.
*Assigning the Part 2 to GRID
CALL METHOD G_SPLITTER->GET_CONTAINER
EXPORTING
ROW = 2
COLUMN = 1
RECEIVING
CONTAINER = g_parent_grid.Hi,
Check if any event is triggered from the event handler class, upon selection.
Usually, the events are handled on double click or on hotspot etc.
Regards,
Satish Kanteti -
Hi Experts,
Can anyone help me out... in keeping the Check box at the Header Level.....
This requirement is in the copy of the standard transaction "ME2N".
1. In ME2N when you click on the Chage Layout button of ALV grid
and choose "Sorting" tabe.
2. Add any 3 fields say 1. Vendor/Supply plant 2. Purchasing group and 3. Purchasing document in the Sort criteria and choose accending order radio button and check box in the sum .
3. Now click on the Displayed Column tab and remove the above 3 fields from the Displayed colums and add it column set
4. Now report shows the heirarchial one in the sorting manner.
5. I want the Check Boxes at all levels both in the header and the item level.
When I click on the Header level check box all the item level check box should get checked. When I add the check box in the field catalog I am able to see the check box in the item level only because only item level data appears in the internal table and Header level is displayed based on the ALV grid sorting option and that row records are unknown in the internal table.
Is there some thing which I can do to get the check box at the header level retaining all the functionality of ME2N and ALV GRID.....
It would be great help if some one solves me this issue... Points will be awarded.
Br,
Laxmi.Hi Bharath,
Thanks for your response. Select ALL already existing... My requirement is not to get the whole report records selected at particular level all items and header should get selected. Say for example I have Vendor2 i.e, vendor 1 and vendor2. So in the Vendor 1 i will have Purchasing group1 , Purchasing document 1 and say 10 items under Purchasing document. say same as like in Vendor2. So if Click on the Vendor1 all the sub items of it have to selected so that I can perform further action only for these items not for the enter items of the report.
Br,
Laxmi.
Maybe you are looking for
-
How do you make labels in Pages to fit standard Avery type labels?
I can not seem to find the application anywhere in Pages. We need to create address labels. We have the document in PC Word but I was hoping to find it on pages.
-
I currently have a splitter with one input feeding 3 outputs for my TV's and 1 output for my computer/router. I would like to add an additional television output. What type of splitter do I need? Should I get on with 1 input and 5 outputs or shoul
-
Ipod touch youtube HELP!!!
The youtube app on my ipod touch doesn't work so i can't watch any youtube videos. I updated my OS to 4 and it still does not work. It says 'you are not authorized to play this file' and won't play the video. I have registered with itunes account. Th
-
Hi, I having an WD JAVA application where a filled in Interactive PDF Form is upoaded through File Upload UI. In the appliocation, there is a local node (Cardinality = 1:1) where the Data from PDF has to be copied to that. Please let us know how to d
-
Re: Western User Group Meeting 3/8/96
On Fri, 23 Feb 1996 23:17:00 -0800 (PST), [email protected] (Lee Wei) wrote: Anyway, I heard there was an Eastern Forte User Meeting held in the past few weeks. Can you folks on the east coast fill us in on the details? How many people attended, what