USER_COMMAND in CL_GUI_ALV_GRID
Hi
Can anyone tell me when the USER_COMMAND event in the ALV Grid (OO) gets triggered? I tried creating handlers for both double_click and user_command events. My double_click seems to fire the way i wanted, but at no case the user_command event is getting fired.
I feel i am making a minor mistake somewhere, which i am not able to figure out.
Any help is greatly appreciated.
Thanks
Balaji
Hi,
Try this code
DATA gr_event_handler TYPE REF TO lcl_event_handler . .. ..
*--Creating an instance for the event handler
CREATE OBJECT gr_event_handler .
*--Registering handler methods to handle ALV Grid events
SET HANDLER gr_event_handler->handle_double_click FOR gr_alvgrid .
CLASS lcl_event_handler IMPLEMENTATION .
*Handle Double Click
METHOD handle_double_click .
PERFORM handle_double_click USING e_row e_column es_row_no .
ENDMETHOD .
CLASS lcl_event_handler DEFINITION
*Double-click control
Methods:
handle_double_click
FOR EVENT double_click OF cl_gui_alv_grid
IMPORTING e_row e_column
i_fieldrows TYPE lvc_t_row.
w_fieldrows LIKE LINE OF i_fieldrows,
CALL METHOD o_alvgrid->get_selected_rows
IMPORTING
et_index_rows = i_fieldrows.
LOOP AT i_fieldrows INTO w_fieldrows.
READ TABLE i_batch INTO w_block INDEX w_fieldrows-index.
if sy-subrc = 0.
CLASS LCL_EVENT_RECEIVER DEFINITION
CLASS LCL_EVENT_RECEIVER DEFINITION.
Event receiver definitions for ALV actions
PUBLIC SECTION.
CLASS-METHODS:
Row Double click for dirll down.
HANDLE_DOUBLE_CLICK
FOR EVENT DOUBLE_CLICK OF CL_GUI_ALV_GRID
IMPORTING E_ROW
E_COLUMN
ES_ROW_NO.
ENDCLASS.
Implementation
Every event handler that is specified below should also be set after
the object has been created. This is done in the PBO processing.
with the following command
SET HANDLER oEventreceiver->handle_toolbar FOR o_Alvgrid.
CLASS LCL_EVENT_RECEIVER IMPLEMENTATION.
*& Method handle_double_click
This method is called when the user double clicks on a line to drill
down.
The following are exported from the ALV
LVC_S_ROW
LVC_S_COL
LVC_S_ROID
METHOD HANDLE_DOUBLE_CLICK.
The double click drill down processing should be
coded in the form below.
PERFORM F9007_HANDLE_DOUBLE_CLICK USING E_ROW
E_COLUMN
ES_ROW_NO.
ENDMETHOD.
ENDCLASS.
*& Form F9007_HANDLE_DOUBLE_CLICK
This form is called when the user double clicks on a line to drill
down.
-->P_E_ROW_ID - Row ID text
-->P_E_COLUMN_ID - Column ID
-->P_ES_ROW_NO - Row number
FORM f9007_handle_double_click USING p_row
p_column
p_row_no.
DATA: lw_output LIKE LINE OF i_output.
Need to check that a subtotal or grand total line has not been
double-clicked, otherwise the report will produce a short dump!
check p_row+0(1) is initial.
RG:16/11/2004 - End of Changes
READ TABLE i_output INDEX p_row INTO lw_output.
CASE p_column.
WHEN 'KNUMA'.
IF NOT lw_output-knuma IS INITIAL.
SET PARAMETER ID 'VBO' FIELD lw_output-knuma.
CALL TRANSACTION 'VBO3' AND SKIP FIRST SCREEN.
ENDIF.
WHEN 'VBAK_VBELN'.
IF NOT lw_output-vbak_vbeln IS INITIAL.
SET PARAMETER ID 'AUN' FIELD lw_output-vbak_vbeln.
CALL TRANSACTION 'VA03' AND SKIP FIRST SCREEN.
ENDIF.
WHEN 'VBRK_VBELN'.
IF NOT lw_output-vbrk_vbeln IS INITIAL.
SET PARAMETER ID 'VF' FIELD lw_output-vbrk_vbeln.
CALL TRANSACTION 'VF03' AND SKIP FIRST SCREEN.
ENDIF.
ENDCASE.
ENDFORM. " F9007_HANDLE_DOUBLE_CLICK
DATA: lv_bukrs LIKE bkpf-bukrs,
lv_belnr LIKE bkpf-belnr,
lv_gjahr LIKE bkpf-gjahr.
LOOP AT i_fieldrows INTO w_fieldrows.
READ TABLE i_output INTO w_output INDEX w_fieldrows-index.
ENDLOOP.
lv_bukrs = w_output-bukrs.
lv_belnr = w_output-belnr.
lv_gjahr = w_output-gjahr.
SET PARAMETER ID 'BUK' FIELD lv_bukrs.
SET PARAMETER ID 'BLN' FIELD lv_belnr.
SET PARAMETER ID 'GJR' FIELD lv_gjahr.
CALL TRANSACTION c_transaction_call_fb03 AND SKIP FIRST SCREEN .
Also do a search in this forum.
Thanks & Regards,
Judith.
Similar Messages
-
EVENT USER_COMMAND for CL_GUI_ALV_GRID
Hello All,
We have a program that uses the CL_GUI_ALV_GRID and the events user_command and context_menu_request. The program functions by selecting an option for the context menu on an ALV grid which will then take you to another screen with another ALV grid.
The issue is on the second screen where the user clicks the back button to return to the first ALV Grid. For some reason, the functionality of Method user_command is triggered twice preventing the user from returning to the initial screen. Once when the menu option is selected and again when the Back button on the second screen is selected. If the user clicks the Back button again it will return to the initial ALV grid. We need to have the program go to the initial ALV grid after the Back button is clicked the first time not the second.
Does anyone have any suggestions on how to correct this? Thanks in advance for your help.
JohnHi John,
maybe this will help you. I had a similar situation.
1.) When you initialize the grid-controls try to set a
unique identifier within the display-variant.
lf_variant TYPE disvariant.
lf_variant-report = ls_report (NOT SY_REPID!)
lf_variant-handle = 'HUGO'....
2.) After leaving the 2. screen clear all handles using
the method hndle->free, free, clear ...
In PAI you can easaly check <if hndle is initial>
or <if not ( hndle is initial )> ....
Hope this will help you
BR
Michael -
How to insert line with values in ALV (CL_GUI_ALV_GRID)?
Hi,
Does anyone know how to get control of new line inserted in ALV (I am using class CL_GUI_ALV_GRID) before the new line is shown to the user. What I want the user to see is not a completely blank line, but a new line with certain fields filled with data.
I have tried with ALL events in CL_GUI_ALV_GRID but without any luck. If I create my own user command and insert it in the alv menu I get control, but not with the standards. Why?
Please help
Kind regards - Keld GregersenHi,
I created a nice work around...
CLASS lcl_event_handler DEFINITION.
handle_toolbar
FOR EVENT toolbar OF cl_gui_alv_grid
IMPORTING e_object e_interactive,
handle_user_command
FOR EVENT user_command OF cl_gui_alv_grid
IMPORTING e_ucomm.
ENDCLASS. "lcl_event_handler DEFINITION
CLASS lcl_event_handler IMPLEMENTATION.
METHOD handle_toolbar.
DATA:
l_toolbar TYPE stb_button.
Here I replace SAP standard functions with own functions
READ TABLE e_object->mt_toolbar INTO l_toolbar
WITH KEY function = '&LOCAL&APPEND'.
IF sy-subrc = 0.
l_toolbar-function = 'OWN_APPEND'.
MODIFY e_object->mt_toolbar FROM l_toolbar INDEX sy-tabix.
ENDIF.
READ TABLE e_object->mt_toolbar INTO l_toolbar
WITH KEY function = '&LOCAL©_ROW'.
IF sy-subrc = 0.
l_toolbar-function = 'OWN_COPY_ROW'.
MODIFY e_object->mt_toolbar FROM l_toolbar INDEX sy-tabix.
ENDIF.
ENDMETHOD. "handle_toolbar
METHOD handle_user_command.
CASE e_ucomm.
WHEN 'OWN_APPEND'.
CALL METHOD ref_alv->check_changed_data
IMPORTING
e_valid =
CHANGING
c_refresh = 'X'
CREATE YOUR OWN CODE HERE
CALL METHOD ref_alv->refresh_table_display
EXPORTING
is_stable = 'X'
i_soft_refresh =
EXCEPTIONS
finished = 1
others = 2
ENDMETHOD. "handle_user_command
ENDCLASS. "lcl_event_handler IMPLEMENTATION
Kind regards
Keld Gregersen -
Issue with editable alv using cl_gui_alv_grid
Hello all,
its a table update program . user can save create new entry and delete the entires . the screen should be avaiable for multiple time inputs by the user . i achived it by method handle double click and i am refreshing the scrren and making the alv for ready for input . but user wants the screen shoukld get refreshed automatically once user clicks on save button .
how can I achive plz advise .
I am working on ALV by cl_gui_alv_grid , I am using the followingmethods of the class
1) METHODS: handle_toolbar FOR EVENT toolbar OF cl_gui_alv_grid
IMPORTING e_object e_interactive.
2) METHODS: handle_user_command FOR EVENT
user_command OF cl_gui_alv_grid
IMPORTING e_ucomm,
check_changed_data.
3) METHODS: handle_double_click FOR EVENT
double_click OF cl_gui_alv_grid
IMPORTING e_row e_column.
4) METHODS: handle_data_changed
FOR EVENT data_changed OF cl_gui_alv_grid
IMPORTING er_data_changed.
Thanks in advance .Hi Soumyaprakash,
SAve is an user command . I want to have the values which are changed by the user and again the output should be ready for any actions like change the data , create new and delete any entry .
basically the alv output screen should be reday for inputs any number of times untill user clicks on back button .
Thanks
Basavaraj -
How can I trigger a USER_COMMAND for alv grid "toolbar" ???
Hi,
i have the standard ALV Grid "toolbar" and if i click to the Button "&LOCAL©_ROW" than i want try to make a Refresh to my ALV Table in the Event "afteruser_command"_!!!!
Here is the implementation of my Event *"afteruser_command":*_
METHOD on_after_user_command.
........DATA: ls_stable TYPE lvc_s_stbl.
.....CASE e_ucomm.
.....WHEN '&LOCAL©_ROW'.
........MESSAGE 'LOCAL_COPY_ROW' TYPE 'S' DISPLAY LIKE 'E'.
........ls_stable-row = 'X'.
........ls_stable-col = 'X'.
........CALL METHOD gr_grid_d0100->refresh_table_display
..............EXPORTING
.......................is_stable = ls_stable
..............EXCEPTIONS
.......................finished = 1
.......................OTHERS = 2.
......ENDCASE.
ENDMETHOD.
But it doesnt work.
Is there another function code for the Copy Button????
Thanks
ErsinHello Ersin,
the events "after_user_command", "before_user_command" and "user_command" will not be fired when selecting this command!
In my opinion, there is no solution, to fire these events, using this alv-function!
But there is a trick:
1. Register on the event "toolbar" with an own method:
toolbar_own for event toolbar of cl_gui_alv_grid
importing e_object
e_interactive,
In this method change the function code of "&LOCAL©_ROW", but don´t change the row of the entry, because the button should appear on the same place in the toolbar:
field-symbols: <ls_toolbar> type stb_button.
read table e_object->mt_toolbar with key function = '&LOCAL©_ROW'
assigning <ls_toolbar>.
if sy-subrc = 0.
<ls_toolbar>-function = 'COPYROW_OWN'.
endif.
2. Register on the event "user_command" ( I think, that´s clear ):
user_cmd_own for event user_command
of cl_gui_alv_grid
importing e_ucomm,
( don´t forget the set handler-commands for both events:
set handler po_alv_own->user_cmd_own for po_alv_own.
set handler po_alv_own->toolbar_own for po_alv_own. )
3. Now you can react in the method "user_command" on your own function code:
case e_ucomm.
when 'COPYROW_OWN'.
perform copy_row using me
changing gt_bis_cf_out.
Sample code for copying the current line:
FORM COPY_ROW using po_alv_own type ref to gcl_alv_own
changing pt_table_alv type gt_table_alv_t.
data: l_index type i,
ls_table_alv type gs_table_alvt_t.
call method po_alv_own->get_current_cell
importing
e_row = l_index.
* e_value =
* e_col =
* es_row_id =
* es_col_id =
* es_row_no =
"read the current line:
read table pt_table_alv index l_index
into ls_table_alv_out.
"some changes for the new row:
clear: ls_table_alv-style,
ls_table_alv-tabix.
"insert the new line:
add 1 to l_index.
insert ls_table_alv into pt_table_alv index l_index.
po_alv_own->refresh( ).
ENDFORM. " COPY_ROW
In this manner the events "after_user_command", "before_user_command" are fired, too!
For information: My problem was, that the ALV-function copied the style-information too, so in the new line, some fields are not editable. At least his field must be cleared!
Best regard
Thomas Scheuermann -
ALV OO toolbar event of cl_gui_alv_grid - problem
I have defined a Button in ALV grid toolbar in my program using Event Toolbar OF cl_gui_alv_grid.
I have also disabled/Excluded some of the buttons on Standard Grid toolbar.
My requirement is when i click on Button defined on ALV grid toolbar..i have to trigger a Perform in which code for submit the changes done on the grid is written..
I tried to use event user_command and this method is not getting trigerred when i click on button defined on toolbar, Probably since i have mutiple grids in my output..
suggest me appropriate event handler method or proper approach to go about this?Hello Ksiva
Have you set the event handler for USER_COMMAND? You can do this either for all or a specific grid instance.
SET HANDLER: lcl_eventhandler=>handle_user_command FOR ALL INSTANCES.
SET HANDLER: lcl_eventhandler=>handle_user_command FOR go_grid1.
Within your event handler method you can easily distinguish between the different grid instance.
CLASS lcl_eventhandler DEFINITION.
METHODS: handle_user_command FOR EVENT user_command
OF cl_gui_alv_grid
IMPORTING
e_ucomm
sender. " !!! Optional parameter, instance which raised the event
CLASS lcl_eventhandler IMPLEMENTATION.
METHOD handle_user_command.
CASE sender.
WHEN go_grid1.
" handle user command
WHEN others.
RETURN.
ENDCASE.
ENDMETHOD.
Regards
Uwe -
First try with ALV Grid and Abap Objects
Hi,
this is my first try to write a simple report which just reads a textfile and display it in an ALV Grid. As a basis, I used some examples from SDN, but it did not work as expected
I would like just to use a docking container. I do not need a separate area for the ALV Grid. The report gives no syntax errors, but it just display the report title, nothing else. SAP R/3 Release is 4.7. Below is the source code of the report. Any idea what is missing?
*& Report Z_PLAN_TEXT_UPLOAD *
REPORT z_plan_text_upload.
INCLUDE <icon>.
* Data Declaration
DATA:
gf_dynnr TYPE sy-dynnr,
gf_repid TYPE sy-repid.
DATA:
go_docking_container TYPE REF TO cl_gui_docking_container,
go_alv_grid TYPE REF TO cl_gui_alv_grid.
DATA:
gt_fieldcat TYPE lvc_t_fcat,
gs_fieldcat LIKE LINE OF gt_fieldcat.
TYPES:
BEGIN OF gy_text_input,
firma(20) TYPE c,
kostenstelle(20) TYPE c,
datenart1(10) TYPE c,
planjahr(10) TYPE c,
* planperiode TYPE co_perio,
planperiode(5) TYPE c,
datenart2(10) TYPE c,
planungposition(10) TYPE c,
* kostenart TYPE koart,
kostenart(10) TYPE c,
* planbetrag TYPE bapicurr_d,
planbetrag(20) TYPE c,
END OF gy_text_input.
DATA:
gt_text_input TYPE TABLE OF gy_text_input,
gs_text_input LIKE LINE OF gt_text_input.
* Local Class Definition
* Local Class Implementation
* Selection-Screen
SELECTION-SCREEN BEGIN OF BLOCK b1
WITH FRAME TITLE text-001.
SKIP.
PARAMETERS:
gp_file TYPE localfile,
gp_head TYPE checkbox DEFAULT 'X'.
SKIP.
PARAMETERS:
gp_gjahr LIKE coep-gjahr,
gp_versn LIKE coep-versn.
SELECTION-SCREEN END OF BLOCK b1.
* Initialization
INITIALIZATION.
DATA:
lf_sapworkdir TYPE string.
CALL METHOD cl_gui_frontend_services=>get_sapgui_workdir
CHANGING
sapworkdir = lf_sapworkdir
EXCEPTIONS
get_sapworkdir_failed = 1
cntl_error = 2
error_no_gui = 3
not_supported_by_gui = 4
OTHERS = 5.
IF sy-subrc <> 0 OR lf_sapworkdir = ''.
CALL METHOD cl_gui_frontend_services=>directory_get_current
CHANGING
current_directory = lf_sapworkdir
EXCEPTIONS
directory_get_current_failed = 1
cntl_error = 2
error_no_gui = 3
not_supported_by_gui = 4
OTHERS = 5.
CALL METHOD cl_gui_cfw=>flush.
ENDIF."sy-subrc <> 0 OR sapworkdir = ''
gp_file = lf_sapworkdir.
gf_dynnr = sy-dynnr.
gf_repid = sy-repid.
* At Selection-Screen
AT SELECTION-SCREEN ON VALUE-REQUEST FOR gp_file.
DATA:
lt_filetable TYPE filetable,
ls_filetable LIKE LINE OF lt_filetable,
lt_rc TYPE i.
CALL METHOD cl_gui_frontend_services=>file_open_dialog
* EXPORTING
* WINDOW_TITLE =
* DEFAULT_EXTENSION =
* DEFAULT_FILENAME =
* FILE_FILTER =
* INITIAL_DIRECTORY =
* MULTISELECTION =
* WITH_ENCODING =
CHANGING
file_table = lt_filetable
rc = lt_rc
* USER_ACTION =
* FILE_ENCODING =
EXCEPTIONS
file_open_dialog_failed = 1
cntl_error = 2
error_no_gui = 3
not_supported_by_gui = 4
OTHERS = 5.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
READ TABLE lt_filetable INDEX 1
INTO
ls_filetable.
gp_file = ls_filetable-filename.
CALL METHOD cl_gui_cfw=>flush.
* Start-Of-Selection
START-OF-SELECTION.
DATA:
lf_filename LIKE filename-fileintern.
lf_filename = gp_file.
CALL FUNCTION 'FILE_READ_AND_CONVERT_SAP_DATA'
EXPORTING
i_filename = lf_filename
i_servertyp = 'PRS '
i_fileformat = 'TXT'
* I_FIELD_SEPERATOR =
i_line_header = gp_head
* IMPORTING
* E_BIN_FILELENGTH =
TABLES
i_tab_receiver = gt_text_input
EXCEPTIONS
file_not_found = 1
close_failed = 2
authorization_failed = 3
open_failed = 4
conversion_failed = 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.
*------ Build the Field Catalog ---------------------------------------*
PERFORM build_fieldcatalog
CHANGING gt_fieldcat.
*------ Create the docking container ----------------------------------*
IF go_docking_container IS INITIAL.
CREATE OBJECT go_docking_container
EXPORTING
* PARENT =
repid = gf_repid
dynnr = gf_dynnr
* SIDE = go_docking_container->DOCK_AT_bottom
* EXTENSION = 200
* STYLE =
* LIFETIME = lifetime_default
* CAPTION =
* METRIC = 0
* RATIO =
* NO_AUTODEF_PROGID_DYNNR =
* NAME =
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.
ENDIF."go_docking_container IS INITIAL
*------ Create the ALV Grid -------------------------------------------*
IF go_alv_grid IS INITIAL.
CREATE OBJECT go_alv_grid
EXPORTING
* I_SHELLSTYLE = 0
* I_LIFETIME =
i_parent = go_docking_container
* I_APPL_EVENTS = space
* I_PARENTDBG =
* I_APPLOGPARENT =
* I_GRAPHICSPARENT =
* I_NAME =
EXCEPTIONS
error_cntl_create = 1
error_cntl_init = 2
error_cntl_link = 3
error_dp_create = 4
OTHERS = 5.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDIF."go_alv_grid is initial
*------ Call ALV Grid -------------------------------------------------*
CALL METHOD go_alv_grid->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 =
CHANGING
it_outtab = gt_text_input
it_fieldcatalog = gt_fieldcat
* IT_SORT =
* IT_FILTER =
EXCEPTIONS
invalid_parameter_combination = 1
program_error = 2
too_many_lines = 3
OTHERS = 4.
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 build_fieldcatalog
* text
* <--P_GT_FIELDCAT text
FORM build_fieldcatalog
CHANGING
pt_fieldcat TYPE lvc_t_fcat.
DATA ls_fcat TYPE lvc_s_fcat.
ls_fcat-fieldname = 'FIRMA' .
ls_fcat-inttype = 'C' .
ls_fcat-outputlen = '20' .
ls_fcat-coltext = 'Firma' .
ls_fcat-seltext = 'Firma' .
APPEND ls_fcat TO pt_fieldcat .
ls_fcat-fieldname = 'KOSTENSTELLE' .
ls_fcat-inttype = 'C' .
ls_fcat-outputlen = '20' .
ls_fcat-coltext = 'Kostenstelle' .
ls_fcat-seltext = 'Kostenstelle' .
APPEND ls_fcat TO pt_fieldcat .
ls_fcat-fieldname = 'DATENART1' .
ls_fcat-inttype = 'C' .
ls_fcat-outputlen = '10' .
ls_fcat-coltext = 'Datenart1' .
ls_fcat-seltext = 'Datenart1' .
APPEND ls_fcat TO pt_fieldcat .
ls_fcat-fieldname = 'PLANJAHR' .
ls_fcat-inttype = 'C' .
ls_fcat-outputlen = '10' .
ls_fcat-coltext = 'Planjahr' .
ls_fcat-seltext = 'Planjahr' .
APPEND ls_fcat TO pt_fieldcat .
APPEND ls_fcat TO pt_fieldcat .
ls_fcat-fieldname = 'PLANPERIODE' .
ls_fcat-inttype = 'C' .
ls_fcat-outputlen = '5' .
ls_fcat-coltext = 'Planperiode' .
ls_fcat-seltext = 'Planperiode' .
APPEND ls_fcat TO pt_fieldcat .
ls_fcat-fieldname = 'DATENART2' .
ls_fcat-inttype = 'C' .
ls_fcat-outputlen = '10' .
ls_fcat-coltext = 'Datenart2' .
ls_fcat-seltext = 'Datenart2' .
APPEND ls_fcat TO pt_fieldcat .
ls_fcat-fieldname = 'PLANUNGSPOSITION' .
ls_fcat-inttype = 'C' .
ls_fcat-outputlen = '10' .
ls_fcat-coltext = 'Planungsposition' .
ls_fcat-seltext = 'Planungsposition' .
APPEND ls_fcat TO pt_fieldcat .
APPEND ls_fcat TO pt_fieldcat .
ls_fcat-fieldname = 'KOSTENART' .
ls_fcat-inttype = 'C' .
ls_fcat-outputlen = '10' .
ls_fcat-coltext = 'Kostenart' .
ls_fcat-seltext = 'Kostenart' .
APPEND ls_fcat TO pt_fieldcat .
ls_fcat-fieldname = 'PLANBETRAG' .
ls_fcat-inttype = 'C' .
ls_fcat-outputlen = '20' .
ls_fcat-coltext = 'Planbetrag' .
ls_fcat-seltext = 'Planbetrag' .
APPEND ls_fcat TO pt_fieldcat .
ENDFORM. "build_fieldcatalogI have added some more functionality to my report. The good thing is, the report works as it should.
BUT, I'm not really sure, whether this is a good (correct) design. The report works the following way:
1. Read planning data form text file into internal table
2. Display the internal table
3. Convert the data and display the converted result
4. Post the converted data to the system
5. Display log with messages
The main thing is, I would like to know, do i really need two dynros, to display the two different internal tables or is it possible just to use one ALV-Grid? I was not able to find another solution. Any comment or help to the report is appreciated.
*& Report Z_PLAN_TEXT_UPLOAD_TEST *
REPORT z_plan_text_upload_test.
INCLUDE <icon>.
* Data Declaration
DATA:
gf_okcode TYPE ui_func,
gf_balloghndl TYPE balloghndl.
DATA:
go_docking_container TYPE REF TO cl_gui_docking_container,
go_alv_grid_0100 TYPE REF TO cl_gui_alv_grid,
go_alv_grid_0200 TYPE REF TO cl_gui_alv_grid.
DATA:
gt_fieldcat TYPE lvc_t_fcat,
gs_fieldcat LIKE LINE OF gt_fieldcat.
TYPES:
BEGIN OF gy_text_input,
firma(20) TYPE c,
kostenstelle(20) TYPE c,
datenart1(10) TYPE c,
planjahr(10) TYPE c,
* planperiode TYPE co_perio,
planperiode(5) TYPE c,
datenart2(10) TYPE c,
planungsposition(10) TYPE c,
* kostenart TYPE koart,
kostenart(10) TYPE c,
* planbetrag TYPE bapicurr_d,
planbetrag(20) TYPE c,
END OF gy_text_input.
DATA:
gt_text_input TYPE TABLE OF gy_text_input,
gs_text_input LIKE LINE OF gt_text_input.
* Bapi Strukturen
DATA:
gs_headerinfo TYPE bapiplnhdr,
gt_indexstructure TYPE TABLE OF bapiacpstru,
gs_indexstructure LIKE LINE OF gt_indexstructure,
gt_coobject TYPE TABLE OF bapipcpobj,
gs_coobject LIKE LINE OF gt_coobject,
gt_pervalue TYPE TABLE OF bapipcpval,
gs_pervalue LIKE LINE OF gt_pervalue,
gt_return TYPE TABLE OF bapiret2,
gs_return LIKE LINE OF gt_return,
gt_control TYPE TABLE OF bapipcpctrl,
gt_totvalue TYPE TABLE OF bapipcptot.
TYPES:
BEGIN OF gy_bapi_input,
version TYPE versn,
* perio TYPE co_perio,
fisc_year TYPE gjahr,
coobject(10) TYPE c,
cost_elem TYPE kstar,
wkgbtr01 TYPE wkgxxx,
wkgbtr02 TYPE wkgxxx,
wkgbtr03 TYPE wkgxxx,
wkgbtr04 TYPE wkgxxx,
wkgbtr05 TYPE wkgxxx,
wkgbtr06 TYPE wkgxxx,
wkgbtr07 TYPE wkgxxx,
wkgbtr08 TYPE wkgxxx,
wkgbtr09 TYPE wkgxxx,
wkgbtr10 TYPE wkgxxx,
wkgbtr11 TYPE wkgxxx,
wkgbtr12 TYPE wkgxxx,
END OF gy_bapi_input.
DATA:
gt_bapi_input TYPE TABLE OF gy_bapi_input,
gs_bapi_input LIKE LINE OF gt_bapi_input.
* Anwendungs-Log
DATA: gs_balsmsg TYPE bal_s_msg.
* Selection-Screen
SELECTION-SCREEN BEGIN OF BLOCK b1
WITH FRAME TITLE text-001.
PARAMETERS:
gp_file TYPE localfile,
gp_head TYPE checkbox DEFAULT 'X'.
SELECTION-SCREEN SKIP.
PARAMETERS:
gp_kokrs LIKE coep-kokrs,
gp_gjahr LIKE coep-gjahr,
gp_versn LIKE coep-versn,
gp_test AS CHECKBOX DEFAULT 'X'.
SELECTION-SCREEN END OF BLOCK b1.
* Local Class Definition
CLASS lcl_event_handler DEFINITION.
PUBLIC SECTION.
METHODS:
handle_toolbar_0100 FOR EVENT toolbar OF cl_gui_alv_grid
IMPORTING
e_object
e_interactive,
handle_user_command_0100 FOR EVENT user_command OF cl_gui_alv_grid
IMPORTING
e_ucomm,
handle_toolbar_0200 FOR EVENT toolbar OF cl_gui_alv_grid
IMPORTING
e_object
e_interactive,
handle_user_command_0200 FOR EVENT user_command OF cl_gui_alv_grid
IMPORTING
e_ucomm.
PRIVATE SECTION.
ENDCLASS. "lcl_event_handler DEFINITION
* Local Class Implementation
CLASS lcl_event_handler IMPLEMENTATION.
METHOD handle_toolbar_0100.
PERFORM handle_toolbar_0100
USING
e_object.
* e_interactive.
ENDMETHOD. "handle_toolbar_0100
METHOD handle_user_command_0100.
PERFORM handle_user_command_0100
USING
e_ucomm.
ENDMETHOD. "handle_user_command_0100
METHOD handle_toolbar_0200.
PERFORM handle_toolbar_0200
USING
e_object.
* e_interactive.
ENDMETHOD. "handle_toolbar_0100
METHOD handle_user_command_0200.
PERFORM handle_user_command_0200
USING
e_ucomm.
ENDMETHOD. "handle_user_command_0100
ENDCLASS. "lcl_event_handler IMPLEMENTATION
* Initialization
INITIALIZATION.
DATA:
lf_sapworkdir TYPE string.
CALL METHOD cl_gui_frontend_services=>get_sapgui_workdir
CHANGING
sapworkdir = lf_sapworkdir
EXCEPTIONS
get_sapworkdir_failed = 1
cntl_error = 2
error_no_gui = 3
not_supported_by_gui = 4
OTHERS = 5.
IF sy-subrc <> 0 OR lf_sapworkdir = ''.
CALL METHOD cl_gui_frontend_services=>directory_get_current
CHANGING
current_directory = lf_sapworkdir
EXCEPTIONS
directory_get_current_failed = 1
cntl_error = 2
error_no_gui = 3
not_supported_by_gui = 4
OTHERS = 5.
CALL METHOD cl_gui_cfw=>flush.
ENDIF."sy-subrc <> 0 OR sapworkdir = ''
gp_file = lf_sapworkdir.
* At Selection-Screen
AT SELECTION-SCREEN ON VALUE-REQUEST FOR gp_file.
DATA:
lt_filetable TYPE filetable,
ls_filetable LIKE LINE OF lt_filetable,
lt_rc TYPE i.
CALL METHOD cl_gui_frontend_services=>file_open_dialog
* EXPORTING
* WINDOW_TITLE =
* DEFAULT_EXTENSION =
* DEFAULT_FILENAME =
* FILE_FILTER =
* INITIAL_DIRECTORY =
* MULTISELECTION =
* WITH_ENCODING =
CHANGING
file_table = lt_filetable
rc = lt_rc
* USER_ACTION =
* FILE_ENCODING =
EXCEPTIONS
file_open_dialog_failed = 1
cntl_error = 2
error_no_gui = 3
not_supported_by_gui = 4
OTHERS = 5.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
READ TABLE lt_filetable INDEX 1
INTO
ls_filetable.
gp_file = ls_filetable-filename.
CALL METHOD cl_gui_cfw=>flush.
* Start-Of-Selection
START-OF-SELECTION.
DATA:
lf_filename LIKE filename-fileintern.
PERFORM create_log.
gs_return-type = 'I'.
IF gp_test = 'X'.
gs_return-message = text-010.
ELSE.
gs_return-message = text-020.
ENDIF.
PERFORM add_log_message_free_text
USING
gs_return-type
gs_return-message.
lf_filename = gp_file.
CALL FUNCTION 'FILE_READ_AND_CONVERT_SAP_DATA'
EXPORTING
i_filename = lf_filename
i_servertyp = 'PRS '
i_fileformat = 'TXT'
* I_FIELD_SEPERATOR =
i_line_header = gp_head
* IMPORTING
* E_BIN_FILELENGTH =
TABLES
i_tab_receiver = gt_text_input
EXCEPTIONS
file_not_found = 1
close_failed = 2
authorization_failed = 3
open_failed = 4
conversion_failed = 5
OTHERS = 6.
IF sy-subrc <> 0.
gs_balsmsg-msgty = sy-msgty.
gs_balsmsg-msgid = sy-msgid.
gs_balsmsg-msgno = sy-msgno.
gs_balsmsg-msgv1 = sy-msgv1.
gs_balsmsg-msgv2 = sy-msgv2.
gs_balsmsg-msgv3 = sy-msgv3.
gs_balsmsg-msgv4 = sy-msgv4.
PERFORM add_log_message
USING
gs_balsmsg.
ENDIF.
CALL SCREEN '0100'.
*& Module status_0100 OUTPUT
* text
MODULE status_0100 OUTPUT.
SET PF-STATUS 'STATUS_0100'.
*------ Create the docking container ----------------------------------*
IF go_docking_container IS INITIAL.
CREATE OBJECT go_docking_container
EXPORTING
parent = cl_gui_container=>screen0
* repid = gf_repid
* dynnr = gf_dynnr
* SIDE = go_docking_container->DOCK_AT_bottom
* EXTENSION = 200
* STYLE =
* LIFETIME = lifetime_default
* CAPTION =
* METRIC = 0
ratio = 95
* NO_AUTODEF_PROGID_DYNNR =
* NAME =
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.
*------ Expand docking container to full screen -------------------*
CALL METHOD go_docking_container->set_extension
EXPORTING
extension = 99999 "full-screen size !!!
EXCEPTIONS
cntl_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.
ENDIF."go_docking_container IS INITIAL
*------ Link docking container to screen ------------------------------*
CALL METHOD go_docking_container->link
EXPORTING
repid = sy-repid
dynnr = '0100'
* CONTAINER =
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
lifetime_dynpro_dynpro_link = 3
OTHERS = 4
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
*------ Build the Field Catalog ---------------------------------------*
PERFORM build_fieldcatalog_input
CHANGING gt_fieldcat.
*------ Create the ALV Grid -------------------------------------------*
IF go_alv_grid_0100 IS INITIAL.
CREATE OBJECT go_alv_grid_0100
EXPORTING
* I_SHELLSTYLE = 0
* I_LIFETIME =
i_parent = go_docking_container
* I_APPL_EVENTS = space
* I_PARENTDBG =
* I_APPLOGPARENT =
* I_GRAPHICSPARENT =
* I_NAME =
EXCEPTIONS
error_cntl_create = 1
error_cntl_init = 2
error_cntl_link = 3
error_dp_create = 4
OTHERS = 5.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDIF."go_alv_grid_0100 is initial
*------ Create instance for event handler -----------------------------*
DATA: go_event_handler_0100 TYPE REF TO lcl_event_handler.
CREATE OBJECT go_event_handler_0100.
*------ Register event handler ----------------------------------------*
SET HANDLER go_event_handler_0100->handle_toolbar_0100
FOR go_alv_grid_0100.
SET HANDLER go_event_handler_0100->handle_user_command_0100
FOR go_alv_grid_0100.
*------ Call ALV Grid -------------------------------------------------*
CALL METHOD go_alv_grid_0100->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 =
CHANGING
it_outtab = gt_text_input
it_fieldcatalog = gt_fieldcat
* IT_SORT =
* IT_FILTER =
EXCEPTIONS
invalid_parameter_combination = 1
program_error = 2
too_many_lines = 3
OTHERS = 4.
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 method 'set_toolbar_interactive' to raise event TOOLBAR.
CALL METHOD go_alv_grid_0100->set_toolbar_interactive.
ENDMODULE. " status_0100 OUTPUT
*& Module status_0200 OUTPUT
* text
MODULE status_0200 OUTPUT.
SET PF-STATUS 'STATUS_0100'.
*------ Create the docking container ----------------------------------*
IF go_docking_container IS INITIAL.
CREATE OBJECT go_docking_container
EXPORTING
parent = cl_gui_container=>screen0
* repid = gf_repid
* dynnr = gf_dynnr
* SIDE = go_docking_container->DOCK_AT_bottom
* EXTENSION = 200
* STYLE =
* LIFETIME = lifetime_default
* CAPTION =
* METRIC = 0
ratio = 95
* NO_AUTODEF_PROGID_DYNNR =
* NAME =
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.
*------ Expand docking container to full screen -------------------*
CALL METHOD go_docking_container->set_extension
EXPORTING
extension = 99999
EXCEPTIONS
cntl_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.
ENDIF."go_docking_container IS INITIAL
*------ Link docking container to screen ------------------------------*
CALL METHOD go_docking_container->link
EXPORTING
repid = sy-repid
dynnr = '0200'
* CONTAINER =
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
lifetime_dynpro_dynpro_link = 3
OTHERS = 4
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
*------ Build the Field Catalog---------------------------------------*
PERFORM build_fieldcatalog_bapi_input
CHANGING
gt_fieldcat.
*------ Create the ALV Grid -------------------------------------------*
IF go_alv_grid_0200 IS INITIAL.
CREATE OBJECT go_alv_grid_0200
EXPORTING
* I_SHELLSTYLE = 0
* I_LIFETIME =
i_parent = go_docking_container
* I_APPL_EVENTS = space
* I_PARENTDBG =
* I_APPLOGPARENT =
* I_GRAPHICSPARENT =
* I_NAME =
EXCEPTIONS
error_cntl_create = 1
error_cntl_init = 2
error_cntl_link = 3
error_dp_create = 4
OTHERS = 5.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDIF."go_alv_grid_0200 is initial
*------ Create instance for event handler -----------------------------*
DATA: go_event_handler_0200 TYPE REF TO lcl_event_handler.
CREATE OBJECT go_event_handler_0200.
*------ Register event handler ----------------------------------------*
SET HANDLER go_event_handler_0200->handle_toolbar_0200
FOR go_alv_grid_0200.
SET HANDLER go_event_handler_0200->handle_user_command_0200
FOR go_alv_grid_0200.
*------ Call ALV Grid -------------------------------------------------*
CALL METHOD go_alv_grid_0200->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 =
CHANGING
it_outtab = gt_bapi_input
it_fieldcatalog = gt_fieldcat
* IT_SORT =
* IT_FILTER =
EXCEPTIONS
invalid_parameter_combination = 1
program_error = 2
too_many_lines = 3
OTHERS = 4.
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 method 'set_toolbar_interactive' to raise event TOOLBAR.
CALL METHOD go_alv_grid_0200->set_toolbar_interactive.
CALL METHOD go_alv_grid_0200->refresh_table_display
* EXPORTING
* IS_STABLE =
* I_SOFT_REFRESH =
EXCEPTIONS
finished = 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.
CALL METHOD cl_gui_control=>set_focus
EXPORTING
control = go_alv_grid_0200.
ENDMODULE. " status_0200 OUTPUT
*& Module user_command_0100 INPUT
* text
MODULE user_command_0100 INPUT.
CASE gf_okcode.
WHEN 'BACK' OR 'END' OR 'CANC'.
PERFORM exit_program.
WHEN OTHERS.
ENDCASE.
CLEAR gf_okcode.
ENDMODULE. " user_command_0100 INPUT
*& Module user_command_0200 INPUT
* text
MODULE user_command_0200 INPUT.
CASE gf_okcode.
WHEN 'BACK' OR 'END' OR 'CANC'.
PERFORM exit_program.
WHEN OTHERS.
ENDCASE.
CLEAR gf_okcode.
ENDMODULE. " user_command_0200 INPUT
*& Form build_fieldcatalog
* text
* <--P_GT_FIELDCAT text
FORM build_fieldcatalog_input
CHANGING
pt_fieldcat TYPE lvc_t_fcat.
DATA ls_fcat TYPE lvc_s_fcat.
CLEAR pt_fieldcat.
ls_fcat-fieldname = 'FIRMA' .
ls_fcat-inttype = 'C' .
ls_fcat-outputlen = '20' .
ls_fcat-coltext = 'Firma' .
ls_fcat-seltext = 'Firma' .
APPEND ls_fcat TO pt_fieldcat .
ls_fcat-fieldname = 'KOSTENSTELLE' .
ls_fcat-inttype = 'C' .
ls_fcat-outputlen = '20' .
ls_fcat-coltext = 'CO-Objekt' .
ls_fcat-seltext = 'CO-Objekt' .
APPEND ls_fcat TO pt_fieldcat .
ls_fcat-fieldname = 'DATENART1' .
ls_fcat-inttype = 'C' .
ls_fcat-outputlen = '10' .
ls_fcat-coltext = 'Datenart1' .
ls_fcat-seltext = 'Datenart1' .
APPEND ls_fcat TO pt_fieldcat .
ls_fcat-fieldname = 'PLANJAHR' .
ls_fcat-inttype = 'C' .
ls_fcat-outputlen = '10' .
ls_fcat-coltext = 'Planjahr' .
ls_fcat-seltext = 'Planjahr' .
APPEND ls_fcat TO pt_fieldcat .
ls_fcat-fieldname = 'PLANPERIODE' .
ls_fcat-inttype = 'C' .
ls_fcat-outputlen = '5' .
ls_fcat-coltext = 'Planperiode' .
ls_fcat-seltext = 'Planperiode' .
APPEND ls_fcat TO pt_fieldcat .
ls_fcat-fieldname = 'DATENART2' .
ls_fcat-inttype = 'C' .
ls_fcat-outputlen = '10' .
ls_fcat-coltext = 'Datenart2' .
ls_fcat-seltext = 'Datenart2' .
APPEND ls_fcat TO pt_fieldcat .
ls_fcat-fieldname = 'PLANUNGSPOSITION' .
ls_fcat-inttype = 'C' .
ls_fcat-outputlen = '10' .
ls_fcat-coltext = 'Planungsposition' .
ls_fcat-seltext = 'Planungsposition' .
APPEND ls_fcat TO pt_fieldcat .
ls_fcat-fieldname = 'KOSTENART' .
ls_fcat-inttype = 'C' .
ls_fcat-outputlen = '10' .
ls_fcat-coltext = 'Kostenart' .
ls_fcat-seltext = 'Kostenart' .
APPEND ls_fcat TO pt_fieldcat .
ls_fcat-fieldname = 'PLANBETRAG' .
ls_fcat-inttype = 'C' .
ls_fcat-outputlen = '20' .
ls_fcat-coltext = 'Planbetrag' .
ls_fcat-seltext = 'Planbetrag' .
APPEND ls_fcat TO pt_fieldcat .
ENDFORM. "build_fieldcatalog
*& Form handle_toolbar_0100
* text
* -->P_E_OBJECT text
* -->P_E_INTERACTIVE text
FORM handle_toolbar_0100
USING
po_object TYPE REF TO cl_alv_event_toolbar_set.
DATA: ls_toolbar TYPE stb_button.
CLEAR ls_toolbar.
ls_toolbar-butn_type = 0.
ls_toolbar-function = 'KONV'.
ls_toolbar-quickinfo = 'Konvertieren'.
ls_toolbar-text = 'Konvertieren'.
ls_toolbar-disabled = ' '.
APPEND ls_toolbar TO po_object->mt_toolbar.
ENDFORM. " handle_toolbar_0100
*& Form handle_user_command_0100
* text
* -->P_E_UCOMM text
FORM handle_user_command_0100
USING
pf_ucomm TYPE syucomm.
CASE pf_ucomm.
WHEN 'KONV'.
PERFORM convert_data.
ENDCASE.
ENDFORM. " handle_user_command_0100
*& Form exit_program
* text
* --> p1 text
* <-- p2 text
FORM exit_program.
CALL METHOD go_alv_grid_0100->free.
IF NOT go_alv_grid_0200 IS INITIAL.
CALL METHOD go_alv_grid_0200->free.
ENDIF.
CALL METHOD go_docking_container->free.
CALL METHOD cl_gui_cfw=>flush.
IF sy-subrc NE 0.
* add your handling, for example
CALL FUNCTION 'POPUP_TO_INFORM'
EXPORTING
titel = sy-repid
txt2 = sy-subrc
txt1 = 'Error in Flush'(500).
ENDIF.
LEAVE PROGRAM.
ENDFORM. " exit_program
*& Form handle_toolbar_0200
* text
* -->P_E_OBJECT text
* -->P_E_INTERACTIVE text
FORM handle_toolbar_0200
USING
po_object TYPE REF TO cl_alv_event_toolbar_set.
DATA: ls_toolbar TYPE stb_button.
CLEAR ls_toolbar.
ls_toolbar-butn_type = 0.
ls_toolbar-function = 'POST'.
ls_toolbar-quickinfo = 'Buchen'.
ls_toolbar-text = 'Buchen'.
ls_toolbar-disabled = ' '.
APPEND ls_toolbar TO po_object->mt_toolbar.
ENDFORM. " handle_toolbar_0200
*& Form handle_user_command_0200
* text
* -->P_E_UCOMM text
FORM handle_user_command_0200
USING
pf_ucomm TYPE syucomm.
CASE pf_ucomm.
WHEN 'POST'.
PERFORM post.
ENDCASE.
ENDFORM. " handle_user_command_0200
*& Form convert_data
* text
* --> p1 text
* <-- p2 text
FORM convert_data.
DATA: lf_perio(3) TYPE n.
LOOP AT gt_text_input INTO gs_text_input.
TRANSLATE gs_text_input-planbetrag USING '. '.
TRANSLATE gs_text_input-planbetrag USING ',.'.
CONDENSE gs_text_input-planbetrag.
gs_bapi_input-version = gp_versn.
gs_bapi_input-fisc_year = gp_gjahr.
gs_bapi_input-coobject = gs_text_input-kostenstelle.
gs_bapi_input-cost_elem = gs_text_input-kostenart.
lf_perio = gs_text_input-planperiode.
CASE lf_perio.
WHEN '001'.
gs_bapi_input-wkgbtr01 = gs_text_input-planbetrag.
WHEN '002'.
gs_bapi_input-wkgbtr02 = gs_text_input-planbetrag.
WHEN '003'.
gs_bapi_input-wkgbtr03 = gs_text_input-planbetrag.
WHEN '004'.
gs_bapi_input-wkgbtr04 = gs_text_input-planbetrag.
WHEN '005'.
gs_bapi_input-wkgbtr05 = gs_text_input-planbetrag.
WHEN '006'.
gs_bapi_input-wkgbtr06 = gs_text_input-planbetrag.
WHEN '007'.
gs_bapi_input-wkgbtr07 = gs_text_input-planbetrag.
WHEN '008'.
gs_bapi_input-wkgbtr08 = gs_text_input-planbetrag.
WHEN '009'.
gs_bapi_input-wkgbtr09 = gs_text_input-planbetrag.
WHEN '010'.
gs_bapi_input-wkgbtr10 = gs_text_input-planbetrag.
WHEN '011'.
gs_bapi_input-wkgbtr11 = gs_text_input-planbetrag.
WHEN '012'.
gs_bapi_input-wkgbtr12 = gs_text_input-planbetrag.
ENDCASE.
COLLECT gs_bapi_input INTO gt_bapi_input.
CLEAR gs_bapi_input.
ENDLOOP. "at gt_text_input
CALL SCREEN 0200.
ENDFORM. " convert_data
*& Form build_fieldcatalog_bapi_input
* text
* <--P_GT_FIELDCAT text
FORM build_fieldcatalog_bapi_input
CHANGING
pt_fieldcat TYPE lvc_t_fcat.
DATA ls_fcat TYPE lvc_s_fcat.
CLEAR pt_fieldcat.
CLEAR ls_fcat.
ls_fcat-fieldname = 'VERSION' .
ls_fcat-ref_table = 'BAPIPLNHDR' .
APPEND ls_fcat TO pt_fieldcat .
CLEAR ls_fcat.
ls_fcat-fieldname = 'FISC_YEAR' .
ls_fcat-ref_table = 'BAPIPLNHDR' .
APPEND ls_fcat TO pt_fieldcat .
CLEAR ls_fcat.
ls_fcat-fieldname = 'COOBJECT' .
ls_fcat-inttype = 'C' .
ls_fcat-outputlen = '20' .
ls_fcat-coltext = 'CO-Objekt' .
ls_fcat-seltext = 'CO-Objekt' .
APPEND ls_fcat TO pt_fieldcat .
CLEAR ls_fcat.
ls_fcat-fieldname = 'COST_ELEM' .
ls_fcat-ref_table = 'BAPIPCPVAL' .
APPEND ls_fcat TO pt_fieldcat .
CLEAR ls_fcat.
ls_fcat-fieldname = 'WKGBTR01'.
ls_fcat-ref_table = 'COEP' .
ls_fcat-ref_field = 'WKGBTR'.
APPEND ls_fcat TO pt_fieldcat .
CLEAR ls_fcat.
ls_fcat-fieldname = 'WKGBTR02'.
ls_fcat-ref_table = 'COEP' .
ls_fcat-ref_field = 'WKGBTR'.
APPEND ls_fcat TO pt_fieldcat .
CLEAR ls_fcat.
ls_fcat-fieldname = 'WKGBTR03'.
ls_fcat-ref_table = 'COEP' .
ls_fcat-ref_field = 'WKGBTR'.
APPEND ls_fcat TO pt_fieldcat .
CLEAR ls_fcat.
ls_fcat-fieldname = 'WKGBTR04'.
ls_fcat-ref_table = 'COEP' .
ls_fcat-ref_field = 'WKGBTR'.
APPEND ls_fcat TO pt_fieldcat .
CLEAR ls_fcat.
ls_fcat-fieldname = 'WKGBTR05'.
ls_fcat-ref_table = 'COEP' .
ls_fcat-ref_field = 'WKGBTR'.
APPEND ls_fcat TO pt_fieldcat .
CLEAR ls_fcat.
ls_fcat-fieldname = 'WKGBTR06'.
ls_fcat-ref_table = 'COEP' .
ls_fcat-ref_field = 'WKGBTR'.
APPEND ls_fcat TO pt_fieldcat .
CLEAR ls_fcat.
ls_fcat-fieldname = 'WKGBTR07'.
ls_fcat-ref_table = 'COEP' .
ls_fcat-ref_field = 'WKGBTR'.
APPEND ls_fcat TO pt_fieldcat .
CLEAR ls_fcat.
ls_fcat-fieldname = 'WKGBTR08'.
ls_fcat-ref_table = 'COEP' .
ls_fcat-ref_field = 'WKGBTR'.
APPEND ls_fcat TO pt_fieldcat .
CLEAR ls_fcat.
ls_fcat-fieldname = 'WKGBTR09'.
ls_fcat-ref_table = 'COEP' .
ls_fcat-ref_field = 'WKGBTR'.
APPEND ls_fcat TO pt_fieldcat .
CLEAR ls_fcat.
ls_fcat-fieldname = 'WKGBTR10'.
ls_fcat-ref_table = 'COEP' .
ls_fcat-ref_field = 'WKGBTR'.
APPEND ls_fcat TO pt_fieldcat .
CLEAR ls_fcat.
ls_fcat-fieldname = 'WKGBTR11'.
ls_fcat-ref_table = 'COEP' .
ls_fcat-ref_field = 'WKGBTR'.
APPEND ls_fcat TO pt_fieldcat .
CLEAR ls_fcat.
ls_fcat-fieldname = 'WKGBTR12'.
ls_fcat-ref_table = 'COEP' .
ls_fcat-ref_field = 'WKGBTR'.
APPEND ls_fcat TO pt_fieldcat .
ENDFORM. " build_fieldcatalog_bapi_input
*& Form post
* text
* --> p1 text
* <-- p2 text
FORM post.
DATA:
lf_index(6) TYPE n,
lf_kostl LIKE csks-kostl,
lf_aufnr LIKE aufk-aufnr,
lf_kstar LIKE cska-kstar.
DATA:
lt_csks TYPE TABLE OF csks.
break c5085345.
* Header
gs_headerinfo-co_area = gp_kokrs.
gs_headerinfo-fisc_year = gp_gjahr.
gs_headerinfo-period_from = '001'.
gs_headerinfo-period_to = '012'.
gs_headerinfo-version = gp_versn.
gs_headerinfo-plan_currtype = 'C'.
LOOP AT gt_bapi_input INTO gs_bapi_input.
* Fill index structure
CLEAR gs_indexstructure.
lf_index = sy-tabix.
gs_indexstructure-object_index = lf_index.
gs_indexstructure-value_index = lf_index.
gs_indexstructure-attrib_index = '000000'.
INSERT gs_indexstructure INTO TABLE gt_indexstructure.
* Fill coobject
CLEAR gs_coobject.
gs_coobject-object_index = lf_index.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = gs_bapi_input-coobject
IMPORTING
output = lf_kostl.
SELECT * FROM csks INTO TABLE lt_csks
WHERE
kokrs = gp_kokrs AND
kostl = lf_kostl.
IF sy-subrc = 0.
gs_coobject-costcenter = lf_kostl.
ELSE.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = gs_bapi_input-coobject
IMPORTING
output = lf_aufnr.
CALL FUNCTION 'K_ORDER_READ'
EXPORTING
aufnr = lf_aufnr
EXCEPTIONS
not_found = 1.
IF NOT sy-subrc = 0.
gs_return-type = 'E'.
gs_return-message+0(10) = 'CO-Objekt '.
gs_return-message+10(10) = gs_bapi_input-coobject.
gs_return-message+20(20) = ' existiert nicht.'.
CONDENSE gs_return-message.
PERFORM add_log_message_free_text
USING
gs_return-type
gs_return-message.
EXIT.
ENDIF. "IF NOT sy-subrc = 0
gs_coobject-orderid = lf_aufnr.
ENDIF. "sy-subrc = 0
INSERT gs_coobject INTO TABLE gt_coobject.
* Period value
gs_pervalue-value_index = lf_index.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = gs_bapi_input-cost_elem
IMPORTING
output = lf_kstar.
gs_pervalue-cost_elem = lf_kstar.
gs_pervalue-fix_val_per01 = gs_bapi_input-wkgbtr01.
gs_pervalue-fix_val_per02 = gs_bapi_input-wkgbtr02.
gs_pervalue-fix_val_per03 = gs_bapi_input-wkgbtr03.
gs_pervalue-fix_val_per04 = gs_bapi_input-wkgbtr04.
gs_pervalue-fix_val_per05 = gs_bapi_input-wkgbtr05.
gs_pervalue-fix_val_per06 = gs_bapi_input-wkgbtr06.
gs_pervalue-fix_val_per07 = gs_bapi_input-wkgbtr07.
gs_pervalue-fix_val_per08 = gs_bapi_input-wkgbtr08.
gs_pervalue-fix_val_per09 = gs_bapi_input-wkgbtr09.
gs_pervalue-fix_val_per10 = gs_bapi_input-wkgbtr10.
gs_pervalue-fix_val_per11 = gs_bapi_input-wkgbtr11.
gs_pervalue-fix_val_per12 = gs_bapi_input-wkgbtr12.
INSERT gs_pervalue INTO TABLE gt_pervalue.
ENDLOOP. "at gt_bapi_input
* Buchungsbaustein
CALL FUNCTION 'BAPI_PRIM_COST_CHECK_AND_POST'
EXPORTING
header_info = gs_headerinfo
testrun = gp_test
* DELTA = ' '
TABLES
idx_structure = gt_indexstructure
object = gt_coobject
per_value = gt_pervalue
tot_value = gt_totvalue
contrl = gt_control
return = gt_return.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.
* EXPORTING
* WAIT =
* IMPORTING
* RETURN =
LOOP AT gt_return INTO gs_return.
gs_balsmsg-msgty = gs_return-type.
gs_balsmsg-msgid = gs_return-id.
gs_balsmsg-msgno = gs_return-number.
gs_balsmsg-msgv1 = gs_return-message_v1.
gs_balsmsg-msgv2 = gs_return-message_v2.
gs_balsmsg-msgv3 = gs_return-message_v3.
gs_balsmsg-msgv4 = gs_return-message_v4.
PERFORM add_log_message
USING
gs_balsmsg.
ENDLOOP. "AT gt_return
PERFORM show_log.
ENDFORM. " post
*& Form create_log
* text
* --> p1 text
* <-- p2 text
FORM create_log .
DATA: ls_balslog TYPE bal_s_log.
* Einige Verwaltungsdaten
ls_balslog-extnumber = 'ZPLAN010'.
ls_balslog-aluser = sy-uname.
ls_balslog-alprog = sy-repid.
* Create
CALL FUNCTION 'BAL_LOG_CREATE'
EXPORTING
i_s_log = ls_balslog
* IMPORTING
* e_log_handle = gf_balloghndl
EXCEPTIONS
log_header_inconsistent = 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. " create_log
*& Form add_log_message
* text
* -->P_GS_BALSMSG text
FORM add_log_message
USING
ps_balsmsg TYPE bal_s_msg.
break c5085345.
CALL FUNCTION 'BAL_LOG_MSG_ADD'
EXPORTING
* I_LOG_HANDLE =
i_s_msg = ps_balsmsg
* IMPORTING
* E_S_MSG_HANDLE =
* E_MSG_WAS_LOGGED =
* E_MSG_WAS_DISPLAYED =
EXCEPTIONS
log_not_found = 1
msg_inconsistent = 2
log_is_full = 3
OTHERS = 4.
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. " add_log_messa
*& Form add_log_message_free_text
* text
* -->P_GS_RETURN_TYPE text
* -->P_GS_RETURN_MESSAGE text
FORM add_log_message_free_text
USING
ps_type
ps_message.
CALL FUNCTION 'BAL_LOG_MSG_ADD_FREE_TEXT'
EXPORTING
* I_LOG_HANDLE =
i_msgty = ps_type
* I_PROBCLASS = '4'
i_text = ps_message
* I_S_CONTEXT =
* I_S_PARAMS =
* IMPORTING
* E_S_MSG_HANDLE =
* E_MSG_WAS_LOGGED =
* E_MSG_WAS_DISPLAYED =
EXCEPTIONS
log_not_found = 1
msg_inconsistent = 2
log_is_full = 3
OTHERS = 4.
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. " add_log_message_free_text
*& Form show_log
* text
* --> p1 text
* <-- p2 text
FORM show_log .
DATA:
l_s_display_profile TYPE bal_s_prof.
* get display profile
CALL FUNCTION 'BAL_DSP_PROFILE_NO_TREE_GET'
IMPORTING
e_s_display_profile = l_s_display_profile
EXCEPTIONS
OTHERS = 1.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
* use grid for display if wanted
l_s_display_profile-use_grid = 'X'.
* set report to allow saving of variants
l_s_display_profile-disvariant-report = sy-repid.
* when you use also other ALV lists in your report,
* please specify a handle to distinguish between the display
* variants of these different lists, e.g:
l_s_display_profile-disvariant-handle = 'LOG'.
* call display function module
* We do not specify any filter (like I_S_LOG_FILTER, ...,
* I_T_MSG_HANDLE) since we want to display all logs available
CALL FUNCTION 'BAL_DSP_LOG_DISPLAY'
EXPORTING
i_s_display_profile = l_s_display_profile
EXCEPTIONS
OTHERS = 1.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF. -
hi friends,
i am using factory method to display my alv. now some of the fields in my internal table i have declared them as char fields, i want certain type of headings for these fields,so where can i give heading to these fields.
where exactly do we create a field catalog for factory method.
pls advice me on thishi
good
go throgh this code
*& Report Z_ALV_OOPS
REPORT Z_ALV_OOPS.
*Event class Definition "Event handler class
class event_handle definition.
public section.
methods: handle_user
for event user_command of cl_gui_alv_grid
importing e_ucomm.
endclass.
*Event class Implementation
class event_handle implementation.
method handle_user.
write:/ ''.
endmethod.
endclass.
Data: t_alv type ref to cl_gui_alv_grid, "ALV control
t_cont type ref to cl_gui_custom_container, "Cust Container
t_alv2 type ref to cl_gui_alv_grid, "ALV control
t_cont2 type ref to cl_gui_custom_container, "Cust Container
t_fieldcat type lvc_t_fcat with header line, "Field Cat
t_fieldcat2 type lvc_t_fcat with header line, "Field Cat
t_layout type lvc_s_layo, "Layout
t_event type ref to event_handle, "Event handler
t_sort type LVC_T_SORT with header line, "Sort
t_toolbar type ui_functions with header line. "Toolbar xclude
Types: begin of g_vbak, "Header Table
vbeln like vbak-vbeln,
auart like vbak-auart,
vkorg like vbak-vkorg,
vtweg like vbak-vtweg,
spart like vbak-spart,
kunnr like vbak-kunnr,
bstnk like vbak-bstnk,
seltab,
end of g_vbak.
Types: begin of g_vbap, "Item Table
vbeln like vbap-vbeln,
posnr(6) type c,
posrn like vbap-posnr,
matnr like vbap-matnr,
netwr like vbap-netwr,
waerk like vbap-waerk,
end of g_vbap.
Data: t_vbak type g_vbak occurs 0,
t_vbap type g_vbap occurs 0.
Start-Of-Selection.
*Fetch data from DB Table
select vbeln auart vkorg vtweg spart kunnr bstnk
from vbak into table t_vbak up to 20 rows.
End-Of-Selection.
*Call ALV screen
call screen 100.
*& Module STATUS_0100 OUTPUT
text
MODULE STATUS_0100 OUTPUT.
SET PF-STATUS 'ALV'.
SET TITLEBAR 'VBAK'.
if t_cont is initial.
create object t_cont
exporting
container_name = 'ALV'.
create object t_alv
exporting
i_parent = t_cont.
*Create event handlers
create object t_event.
set handler t_event->handle_user for t_alv.
perform build_fieldcatlog.
perform build_layout.
perform xclude_toolbar.
CALL METHOD t_alv->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 = t_layout
IS_PRINT =
IT_SPECIAL_GROUPS =
IT_TOOLBAR_EXCLUDING = t_toolbar[]
IT_HYPERLINK =
IT_ALV_GRAPHICS =
IT_EXCEPT_QINFO =
CHANGING
IT_OUTTAB = t_vbak[]
IT_FIELDCATALOG = t_fieldcat[]
IT_SORT =
IT_FILTER =
EXCEPTIONS
INVALID_PARAMETER_COMBINATION = 1
PROGRAM_ERROR = 2
TOO_MANY_LINES = 3
others = 4
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
endif.
ENDMODULE. " STATUS_0100 OUTPUT
*& Module USER_COMMAND_0100 INPUT
text
MODULE USER_COMMAND_0100 INPUT.
Data: lt_rows type lvc_t_row,
wa_rows type line of lvc_t_row,
wa_vbak type g_vbak,
l_lines type i.
refresh: t_vbap.
case sy-ucomm.
when 'DET'. "Item details
Get selected rows from ALV
call method t_alv->get_selected_rows
importing
et_index_rows = lt_rows.
Fetch corresponding Item details from VBAP
loop at lt_rows into wa_rows.
read table t_vbak into wa_vbak index wa_rows-index transporting
vbeln.
select vbeln posnr matnr netwr waerk from vbap
appending corresponding fields of table t_vbap
where vbeln = wa_vbak-vbeln.
endloop.
Prepare fieldcatlog
Display Item details in ALV
call screen 200 starting at 8 5.
when 'SHOW'. "Display order
call method t_alv->get_selected_rows
importing
et_index_rows = lt_rows.
Describe table lt_rows lines l_lines.
if l_lines > 1.
message e999(z_error).
else.
read table lt_rows into wa_rows index 1.
read table t_vbak into wa_vbak index wa_rows-index transporting
vbeln.
set parameter id 'AUN' field wa_vbak-vbeln.
call transaction 'VA03' and skip first screen.
endif.
endcase.
ENDMODULE. " USER_COMMAND_0100 INPUT
*& Form build_fieldcatlog
text
form build_fieldcatlog .
clear t_fieldcat.
t_fieldcat-col_pos = '1'.
t_fieldcat-fieldname = 'VBELN'.
t_fieldcat-ref_table = 'VBAK'.
t_fieldcat-ref_field = 'VBELN'.
append t_fieldcat.
t_fieldcat-col_pos = '2'.
t_fieldcat-fieldname = 'AUART'.
t_fieldcat-ref_table = 'VBAK'.
t_fieldcat-ref_field = 'AUART'.
append t_fieldcat.
t_fieldcat-col_pos = '3'.
t_fieldcat-fieldname = 'VKORG'.
t_fieldcat-ref_table = 'VBAK'.
t_fieldcat-ref_field = 'VKORG'.
append t_fieldcat.
t_fieldcat-col_pos = '4'.
t_fieldcat-fieldname = 'VTWEG'.
t_fieldcat-ref_table = 'VBAK'.
t_fieldcat-ref_field = 'VTWEG'.
append t_fieldcat.
t_fieldcat-col_pos = '5'.
t_fieldcat-fieldname = 'SPART'.
t_fieldcat-ref_table = 'VBAK'.
t_fieldcat-ref_field = 'SPART'.
append t_fieldcat.
t_fieldcat-col_pos = '6'.
t_fieldcat-fieldname = 'KUNNR'.
t_fieldcat-ref_table = 'VBAK'.
t_fieldcat-ref_field = 'KUNNR'.
append t_fieldcat.
t_fieldcat-col_pos = '7'.
t_fieldcat-fieldname = 'BSTNK'.
t_fieldcat-ref_table = 'VBAK'.
t_fieldcat-ref_field = 'BSTNK'.
append t_fieldcat.
endform. " build_fieldcatlog
*& Module LEAVE INPUT
text
module LEAVE input.
case sy-ucomm.
when 'BACK' or 'EXIT' or 'CANCEL'.
leave program.
endcase.
endmodule. " LEAVE INPUT
*& Form build_layout
text
--> p1 text
<-- p2 text
form build_layout .
t_layout-zebra = 'X'.
t_layout-sel_mode = 'A'.
t_layout-grid_title = 'Header Details'.
endform. " build_layout
*& Form build_fcat_vbap
text
form build_fcat_vbap .
clear t_fieldcat2.
t_fieldcat2-scrtext_m = 'Sales Doc'.
t_fieldcat2-col_pos = 1.
t_fieldcat2-fieldname = 'VBELN'.
t_fieldcat2-tabname = 'T_VBAP'.
t_fieldcat2-no_zero = 'X'.
t_fieldcat2-ref_table = 'VBAP'.
t_fieldcat2-ref_field = 'VBELN'.
append t_fieldcat2.
clear t_fieldcat2.
t_fieldcat2-col_pos = 2.
t_fieldcat2-scrtext_m = 'Item'.
t_fieldcat2-fieldname = 'POSNR'.
t_fieldcat2-tabname = 'T_VBAP'.
t_fieldcat2-intlen = '6'.
t_fieldcat2-inttype = 'C'.
t_fieldcat2-no_zero = 'X'.
t_fieldcat2-ref_table = 'VBAP'.
t_fieldcat2-ref_field = 'POSNR'.
append t_fieldcat2.
clear t_fieldcat2.
t_fieldcat2-col_pos = 3.
t_fieldcat2-fieldname = 'MATNR'.
t_fieldcat2-ref_table = 'VBAP'.
t_fieldcat2-ref_field = 'MATNR'.
append t_fieldcat2.
clear t_fieldcat2.
t_fieldcat2-col_pos = 4.
t_fieldcat2-fieldname = 'NETWR'.
t_fieldcat2-ref_table = 'VBAP'.
t_fieldcat2-ref_field = 'NETWR'.
t_fieldcat2-do_sum = 'X'.
append t_fieldcat2.
clear t_fieldcat2.
t_fieldcat2-col_pos = 5.
t_fieldcat2-fieldname = 'WAERK'.
t_fieldcat2-ref_table = 'VBAP'.
t_fieldcat2-ref_field = 'WAERK'.
append t_fieldcat2.
endform. " build_fcat_vbap
*& Module STATUS_0200 OUTPUT
text
module STATUS_0200 output.
SET PF-STATUS 'ITEM1'.
SET TITLEBAR 'VBAP'.
perform build_fcat_vbap.
perform sort_alv2.
if t_cont2 is initial.
create object t_cont2
exporting
container_name = 'ITEM'.
create object t_alv2
exporting
i_parent = t_cont2.
t_layout-grid_title = 'Item Details'.
CALL METHOD t_alv2->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 = t_layout
IS_PRINT =
IT_SPECIAL_GROUPS =
IT_TOOLBAR_EXCLUDING = t_toolbar[]
IT_HYPERLINK =
IT_ALV_GRAPHICS =
IT_EXCEPT_QINFO =
IR_SALV_ADAPTER =
CHANGING
it_outtab = t_vbap[]
IT_FIELDCATALOG = t_fieldcat2[]
IT_SORT = t_sort[]
IT_FILTER =
EXCEPTIONS
INVALID_PARAMETER_COMBINATION = 1
PROGRAM_ERROR = 2
TOO_MANY_LINES = 3
others = 4
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
else.
CALL METHOD t_alv2->refresh_table_display
EXPORTING
IS_STABLE =
I_SOFT_REFRESH =
EXCEPTIONS
FINISHED = 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.
endif.
endmodule. " STATUS_0200 OUTPUT
*& Module USER_COMMAND_0200 INPUT
text
module USER_COMMAND_0200 input.
case sy-ucomm.
when 'GOBACK'.
leave to screen 0.
endcase.
endmodule. " USER_COMMAND_0200 INPUT
*& Form sort_alv2
text
--> p1 text
<-- p2 text
form sort_alv2 .
clear t_sort.
t_sort-spos = '1'.
t_sort-fieldname = 'VBELN'.
t_sort-up = 'X'.
t_sort-subtot = 'X'.
append t_sort.
endform. " sort_alv2
*& Form xclude_toolbar
text
--> p1 text
<-- p2 text
form xclude_toolbar .
t_toolbar = '&DETAIL'.
append t_toolbar.
t_toolbar = '&&SEP00'.
append t_toolbar.
t_toolbar = '&&SEP01'.
append t_toolbar.
t_toolbar = '&&SEP02'.
append t_toolbar.
t_toolbar = '&SORT_ASC'.
append t_toolbar.
t_toolbar = '&SORT_DSC'.
append t_toolbar.
t_toolbar = '&FIND'.
append t_toolbar.
t_toolbar = '&MB_FILTER'.
append t_toolbar.
t_toolbar = '&&SEP04'.
append t_toolbar.
t_toolbar = '&MB_SUM'.
append t_toolbar.
t_toolbar = '&MB_SUB_TOTAL'.
append t_toolbar.
t_toolbar = '&PRINT_BACK'.
append t_toolbar.
t_toolbar = '&MB_VIEW'.
append t_toolbar.
t_toolbar = '&MB_EXPORT'.
append t_toolbar.
t_toolbar = '&GRAPH'.
append t_toolbar.
t_toolbar = '&COLO'.
append t_toolbar.
t_toolbar = '&&SEP06'.
append t_toolbar.
t_toolbar = '&&SEP07'.
append t_toolbar.
t_toolbar = '&INFO'.
append t_toolbar.
t_toolbar = '&&SEP03'.
append t_toolbar.
endform. " xclude_toolbar
reward point if helpful.
thanks
mrutyun^ -
dear experts,
I need to add some extra features to title bar of my alv report.i got some documents and iam trying on that.Here in my program its displaying the newly created icon but when i click on that icon its not displaying or teriigering my event -
class lcl_event_receiver definition deferred.
TYPE-POOLS: ICON.
data: con type ref to cl_gui_custom_container,
gr_alvgrid type ref to cl_gui_alv_grid.
DATA: ITAB_EXCLUDE TYPE UI_FUNCTIONS.
DATA: WA_EXCLUDE TYPE UI_FUNC.
data: it_toolbar TYPE stb_button.
data: begin of itab occurs 0.
include structure mara.
data: end of itab.
data: event_receiver TYPE REF TO LCL_EVENT_RECEIVER.
select * from mara into table itab.
call screen 1000.
CLASS lcl_event_receiver DEFINITION
CLASS lcl_event_receiver DEFINITION.
PUBLIC SECTION.
class-methods: handle_toolbar for event toolbar of cl_gui_alv_grid importing e_object e_interactive,
handle_menu_buttons for event menu_button of cl_gui_alv_grid importing e_object e_ucomm,
handle_USER_COMMAND for event user_command of cl_gui_alv_grid importing e_ucomm.
ENDCLASS. "lcl_event_receiver DEFINITION
CLASS lcl_event_receiver IMPLEMENTATION
CLASS lcl_event_receiver implementation.
method handle_toolbar.
move 'DETAIL-TAIL' TO IT_TOOLBAR-FUNCTION.
MOVE ICON_DETAIL TO IT_TOOLBAR-ICON.
MOVE 2 TO IT_TOOLBAR-BUTN_TYPE.
APPEND IT_TOOLBAR TO E_OBJECT->MT_TOOLBAR.
ENDMETHOD. "handle_toolbar
METHOD HANDLE_MENU_BUTTONS.
IF E_UCOMM = 'DETAIL'.
CALL METHOD e_object->add_function
EXPORTING
fcode = 'DISPLAY'
text = 'DISPLAY'.
ENDIF.
ENDMETHOD. "HANDLE_MENU_BUTTONS
METHOD handle_user_command.
CASE e_ucomm.
WHEN 'DISPLAY'.
MESSAGE 'Menu Clicked' TYPE 'I'.
ENDCASE.
ENDMETHOD. "handle_user_command
ENDCLASS. "lcl_event_receiver IMPLEMENTATION
MODULE STATUS_1000 OUTPUT
MODULE STATUS_1000 OUTPUT.
SET PF-STATUS 'xxxxxxxx'.
SET TITLEBAR 'xxx'.
CREATE OBJECT CON
EXPORTING
PARENT =
CONTAINER_NAME = 'CO_CON'
STYLE =
LIFETIME = lifetime_default
REPID =
DYNNR =
NO_AUTODEF_PROGID_DYNNR =
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 OBJECT GR_ALVGRID
EXPORTING
I_SHELLSTYLE = 0
I_LIFETIME =
I_PARENT = CON
I_APPL_EVENTS = space
I_PARENTDBG =
I_APPLOGPARENT =
I_GRAPHICSPARENT =
I_NAME =
I_FCAT_COMPLETE = SPACE
EXCEPTIONS
ERROR_CNTL_CREATE = 1
ERROR_CNTL_INIT = 2
ERROR_CNTL_LINK = 3
ERROR_DP_CREATE = 4
others = 5
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
WA_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_MAXIMUM.
APPEND WA_EXCLUDE TO ITAB_EXCLUDE.
WA_EXCLUDE = CL_GUI_ALV_GRID=>MC_mb_SUM.
APPEND WA_EXCLUDE TO ITAB_EXCLUDE.
CALL METHOD GR_ALVGRID->SET_TABLE_FOR_FIRST_DISPLAY
EXPORTING
I_BUFFER_ACTIVE =
I_BYPASSING_BUFFER =
I_CONSISTENCY_CHECK =
I_STRUCTURE_NAME = 'MARA'
IS_VARIANT =
I_SAVE =
I_DEFAULT = 'X'
IS_LAYOUT =
IS_PRINT =
IT_SPECIAL_GROUPS =
IT_TOOLBAR_EXCLUDING = ITAB_EXCLUDE
IT_HYPERLINK =
IT_ALV_GRAPHICS =
IT_EXCEPT_QINFO =
IR_SALV_ADAPTER =
CHANGING
IT_OUTTAB = ITAB[]
IT_FIELDCATALOG =
IT_SORT =
IT_FILTER =
EXCEPTIONS
INVALID_PARAMETER_COMBINATION = 1
PROGRAM_ERROR = 2
TOO_MANY_LINES = 3
others = 4
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 OBJECT event_receiver.
SET HANDLER event_receiver->handle_user_command
event_receiver->handle_menu_buttons
event_receiver->handle_toolbar FOR ALL INSTANCES. "*Calling the interactive toolbar method of ALV
CALL METHOD GR_ALVGRID->set_toolbar_interactive.
ENDMODULE. " STATUS_1000 OUTPUT
*& Module USER_COMMAND_1000 INPUT
text
MODULE USER_COMMAND_1000 INPUT.
ENDMODULE. " USER_COMMAND_1000 INPUThi marcin, thanks a lot for your help..i have coded but still unable to trigger user_commaned method.Could you check this in your machine-
class lcl_event_receiver definition deferred.
TYPE-POOLS: ICON.
data: con type ref to cl_gui_custom_container,
gr_alvgrid type ref to cl_gui_alv_grid.
DATA: ITAB_EXCLUDE TYPE UI_FUNCTIONS.
DATA: WA_EXCLUDE TYPE UI_FUNC.
data: it_toolbar TYPE stb_button.
data: begin of itab occurs 0.
include structure mara.
data: end of itab.
data: event_receiver TYPE REF TO LCL_EVENT_RECEIVER.
select * from mara into table itab.
call screen 1000.
CLASS lcl_event_receiver DEFINITIONL
CLASS lcl_event_receiver DEFINITION.
PUBLIC SECTION.
class-methods:
handle_menu_buttons for event menu_button of cl_gui_alv_grid importing e_object e_ucomm,
handle_USER_COMMAND for event user_command of cl_gui_alv_grid importing e_ucomm,
handle_toolbar for event toolbar of cl_gui_alv_grid importing e_object e_interactive.
ENDCLASS. "lcl_event_receiver DEFINITION
CLASS lcl_event_receiver IMPLEMENTATION
CLASS lcl_event_receiver implementation.
method handle_toolbar.
move 'DETAIL-TAIL' TO IT_TOOLBAR-FUNCTION.
MOVE ICON_DETAIL TO IT_TOOLBAR-ICON.
MOVE 2 TO IT_TOOLBAR-BUTN_TYPE.
APPEND IT_TOOLBAR TO E_OBJECT->MT_TOOLBAR.
ENDMETHOD. "handle_toolbar
METHOD HANDLE_MENU_BUTTONS.
IF E_UCOMM = 'DETAIL-TAIL'.
CALL METHOD e_object->add_function
EXPORTING
fcode = 'DISPLAY-TAIL'
text = 'DISPLAY'.
ENDIF.
ENDMETHOD. "HANDLE_MENU_BUTTONS
METHOD handle_user_command.
CASE E_UCOMM.
WHEN 'DISPLAY-TAIL'.
MESSAGE 'THESE IS TEST EVENT' TYPE 'I'.
ENDCASE.
ENDMETHOD.
ENDCLASS.
MODULE STATUS_1000 OUTPUT
MODULE STATUS_1000 OUTPUT.
SET PF-STATUS 'xxxxxxxx'.
SET TITLEBAR 'xxx'.
CREATE OBJECT CON
EXPORTING
PARENT =
CONTAINER_NAME = 'CO_CON'
STYLE =
LIFETIME = lifetime_default
REPID =
DYNNR =
NO_AUTODEF_PROGID_DYNNR =
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 OBJECT GR_ALVGRID
EXPORTING
I_SHELLSTYLE = 0
I_LIFETIME =
I_PARENT = CON
I_APPL_EVENTS = space
I_PARENTDBG =
I_APPLOGPARENT =
I_GRAPHICSPARENT =
I_NAME =
I_FCAT_COMPLETE = SPACE
EXCEPTIONS
ERROR_CNTL_CREATE = 1
ERROR_CNTL_INIT = 2
ERROR_CNTL_LINK = 3
ERROR_DP_CREATE = 4
others = 5
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
WA_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_MAXIMUM.
APPEND WA_EXCLUDE TO ITAB_EXCLUDE.
WA_EXCLUDE = CL_GUI_ALV_GRID=>MC_mb_SUM.
APPEND WA_EXCLUDE TO ITAB_EXCLUDE.
CALL METHOD GR_ALVGRID->SET_TABLE_FOR_FIRST_DISPLAY
EXPORTING
I_BUFFER_ACTIVE =
I_BYPASSING_BUFFER =
I_CONSISTENCY_CHECK =
I_STRUCTURE_NAME = 'MARA'
IS_VARIANT =
I_SAVE =
I_DEFAULT = 'X'
IS_LAYOUT =
IS_PRINT =
IT_SPECIAL_GROUPS =
IT_TOOLBAR_EXCLUDING = ITAB_EXCLUDE
IT_HYPERLINK =
IT_ALV_GRAPHICS =
IT_EXCEPT_QINFO =
IR_SALV_ADAPTER =
CHANGING
IT_OUTTAB = ITAB[]
IT_FIELDCATALOG =
IT_SORT =
IT_FILTER =
EXCEPTIONS
INVALID_PARAMETER_COMBINATION = 1
PROGRAM_ERROR = 2
TOO_MANY_LINES = 3
others = 4
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 OBJECT event_receiver.
SET HANDLER event_receiver->handle_menu_buttons
event_receiver->handle_toolbar
event_receiver->handle_user_command
FOR ALL INSTANCES.
CALL METHOD GR_ALVGRID->set_toolbar_interactive.
ENDMODULE. " STATUS_1000 OUTPUT
*& Module USER_COMMAND_1000 INPUT
text
MODULE USER_COMMAND_1000 INPUT.
ENDMODULE. " USER_COMMAND_1000 INPUT -
Passing a structure of selected fields
hi folks
hope all will be fine
just see the code typed below it is a module pool program
and thing is here instead of passing the table lfa1 into custom container , i need to pass a internal table that contains specific fields .
what i need to do
any pointers regarding this are welcome
*& Module pool ZCONTAINER
PROGRAM zcontainer.
*& Module USER_COMMAND_0100 INPUT
text
MODULE user_command_0100 INPUT.
ENDMODULE. " USER_COMMAND_0100 INPUT
*& Module STATUS_0100 OUTPUT
text
MODULE status_0100 OUTPUT.
data: itab type table of lfa1.
DATA: identity TYPE REF TO cl_gui_custom_container.
DATA: grid TYPE REF TO cl_gui_alv_grid.
select * from lfa1 into table itab.
IF identity IS INITIAL.
CREATE OBJECT identity
EXPORTING
parent =
container_name ='ALV'.
style =
lifetime = lifetime_default
repid =
dynnr =
no_autodef_progid_dynnr =
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 OBJECT grid
EXPORTING
i_shellstyle = 0
i_lifetime =
i_parent = identity.
i_appl_events = space
i_parentdbg =
i_applogparent =
i_graphicsparent =
i_name =
i_fcat_complete = space
EXCEPTIONS
error_cntl_create = 1
error_cntl_init = 2
error_cntl_link = 3
error_dp_create = 4
others = 5
*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 METHOD grid->set_table_for_first_display
EXPORTING
i_buffer_active =
i_bypassing_buffer =
i_consistency_check =
i_structure_name = 'LFA1'
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 = itab
it_fieldcatalog =
it_sort =
it_filter =
EXCEPTIONS
invalid_parameter_combination = 1
program_error = 2
too_many_lines = 3
others = 4
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDIF.
SET PF-STATUS 'xxxxxxxx'.
SET TITLEBAR 'xxx'.
ENDMODULE. " STATUS_0100 OUTPUT
thnx in advance
with regards
S.JanagarHi,
Go thru the following code once it may be help full for u.
REPORT z_1060_oops_alv_grid.
TYPES : BEGIN OF tw_ekko,
mark TYPE flag,
ebeln TYPE ebeln,
bukrs TYPE bukrs,
bstyp TYPE ebstyp,
bsart TYPE esart,
aedat TYPE erdat,
END OF tw_ekko,
tt_ekko TYPE TABLE OF tw_ekko.
TYPES : BEGIN OF tw_ekpo,
ebeln TYPE ebeln,
ebelp TYPE ebelp,
statu TYPE astat,
aedat TYPE paedt,
END OF tw_ekpo,
tt_ekpo TYPE TABLE OF tw_ekpo.
DATA: wa_ekko TYPE tw_ekko,
it_ekko TYPE tt_ekko.
DATA: wa_ekpo TYPE tw_ekpo,
it_ekpo TYPE tt_ekpo.
DATA: cl_container1 TYPE REF TO cl_gui_custom_container,
cl_container2 TYPE REF TO cl_gui_custom_container,
cl_container3 TYPE REF TO cl_gui_custom_container,
cl_alv1 TYPE REF TO cl_gui_alv_grid,
cl_alv2 TYPE REF TO cl_gui_alv_grid,
cl_alv3 TYPE REF TO cl_gui_alv_grid.
DATA : v_ebeln TYPE ebeln.
DATA: i_fldcat TYPE lvc_t_fcat,
i_fldcat1 TYPE lvc_t_fcat,
wa_fldcat LIKE LINE OF i_fldcat.
CLASS lcl_event DEFINITION
CLASS lcl_event DEFINITION.
PUBLIC SECTION.
METHODS: toolbar FOR EVENT toolbar OF cl_gui_alv_grid IMPORTING e_object e_interactive,
usercommand FOR EVENT user_command OF cl_gui_alv_grid IMPORTING e_ucomm.
ENDCLASS. "lcl_event DEFINITION
CLASS lcl_event IMPLEMENTATION
CLASS lcl_event IMPLEMENTATION.
METHOD toolbar.
PERFORM toolbar CHANGING e_object e_interactive
e_object->mt_toolbar.
ENDMETHOD. "lcl_event IMPLEMENTATION
METHOD usercommand.
PERFORM user_command CHANGING e_ucomm.
ENDMETHOD. "usercommand
ENDCLASS. "lcl_event IMPLEMENTATION
SELECTION-SCREEN BEGIN OF BLOCK blk1 WITH FRAME TITLE t001.
SELECT-OPTIONS: so_ebeln FOR v_ebeln.
SELECTION-SCREEN END OF BLOCK blk1.
START-OF-SELECTION.
CALL SCREEN 100.
DATA: obj_event TYPE REF TO lcl_event.
CREATE OBJECT obj_event.
*& Module STATUS_0100 OUTPUT
text
MODULE status_0100 OUTPUT.
SET PF-STATUS 'STATUS_100'.
SET TITLEBAR 'TITLE_100'.
SELECT ebeln
bukrs
bstyp
bsart
aedat
INTO CORRESPONDING FIELDS OF TABLE it_ekko
FROM ekko
WHERE ebeln IN so_ebeln.
IF cl_alv1 IS INITIAL.
CREATE OBJECT cl_container1 EXPORTING container_name = 'CONT1'.
CREATE OBJECT cl_alv1 EXPORTING i_parent = cl_container1.
PERFORM fieldcatalog.
CALL METHOD cl_alv1->set_table_for_first_display
EXPORTING
I_BUFFER_ACTIVE =
I_BYPASSING_BUFFER =
I_CONSISTENCY_CHECK =
I_STRUCTURE_NAME =
IS_VARIANT =
i_save = 'X'
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 = it_ekko
it_fieldcatalog = i_fldcat
it_sort =
IT_FILTER =
EXCEPTIONS
invalid_parameter_combination = 1
program_error = 2
too_many_lines = 3
OTHERS = 4
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 OBJECT obj_event.
SET HANDLER : obj_event->toolbar FOR cl_alv1.
SET HANDLER : obj_event->usercommand FOR cl_alv1.
CALL METHOD cl_alv1->set_toolbar_interactive.
ELSE.
CALL METHOD cl_alv1->refresh_table_display.
ENDIF.
ENDMODULE. " STATUS_0100 OUTPUT
*& Form toolbar
text
<--P_E_OBJECT text
<--P_E_INTERACTIVE text
<--P_E_OBJECT_>MT_toolbar text
FORM toolbar CHANGING p_e_object TYPE REF TO cl_alv_event_toolbar_set
p_e_interactive
mt_toolbar TYPE ttb_button.
DATA wal_button TYPE stb_button.
wal_button-text = 'ITEM DETAILS'.
wal_button-quickinfo = 'PROCEED'.
wal_button-function = 'ITM1'.
wal_button-butn_type = 0.
wal_button-disabled = space.
INSERT wal_button INTO p_e_object->mt_toolbar INDEX 1.
ENDFORM. " toolbar
*& Form user_command
text
<--P_E_UCOMM text
FORM user_command CHANGING p_e_ucomm.
CASE p_e_ucomm.
WHEN 'ITM1'.
LEAVE TO SCREEN 200.
ENDCASE.
ENDFORM. " user_command
*& Module STATUS_0200 OUTPUT
text
MODULE status_0200 OUTPUT.
SET PF-STATUS 'STATUS_200'.
SET TITLEBAR 'TITLE_200'.
CLEAR wa_ekko.
LOOP AT it_ekko INTO wa_ekko WHERE mark = 'X'.
READ TABLE it_ekko INTO wa_ekko WITH KEY mark = 'X'.
IF sy-subrc = 0.
CLEAR wa_ekPo.
SELECT SINGLE ebeln
ebelp
statu
aedat
FROM ekpo
INTO wa_ekpo
WHERE ebeln = wa_ekKo-ebeln.
APPEND wa_ekPo TO it_ekPo.
ENDIF.
ENDLOOP.
IF cl_alv2 IS INITIAL.
CREATE OBJECT cl_container2 EXPORTING container_name = 'CONT2'.
CREATE OBJECT cl_alv2 EXPORTING i_parent = cl_container2.
PERFORM fieldcatalog1.
CALL METHOD cl_alv2->set_table_for_first_display
EXPORTING
I_BUFFER_ACTIVE =
I_BYPASSING_BUFFER =
I_CONSISTENCY_CHECK =
I_STRUCTURE_NAME =
IS_VARIANT =
i_save = 'X'
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 = it_ekPo
it_fieldcatalog = i_fldcat1
it_sort =
IT_FILTER =
EXCEPTIONS
invalid_parameter_combination = 1
program_error = 2
too_many_lines = 3
OTHERS = 4
IF sy-subrc 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ELSE.
CALL METHOD cl_ALV2->refresh_table_display.
ENDIF.
ENDMODULE. " STATUS_0200 OUTPUT
*& Module USER_COMMAND_0100 INPUT
text
MODULE user_command_0100 INPUT.
IF sy-ucomm = 'BACK' OR sy-ucomm = 'EXIT' OR sy-ucomm = 'CANCEL'.
LEAVE TO SCREEN 0.
ENDIF.
ENDMODULE. " USER_COMMAND_0100 INPUT
*& Module USER_COMMAND_0200 INPUT
text
MODULE user_command_0200 INPUT.
IF sy-ucomm = 'BACK'.
LEAVE TO SCREEN 100.
ENDIF.
IF sy-ucomm = 'EXIT' OR sy-ucomm = 'CANCEL'.
LEAVE TO SCREEN 0.
ENDIF.
ENDMODULE. " USER_COMMAND_0200 INPUT
*& Form fieldcatalog
text
--> p1 text
<-- p2 text
FORM fieldcatalog .
wa_fldcat-col_pos = '1'.
wa_fldcat-fieldname = 'MARK'.
wa_fldcat-checkbox = 'X'.
wa_fldcat-edit = 'X'.
APPEND wa_fldcat TO i_fldcat.
CLEAR wa_fldcat.
wa_fldcat-col_pos = '2'.
wa_fldcat-fieldname = 'EBELN'.
wa_fldcat-tabname = 'IT_EKKO'.
wa_fldcat-outputlen = 10.
wa_fldcat-scrtext_m = 'PO NUMBER'.
APPEND wa_fldcat TO i_fldcat.
wa_fldcat-col_pos = '3'.
wa_fldcat-fieldname = 'BUKRS'.
wa_fldcat-tabname = 'I_EKKO'.
wa_fldcat-outputlen = 10.
wa_fldcat-scrtext_m = 'Type'.
APPEND wa_fldcat TO i_fldcat.
wa_fldcat-col_pos = '4'.
wa_fldcat-fieldname = 'BSTYP'.
wa_fldcat-tabname = 'I_EKKO'.
wa_fldcat-outputlen = 10.
wa_fldcat-scrtext_m = 'Type'.
APPEND wa_fldcat TO i_fldcat.
wa_fldcat-col_pos = '5'.
wa_fldcat-fieldname = 'BSART'.
wa_fldcat-tabname = 'I_EKKO'.
wa_fldcat-outputlen = 10.
wa_fldcat-scrtext_m = 'Type'.
APPEND wa_fldcat TO i_fldcat.
wa_fldcat-col_pos = '6'.
wa_fldcat-fieldname = 'AEDAT'.
wa_fldcat-tabname = 'I_EKKO'.
wa_fldcat-outputlen = 10.
wa_fldcat-scrtext_m = 'Type'.
APPEND wa_fldcat TO i_fldcat.
ENDFORM. " fieldcatalog
*& Form fieldcatalog1
text
--> p1 text
<-- p2 text
FORM fieldcatalog1 .
wa_fldcat-col_pos = '1'.
wa_fldcat-fieldname = 'EBELN'.
wa_fldcat-tabname = 'IT_EKPO'.
wa_fldcat-outputlen = 10.
wa_fldcat-scrtext_m = 'PO NUMBER'.
APPEND wa_fldcat TO i_fldcat1.
wa_fldcat-col_pos = '2'.
wa_fldcat-fieldname = 'EBELP'.
wa_fldcat-tabname = 'IT_EKPO'.
wa_fldcat-outputlen = 10.
wa_fldcat-scrtext_m = 'PO NUMBER'.
APPEND wa_fldcat TO i_fldcat1.
wa_fldcat-col_pos = '3'.
wa_fldcat-fieldname = 'STATU'.
wa_fldcat-tabname = 'IT_EKPO'.
wa_fldcat-outputlen = 10.
wa_fldcat-scrtext_m = 'PO NUMBER'.
APPEND wa_fldcat TO i_fldcat1.
wa_fldcat-col_pos = '4'.
wa_fldcat-fieldname = 'AEDAT'.
wa_fldcat-tabname = 'IT_EKPO'.
wa_fldcat-outputlen = 10.
wa_fldcat-scrtext_m = 'PO NUMBER'.
APPEND wa_fldcat TO i_fldcat1.
ENDFORM. " fieldcatalog1
Regards,
Vijetha. -
Here's how to do ALV (OO) with dynamic fcat, int table and editable data
Hi everybody
Here's a more useful approach to ALV grid with OO using dynamic table, data NOT from DDIC, dynamic FCAT and how to get changed lines from the grid when ENTER key is pressed.
It's really not too dificult but I think this is more useful than the ever present SFLIGHT methods from the demos.
This also defines a subclass of cl_gui_alv_grid so you can access the protected attributes / methods of that class.
You don't need to add the class via SE24 -- done fron this ABAP.
When you run it click Edit for the first time.
After editing data press ENTER and the break point should bring you into the relevant method.
Code developed on NW2004S trial version but also works on rel 6.40 on a "Real" system.
The code should work without any changes on any system >=6.40.
All you need to do is to create a blank screen 100 via SE51 with a custom container on it called CCONTAINER1.
The rest of the code can just be uploaded into your system using the SE38 upload facility.
When running the program click on the EDIT button to enable the edit functionality of the grid.
Change your data and when you press ENTER you should get the break-point where you can see the original table and changed rows.
This program is actually quite general as it covers Dynamic tables, building a dynamic fcat where your table fields are NOT in the DDIC, intercepting the ENTER key via using an event, and accessing the protected attributes of the cl_gui_alv_grid by defining a subclass of this class in the abap.
I've seen various questions relating to all these functions but none in my view ever answers the questions in a simple manner. I hope this simple program will answer all these and show how using OO ALV is actually quite easy and people shouldn't be scared of using OO.
Have fun and award points if useful.
Cheers
Jimbo.
<b>PROGRAM zdynfieldcat.
Simple test of dynamic ITAB with user defined (not ddic) fields
Build dynamic fcat
use ALV grid to display and edit.
*When edit mode set to 1 toolbar gives possibility of adding and
*deleting rows.
*Define subclass of cl_gui_alv_grid so we can use protected attributes
*and methods.
Add event handler to intercept user entering data and pressing the
*ENTER key.
When enter key is pressed get actual value of NEW table (all rows)
rather than just the changed data.
*use new RTTI functionality to retrieve internal table structure
*details.
Create a blank screen 100 with a custom container called CCONTAINER1.
James Hawthorne
include <icon>.
define any old internal structure NOT in DDIC
types: begin of s_elements,
anyfield1(20) type c,
anyfield2(20) type c,
anyfield3(20) type c,
anyfield4(20) type c,
anyfield5(11) type n,
end of s_elements.
types: lt_rows type lvc_t_roid.
Note new RTTI functionality allows field detail retrieval
at runtime for dynamic tables.
data: wa_element type s_elements ,
wa_data type s_elements,
c_index type sy-index,
c_dec2 type s_elements-anyfield5,
wa_it_fldcat type lvc_s_fcat,
it_fldcat type lvc_t_fcat,
lr_rtti_struc TYPE REF TO cl_abap_structdescr, "RTTI
lt_comp TYPE cl_abap_structdescr=>component_table,"RTTI
ls_comp LIKE LINE OF lt_comp, "RTTI
zog like line of lr_rtti_struc->components, "RTTI
struct_grid_lset type lvc_s_layo,
l_valid type c,
new_table type ref to data.
field-symbols: <dyn_table> type standard table,
<actual_tab> type standard table,
<fs1> type ANY,
<FS2> TYPE TABLE.
data: grid_container1 type ref to cl_gui_custom_container.
class lcl_grid_event_receiver definition deferred.
data: g_event_receiver type ref to lcl_grid_event_receiver.
data: ls_modcell type LVC_S_MODI,
stab type ref to data,
sdog type s_elements. .
class lcl_grid_event_receiver definition.
public section.
methods:
handle_data_changed
for event data_changed of cl_gui_alv_grid
importing er_data_changed,
toolbar for event toolbar of cl_gui_alv_grid
importing e_object
e_interactive,
user_command for event user_command of cl_gui_alv_grid
importing e_ucomm.
endclass.
*implementation of Grid event-handler class
class lcl_grid_event_receiver implementation.
method handle_data_changed.
code whatever required after data entry.
various possibilites here as you can get back Cell(s) changed
columns or the entire updated table.
Data validation is also possible here.
perform check_data using er_data_changed.
endmethod.
Method for handling all creation/modification calls to the toolbar
method toolbar.
data : ls_toolbar type stb_button.
Define Custom Button in the toolbar
clear ls_toolbar.
move 0 to ls_toolbar-butn_type.
move 'EDIT' to ls_toolbar-function.
move space to ls_toolbar-disabled.
move 'Edit' to ls_toolbar-text.
move icon_change_text to ls_toolbar-icon.
move 'Click2Edit' to ls_toolbar-quickinfo.
append ls_toolbar to e_object->mt_toolbar.
clear ls_toolbar.
move 0 to ls_toolbar-butn_type.
move 'UPDA' to ls_toolbar-function.
move space to ls_toolbar-disabled.
move 'Update' to ls_toolbar-text.
move icon_system_save to ls_toolbar-icon.
move 'Click2Update' to ls_toolbar-quickinfo.
append ls_toolbar to e_object->mt_toolbar.
clear ls_toolbar.
move 0 to ls_toolbar-butn_type.
move 'EXIT' to ls_toolbar-function.
move space to ls_toolbar-disabled.
move 'Exit' to ls_toolbar-text.
move icon_system_end to ls_toolbar-icon.
move 'Click2Exit' to ls_toolbar-quickinfo.
append ls_toolbar to e_object->mt_toolbar.
endmethod.
method user_command.
case e_ucomm .
when 'EDIT'. "From Tool bar
perform set_input.
perform init_grid.
when 'UPDA'. "From Tool bar
perform refresh_disp.
perform update_table.
when 'EXIT'. "From Tool bar
leave program.
endcase.
endmethod.
endclass.
class zcltest definition inheriting from cl_gui_alv_grid.
define this as a subclass so we can access the protected attributes
of the superclass cl_gui_alv_grid
public section.
methods: constructor, disp_tab.
endclass.
need this now to instantiate object
as we are using subclass rather than the main cl_gui_alv_grid.
class zcltest implementation.
METHOD constructor.
CALL METHOD super->constructor
exporting i_appl_events = 'X'
i_parent = grid_container1.
endmethod.
method disp_tab.
FIELD-SYMBOLS: <outtab> TYPE STANDARD TABLE.
break-point 1.
mt_outtab is the data table held as a protected attribute
in class cl_gui_alv_grid.
ASSIGN me->mt_outtab->* TO <outtab>. "Original data
do whatever you want with <outtab>
contains data BEFORE changes each time.
Note that NEW (Changed) table has been obtained already by
call to form check_data USING P_ER_DATA_CHANGED
TYPE REF TO CL_ALV_CHANGED_DATA_PROTOCOL.
Entered data is in table defined by <fs2>
In this method you can compare original and changed data.
Easier than messing around with individual cells.
do what you want with data in <fs2> validate / update / merge etc
endmethod.
endclass.
data :
ok_code like sy-ucomm,
save_ok like sy-ucomm,
i4 type int4,
Container Object [grid_container]
now created via method constructor
in the subclass zcltest.
Control Object [grid]
grid1 type ref to zcltest,
Event-Handler Object [grid_handler]
grid_handler type ref to lcl_grid_event_receiver.
start-of-selection.
call screen 100.
module status_0100 output.
now display it as grid
if grid_container1 is initial.
create object grid_container1
exporting
container_name = 'CCONTAINER1'.
create object grid1.
break-point 1.
create object grid_handler.
set handler:
grid_handler->user_command for grid1,
grid_handler->toolbar for grid1,
grid_handler->handle_data_changed for grid1.
perform create_dynamic_fcat.
perform create_dynamic_itab.
perform populate_dynamic_itab.
perform init_grid.
perform register_enter_event.
set off ready for input initially
i4 = 0.
call method grid1->set_ready_for_input
exporting
i_ready_for_input = i4.
endif.
endmodule.
module user_command_0100 input.
*PAI not needed in OO ALV anymore as User Commands are handled as events
*in method user_command.
*we can also get control if the Data entered and the ENTER is pressed by
*raising an event.
Control then returns to method handle_data_changed.
endmodule.
form create_dynamic_fcat.
get structure of our user table for building field catalog
Use the RTTI functionality
lr_rtti_struc ?= cl_abap_structdescr=>describe_by_data( wa_data ).
Build field catalog just use basic data here
colour specific columns as well
loop at lr_rtti_struc->components into zog.
c_index = c_index + 1.
clear wa_it_fldcat.
wa_it_fldcat-fieldname = zog-name .
wa_it_fldcat-datatype = zog-type_kind.
wa_it_fldcat-inttype = zog-type_kind.
wa_it_fldcat-intlen = zog-length.
wa_it_fldcat-decimals = zog-decimals.
wa_it_fldcat-lowercase = 'X'.
if c_index eq 2.
wa_it_fldcat-emphasize = 'C411'.
endif.
if c_index eq 3.
wa_it_fldcat-emphasize = 'C511'.
endif.
append wa_it_fldcat to it_fldcat .
endloop.
endform.
form create_dynamic_itab.
Create dynamic internal table and assign to field sysmbol.
Use dynamic field catalog just built.
call method cl_alv_table_create=>create_dynamic_table
exporting
it_fieldcatalog = it_fldcat
importing
ep_table = new_table.
assign new_table->* to <dyn_table>.
endform.
form populate_dynamic_itab.
load up a line of the dynamic table
c_dec2 = c_dec2 + 11.
wa_element-anyfield1 = 'Tabbies'.
wa_element-anyfield2 = 'ger.shepards'.
wa_element-anyfield3 = 'White mice'.
wa_element-anyfield4 = 'Any old text'.
wa_element-anyfield5 = c_dec2.
append wa_element to <dyn_table>.
endform.
form check_data USING P_ER_DATA_CHANGED
TYPE REF TO CL_ALV_CHANGED_DATA_PROTOCOL.
Get altered data back
ASSIGN p_er_data_changed->mp_mod_rows TO <FS1>.
stab = p_er_data_changed->mp_mod_rows.
ASSIGN STAB->* TO <FS2>.
LOOP AT <FS2> INTO sdog.
ALV grid display with altered data is now in <fs2>.
do any extra processing you want here
endloop.
now display new table
call method grid1->disp_tab.
endform.
form exit_program.
call method grid_container1->free.
call method cl_gui_cfw=>flush.
leave program.
endform.
form refresh_disp.
call method grid1->refresh_table_display.
endform.
form update_table.
The dynamic table here is the changed table read from the grid
after user has changed it
Data can be saved to DB or whatever.
loop at <dyn_table> into wa_element.
do what you want with the data here
endloop.
switch off edit mode again for next function
i4 = 0.
call method grid1->set_ready_for_input
exporting
i_ready_for_input = i4.
endform.
form set_input.
i4 = 1.
call method grid1->set_ready_for_input
exporting
i_ready_for_input = i4.
endform.
form switch_input.
if i4 = 1.
i4 = 0.
else.
i4 = 1.
endif.
call method grid1->set_ready_for_input
exporting
i_ready_for_input = i4.
endform.
form init_grid.
Enabling the grid to edit mode,
struct_grid_lset-edit = 'X'. "To enable editing in ALV
struct_grid_lset-grid_title = 'Jimbos Test'.
call method grid1->set_table_for_first_display
exporting
is_layout = struct_grid_lset
changing
it_outtab = <dyn_table>
it_fieldcatalog = it_fldcat.
endform.
form register_enter_event.
call method grid1->register_edit_event
exporting
i_event_id = cl_gui_alv_grid=>mc_evt_enter.
Instantiate the event or it won't work.
create object g_event_receiver.
set handler g_event_receiver->handle_data_changed for grid1.
endform.</b>Hi there
IE7 doesn't give me the add new page option and I get 404 error when trying to access the "How to contribute" section.
I'll load up Firefox later (this browser usually works when IE7 doesn't always work properly).
I'll copy the stuff to the wiki when I've got the browser sorted out.
Cheers
jimbp -
RG1 summary of Finished goods-report.
Hi Folks,
RG1 summary of Finished goods-report.
The closing balance for a particular material number during the month Jan 2007 is showing 1.00 but the opening balance for the same material number during the month February 2007 is showing 0.00 but not 1.00.
I mean to say the closing balance in January 2007 is not carrying forward into the month Feb 2007.May I know how to go ahead with this problem.
What is the concept of UPDATE RULES of the table.?
The previous developer has developed the following report.
REPORT zxxx MESSAGE-ID z_apd.
*& Includes *
INCLUDE <icon>.
*& Tables *
TABLES : j_1irg1,
j_2irg1bal,
z2irg1bal,
ser03,
objk.
*& Selection Screen *
SELECTION-SCREEN : BEGIN OF BLOCK blk1 WITH FRAME TITLE text-001.
PARAMETERS : p_exgrp TYPE j_1irg1-exgrp OBLIGATORY,
p_stdate LIKE sy-datum OBLIGATORY,
p_endate LIKE sy-datum OBLIGATORY.
SELECT-OPTIONS s_chapid FOR j_1irg1-chapid .
SELECTION-SCREEN : END OF BLOCK blk1.
*& Data Declaration *
Internal Tables
DATA : it_display TYPE TABLE OF zj1irg1,
it_final TYPE TABLE OF zj1irg1,
it_alv TYPE TABLE OF zj1irg1,
Work Areas
wa_display TYPE zj1irg1,
wa_alv TYPE zj1irg1,
it_display1 TYPE TABLE OF zj1irg1,
wa_display1 TYPE zj1irg1,
wa_alv1 TYPE zj1irg1.
DATA: BEGIN OF it_itab OCCURS 0.
INCLUDE STRUCTURE zj1irg1.
DATA: END OF it_itab.
DATA : BEGIN OF itab1 OCCURS 0,
matnr LIKE j_1irg1-matnr,
END OF itab1.
DATA : BEGIN OF itab2 OCCURS 0,
cpudt LIKE j_1irg1-cpudt,
END OF itab2.
DATA : BEGIN OF itab3 OCCURS 0.
INCLUDE STRUCTURE j_1irg1.
DATA: END OF itab3.
DATA : itab4 LIKE j_1irg1 OCCURS 0 WITH HEADER LINE,
itab5 LIKE j_1irg1 OCCURS 0 WITH HEADER LINE.
DATA : BEGIN OF itab6 OCCURS 0.
INCLUDE STRUCTURE j_1irg1.
DATA : sernr LIKE objk-sernr.
DATA: END OF itab6.
DATA : BEGIN OF itab61 OCCURS 0.
INCLUDE STRUCTURE j_1irg1.
DATA: sernr LIKE objk-sernr.
DATA: END OF itab61.
DATA : itab7 LIKE j_2irg1bal OCCURS 0 WITH HEADER LINE,
it_bal LIKE j_2irg1bal OCCURS 0 WITH HEADER LINE,
it_bal1 LIKE j_2irg1bal OCCURS 0 WITH HEADER LINE.
DATA: qty_menge LIKE j_1irg1-menge,
iss_menge LIKE j_1irg1-menge,
tot_menge LIKE j_1irg1-menge,
op_menge LIKE j_1irg1-menge,
matnr LIKE j_1irg1-matnr,
exgrp LIKE j_1irg1-exgrp ,
cpudt LIKE j_1irg1-cpudt.
*for checcking lines of itab
DATA: n1 TYPE i.
Others
DATA : v_bwart TYPE mseg-bwart,
v_index TYPE i,
v_index1 TYPE i,
count(4) TYPE n VALUE '0',
neg TYPE char1 VALUE '-',
menge TYPE char16,
count_1 TYPE i,
count_2 TYPE i,
count_3 TYPE i,
count12(4) TYPE n VALUE '0',
count13(4) TYPE n VALUE '0'.
*Ranges
RANGES: v_bwart1 FOR mseg-bwart.
For ALV Display
DATA : gs_variant TYPE disvariant,
gs_layout TYPE lvc_s_layo,
c_stk TYPE scrfname VALUE 'ZRG1',
custom_container TYPE REF TO cl_gui_custom_container.
CLASS lcl_event_receiver DEFINITION DEFERRED.
DATA : grid1 TYPE REF TO cl_gui_alv_grid,
event_receiver TYPE REF TO lcl_event_receiver,
ok_code TYPE sy-ucomm,
it_fieldcatalog TYPE lvc_t_fcat,
wafieldcatlog TYPE LINE OF lvc_t_fcat,
lt_rows TYPE lvc_t_row,
wa_rows TYPE LINE OF lvc_t_row.
*& Start of Selection *
START-OF-SELECTION.
IMPORT s_chapid FROM MEMORY ID 'SCHAPID'.
PERFORM get_data.
IF it_display[] IS INITIAL.
No Details Available
MESSAGE i017(z_apd) WITH text-005.
STOP.
ELSE.
Display the Details on the Screen
sort it_display by matnr.
*sort it_display by cpudt RISINDR RISINDI matnr.
LOOP AT it_display INTO wa_display.
ON CHANGE OF wa_display-matnr.
*insert
*Check record exits
SELECT SINGLE * FROM z2irg1bal
WHERE
exgrp = exgrp AND
matnr = matnr AND
form = 'P' AND
cb_finish = tot_menge AND
datum = cpudt.
*If record does not exists
*Update balance Table.
IF count12 GE 1.
IF sy-subrc NE 0.
z2irg1bal-mandt = sy-mandt.
z2irg1bal-exgrp = exgrp.
z2irg1bal-matnr = matnr.
z2irg1bal-form = 'P'.
z2irg1bal-cb_finish = tot_menge.
z2irg1bal-datum = cpudt.
INSERT z2irg1bal ."values wa_display.
COMMIT WORK.
ENDIF.
Start of Insertion
IF sy-subrc EQ 0.
z2irg1bal-mandt = sy-mandt.
z2irg1bal-exgrp = exgrp.
z2irg1bal-matnr = matnr.
z2irg1bal-form = 'P'.
z2irg1bal-cb_finish = tot_menge.
z2irg1bal-datum = cpudt.
UPDATE z2irg1bal SET cb_finish = z2irg1bal-cb_finish
WHERE exgrp = z2irg1bal-exgrp AND
datum = z2irg1bal-datum AND
matnr = z2irg1bal-matnr AND
form = 'P'.
ENDIF.
End of Insertion.
ENDIF.
CLEAR: qty_menge,
iss_menge,
tot_menge,
count,
matnr,
cpudt,
exgrp.
ENDON.
loop at itab6.
AT NEW matnr.
v_index = 1.
count = count + 1 .
ENDAT.
IF v_index = 1.
CLEAR v_index.
*INsert for adding start
IF wa_display-risind = 'R'.
*wa_display-OP_FINISH = wa_display-OP_FINISH +
wa_display-CB_FINISH +
wa_display-MENGE.
wa_display-op_finish = wa_display-menge.
qty_menge = wa_display-op_finish.
IF wa_display-status = space.
tot_menge = tot_menge + qty_menge + wa_display-cb_finish .
ELSE.
tot_menge = tot_menge - qty_menge + wa_display-cb_finish.
ENDIF.
*tot_menge = op_menge.
op_menge = tot_menge.
ELSE.
*Qty Issued
wa_display-op_bond = wa_display-op_finish - wa_display-menge.
IF wa_display-op_bond LT 0.
iss_menge = wa_display-op_bond.
iss_menge = ABS( iss_menge ).
*Start of modification
tot_MENGE = tot_MENGE - iss_MENGE ."
IF count LE 1.
tot_menge = wa_display-cb_finish - iss_menge ."
ELSE.
tot_menge = tot_menge - iss_menge ."
ENDIF.
*End of modification
op_menge = tot_menge.
ENDIF.
ENDIF.
*wa_display-MENGE_FINI = wa_display-OP_FINISH - wa_display-OP_BOND.
*tot_MENGE = tot_MENGE + qty_MENGE - iss_MENGE .
wa_display-menge_fini = tot_menge.
**matnr for insert
matnr = wa_display-matnr.
*excise group
exgrp = wa_display-exgrp.
*Date
cpudt = wa_display-cpudt.
*Opening Balance
*Insert start
*if count le 1.
if wa_display-RISIND = 'R'.
wa_display-CB_FINISH = wa_display-CB_FINISH + qty_MENGE.
else.
wa_display-CB_FINISH = wa_display-CB_FINISH - iss_MENGE.
endif.
*endif.
*Insert End
IF count GT 1.
IF wa_display-risind = 'R'.
wa_display-cb_finish = tot_menge - qty_menge.
ELSE.
wa_display-cb_finish = tot_menge + iss_menge.
ENDIF.
ENDIF.
*check it_display-SERIALNO = wa_display-SERIALNO.
MODIFY it_display FROM wa_display.
*INsert for adding end
*move-corresponding wa_display to it_itab.
*append it_itab.
*check it_itab-SERIALNO = wa_display-SERIALNO.
*if sy-subrc = 0.
*endif.
*Insert to update closng to balance to Rg1bal table
*start
count12 = count12 + 1.
*for last record
AT LAST.
*Check record exits
SELECT SINGLE * FROM z2irg1bal
WHERE
exgrp = exgrp AND
matnr = matnr AND
form = 'P' AND
cb_finish = tot_menge AND
datum = cpudt.
*If record does not exists
*Update balance Table.
IF count12 GE 1.
IF sy-subrc NE 0.
z2irg1bal-mandt = sy-mandt.
z2irg1bal-exgrp = exgrp.
z2irg1bal-matnr = matnr.
z2irg1bal-form = 'P'.
z2irg1bal-cb_finish = tot_menge.
z2irg1bal-datum = cpudt.
INSERT z2irg1bal ."values wa_display.
COMMIT WORK.
Start of Insertion
IF sy-subrc EQ 0.
z2irg1bal-mandt = sy-mandt.
z2irg1bal-exgrp = exgrp.
z2irg1bal-matnr = matnr.
z2irg1bal-form = 'P'.
z2irg1bal-cb_finish = tot_menge.
z2irg1bal-datum = cpudt.
UPDATE z2irg1bal SET cb_finish = z2irg1bal-cb_finish
WHERE exgrp = z2irg1bal-exgrp AND
datum = z2irg1bal-datum AND
matnr = z2irg1bal-matnr AND
form = 'P'.
ENDIF.
End of Insertion
ENDIF.
ENDIF.
ENDAT.
*Insert to update closng to balance to Rg1bal table
*end
MOVE-CORRESPONDING wa_display TO wa_alv.
APPEND wa_alv TO it_alv.
append itab6 to it_alv.
ENDIF.
ENDLOOP.
loop at it_alv into wa_alv.
wa_alv-exgrp = wa_alv-exgrp.
wa_alv-SYEAR = wa_alv-syear.
wa_alv-SERIALNO = wa_alv-SERIALNO.
endloop.
EXPORT it_alv TO MEMORY ID 'ABCD'.
call screen 100.
ENDIF.
*& End of Selection *
END-OF-SELECTION.
*& Class Definition *
CLASS lcl_event_receiver DEFINITION.
PUBLIC SECTION.
METHODS:
handle_toolbar
FOR EVENT toolbar OF cl_gui_alv_grid
IMPORTING e_object e_interactive,
handle_user_command
FOR EVENT user_command OF cl_gui_alv_grid
IMPORTING e_ucomm,
handle_double_click
FOR EVENT double_click OF cl_gui_alv_grid
IMPORTING e_row e_column.
PRIVATE SECTION.
ENDCLASS. "lcl_event_receiver DEFINITION
*& Class Implementation *
CLASS lcl_event_receiver IMPLEMENTATION.
METHOD handle_toolbar.
Local Variables
DATA: ls_toolbar TYPE stb_button.
append a separator to normal toolbar
CLEAR ls_toolbar.
MOVE 3 TO ls_toolbar-butn_type.
APPEND ls_toolbar TO e_object->mt_toolbar.
append an icon to to show printing
CLEAR ls_toolbar.
MOVE 'PRINT' TO ls_toolbar-function.
MOVE icon_print TO ls_toolbar-icon.
MOVE 'Print Receipts' TO ls_toolbar-quickinfo.
MOVE ' Print' TO ls_toolbar-text.
MOVE ' ' TO ls_toolbar-disabled.
APPEND ls_toolbar TO e_object->mt_toolbar.
ENDMETHOD. " Handle_toolbar
METHOD handle_user_command.
CASE e_ucomm.
WHEN 'PRINT'.
REFRESH : lt_rows , it_final.
CALL METHOD grid1->get_selected_rows
IMPORTING
et_index_rows = lt_rows.
CALL METHOD cl_gui_cfw=>flush.
LOOP AT lt_rows INTO wa_rows.
READ TABLE it_alv INDEX wa_rows-index INTO wa_alv.
LOOP AT it_display INTO wa_display
WHERE mblnr = wa_alv-mblnr.
APPEND wa_display TO it_final.
ENDLOOP.
ENDLOOP.
perform display_form.
ENDCASE.
ENDMETHOD. "handle_user_command
METHOD handle_double_click.
IF e_column = 'MBLNR'.
READ TABLE it_alv INDEX e_row-index INTO wa_alv.
IF sy-subrc = 0.
REFRESH it_final.
LOOP AT it_display INTO wa_display
WHERE mblnr = wa_alv-mblnr.
APPEND wa_display TO it_final.
ENDLOOP.
PERFORM call_migo.
ENDIF.
ENDIF.
ENDMETHOD. "handle_double_click
ENDCLASS. "lcl_event_receiver IMPLEMENTATION
*& Form get_data
text
--> p1 text
<-- p2 text
FORM get_data .
*Select only for matnr and chapid from table
SELECT matnr FROM j_1irg1
APPENDING CORRESPONDING FIELDS OF TABLE itab1
WHERE exgrp = p_exgrp
AND
WERKS = P_WERKS
and
MATNR in s_MATNR
and
CPUDT in s_CPUDT.
cpudt BETWEEN p_stdate AND p_endate
AND
*Chapid
chapid IN s_chapid
ORDER BY matnr.
SORT itab1 BY matnr. " for performance
DELETE ADJACENT DUPLICATES FROM itab1 COMPARING matnr .
SELECT cpudt FROM j_1irg1
APPENDING CORRESPONDING FIELDS OF TABLE itab2
WHERE exgrp = p_exgrp
AND
cpudt BETWEEN p_stdate AND p_endate
AND
*Chapid
chapid IN s_chapid
ORDER BY cpudt.
SORT itab2 BY cpudt. " for Performance
DELETE ADJACENT DUPLICATES FROM itab2 COMPARING cpudt .
LOOP AT itab1.
LOOP AT itab2.
*on change of itab1-matnr or itab2-cpudt.
*select * from J_1IRG1
CLEAR itab3.
SELECT * FROM j_1irg1
*into itab3
APPENDING CORRESPONDING FIELDS OF TABLE itab3
WHERE matnr = itab1-matnr
AND
cpudt = itab2-cpudt.
*count = count + 1.
IF sy-subrc EQ 0.
LOOP AT itab3.
*count = count + 1.
*READ TABLE itab3 INDEX count."1.
IF itab3-risind = 'R'.
MOVE-CORRESPONDING itab3 TO itab4.
APPEND itab4.
DELETE itab3.
MOVE-CORRESPONDING itab4 TO itab6.
APPEND itab6.
CLEAR itab4.
ELSE.
MOVE-CORRESPONDING itab3 TO itab5.
APPEND itab5.
DELETE itab3.
MOVE-CORRESPONDING itab5 TO itab6.
APPEND itab6.
CLEAR itab5.
ENDIF.
ENDLOOP.
ENDIF.
*endon.
ENDLOOP.
ENDLOOP.
SELECT * FROM z2irg1bal
APPENDING CORRESPONDING FIELDS OF TABLE itab7
WHERE exgrp = p_exgrp
AND
datum LE p_stdate
ORDER BY datum.
SORT itab7 BY datum.
DELETE ADJACENT DUPLICATES FROM itab7 COMPARING datum .
*insert Start
LOOP AT itab6.
DELETE itab7 WHERE matnr NE itab6-matnr.
ENDLOOP.
*insert End
*insert Start
LOOP AT itab6.
CLEAR itab61. REFRESH itab61.
CLEAR wa_display.
MOVE-CORRESPONDING itab6 TO wa_display.
EQPT Serno
count13 = 1.
SELECT SINGLE obknr FROM ser03 INTO ser03-obknr WHERE
mblnr EQ itab6-mblnr
AND mjahr EQ itab6-mjahr.
IF sy-subrc EQ 0.
SELECT sernr FROM objk INTO CORRESPONDING
FIELDS OF TABLE itab61 WHERE
obknr EQ ser03-obknr.
DESCRIBE TABLE itab61 LINES n1.
*do N1 times.
LOOP AT itab61.
IF count13 EQ 1.
wa_display-sernr = itab61-sernr.
ENDIF.
IF count13 EQ 2.
wa_display-sernr1 = itab61-sernr.
ENDIF.
IF count13 EQ 3.
wa_display-sernr2 = itab61-sernr.
ENDIF.
IF count13 EQ 4.
wa_display-sernr3 = itab61-sernr.
ENDIF.
IF count13 EQ 5.
wa_display-sernr4 = itab61-sernr.
ENDIF.
IF count13 EQ 6.
wa_display-sernr5 = itab61-sernr.
ENDIF.
IF count13 EQ 7.
wa_display-sernr6 = itab61-sernr.
ENDIF.
if count13 eq 8.
objk-SERNR8 = objk-SERNR.
endif.
if count13 eq 9.
objk-SERNR9 = objk-SERNR.
endif.
count13 = count13 + 1.
endselect.
ENDLOOP.
*enddo.
ENDIF.
endif.
*End of Modification Eqpt Serial No
MOVE-CORRESPONDING itab6 TO wa_display.
SELECT * FROM z2irg1bal
APPENDING CORRESPONDING FIELDS OF TABLE it_bal1
WHERE matnr = itab6-matnr
AND datum LE p_stdate
AND exgrp = itab6-exgrp.
SORT it_bal1 DESCENDING .
READ TABLE it_bal1 INDEX 1.
ON CHANGE OF itab6-matnr .
wa_display-cb_finish = it_bal1-cb_finish.
ENDON.
AT LAST ."matnr.
wa_display-cb_finish = it_bal1-cb_finish.
ENDAT.
APPEND wa_display TO it_display .
CLEAR wa_display-cb_finish.
CLEAR it_bal1. REFRESH it_bal1.
ENDLOOP.
SELECT * FROM j_1irg1
APPENDING CORRESPONDING FIELDS OF TABLE it_itab
WHERE exgrp = p_exgrp
AND
cpudt BETWEEN p_stdate AND p_endate.
DESCRIBE TABLE it_itab[] LINES count_1.
count_3 = count_1 + 1.
DESCRIBE TABLE it_display[] LINES count_2.
IF it_display IS NOT INITIAL.
DELETE it_display FROM count_3 TO count_2.
ENDIF.
*start of insertion
DELETE it_display WHERE status = 'C'.
LOOP AT it_display INTO wa_display.
CLEAR wa_display-cb_finish.
MODIFY it_display FROM wa_display.
ON CHANGE OF wa_display-matnr .
SELECT * FROM z2irg1bal
INTO CORRESPONDING FIELDS OF TABLE it_bal1
WHERE matnr = wa_display-matnr
AND datum LE p_stdate
AND exgrp = wa_display-exgrp.
IF sy-subrc = 0.
SORT it_bal1 DESCENDING .
READ TABLE it_bal1 INDEX 1.
wa_display-cb_finish = it_bal1-cb_finish.
MODIFY it_display FROM wa_display.
ENDIF.
ENDON.
ENDLOOP.
*End of insertion
ENDFORM. " get_data
*& Module STATUS_0100 OUTPUT
text
MODULE status_0100 OUTPUT.
SET PF-STATUS 'ZRG1'.
SET TITLEBAR 'ZRG1'.
DATA: lt_exclude TYPE ui_functions.
IF custom_container IS INITIAL.
Create the Custom Container
CREATE OBJECT custom_container
EXPORTING
container_name = c_stk.
Create an instance of alv control
CREATE OBJECT grid1
EXPORTING
i_parent = custom_container.
Layout Settings
gs_layout-sel_mode = 'A'. " Multiple Lines
MOVE 'RG1 Register' TO gs_layout-grid_title.
Prepare the Field Catalog
PERFORM prepare_catalog.
To Exclude the PRINT Button from the Standard toolbar of ALV
PERFORM exclude_tb_functions CHANGING lt_exclude.
Display the List for ALV Display
CALL METHOD grid1->set_table_for_first_display
EXPORTING
it_toolbar_excluding = lt_exclude
is_layout = gs_layout
CHANGING
it_fieldcatalog = it_fieldcatalog[]
it_outtab = it_alv[].
CREATE OBJECT event_receiver.
SET HANDLER event_receiver->handle_user_command FOR grid1.
SET HANDLER event_receiver->handle_toolbar FOR grid1.
SET HANDLER event_receiver->handle_double_click FOR grid1.
CALL METHOD grid1->set_toolbar_interactive.
ENDIF.
CALL METHOD cl_gui_control=>set_focus
EXPORTING
control = grid1.
ENDMODULE. " STATUS_0100 OUTPUT
*& Form exclude_tb_functions
text
<--P_LT_EXCLUDE text
FORM exclude_tb_functions CHANGING pt_exclude TYPE ui_functions.
Local Varaibles
DATA ls_exclude TYPE ui_func.
ls_exclude = cl_gui_alv_grid=>mc_fc_print.
APPEND ls_exclude TO pt_exclude.
ENDFORM. " exclude_tb_functions
*& Form prepare_catalog
text
--> p1 text
<-- p2 text
FORM prepare_catalog .
DATA : v_index TYPE i.
*Entry Date
v_index = v_index + 1.
wafieldcatlog-fieldname = 'CPUDT'.
wafieldcatlog-tabname = 'IT_ALV'.
wafieldcatlog-seltext = 'RG1 Entry Date'.
wafieldcatlog-reptext = 'RG1 Entry Date'.
wafieldcatlog-hotspot = ' '.
wafieldcatlog-col_pos = v_index.
APPEND wafieldcatlog TO it_fieldcatalog.
CLEAR wafieldcatlog-reptext.
CLEAR wafieldcatlog-key.
*Serial No
v_index = v_index + 1.
wafieldcatlog-fieldname = 'SERIALNO'.
wafieldcatlog-tabname = 'IT_ALV'.
wafieldcatlog-seltext = 'RG1 serial number'.
wafieldcatlog-reptext = 'RG1 serial number'.
wafieldcatlog-hotspot = ' '.
wafieldcatlog-col_pos = v_index.
APPEND wafieldcatlog TO it_fieldcatalog.
CLEAR wafieldcatlog-reptext.
CLEAR wafieldcatlog-key.
v_index = v_index + 1.
wafieldcatlog-fieldname = 'CHAPID'.
wafieldcatlog-tabname = 'IT_ALV'.
wafieldcatlog-seltext = 'Chapter ID'.
wafieldcatlog-reptext = 'Chapter ID'.
wafieldcatlog-hotspot = ' '.
wafieldcatlog-col_pos = v_index.
APPEND wafieldcatlog TO it_fieldcatalog.
CLEAR wafieldcatlog-reptext.
CLEAR wafieldcatlog-key.
v_index = v_index + 1.
wafieldcatlog-fieldname = 'MBLNR'.
wafieldcatlog-tabname = 'IT_ALV'.
wafieldcatlog-seltext = 'Number of Material Document'.
wafieldcatlog-reptext = 'Number of Material Document'.
wafieldcatlog-hotspot = ' '.
wafieldcatlog-col_pos = v_index.
APPEND wafieldcatlog TO it_fieldcatalog.
CLEAR wafieldcatlog-reptext.
CLEAR wafieldcatlog-key.
*Item
v_index = v_index + 1.
wafieldcatlog-fieldname = 'ZEILE'.
wafieldcatlog-tabname = 'IT_ALV'.
wafieldcatlog-seltext = 'Item in Material Document'.
wafieldcatlog-reptext = 'Item in Material Document'.
wafieldcatlog-hotspot = ' '.
wafieldcatlog-col_pos = v_index.
APPEND wafieldcatlog TO it_fieldcatalog.
CLEAR wafieldcatlog-reptext.
CLEAR wafieldcatlog-key.
v_index = v_index + 1.
wafieldcatlog-fieldname = 'BWART'.
wafieldcatlog-tabname = 'IT_ALV'.
wafieldcatlog-seltext = 'Movement Type'.
wafieldcatlog-reptext = 'Movement Type'.
wafieldcatlog-hotspot = ' '.
wafieldcatlog-col_pos = v_index.
APPEND wafieldcatlog TO it_fieldcatalog.
CLEAR wafieldcatlog-reptext.
CLEAR wafieldcatlog-key.
v_index = v_index + 1.
wafieldcatlog-fieldname = 'MENGE'.
wafieldcatlog-tabname = 'IT_ALV'.
wafieldcatlog-seltext = 'Quantity'.
wafieldcatlog-reptext = 'Quantity'.
wafieldcatlog-hotspot = ' '.
wafieldcatlog-col_pos = v_index.
wafieldcatlog-DO_SUM = 'X'.
append wafieldcatlog to it_fieldcatalog.
clear wafieldcatlog-reptext.
clear wafieldcatlog-key.
*Base Unit of Measure
v_index = v_index + 1.
wafieldcatlog-fieldname = 'MEINS'.
wafieldcatlog-tabname = 'IT_ALV'.
wafieldcatlog-seltext = 'Base Unit of Measure'.
wafieldcatlog-reptext = 'Base Unit of Measure'.
wafieldcatlog-hotspot = ' '.
wafieldcatlog-col_pos = v_index.
wafieldcatlog-do_sum = 'X'.
APPEND wafieldcatlog TO it_fieldcatalog.
CLEAR wafieldcatlog-reptext.
CLEAR wafieldcatlog-key.
v_index = v_index + 1.
wafieldcatlog-fieldname = 'RISIND'.
wafieldcatlog-tabname = 'IT_ALV'.
wafieldcatlog-seltext = 'Goods Movement Direction'.
wafieldcatlog-reptext = 'Goods Movement Direction'.
wafieldcatlog-hotspot = ' '.
wafieldcatlog-col_pos = v_index.
APPEND wafieldcatlog TO it_fieldcatalog.
CLEAR wafieldcatlog-reptext.
CLEAR wafieldcatlog-key.
*Material Number
v_index = v_index + 1.
wafieldcatlog-fieldname = 'MATNR'.
wafieldcatlog-tabname = 'IT_ALV'.
wafieldcatlog-seltext = 'Material Number'.
wafieldcatlog-reptext = 'Material Number'.
wafieldcatlog-hotspot = ' '.
wafieldcatlog-col_pos = v_index.
APPEND wafieldcatlog TO it_fieldcatalog.
CLEAR wafieldcatlog-reptext.
CLEAR wafieldcatlog-key.
*CB_FINISH
v_index = v_index + 1.
wafieldcatlog-fieldname = 'CB_FINISH'.
wafieldcatlog-tabname = 'IT_ALV'.
wafieldcatlog-seltext = 'Opening Balance'.
wafieldcatlog-reptext = 'Opening Balance'.
wafieldcatlog-hotspot = ' '.
wafieldcatlog-col_pos = v_index.
APPEND wafieldcatlog TO it_fieldcatalog.
CLEAR wafieldcatlog-reptext.
CLEAR wafieldcatlog-key.
*materail manufactured
v_index = v_index + 1.
wafieldcatlog-fieldname = 'OP_FINISH'.
wafieldcatlog-tabname = 'IT_ALV'.
wafieldcatlog-seltext = 'Qty Manufactured'.
wafieldcatlog-reptext = 'Qty Manufactured'.
wafieldcatlog-hotspot = ' '.
wafieldcatlog-col_pos = v_index.
APPEND wafieldcatlog TO it_fieldcatalog.
CLEAR wafieldcatlog-reptext.
CLEAR wafieldcatlog-key.
*Material Issued
v_index = v_index + 1.
wafieldcatlog-fieldname = 'OP_BOND'.
wafieldcatlog-tabname = 'IT_ALV'.
wafieldcatlog-seltext = 'Qty Issue'.
wafieldcatlog-reptext = 'Qty Issue'.
wafieldcatlog-hotspot = ' '.
wafieldcatlog-col_pos = v_index.
APPEND wafieldcatlog TO it_fieldcatalog.
CLEAR wafieldcatlog-reptext.
CLEAR wafieldcatlog-key.
*Total
v_index = v_index + 1.
wafieldcatlog-fieldname = 'MENGE_FINI'.
wafieldcatlog-tabname = 'IT_ALV'.
wafieldcatlog-seltext = 'Closing Balance'.
wafieldcatlog-reptext = 'Closing Balance'.
wafieldcatlog-hotspot = ' '.
wafieldcatlog-col_pos = v_index.
APPEND wafieldcatlog TO it_fieldcatalog.
CLEAR wafieldcatlog-reptext.
CLEAR wafieldcatlog-key.
*Material Description
v_index = v_index + 1.
wafieldcatlog-fieldname = 'MAKTX'.
wafieldcatlog-tabname = 'IT_ALV'.
wafieldcatlog-seltext = 'Material Description'.
wafieldcatlog-reptext = 'Material Description'.
wafieldcatlog-hotspot = ' '.
wafieldcatlog-col_pos = v_index.
APPEND wafieldcatlog TO it_fieldcatalog.
CLEAR wafieldcatlog-reptext.
CLEAR wafieldcatlog-key.
*Storage Location
v_index = v_index + 1.
wafieldcatlog-fieldname = 'LGORT'.
wafieldcatlog-tabname = 'IT_ALV'.
wafieldcatlog-seltext = 'Storage Location'.
wafieldcatlog-reptext = 'Storage Location'.
wafieldcatlog-hotspot = ' '.
wafieldcatlog-col_pos = v_index.
APPEND wafieldcatlog TO it_fieldcatalog.
CLEAR wafieldcatlog-reptext.
CLEAR wafieldcatlog-key.
*Goods Movement Direction
v_index = v_index + 1.
wafieldcatlog-fieldname = 'RISIND'.
wafieldcatlog-tabname = 'IT_ALV'.
wafieldcatlog-seltext = 'Goods Movement Direction'.
wafieldcatlog-reptext = 'Goods Movement Direction'.
wafieldcatlog-hotspot = ' '.
wafieldcatlog-col_pos = v_index.
APPEND wafieldcatlog TO it_fieldcatalog.
CLEAR wafieldcatlog-reptext.
CLEAR wafieldcatlog-key.
*Reference Document 1
v_index = v_index + 1.
wafieldcatlog-fieldname = 'RDOC1'.
wafieldcatlog-tabname = 'IT_ALV'.
wafieldcatlog-seltext = 'Reference Document 1'.
wafieldcatlog-reptext = 'Reference Document 1'.
wafieldcatlog-hotspot = ' '.
wafieldcatlog-col_pos = v_index.
APPEND wafieldcatlog TO it_fieldcatalog.
CLEAR wafieldcatlog-reptext.
CLEAR wafieldcatlog-key.
*Excise Duty Base Amount
v_index = v_index + 1.
wafieldcatlog-fieldname = 'EXBAS'.
wafieldcatlog-tabname = 'IT_ALV'.
wafieldcatlog-seltext = 'Excise Duty Base Amount'.
wafieldcatlog-reptext = 'Excise Duty Base Amount'.
wafieldcatlog-hotspot = ' '.
wafieldcatlog-col_pos = v_index.
APPEND wafieldcatlog TO it_fieldcatalog.
CLEAR wafieldcatlog-reptext.
CLEAR wafieldcatlog-key.
*Basic Excise Duty
v_index = v_index + 1.
wafieldcatlog-fieldname = 'EXBED'.
wafieldcatlog-tabname = 'IT_ALV'.
wafieldcatlog-seltext = 'Basic Excise Duty'.
wafieldcatlog-reptext = 'Basic Excise Duty'.
wafieldcatlog-hotspot = ' '.
wafieldcatlog-col_pos = v_index.
APPEND wafieldcatlog TO it_fieldcatalog.
CLEAR wafieldcatlog-reptext.
CLEAR wafieldcatlog-key.
*Additional Excise Duty
v_index = v_index + 1.
wafieldcatlog-fieldname = 'EXAED'.
wafieldcatlog-tabname = 'IT_ALV'.
wafieldcatlog-seltext = 'Additional Excise Duty'.
wafieldcatlog-reptext = 'Additional Excise Duty'.
wafieldcatlog-hotspot = ' '.
wafieldcatlog-col_pos = v_index.
APPEND wafieldcatlog TO it_fieldcatalog.
CLEAR wafieldcatlog-reptext.
CLEAR wafieldcatlog-key.
*Special Excise Duty
v_index = v_index + 1.
wafieldcatlog-fieldname = 'EXSED'.
wafieldcatlog-tabname = 'IT_ALV'.
wafieldcatlog-seltext = 'Special Excise Duty'.
wafieldcatlog-reptext = 'Special Excise Duty'.
wafieldcatlog-hotspot = ' '.
wafieldcatlog-col_pos = v_index.
APPEND wafieldcatlog TO it_fieldcatalog.
CLEAR wafieldcatlog-reptext.
CLEAR wafieldcatlog-key.
*Cess amount
v_index = v_index + 1.
wafieldcatlog-fieldname = 'CESS'.
wafieldcatlog-tabname = 'IT_ALV'.
wafieldcatlog-seltext = 'Cess amount'.
wafieldcatlog-reptext = 'Cess amount'.
wafieldcatlog-hotspot = ' '.
wafieldcatlog-col_pos = v_index.
APPEND wafieldcatlog TO it_fieldcatalog.
CLEAR wafieldcatlog-reptext.
CLEAR wafieldcatlog-key.
*ECS Value
v_index = v_index + 1.
wafieldcatlog-fieldname = 'ECS'.
wafieldcatlog-tabname = 'IT_ALV'.
wafieldcatlog-seltext = 'ECS Value'.
wafieldcatlog-reptext = 'ECS Value'.
wafieldcatlog-hotspot = ' '.
wafieldcatlog-col_pos = v_index.
APPEND wafieldcatlog TO it_fieldcatalog.
CLEAR wafieldcatlog-reptext.
CLEAR wafieldcatlog-key.
**Register Entry Status
v_index = v_index + 1.
wafieldcatlog-fieldname = 'STATUS'.
wafieldcatlog-tabname = 'IT_ALV'.
wafieldcatlog-seltext = 'Register Entry Status'.
wafieldcatlog-reptext = 'Register Entry Status'.
wafieldcatlog-hotspot = ' '.
wafieldcatlog-col_pos = v_index.
append wafieldcatlog to it_fieldcatalog.
clear wafieldcatlog-reptext.
clear wafieldcatlog-key.
*EQPT Serno 1 Value
v_index = v_index + 1.
wafieldcatlog-fieldname = 'SERNR'.
wafieldcatlog-tabname = 'IT_ALV'.
wafieldcatlog-seltext = 'Serial number'.
wafieldcatlog-reptext = 'Serial number'.
wafieldcatlog-hotspot = ' '.
wafieldcatlog-col_pos = v_index.
APPEND wafieldcatlog TO it_fieldcatalog.
CLEAR wafieldcatlog-reptext.
CLEAR wafieldcatlog-key.
*EQPT Serno 2 Value
v_index = v_index + 1.
wafieldcatlog-fieldname = 'SERNR1'.
wafieldcatlog-tabname = 'IT_ALV'.
wafieldcatlog-seltext = 'Serial number'.
wafieldcatlog-reptext = 'Serial number'.
wafieldcatlog-hotspot = ' '.
wafieldcatlog-col_pos = v_index.
APPEND wafieldcatlog TO it_fieldcatalog.
CLEAR wafieldcatlog-reptext.
CLEAR wafieldcatlog-key.
*EQPT Serno 3 Value
v_index = v_index + 1.
wafieldcatlog-fieldname = 'SERNR2'.
wafieldcatlog-tabname = 'IT_ALV'.
wafieldcatlog-seltext = 'Serial number'.
wafieldcatlog-reptext = 'Serial number'.
wafieldcatlog-hotspot = ' '.
wafieldcatlog-col_pos = v_index.
APPEND wafieldcatlog TO it_fieldcatalog.
CLEAR wafieldcatlog-reptext.
CLEAR wafieldcatlog-key.
*EQPT Serno 4 Value
v_index = v_index + 1.
wafieldcatlog-fieldname = 'SERNR3'.
wafieldcatlog-tabname = 'IT_ALV'.
wafieldcatlog-seltext = 'Serial number'.
wafieldcatlog-reptext = 'Serial number'.
wafieldcatlog-hotspot = ' '.
wafieldcatlog-col_pos = v_index.
APPEND wafieldcatlog TO it_fieldcatalog.
CLEAR wafieldcatlog-reptext.
CLEAR wafieldcatlog-key.
*EQPT Serno 5 Value
v_index = v_index + 1.
wafieldcatlog-fieldname = 'SERNR4'.
wafieldcatlog-tabname = 'IT_ALV'.
wafieldcatlog-seltext = 'Serial number'.
wafieldcatlog-reptext = 'Serial number'.
wafieldcatlog-hotspot = ' '.
wafieldcatlog-col_pos = v_index.
APPEND wafieldcatlog TO it_fieldcatalog.
CLEAR wafieldcatlog-reptext.
CLEAR wafieldcatlog-key.
*EQPT Serno 6 Value
v_index = v_index + 1.
wafieldcatlog-fieldname = 'SERNR5'.
wafieldcatlog-tabname = 'IT_ALV'.
wafieldcatlog-seltext = 'Serial number'.
wafieldcatlog-reptext = 'Serial number'.
wafieldcatlog-hotspot = ' '.
wafieldcatlog-col_pos = v_index.
APPEND wafieldcatlog TO it_fieldcatalog.
CLEAR wafieldcatlog-reptext.
CLEAR wafieldcatlog-key.
*EQPT Serno 7 Value
v_index = v_index + 1.
wafieldcatlog-fieldname = 'SERNR6'.
wafieldcatlog-tabname = 'IT_ALV'.
wafieldcatlog-seltext = 'Serial number'.
wafieldcatlog-reptext = 'Serial number'.
wafieldcatlog-hotspot = ' '.
wafieldcatlog-col_pos = v_index.
APPEND wafieldcatlog TO it_fieldcatalog.
CLEAR wafieldcatlog-reptext.
CLEAR wafieldcatlog-key.
ENDFORM. " prepare_catalog
*& Module USER_COMMAND_0100 INPUT
text
MODULE user_command_0100 INPUT.
IF ok_code = 'EXIT'.
CALL METHOD grid1->free.
CALL METHOD cl_gui_cfw=>flush.
leave program .
LEAVE TO SCREEN 0.
ENDIF.
ENDMODULE. " USER_COMMAND_0100 INPUT
*& Form call_migo
text
--> p1 text
<-- p2 text
FORM call_migo .
CALL FUNCTION 'MIGO_DIALOG' "n547170
EXPORTING "n547170
i_action = 'A04' "n547170
i_refdoc = 'R02' "n547170
i_notree = 'X' "n547170
i_no_auth_check = ' ' "n547170
i_deadend = 'X' "n547170
i_skip_first_screen = 'X' "n547170
i_okcode = 'OK_GO' "n547170
i_mblnr = wa_alv-mblnr "n547170
i_mjahr = wa_alv-mjahr . "n547170
ENDFORM. " call_migoT.Code: MB5B
Regards,
Rajesh Banka
How to give points: Mark your thread as a question while creating it. In the answers you get, you can assign the points by clicking on the stars to the left. You also get a point yourself for rewarding (one per thread). -
Regarding making hyperlink in OOPs ALV
Please see the following ALV Code. Its based on OOPs. There is no fieldcatalog defined in the program. In the output I want to make a hotspot on the filed VBELN & want to call T.code VA03 using SET PARAMETER ID. Please help. If I would have made it through Function Modules, It could have been easier as I can modify the fieldcatalog. Please help me urgently. Points will be rewarded.
*& Report ZTEST_OOPS_REPT1 *
REPORT ztest_oops_rept1 .
Type pool for icons - used in the toolbar
TYPE-POOLS: icon.
TYPE-POOLS: slis.
TABLES: vbak.
To allow the declaration of o_event_receiver before the
lcl_event_receiver class is defined, decale it as deferred in the
start of the program
CLASS lcl_event_receiver DEFINITION DEFERRED.
G L O B A L I N T E R N A L T A B L E S
*DATA: gi_sflight TYPE STANDARD TABLE OF sflight.
To include a traffic light and/or color a line the structure of the
table must include fields for the traffic light and/or the color
TYPES: BEGIN OF st_vbak.
INCLUDE STRUCTURE vbak.
TYPES: END OF st_vbak.
TYPES: tt_vbak TYPE STANDARD TABLE OF st_vbak.
DATA: gi_vbak TYPE tt_vbak.
*declaration for fieldcatalog
DATA: lit_fieldcat TYPE slis_t_fieldcat_alv,
ls_fieldcat TYPE slis_fieldcat_alv.
G L O B A L D A T A
DATA: ok_code LIKE sy-ucomm,
Work area for internal table
g_wa_vbak TYPE st_vbak,
ALV control: Layout structure
gs_layout TYPE lvc_s_layo.
Declare reference variables to the ALV grid and the container
DATA:
go_grid TYPE REF TO cl_gui_alv_grid,
go_custom_container TYPE REF TO cl_gui_custom_container,
o_event_receiver TYPE REF TO lcl_event_receiver.
DATA:
Work area for screen 200
g_screen200 LIKE vbak.
Data for storing information about selected rows in the grid
DATA:
Internal table
gi_index_rows TYPE lvc_t_row,
Information about 1 row
g_selected_row LIKE lvc_s_row.
SELECTION-SCREEN *
SELECTION-SCREEN BEGIN OF BLOCK ch1 WITH FRAME.
SELECT-OPTIONS: s_vbeln FOR vbak-vbeln OBLIGATORY.
SELECTION-SCREEN END OF BLOCK ch1.
C L A S S E S
CLASS lcl_event_receiver DEFINITION.
PUBLIC SECTION.
METHODS:
handle_toolbar FOR EVENT toolbar OF cl_gui_alv_grid
IMPORTING
e_object e_interactive,
handle_user_command FOR EVENT user_command OF cl_gui_alv_grid
IMPORTING e_ucomm.
ENDCLASS. "lcl_event_receiver DEFINITION
CLASS lcl_event_receiver IMPLEMENTATION
CLASS lcl_event_receiver IMPLEMENTATION.
METHOD handle_toolbar.
Event handler method for event toolbar.
CONSTANTS:
Constants for button type
c_button_normal TYPE i VALUE 0,
c_menu_and_default_button TYPE i VALUE 1,
c_menu TYPE i VALUE 2,
c_separator TYPE i VALUE 3,
c_radio_button TYPE i VALUE 4,
c_checkbox TYPE i VALUE 5,
c_menu_entry TYPE i VALUE 6.
DATA:
ls_toolbar TYPE stb_button.
Append seperator to the normal toolbar
CLEAR ls_toolbar.
MOVE c_separator TO ls_toolbar-butn_type..
APPEND ls_toolbar TO e_object->mt_toolbar.
Append a new button that to the toolbar. Use E_OBJECT of
event toolbar. E_OBJECT is of type CL_ALV_EVENT_TOOLBAR_SET.
This class has one attribute MT_TOOLBAR which is of table type
TTB_BUTTON. The structure is STB_BUTTON
CLEAR ls_toolbar.
MOVE 'CHANGE' TO ls_toolbar-function.
MOVE icon_change TO ls_toolbar-icon.
MOVE 'Change flight' TO ls_toolbar-quickinfo.
MOVE 'Change' TO ls_toolbar-text.
MOVE ' ' TO ls_toolbar-disabled.
APPEND ls_toolbar TO e_object->mt_toolbar.
ENDMETHOD. "handle_toolbar
METHOD handle_user_command.
Handle own functions defined in the toolbar
CASE e_ucomm.
WHEN 'CHANGE'.
PERFORM change_flight.
LEAVE TO SCREEN 0.
ENDCASE.
ENDMETHOD. "handle_user_command
ENDCLASS. "lcl_event_receiver IMPLEMENTATION
S T A R T - O F - S E L E C T I O N.
START-OF-SELECTION.
SET SCREEN '100'.
*& Module USER_COMMAND_0100 INPUT
MODULE user_command_0100 INPUT.
CASE ok_code.
WHEN 'BACK'.
LEAVE TO SCREEN 0.
ENDCASE.
ENDMODULE. " USER_COMMAND_0100 INPUT
*& Module STATUS_0100 OUTPUT
MODULE status_0100 OUTPUT.
SET PF-STATUS 'ZTEST_ALV'.
SET TITLEBAR 'ZTEST_ALV'.
DATA:
For parameter IS_VARIANT that is sued to set up options for storing
the grid layout as a variant in method set_table_for_first_display
l_layout TYPE disvariant,
Utillity field
l_lines TYPE i.
After returning from screen 200 the line that was selected before
going to screen 200, should be selected again. The table gi_index_rows
was the output table from the GET_SELECTED_ROWS method in form
CHANGE_FLIGHT
DESCRIBE TABLE gi_index_rows LINES l_lines.
IF l_lines > 0.
CALL METHOD go_grid->set_selected_rows
EXPORTING
it_index_rows = gi_index_rows.
CALL METHOD cl_gui_cfw=>flush.
REFRESH gi_index_rows.
ENDIF.
Read data and create objects
IF go_custom_container IS INITIAL.
Read data from datbase table
PERFORM get_data.
Create objects for container and ALV grid
CREATE OBJECT go_custom_container
EXPORTING container_name = 'ALV_CONTAINER'.
CREATE OBJECT go_grid
EXPORTING
i_parent = go_custom_container.
Create object for event_receiver class
and set handlers
CREATE OBJECT o_event_receiver.
SET HANDLER o_event_receiver->handle_user_command FOR go_grid.
SET HANDLER o_event_receiver->handle_toolbar FOR go_grid.
Layout (Variant) for ALV grid
l_layout-report = sy-repid. "Layout fo report
Setup the grid layout using a variable of structure lvc_s_layo
Set grid title
gs_layout-grid_title = 'SALES ORDER'.
Selection mode - Single row without buttons
(This is the default mode
gs_layout-sel_mode = 'B'. "B for single selection.
Grid setup for first display
CALL METHOD go_grid->set_table_for_first_display
EXPORTING
i_structure_name = 'VBAK'
is_variant = l_layout
i_save = 'A'
is_layout = gs_layout
CHANGING
it_outtab = gi_vbak.
*-- End of grid setup -
Raise event toolbar to show the modified toolbar
CALL METHOD go_grid->set_toolbar_interactive.
Set focus to the grid. This is not necessary in this
example as there is only one control on the screen
CALL METHOD cl_gui_control=>set_focus
EXPORTING
control = go_grid.
ENDIF.
ENDMODULE. " STATUS_0100 OUTPUT
*& Module USER_COMMAND_0200 INPUT
text
MODULE user_command_0200 INPUT.
CASE ok_code.
WHEN 'BACK'.
LEAVE TO SCREEN 100.
WHEN'SAVE'.
PERFORM save_changes.
ENDCASE.
ENDMODULE. " USER_COMMAND_0200 INPUT
*& Form get_data
text
FORM get_data.
Read data from table VBAK
SELECT *
FROM vbak
INTO TABLE gi_vbak
WHERE vbeln IN s_vbeln.
ENDFORM. " load_data_into_grid
*& Form change_flight
Reads the contents of the selected row in the grid, ans transfers
the data to screen 200, where it can be changed and saved.
FORM change_flight.
DATA:l_lines TYPE i.
REFRESH gi_index_rows.
CLEAR g_selected_row.
Read index of selected rows
CALL METHOD go_grid->get_selected_rows
IMPORTING
et_index_rows = gi_index_rows.
Check if any row are selected at all. If not
table gi_index_rows will be empty
DESCRIBE TABLE gi_index_rows LINES l_lines.
IF l_lines = 0.
CALL FUNCTION 'POPUP_TO_DISPLAY_TEXT'
EXPORTING
textline1 = 'You must choose a line'.
EXIT.
ENDIF.
Read indexes of selected rows. In this example only one
row can be selected as we are using gs_layout-sel_mode = 'B',
so it is only ncessary to read the first entry in
table gi_index_rows
LOOP AT gi_index_rows INTO g_selected_row.
IF sy-tabix = 1.
READ TABLE gi_vbak INDEX g_selected_row-index
INTO g_wa_vbak.
ENDIF.
ENDLOOP.
Transfer data from the selected row to screenm 200 and show
screen 200
CLEAR g_screen200.
MOVE-CORRESPONDING g_wa_vbak TO g_screen200.
LEAVE TO SCREEN '200'.
ENDFORM. " change_flight
*& Form save_changes
Changes made in screen 200 are written to the datbase table
zsflight, and to the grid table gi_sflight, and the grid is
updated with method refresh_table_display to display the changes
FORM save_changes.
Update traffic light field
Update database table
MODIFY vbak FROM g_screen200.
Refresh grid
CALL METHOD go_grid->refresh_table_display.
CALL METHOD cl_gui_cfw=>flush.
LEAVE TO SCREEN '100'.
ENDFORM. " save_changes
*& Module STATUS_0200 OUTPUT
text
MODULE status_0200 OUTPUT.
SET PF-STATUS 'ZTEST_ALV'.
SET TITLEBAR 'ZTEST_ALV'.
ENDMODULE. " STATUS_0200 OUTPUT
" lit_fieldcat_initUse FM -LVC_FIELDCATALOG_MERGE to derive the field catalog for table VBAK. It will give you the field catalog. You can modify the column VBELN by changing HOTSPOT = 'X".
and in your code - at the method SET_TABLE_FOR....DISPLAY , you comment out the structure name and pass the modified field catalog.
Hope it helps. -
Hi Folks,
The following report is working perfectly except that when clicking on BACK button on the toolbar it is not coming to selection-screen but leaving to Easy Access Screen.Kindly let me know.
REPORT zdr LINE-SIZE 1023 LINE-COUNT 58(3)
MESSAGE-ID z_ma NO STANDARD PAGE HEADING .
TABLES : vbrk, " Billing Document: Header Data
vbrp, " Billing Document: Item Data
konv, " Conditions (Transaction Data)
vbak, " Sales Document: Header Data
usr21, " Assign user name address key
adcp, " Person/Address Assignment
tvv2t,
m_vmcfa,
m_vmcra,
kna1,
tvfkt,
vmcfao,
adrc.
Includes
INCLUDE rvreuse_global_data.
INCLUDE rvreuse_local_data.
INCLUDE rvreuse_forms.
Type-Pools
TYPE-POOLS slis.
TYPES: BEGIN OF ty_temp,
fidoc TYPE bkpf-belnr, "FIDOC No
awkey TYPE bkpf-belnr, "Reference Key
gjahr TYPE bkpf-gjahr, "Fiscal Year
budat TYPE bkpf-budat, "Posting Date
belnr TYPE rbkp-belnr, "Doc No
blart TYPE bkpf-blart, "Document Type
vbeln TYPE bkpf-xblnr, "Billing Doc No
xblnr TYPE bkpf-xblnr,
END OF ty_temp.
TYPES: BEGIN OF ty_konv,
knumv TYPE konv-knumv,
kposn TYPE konv-kposn,
kschl TYPE konv-kschl,
kwert TYPE konv-kwert,
kbetr TYPE konv-kbetr,
kwert1 type konv-kwert,
END OF ty_konv.
TYPES: BEGIN OF ty_objk,
equnr TYPE objk-equnr,
sernr TYPE objk-sernr,
taser TYPE objk-taser,
END OF ty_objk.
*& Includes *
INCLUDE <icon>.
Data Declaration
For ALV Display
DATA : gs_variant TYPE disvariant.
DATA : gs_layout TYPE lvc_s_layo.
DATA : gs_print TYPE lvc_s_prnt.
DATA : c_stk TYPE scrfname VALUE 'CUSTOM'.
DATA: c_stk3 TYPE scrfname VALUE 'TEST'.
DATA : custom_container TYPE REF TO cl_gui_custom_container.
DATA: custom_container3 TYPE REF TO cl_gui_custom_container.
CLASS: lcl_event_receiver DEFINITION DEFERRED.
DATA : grid1 TYPE REF TO cl_gui_alv_grid.
DATA: grid3 TYPE REF TO cl_gui_alv_grid.
DATA : event_receiver TYPE REF TO lcl_event_receiver.
DATA : ok_code TYPE sy-ucomm.
DATA : it_fieldcatalog TYPE lvc_t_fcat.
DATA : wafieldcatlog TYPE LINE OF lvc_t_fcat.
DATA : lt_rows TYPE lvc_t_row.
DATA : wa_rows TYPE LINE OF lvc_t_row.
DATA: it_fieldcatalog1 TYPE slis_t_fieldcat_alv WITH HEADER LINE,
wafieldcatlog1 TYPE slis_t_fieldcat_alv WITH HEADER LINE,
gd_layout TYPE slis_layout_alv,
gd_prntparams TYPE slis_print_alv,
gd_repid LIKE sy-repid.
Internal tables and work areas for ALV ouput display
DATA: is_layout TYPE slis_layout_alv,
i_events TYPE slis_t_event,
events TYPE slis_alv_event,
alv_top_of_page TYPE slis_t_listheader,
gs_line TYPE slis_listheader,
alv_events TYPE slis_t_event,
alv_variant TYPE disvariant,
alv_title TYPE lvc_title,
alv_sort TYPE slis_t_sortinfo_alv,
csort TYPE slis_sortinfo_alv,
alv_print TYPE slis_print_alv.
Internal Table
DATA: it_objk TYPE ty_objk OCCURS 0 WITH HEADER LINE.
DATA: itab_temp TYPE ty_temp OCCURS 0 WITH HEADER LINE.
DATA: itab_konv TYPE ty_konv OCCURS 0 WITH HEADER LINE.
DATA: gt_vmcfa LIKE vmcfao OCCURS 50 WITH HEADER LINE.
*>>>
DATA : adrnr1 LIKE t001w-adrnr.
DATA: plant_name1 LIKE adrc-name1.
DATA: plant_name2 TYPE adrc-name2.
DATA: plant_name(136).
DATA: comp_name1 LIKE adrc-name1.
DATA: comp_name2 TYPE adrc-name2.
DATA: comp_name(136).
*<<<
DATA: BEGIN OF name_dazu OCCURS 10,
kunnr LIKE kna1-kunnr ,
name1 LIKE kna1-name1 ,
ort01 LIKE kna1-ort01 ,
END OF name_dazu.
DATA: BEGIN OF fkart_dazu OCCURS 10,
fkart LIKE tvfkt-fkart ,
vtext LIKE tvfkt-vtext ,
END OF fkart_dazu.
DATA: BEGIN OF hsave,
vbeln LIKE vbuv-vbeln,
tabix LIKE sy-tabix ,
text(40) .
DATA: END OF hsave.
DATA: BEGIN OF it_vbrk_vbrp OCCURS 0,
vbeln TYPE vbrk-vbeln, " Invoice Number
posnr TYPE vbrp-posnr, " Item number
erdat TYPE vbrk-erdat, " Billing Date
fkart TYPE vbrk-fkart, " Billing Type
vtext TYPE tvfkt-vtext, " Billing type Desc
knumv TYPE vbrk-knumv, " Number of the document condition
netwr TYPE vbrk-netwr, " Net value in document currency
fkdat TYPE vbrk-fkdat, " Invoice Date
typbz TYPE equi-typbz, " Model
serge TYPE equi-serge, " Serial No Ref
fkimg TYPE vbrp-fkimg, " Invoce Quantity
kzwi1 TYPE vbrp-kzwi1, " Base Price
kzwi2 TYPE vbrp-kzwi2, " Packing
kzwi4 TYPE vbrp-kzwi4, " Freight and Insurance
jex2 TYPE konv-kwert, " Exice duty
jces TYPE konv-kwert, " Cess
jecx TYPE konv-kwert, " Education Cess
jin1 TYPE konv-kwert, " CST
jin1_per TYPE konv-kbetr, " %CST
jin2 TYPE konv-kwert, " LST
jin2_per TYPE konv-kbetr, " %LST
jin5 TYPE konv-kwert, " Surcharge on LST
jin5_per TYPE konv-kbetr, " %Surcharge on LST
turn TYPE konv-kwert, " Turn Over
turn_lst TYPE konv-kwert, " LST turn over
turn_cst TYPE konv-kwert, " CST turn over
total TYPE konv-kwert, " Total
zadv TYPE konv-kwert, " Advance Recieved
net TYPE konv-kwert, " Net Payable
zcod TYPE konv-kwert, " Dealer Fee
zdbk TYPE konv-kwert, " Deamed Benifit
zopt TYPE konv-kwert, " Optional Value
zfoc TYPE konv-kwert, " FOC Coupon Value
zfcf TYPE konv-kwert, " FOC Filter
netreal TYPE konv-kwert, " Net Realisation
vgbel TYPE vbrp-vgbel, " Delivery Number
kunag TYPE vbrk-kunag, " Sold-to party
name1 TYPE kna1-name1, " Name1
name2 TYPE kna1-name1, " Ship to name
name3 TYPE kna1-name2, " Ship to name 2nd column
mwsbk TYPE vbrk-mwsbk, " Tax amount in document currency
werks TYPE vbrp-werks, " Plant
regio TYPE vbrk-regio, " Region (State, Province, County)
bezei TYPE t005u-bezei, " Region Description
wkreg TYPE vbrp-wkreg, " Region in which plant is located
fksto TYPE vbrk-fksto, " Billing document is cancelled
bstkd TYPE vbkd-bstkd, " Customer purchase order number
bstdk TYPE vbkd-bstdk, " Customer purchase order date
exnum TYPE j_1iexcdtl-exnum, " Excise Doc Number
matnr TYPE vbrp-matnr, " Material number
arktx TYPE vbrp-arktx, " Material Desc
mvgr5 TYPE vbap-mvgr5, " PWC code
bezei5 TYPE tvm5t-bezei, " PWC code Desc
kdgrp_auft TYPE vbrp-kdgrp_auft, " Dealer
ktext TYPE t151t-ktext, " Dealer Desc
j_1icstno TYPE j_1imocust-j_1icstno, " CST reg number
j_1ilstno TYPE j_1imocust-j_1ilstno, " LST reg number
city1 TYPE adrc-city1, " City1
street TYPE adrc-street,
addr1 TYPE adrc-str_suppl1, " address
addr2 TYPE adrc-str_suppl2,
city2 TYPE adrc-city2,
country TYPE adrc-country,
landx TYPE t005t-landx,"Country
kvgr2 TYPE vbak-kvgr2, "Sales Type
fname TYPE kna1-name1, " Financier Name
aubel TYPE vbrp-aubel,
stypetext TYPE tvv2t-bezei,
zdex TYPE konv-kwert,
zdec TYPE konv-kwert,
dif1 TYPE konv-kwert,
dif2 TYPE konv-kwert,
dif3 TYPE konv-kwert,
dif4 TYPE konv-kwert,
dif5 TYPE konv-kwert,
dif6 TYPE konv-kwert,
deemed_jex2 TYPE konv-kwert,
deemed_jecs TYPE konv-kwert,
roundoff1 TYPE konv-kwert,
roundoff2 TYPE konv-kwert,
roundoff3 TYPE konv-kwert,
roundoff4 TYPE konv-kwert,
roundoff5 TYPE konv-kwert,
roundoff6 TYPE konv-kwert,
zcal TYPE konv-kwert,
zser TYPE konv-kwert,
zces TYPE konv-kwert,
zkf0 TYPE konv-kwert,
zins TYPE konv-kwert,
vgpos LIKE vbrp-vgpos,
ort01 LIKE kna1-ort01,
belnr LIKE bseg-belnr,
bukrs LIKE vbrk-bukrs,
zstf LIKE konv-kwert,
di13 LIKE konv-kwert,
vkorg TYPE vbrk-vkorg,
vbtyp TYPE vbrk-vbtyp,
aupos TYPE vbrp-aupos,
xblnr TYPE bkpf-xblnr,
augru TYPE vbak-augru,
reason TYPE tvaut-bezei,
waerk type vbrk-waerk,
END OF it_vbrk_vbrp.
DATA: BEGIN OF it_vbrk_vbrp3 OCCURS 0,
vbeln TYPE vbrk-vbeln, " Invoice Number
posnr TYPE vbrp-posnr, " Item number
erdat TYPE vbrk-erdat, " Billing Date
fkart TYPE vbrk-fkart, " Billing Type
vtext TYPE tvfkt-vtext, " Billing type Desc
knumv TYPE vbrk-knumv, " Number of the document condition
netwr TYPE vbrk-netwr, " Net value in document currency
fkdat TYPE vbrk-fkdat, " Invoice Date
typbz TYPE equi-typbz, " Model
serge TYPE equi-serge, " Serial No Ref
fkimg TYPE vbrp-fkimg, " Invoce Quantity
kzwi1 TYPE vbrp-kzwi1, " Base Price
kzwi2 TYPE vbrp-kzwi2, " Packing
kzwi4 TYPE vbrp-kzwi4, " Freight and Insurance
jex2 TYPE konv-kwert, " Exice duty
jces TYPE konv-kwert, " Cess
jecx TYPE konv-kwert, " Education Cess
jin1 TYPE konv-kwert, " CST
jin1_per TYPE konv-kbetr, " %CST
jin2 TYPE konv-kwert, " LST
jin2_per TYPE konv-kbetr, " %LST
jin5 TYPE konv-kwert, " Surcharge on LST
jin5_per TYPE konv-kbetr, " %Surcharge on LST
turn TYPE konv-kwert, " Turn Over
turn_lst TYPE konv-kwert, " LST turn over
turn_cst TYPE konv-kwert, " CST turn over
total TYPE konv-kwert, " Total
zadv TYPE konv-kwert, " Advance Recieved
net TYPE konv-kwert, " Net Payable
zcod TYPE konv-kwert, " Dealer Fee
zdbk TYPE konv-kwert, " Deamed Benifit
zopt TYPE konv-kwert, " Optional Value
zfoc TYPE konv-kwert, " FOC Coupon Value
zfcf TYPE konv-kwert, " FOC Filter
netreal TYPE konv-kwert, " Net Realisation
vgbel TYPE vbrp-vgbel, " Delivery Number
kunag TYPE vbrk-kunag, " Sold-to party
name1 TYPE kna1-name1, " Name1
name2 TYPE kna1-name1, " Ship to name
name3 TYPE kna1-name2, " Ship to name 2nd column
mwsbk TYPE vbrk-mwsbk, " Tax amount in document currency
werks TYPE vbrp-werks, " Plant
regio TYPE vbrk-regio, " Region (State, Province, County)
bezei TYPE t005u-bezei, " Region Description
wkreg TYPE vbrp-wkreg, " Region in which plant is located
fksto TYPE vbrk-fksto, " Billing document is cancelled
bstkd TYPE vbkd-bstkd, " Customer purchase order number
bstdk TYPE vbkd-bstdk, " Customer purchase order date
exnum TYPE j_1iexcdtl-exnum, " Excise Doc Number
matnr TYPE vbrp-matnr, " Material number
arktx TYPE vbrp-arktx, " Material Desc
mvgr5 TYPE vbap-mvgr5, " PWC code
bezei5 TYPE tvm5t-bezei, " PWC code Desc
kdgrp_auft TYPE vbrp-kdgrp_auft, " Dealer
ktext TYPE t151t-ktext, " Dealer Desc
j_1icstno TYPE j_1imocust-j_1icstno, " CST reg number
j_1ilstno TYPE j_1imocust-j_1ilstno, " LST reg number
city1 TYPE adrc-city1, " City1
street TYPE adrc-street,
addr1 TYPE adrc-str_suppl1, " address
addr2 TYPE adrc-str_suppl2,
city2 TYPE adrc-city2,
country TYPE adrc-country,
landx TYPE t005t-landx,"Country
kvgr2 TYPE vbak-kvgr2, "Sales Type
fname TYPE kna1-name1, " Financier Name
aubel TYPE vbrp-aubel,
stypetext TYPE tvv2t-bezei,
zdex TYPE konv-kwert,
zdec TYPE konv-kwert,
dif1 TYPE konv-kwert,
dif2 TYPE konv-kwert,
dif3 TYPE konv-kwert,
dif4 TYPE konv-kwert,
dif5 TYPE konv-kwert,
dif6 TYPE konv-kwert,
deemed_jex2 TYPE konv-kwert,
deemed_jecs TYPE konv-kwert,
roundoff1 TYPE konv-kwert,
roundoff2 TYPE konv-kwert,
roundoff3 TYPE konv-kwert,
roundoff4 TYPE konv-kwert,
roundoff5 TYPE konv-kwert,
roundoff6 TYPE konv-kwert,
zcal TYPE konv-kwert,
zser TYPE konv-kwert,
zces TYPE konv-kwert,
zkf0 TYPE konv-kwert,
zins TYPE konv-kwert,
vgpos LIKE vbrp-vgpos,
ort01 LIKE kna1-ort01,
belnr LIKE bseg-belnr,
bukrs LIKE vbrk-bukrs,
zstf LIKE konv-kwert,
di13 LIKE konv-kwert,
vkorg TYPE vbrk-vkorg,
vbtyp TYPE vbrk-vbtyp,
aupos TYPE vbrp-aupos,
xblnr TYPE bkpf-xblnr,
augru TYPE vbak-augru,
reason TYPE tvaut-bezei,
*Variable for Summed up fields
waerk type vbrk-waerk,
*End of changes by Kiran.K dated 27082007
sum1 TYPE vbrp-kzwi1, "Base Price
sum2 TYPE vbrp-kzwi2, "Packing
sum4 TYPE vbrp-kzwi4, "Freight and Insurance
sum5 TYPE konv-kwert, "zsdr3-jex2
sum6 TYPE konv-kwert, "zsdr3-jecx
total1 TYPE konv-kwert, "ZSDR3
total2 TYPE konv-kwert, "Taxable LST Turnover
total3 TYPE konv-kwert, "Taxable CST Turnover
total4 TYPE konv-kwert, "Total
jin6 type konv-kwert,
lst1 type konv-kwert,
lsum type konv-kwert, "LST
END OF it_vbrk_vbrp3.
*ALV Display
*Authorization check
DATA : v_pnum TYPE usr21-persnumber.
DATA : v_dname TYPE adcp-department.
Work Areas
DATA : wa_display LIKE it_vbrk_vbrp.
DATA : wa_alv LIKE it_vbrk_vbrp.
Data
DATA : kdauf LIKE lips-kdauf.
DATA : obknr LIKE ser01-obknr.
DATA : equnr LIKE equi-equnr.
DATA : header(60) TYPE c.
DATA : vbelv LIKE vbfa-vbelv.
DATA vbelvp LIKE vbrp-aubel.
DATA : posnv LIKE vbfa-posnv.
DATA : kunnr LIKE kna1-kunnr.
DATA : kunnr1 LIKE kna1-kunnr.
DATA : adrnr LIKE vbpa-adrnr.
DATA : country LIKE adrc-country.
DATA : date1(10).
DATA : date2(10).
DATA : text(60).
DATA : alles(1) TYPE c.
DATA : allea(1) TYPE c.
DATA : alleb(1) TYPE c.
DATA : allef(1) TYPE c.
DATA : alleg(1) TYPE c.
DATA : allek(1) TYPE c.
DATA : allen(1) TYPE c.
DATA: xvbtyp LIKE dd07v-domvalue_l.
DATA: text1 LIKE dd07v-ddtext.
DATA: char(50).
DATA: tabix LIKE sy-tabix.
DATA: lilli LIKE sy-lilli.
FIELD-SYMBOLS: <feld>.
DATA : trvog TYPE c.
DATA : deemed_jex2 TYPE konv-kwert,
deemed_jecx TYPE konv-kwert,
roundoff1 TYPE konv-kwert,
roundoff2 TYPE konv-kwert,
roundoff3 TYPE konv-kwert,
roundoff4 TYPE konv-kwert,
roundoff5 TYPE konv-kwert,
roundoff6 TYPE konv-kwert.
Structure for IT
DATA wa_it_vbrk_vbrp LIKE it_vbrk_vbrp.
DATA wa_it_vbrk_vbrp3 LIKE it_vbrk_vbrp.
DATA:itevent3 TYPE slis_t_event.
DATA:itlistheader TYPE slis_t_listheader.
DATA:itlistheader3 TYPE slis_t_listheader.
DATA:walistheader LIKE LINE OF itlistheader.
DATA:walistheader3 LIKE LINE OF itlistheader.
DATA: string1(70).
DATA: title(100),date3(10),date4(10),name3(35),name4(35),plant3(4).
**SELECTION-SCREEN
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
PARAMETER : vkorg LIKE vbrk-vkorg OBLIGATORY.
PARAMETER : plant LIKE vbrp-werks OBLIGATORY.
PARAMETER : p_bukrs LIKE vbrk-bukrs OBLIGATORY.
SELECT-OPTIONS: s_fkart FOR vbrk-fkart OBLIGATORY.
SELECT-OPTIONS: s_fkdat FOR vbrk-fkdat OBLIGATORY.
SELECTION-SCREEN END OF BLOCK b1.
SELECT-OPTIONS: s_vbtyp FOR vbrk-vbtyp NO-DISPLAY.
*>>>>>>
SELECTION-SCREEN: BEGIN OF BLOCK block1 WITH FRAME TITLE text-001.
PARAMETERS: sales RADIOBUTTON GROUP grp1,
credit RADIOBUTTON GROUP grp1,
debit RADIOBUTTON GROUP grp1,
test RADIOBUTTON GROUP grp1.
SELECTION-SCREEN: END OF BLOCK block1.
*<<<<<<
START-OF-SELECTION.
To get authorisation check data
AUTHORITY-CHECK OBJECT 'ZBUKRS'
ID 'ACTVT' FIELD '01'.
ID 'BUKRS' FIELD p_bukrs.
IF sy-subrc NE 0.
MESSAGE e034(z_apd) WITH p_bukrs.
ENDIF.
PERFORM get_auth.
PERFORM getdata.
**START-OF-SELECTION
PERFORM get_unrel_item. "fill the tb with unrel.
PERFORM get_header_item.
PERFORM filtering.
PERFORM calculation.
PERFORM credit_debit.
ALV Display
IF sy-batch <> 'X'.
SET SCREEN 100.
ELSE.
PERFORM background.
ENDIF.
IF test = 'X'.
perform opt.
PERFORM test.
<b>set screen 0.</b>
ENDIF.
*& Form getdata
text
--> p1 text
<-- p2 text
FORM getdata .
SELECT belnr AS fidoc
awkey AS vbeln
xblnr
budat
gjahr
blart
FROM bkpf INTO CORRESPONDING FIELDS OF TABLE itab_temp
WHERE bukrs = p_bukrs
AND budat IN s_fkdat
AND bstat = space.
IF sy-subrc NE 0.
MESSAGE 'No Values exist for the Selection.' TYPE 'S'.
STOP.
ENDIF.
ENDFORM. " getdata
*& Form get_header_item
text
--> p1 text
<-- p2 text
FORM get_header_item .
LOOP AT itab_temp.
MOVE itab_temp-fidoc TO it_vbrk_vbrp-belnr.
MOVE itab_temp-xblnr TO it_vbrk_vbrp-xblnr.
SELECT SINGLE vbeln
fkart
knumv
netwr
waerk
fkdat
kunag
mwsbk
fksto
bukrs
vkorg
vbtyp
erdat
regio
FROM vbrk INTO CORRESPONDING FIELDS OF it_vbrk_vbrp
WHERE vbeln = itab_temp-vbeln.
SELECT werks
aubel
mvgr5
wkreg
posnr
fkimg
kzwi1
kzwi2
kzwi4
vgbel
matnr
arktx
vgpos
aupos
kdgrp_auft
FROM vbrp INTO CORRESPONDING FIELDS OF it_vbrk_vbrp
WHERE vbeln = itab_temp-vbeln.
APPEND it_vbrk_vbrp.
ENDSELECT.
CLEAR it_vbrk_vbrp.
CLEAR itab_temp.
ENDLOOP.
ENDFORM. " get_header_item
*& Class Definition *
CLASS lcl_event_receiver DEFINITION.
PUBLIC SECTION.
METHODS:
handle_toolbar
FOR EVENT toolbar OF cl_gui_alv_grid
IMPORTING e_object e_interactive,
handle_user_command
FOR EVENT user_command OF cl_gui_alv_grid
IMPORTING e_ucomm,
handle_double_click
FOR EVENT double_click OF cl_gui_alv_grid
IMPORTING e_row e_column,
handle_top_of_page
FOR EVENT print_top_of_page OF cl_gui_alv_grid.
PRIVATE SECTION.
ENDCLASS. "lcl_event_receiver DEFINITION
*& Class Implementation *
CLASS lcl_event_receiver IMPLEMENTATION.
METHOD handle_toolbar.
Local Variables
DATA: ls_toolbar TYPE stb_button.
DATA : wa LIKE LINE OF e_object->mt_toolbar.
LOOP AT e_object->mt_toolbar INTO wa.
wa-disabled = ''.
MODIFY e_object->mt_toolbar FROM wa.
ENDLOOP.
*End
append a separator to normal toolbar
CLEAR ls_toolbar.
MOVE 3 TO ls_toolbar-butn_type.
APPEND ls_toolbar TO e_object->mt_toolbar.
append an icon to to show printing
CLEAR ls_toolbar.
MOVE 'PRINT' TO ls_toolbar-function.
MOVE icon_print TO ls_toolbar-icon.
MOVE 'Print Receipts' TO ls_toolbar-quickinfo.
MOVE ' Print' TO ls_toolbar-text.
MOVE ' ' TO ls_toolbar-disabled.
APPEND ls_toolbar TO e_object->mt_toolbar.
ENDMETHOD. " Handle_toolbar
METHOD handle_user_command.
CASE e_ucomm.
WHEN 'PRINT'.
REFRESH : lt_rows , it_vbrk_vbrp.
CALL METHOD grid1->get_selected_rows
IMPORTING
et_index_rows = lt_rows.
CALL METHOD cl_gui_cfw=>flush.
ENDCASE.
ENDMETHOD. "handle_user_command
METHOD handle_double_click.
IF e_column = 'VBELN'.
READ TABLE it_vbrk_vbrp INDEX e_row-index INTO wa_it_vbrk_vbrp.
IF sy-subrc = 0.
Set parameter ID for transaction screen field
SET PARAMETER ID 'VF' FIELD wa_it_vbrk_vbrp-vbeln.
Execute transaction VF03, and skip initial data entry screen
CALL TRANSACTION 'VF03' AND SKIP FIRST SCREEN.
ENDIF.
ENDIF.
ENDMETHOD. "handle_double_click
METHOD handle_top_of_page.
WRITE:/ comp_name,
/ plant_name ,
/ text.
ENDMETHOD. "handle_top_of_page
ENDCLASS. "lcl_event_receiver IMPLEMENTATION
*& Form get_auth
text
--> p1 text
<-- p2 text
FORM get_auth .
SELECT SINGLE persnumber FROM usr21 INTO (v_pnum)
WHERE bname = sy-uname.
SELECT SINGLE department FROM adcp INTO (v_dname)
WHERE persnumber = v_pnum.
ENDFORM. " get_auth
*& Form filtering
text
--> p1 text
<-- p2 text
FORM filtering .
s_vbtyp-sign = 'I'.
s_vbtyp-option = 'EQ'.
s_vbtyp-low = 'M'.
APPEND s_vbtyp.
s_vbtyp-low = 'O'.
APPEND s_vbtyp.
s_vbtyp-low = 'P'.
APPEND s_vbtyp.
SORT it_vbrk_vbrp BY vbeln posnr.
LOOP AT it_vbrk_vbrp.
IF sales = 'X' OR TEST = 'X'.
IF it_vbrk_vbrp-fksto NE 'X'
AND it_vbrk_vbrp-werks EQ plant
AND it_vbrk_vbrp-fkdat IN s_fkdat
AND it_vbrk_vbrp-vkorg EQ vkorg
AND it_vbrk_vbrp-fkart IN s_fkart
AND it_vbrk_vbrp-vbtyp EQ 'M'.
ELSE.
DELETE it_vbrk_vbrp.
CONTINUE.
ENDIF.
CLEAR it_vbrk_vbrp.
ENDIF.
IF credit = 'X'.
IF it_vbrk_vbrp-fksto NE 'X'
AND it_vbrk_vbrp-werks EQ plant
AND it_vbrk_vbrp-fkdat IN s_fkdat
AND it_vbrk_vbrp-vkorg EQ vkorg
AND it_vbrk_vbrp-fkart IN s_fkart
AND it_vbrk_vbrp-vbtyp EQ 'O'.
ELSE.
DELETE it_vbrk_vbrp.
CONTINUE.
ENDIF.
CLEAR it_vbrk_vbrp.
ENDIF.
IF debit = 'X'.
IF it_vbrk_vbrp-fksto NE 'X'
AND it_vbrk_vbrp-werks EQ plant
AND it_vbrk_vbrp-fkdat IN s_fkdat
AND it_vbrk_vbrp-vkorg EQ vkorg
AND it_vbrk_vbrp-fkart IN s_fkart
AND it_vbrk_vbrp-vbtyp EQ 'P'.
ELSE.
DELETE it_vbrk_vbrp.
CONTINUE.
ENDIF.
CLEAR it_vbrk_vbrp.
ENDIF.
*End of Insertion
*Commented For Debit and Credit Filtering Process on 19.03.07
IF it_vbrk_vbrp-fksto NE 'X'
AND it_vbrk_vbrp-werks EQ plant
AND it_vbrk_vbrp-fkdat IN s_fkdat
AND it_vbrk_vbrp-vkorg EQ vkorg
AND it_vbrk_vbrp-fkart IN s_fkart
AND it_vbrk_vbrp-vbtyp in s_vbtyp.
**ELSE.
DELETE it_vbrk_vbrp.
CONTINUE.
**ENDIF.
**CLEAR it_vbrk_vbrp.
ENDLOOP.
ENDFORM. " filtering
*& Form taxamount
text
--> p1 text
<-- p2 text
FORM taxamount .
SELECT kwert
kschl
knumv
kposn
kbetr
FROM konv INTO CORRESPONDING FIELDS OF TABLE itab_konv
WHERE knumv = it_vbrk_vbrp-knumv
AND kposn = it_vbrk_vbrp-posnr.
ENDFORM. " taxamount
*& Form calculation
text
--> p1 text
<-- p2 text
FORM calculation .
DATA:sum LIKE konv-kwert,
SUMM LIKE KONV-KWERT.
sum5 like konv-kwert, "jex2
sum6 like konv-kwert. "jecx
LOOP AT it_vbrk_vbrp.
CLEAR itab_konv.
PERFORM taxamount.
SORT itab_konv BY knumv kposn kschl.
*DIF1
READ TABLE itab_konv WITH KEY knumv = it_vbrk_vbrp-knumv kposn = it_vbrk_vbrp-posnr kschl = 'DIF1' BINARY SEARCH.
IF sy-subrc = 0.
MOVE itab_konv-kwert TO it_vbrk_vbrp-dif1.
ENDIF.
*DIF2
READ TABLE itab_konv WITH KEY knumv = it_vbrk_vbrp-knumv kposn = it_vbrk_vbrp-posnr kschl = 'DIF2' BINARY SEARCH.
IF sy-subrc = 0.
MOVE itab_konv-kwert TO it_vbrk_vbrp-dif2.
ENDIF.
*DIF3
READ TABLE itab_konv WITH KEY knumv = it_vbrk_vbrp-knumv kposn = it_vbrk_vbrp-posnr kschl = 'DIF3' BINARY SEARCH.
IF sy-subrc = 0.
MOVE itab_konv-kwert TO it_vbrk_vbrp-dif3.
ENDIF.
*DIF4
READ TABLE itab_konv WITH KEY knumv = it_vbrk_vbrp-knumv kposn = it_vbrk_vbrp-posnr kschl = 'DIF4' BINARY SEARCH.
IF sy-subrc = 0.
MOVE itab_konv-kwert TO it_vbrk_vbrp-dif4.
ENDIF.
*DIF5
READ TABLE itab_konv WITH KEY knumv = it_vbrk_vbrp-knumv kposn = it_vbrk_vbrp-posnr kschl = 'DIF5' BINARY SEARCH.
IF sy-subrc = 0.
MOVE itab_konv-kwert TO it_vbrk_vbrp-dif5.
ENDIF.
*DIF6
READ TABLE itab_konv WITH KEY knumv = it_vbrk_vbrp-knumv kposn = it_vbrk_vbrp-posnr kschl = 'DIF6' BINARY SEARCH.
IF sy-subrc = 0.
MOVE itab_konv-kwert TO it_vbrk_vbrp-dif6.
ENDIF.
*DIF13
READ TABLE itab_konv WITH KEY knumv = it_vbrk_vbrp-knumv kposn = it_vbrk_vbrp-posnr kschl = 'DI13' BINARY SEARCH.
IF sy-subrc = 0.
MOVE itab_konv-kwert TO it_vbrk_vbrp-di13.
ENDIF.
*ZDEX
READ TABLE itab_konv WITH KEY knumv = it_vbrk_vbrp-knumv kposn = it_vbrk_vbrp-posnr kschl = 'ZDEX' BINARY SEARCH.
IF sy-subrc = 0.
MOVE itab_konv-kwert TO it_vbrk_vbrp-zdex.
ENDIF.
*ZDEC
READ TABLE itab_konv WITH KEY knumv = it_vbrk_vbrp-knumv kposn = it_vbrk_vbrp-posnr kschl = 'ZDEC' BINARY SEARCH.
IF sy-subrc = 0.
MOVE itab_konv-kwert TO it_vbrk_vbrp-zdec.
ENDIF.
*EXCISE-DUTY JEX2
READ TABLE itab_konv WITH KEY knumv = it_vbrk_vbrp-knumv kposn = it_vbrk_vbrp-posnr kschl = 'JEX2' BINARY SEARCH.
IF sy-subrc = 0.
MOVE itab_konv-kwert TO it_vbrk_vbrp-jex2.
ENDIF.
IF it_vbrk_vbrp-fkart = 'ZWFX' OR it_vbrk_vbrp-fkart ='ZWJX' OR
it_vbrk_vbrp-fkart ='S1' OR it_vbrk_vbrp-fkart ='S3'.
deemed_jex2 = it_vbrk_vbrp-jex2 + it_vbrk_vbrp-zdex.
roundoff1 = deemed_jex2 + it_vbrk_vbrp-dif1.
MOVE roundoff1 TO it_vbrk_vbrp-jex2.
ENDIF.
*CESS - JCES
READ TABLE itab_konv WITH KEY knumv = it_vbrk_vbrp-knumv kposn = it_vbrk_vbrp-posnr kschl = 'JCES' BINARY SEARCH.
IF sy-subrc = 0.
MOVE itab_konv-kwert TO it_vbrk_vbrp-jces.
ENDIF.
roundoff6 = it_vbrk_vbrp-jces + it_vbrk_vbrp-dif6.
MOVE roundoff6 TO it_vbrk_vbrp-jces.
*EDUCATION CESS
READ TABLE itab_konv WITH KEY knumv = it_vbrk_vbrp-knumv kposn = it_vbrk_vbrp-posnr kschl = 'JECX' BINARY SEARCH.
IF sy-subrc = 0.
MOVE itab_konv-kwert TO it_vbrk_vbrp-jecx.
ENDIF.
roundoff2 = it_vbrk_vbrp-jecx + it_vbrk_vbrp-dif2.
MOVE roundoff2 TO it_vbrk_vbrp-jecx.
IF it_vbrk_vbrp-fkart = 'ZWFX' OR it_vbrk_vbrp-fkart ='ZWJX' OR
it_vbrk_vbrp-fkart ='S1' OR it_vbrk_vbrp-fkart ='S3'.
deemed_jecx = it_vbrk_vbrp-jecx + it_vbrk_vbrp-zdec.
roundoff2 = deemed_jecx + it_vbrk_vbrp-dif1.
MOVE roundoff2 TO it_vbrk_vbrp-jecx.
ENDIF.
*ZSTF SERVICE TAX
READ TABLE itab_konv WITH KEY knumv = it_vbrk_vbrp-knumv kposn = it_vbrk_vbrp-posnr kschl = 'ZSTF' BINARY SEARCH.
IF sy-subrc = 0.
MOVE itab_konv-kwert TO it_vbrk_vbrp-zstf.
ENDIF.
it_vbrk_vbrp-zstf = it_vbrk_vbrp-zstf + it_vbrk_vbrp-di13.
*CST-CST%
IF it_vbrk_vbrp-fkdat GE '20070101'.
READ TABLE itab_konv WITH KEY knumv = it_vbrk_vbrp-knumv kposn = it_vbrk_vbrp-posnr kschl = 'JIN7' BINARY SEARCH.
IF sy-subrc = 0.
MOVE itab_konv-kwert TO it_vbrk_vbrp-jin1.
MOVE itab_konv-kbetr TO it_vbrk_vbrp-jin1_per.
ENDIF.
ELSE.
READ TABLE itab_konv WITH KEY knumv = it_vbrk_vbrp-knumv kposn = it_vbrk_vbrp-posnr kschl = 'JIN1' BINARY SEARCH.
IF sy-subrc = 0.
MOVE itab_konv-kwert TO it_vbrk_vbrp-jin1.
MOVE itab_konv-kbetr TO it_vbrk_vbrp-jin1_per.
ENDIF.
ENDIF.
roundoff3 = it_vbrk_vbrp-jin1 + it_vbrk_vbrp-dif3.
MOVE roundoff3 TO it_vbrk_vbrp-jin1.
it_vbrk_vbrp-jin1_per = it_vbrk_vbrp-jin1_per / 10.
*LST-LST%
IF it_vbrk_vbrp-fkdat GE '20070101'.
READ TABLE itab_konv WITH KEY knumv = it_vbrk_vbrp-knumv kposn = it_vbrk_vbrp-posnr kschl = 'JIN6' BINARY SEARCH.
IF sy-subrc = 0.
MOVE itab_konv-kwert TO it_vbrk_vbrp-jin2.
MOVE itab_konv-kbetr TO it_vbrk_vbrp-jin2_per.
ENDIF.
ELSE.
READ TABLE itab_konv WITH KEY knumv = it_vbrk_vbrp-knumv kposn = it_vbrk_vbrp-posnr kschl = 'JIN2' BINARY SEARCH.
IF sy-subrc = 0.
MOVE itab_konv-kwert TO it_vbrk_vbrp-jin2.
MOVE itab_konv-kbetr TO it_vbrk_vbrp-jin2_per.
ENDIF.
ENDIF.
roundoff4 = it_vbrk_vbrp-jin2 + it_vbrk_vbrp-dif4.
MOVE roundoff4 TO it_vbrk_vbrp-jin2.
it_vbrk_vbrp-jin2_per = it_vbrk_vbrp-jin2_per / 10.
Surcharge on LST
READ TABLE itab_konv WITH KEY knumv = it_vbrk_vbrp-knumv kposn = it_vbrk_vbrp-posnr kschl = 'JIN5' BINARY SEARCH.
IF sy-subrc = 0.
MOVE itab_konv-kwert TO it_vbrk_vbrp-jin5.
MOVE itab_konv-kbetr TO it_vbrk_vbrp-jin5_per.
ENDIF.
roundoff5 = it_vbrk_vbrp-jin5 + it_vbrk_vbrp-dif5.
MOVE roundoff5 TO it_vbrk_vbrp-jin5.
it_vbrk_vbrp-jin5_per = it_vbrk_vbrp-jin5_per / 10.
Taxable turn over
it_vbrk_vbrp-turn = it_vbrk_vbrp-kzwi1 +
it_vbrk_vbrp-kzwi2 +
it_vbrk_vbrp-jex2 +
it_vbrk_vbrp-jces +
it_vbrk_vbrp-jecx.
For moving turn over to LST and CST colomns depending upon
Region.
IF it_vbrk_vbrp-regio = '22'.
MOVE it_vbrk_vbrp-turn TO it_vbrk_vbrp-turn_lst.
ELSE.
MOVE it_vbrk_vbrp-turn TO it_vbrk_vbrp-turn_cst.
ENDIF.
*CALIBRATION COST
READ TABLE itab_konv WITH KEY knumv = it_vbrk_vbrp-knumv kposn = it_vbrk_vbrp-posnr kschl = 'ZCAL' BINARY SEARCH.
IF sy-subrc = 0.
MOVE itab_konv-kwert TO it_vbrk_vbrp-zcal.
ENDIF.
*SERVICE CHARGE
READ TABLE itab_konv WITH KEY knumv = it_vbrk_vbrp-knumv kposn = it_vbrk_vbrp-posnr kschl = 'ZSER' BINARY SEARCH.
IF sy-subrc = 0.
MOVE itab_konv-kwert TO it_vbrk_vbrp-zser.
ENDIF.
*CESS ON SERVICE CHARGE
READ TABLE itab_konv WITH KEY knumv = it_vbrk_vbrp-knumv kposn = it_vbrk_vbrp-posnr kschl = 'ZCES' BINARY SEARCH.
IF sy-subrc = 0.
MOVE itab_konv-kwert TO it_vbrk_vbrp-zces.
ENDIF.
CLEAR: it_vbrk_vbrp-zins,it_vbrk_vbrp-zkf0.
*ZINS
READ TABLE itab_konv WITH KEY knumv = it_vbrk_vbrp-knumv kposn = it_vbrk_vbrp-posnr kschl = 'ZINS' BINARY SEARCH.
IF sy-subrc = 0.
MOVE itab_konv-kwert TO it_vbrk_vbrp-zins.
ENDIF.
*ZKF0
READ TABLE itab_konv WITH KEY knumv = it_vbrk_vbrp-knumv kposn = it_vbrk_vbrp-posnr kschl = 'ZKF0' BINARY SEARCH.
IF sy-subrc = 0.
MOVE itab_konv-kwert TO it_vbrk_vbrp-zkf0.
ENDIF.
*ZKFP
IF sy-subrc <> 0.
READ TABLE itab_konv WITH KEY knumv = it_vbrk_vbrp-knumv kposn = it_vbrk_vbrp-posnr kschl = 'ZKFP' BINARY SEARCH.
IF sy-subrc = 0.
MOVE itab_konv-kwert TO it_vbrk_vbrp-zkf0.
ENDIF.
ENDIF.
*TOTAL
it_vbrk_vbrp-total = it_vbrk_vbrp-turn +
it_vbrk_vbrp-jin1 +
it_vbrk_vbrp-jin2 +
it_vbrk_vbrp-jin5 +
it_vbrk_vbrp-kzwi4 +
it_vbrk_vbrp-zcal +
it_vbrk_vbrp-zser +
it_vbrk_vbrp-zces.
Advance Recieved (ZADV)
READ TABLE itab_konv WITH KEY knumv = it_vbrk_vbrp-knumv kposn = it_vbrk_vbrp-posnr kschl = 'ZADV' BINARY SEARCH.
IF sy-subrc = 0.
MOVE itab_konv-kwert TO it_vbrk_vbrp-zadv.
ENDIF.
Net Payable
it_vbrk_vbrp-net = it_vbrk_vbrp-total - it_vbrk_vbrp-zadv.
*DEALER FEE
READ TABLE itab_konv WITH KEY knumv = it_vbrk_vbrp-knumv kposn = it_vbrk_vbrp-posnr kschl = 'ZCOD' BINARY SEARCH.
IF sy-subrc = 0.
MOVE itab_konv-kwert TO it_vbrk_vbrp-zcod.
ENDIF.
IF it_vbrk_vbrp-zcod IS INITIAL.
READ TABLE itab_konv WITH KEY knumv = it_vbrk_vbrp-knumv kposn = it_vbrk_vbrp-posnr kschl = 'ZCOA' BINARY SEARCH.
IF sy-subrc = 0.
MOVE itab_konv-kwert TO it_vbrk_vbrp-zcod.
ENDIF.
ENDIF.
*DEEMED BENEFIT
READ TABLE itab_konv WITH KEY knumv = it_vbrk_vbrp-knumv kposn = it_vbrk_vbrp-posnr kschl = 'ZDBK' BINARY SEARCH.
IF sy-subrc = 0.
MOVE itab_konv-kwert TO it_vbrk_vbrp-zdbk.
ENDIF.
*OPTIONAL VALUE
READ TABLE itab_konv WITH KEY knumv = it_vbrk_vbrp-knumv kposn = it_vbrk_vbrp-posnr kschl = 'ZOPT' BINARY SEARCH.
IF sy-subrc = 0.
MOVE itab_konv-kwert TO it_vbrk_vbrp-zopt.
ENDIF.
*FOC COUPON VALUE
READ TABLE itab_konv WITH KEY knumv = it_vbrk_vbrp-knumv kposn = it_vbrk_vbrp-posnr kschl = 'ZFOC' BINARY SEARCH.
IF sy-subrc = 0.
MOVE itab_konv-kwert TO it_vbrk_vbrp-zfoc.
ENDIF.
*FOC FILTER
READ TABLE itab_konv WITH KEY knumv = it_vbrk_vbrp-knumv kposn = it_vbrk_vbrp-posnr kschl = 'ZFCF' BINARY SEARCH.
IF sy-subrc = 0.
MOVE itab_konv-kwert TO it_vbrk_vbrp-zfcf.
ENDIF.
Net Realisation
it_vbrk_vbrp-netreal = it_vbrk_vbrp-kzwi1 - ( it_vbrk_vbrp-zcod +
it_vbrk_vbrp-zopt + it_vbrk_vbrp-zfoc
+ it_vbrk_vbrp-zfcf ).
CLEAR : vbelv,posnv.
vbelvp = it_vbrk_vbrp-aubel.
vbelv = it_vbrk_vbrp-vgbel.
posnv = it_vbrk_vbrp-posnr.
CLEAR kunnr.
CLEAR adrnr.
Getting Sales type
SELECT SINGLE kvgr2 INTO it_vbrk_vbrp-kvgr2
FROM vbak
WHERE vbeln = vbelvp.
SELECT SINGLE bezei INTO it_vbrk_vbrp-stypetext
FROM tvv2t
WHERE spras = 'EN'
AND kvgr2 = it_vbrk_vbrp-kvgr2.
PWC code Desc
SELECT SINGLE bezei INTO it_vbrk_vbrp-bezei5
FROM tvm5t
WHERE spras = 'EN'
AND mvgr5 = it_vbrk_vbrp-mvgr5.
SELECT SINGLE bstkd bstdk INTO (it_vbrk_vbrp-bstkd,
it_vbrk_vbrp-bstdk)
FROM vbkd
WHERE vbeln = it_vbrk_vbrp-aubel
AND posnr EQ '0'.
CLEAR kunnr.
CLEAR adrnr.
SELECT SINGLE kunnr adrnr INTO (kunnr,adrnr) FROM vbpa
WHERE vbeln = vbelv
AND posnr = '0'
AND parvw = 'WE'.
*ship-to city
SELECT SINGLE name1 name2 ort01 INTO
(it_vbrk_vbrp-name2,it_vbrk_vbrp-name3,
it_vbrk_vbrp-ort01)
FROM kna1
WHERE kunnr = kunnr.
CLEAR kunnr1.
SELECT SINGLE kunnr INTO kunnr1 FROM vbpa
WHERE vbeln = vbelvp
AND posnr = '0'
AND parvw = 'ZF'.
CLEAR it_vbrk_vbrp-fname.
SELECT SINGLE name2 INTO
(it_vbrk_vbrp-fname)
FROM kna1
WHERE kunnr = kunnr1.
CLEAR country.
CLEAR: it_vbrk_vbrp-addr1,it_vbrk_vbrp-addr2,it_vbrk_vbrp-name3,
it_vbrk_vbrp-city1,it_vbrk_vbrp-country.
SELECT SINGLE name3 street str_suppl1 str_suppl2 city1 city2 country
INTO
(it_vbrk_vbrp-name3,it_vbrk_vbrp-street,
it_vbrk_vbrp-addr1,it_vbrk_vbrp-addr2,
it_vbrk_vbrp-city1,it_vbrk_vbrp-city2,
it_vbrk_vbrp-country)
FROM adrc
WHERE addrnumber = adrnr.
CLEAR it_vbrk_vbrp-landx.
SELECT SINGLE landx INTO it_vbrk_vbrp-landx FROM t005t
WHERE spras = 'EN'
AND land1 = country.
CLEAR obknr.
CLEAR equnr.
CLEAR it_vbrk_vbrp-typbz.
Model and Serial No Ref
SELECT SINGLE obknr INTO obknr FROM ser01
WHERE lief_nr = it_vbrk_vbrp-vgbel
AND posnr = it_vbrk_vbrp-vgpos.
IF sy-subrc EQ 0.
SELECT DISTINCT equnr sernr taser INTO TABLE it_objk
FROM objk
WHERE obknr = obknr.
AND taser = 'SER01'.
LOOP AT it_objk.
IF it_objk-taser NE 'SER01'.
DELETE it_objk.
ENDIF.
ENDLOOP.
READ TABLE it_objk INDEX 1.
IF sy-subrcHi,
if you want to leave the program and go back to the code then use.
when 'BACK'.
set screen 0.
leave program.
or if you want to go back to selection screen
when 'BACK'.
leave to screen 0.
thanks
vivekanand -
Create, Update & Save Functions
Hi All,
This is my code for the requirement to print sales order in ALV Grid Format using OOPS concept.
Please tell me how i should add select button to the ALV Grid in the first column.
Also when i click on CREATE button a new blank line should be added to the alv grid.
when i click on UPDATE button the selected row should become editable & when i click on save then my Ztable should be update with the new values and all the changes made.
The Ztable has fields as of the IT_FIANL table.
I have gone through many links regarding this topic but cant implement it in my code.
REPORT z12darp_shad_so_alv_oops
MESSAGE-ID z12darp1.
*Class definition for handling double click
CLASS event_class DEFINITION DEFERRED.
*Class definition for ALV toolbar
CLASS lcl_alv_toolbar DEFINITION DEFERRED.
*AUTHOR: Darpana. Ahire
*DATE: 28/11/2008
*DESCRIPTION: To printsales order as Interactive ALV using OOPS concept.
*& D A T A D E C L R A T I O N
type-pools: icon.
INCLUDE z12darp_alv_oops.
data: ok_code_2008 like sy-ucomm.
*& Include Z12DARP_ALV_OOPS
*Author: Darpana. Ahire
*Date: 28/11/2008
*Description: ALV Grid Using OOPS concept.
tables: z12Darp_final.
types: begin of ty_vbak,
vbeln type vbeln_va,
erdat type erdat,
vkorg type vkorg,
spart type spart,
end of ty_vbak.
types: begin of ty_vbap,
vbeln type vbeln_va,
posnr type posnr_va,
matnr type matnr,
netpr type netpr,
netwr type netwr_ap,
end of ty_vbap.
types: begin of ty_final,
vbeln type vbeln_va,
erdat type erdat,
vkorg type vkorg,
spart type spart,
posnr type posnr_va,
matnr type matnr,
netpr type netpr,
netwr type netwr_ap,
end of ty_final.
data: wa_vbak type ty_vbak,
wa_vbap type ty_vbap,
wa_final type ty_final.
data: it_vbak type standard table of ty_vbak,
it_vbap type standard table of ty_vbap,
it_final type standard table of ty_final.
data: v_vbeln type vbeln_va.
data: cust type ref to cl_gui_custom_container,
alv type ref to cl_gui_alv_grid,
event_receiver TYPE REF TO event_class.
data: wa_fcat type lvc_s_fcat,
it_fcat type lvc_t_fcat,
wa_layout type lvc_s_layo.
*Declaration for toolbar buttons
DATA : ty_toolbar TYPE stb_button.
data: c_alv_toolbar TYPE REF TO lcl_alv_toolbar. "Alv toolbar
*& S E L E C T I O N S C R E E N
SELECT-OPTIONS: ss_vbeln FOR v_vbeln.
*& I N I T I A L I Z A T I O N
INITIALIZATION.
PERFORM initial.
*& A T S E L E C T I O N - S C R E E N
AT SELECTION-SCREEN.
PERFORM at_sel_scr.
*& S T A R T - O F - S E L E C T I O N
START-OF-SELECTION.
PERFORM sel_records.
PERFORM join_tables.
PERFORM alv_output.
* CLASS lcl_event_receiver DEFINITION
CLASS event_class DEFINITION.
*Handling double click
PUBLIC SECTION.
METHODS:
handle_double_click
FOR EVENT double_click OF cl_gui_alv_grid
IMPORTING e_row e_column.
ENDCLASS. "lcl_event_receiver DEFINITION
* CLASS lcl_event_receiver IMPLEMENTATION
CLASS event_class IMPLEMENTATION.
METHOD handle_double_click.
case e_column.
when 'MATNR'.
read table it_final into wa_final index e_row-index.
set parameter id 'MAT' field wa_final-matnr.
call transaction 'MM03' and skip first screen.
endcase.
ENDMETHOD. "handle_double_click
endclass.
* CLASS lcl_alv_toolbar DEFINITION
* ALV event handler
CLASS lcl_alv_toolbar DEFINITION.
PUBLIC SECTION.
*Event for toolbar
on_toolbar
FOR EVENT toolbar
OF cl_gui_alv_grid
IMPORTING e_object e_interactive,
handle_user_command
for event user_command of cl_gui_alv_grid
importing e_ucomm.
endclass.
* CLASS lcl_alv_toolbar IMPLEMENTATION
* ALV event handler
CLASS lcl_alv_toolbar IMPLEMENTATION.
METHOD on_toolbar.
* Add customized toolbar buttons.
* variable for Toolbar Button
clear ty_toolbar.
ty_toolbar-icon = icon_create.
ty_toolbar-butn_type = 0.
ty_toolbar-text = 'CREATE'.
APPEND ty_toolbar TO e_object->mt_toolbar.
clear ty_toolbar.
ty_toolbar-icon = icon_change.
ty_toolbar-butn_type = 0.
ty_toolbar-text = 'UPDATE'.
APPEND ty_toolbar TO e_object->mt_toolbar.
clear ty_toolbar.
ty_toolbar-icon = icon_system_save.
ty_toolbar-butn_type = 0.
ty_toolbar-text = 'SAVE'.
APPEND ty_toolbar TO e_object->mt_toolbar.
ENDMETHOD. "on_toolbar
method handle_user_command.
case e_ucomm.
when 'CREATE'.
when 'UPDATE'.
endcase.
endmethod. "handle_user_command
ENDCLASS. "lcl_event_receiver IMPLEMENTATION
*& Module STATUS_2008 OUTPUT
* text
MODULE status_2008 OUTPUT.
SET PF-STATUS 'MENU1'.
SET TITLEBAR 'TITLE1'.
ENDMODULE. " STATUS_2008 OUTPUT
*& Module alv_display OUTPUT
* text
MODULE alv_display OUTPUT.
IF cust IS INITIAL.
* Creating object of container
CREATE OBJECT cust
EXPORTING
container_name = 'CUSTOM'.
* Creating object of alv
CREATE OBJECT alv
EXPORTING
i_parent = cust.
** create ALV event handler
* CREATE OBJECT c_alv_toolbar
* EXPORTING
* io_alv_grid = alv.
create object c_alv_toolbar.
* Register event handler
SET HANDLER c_alv_toolbar->on_toolbar FOR alv.
set handler c_alv_toolbar->handle_user_command for alv.
* alv layout
PERFORM alv_layout.
* alv field catalogue
PERFORM fieldcatalog_display.
* Displaying the ALV grid
CALL METHOD alv->set_table_for_first_display(
EXPORTING
is_layout = wa_layout
CHANGING
it_outtab = it_final
it_fieldcatalog = it_fcat ).
*Create object of the event class and setting handler for double click
CREATE OBJECT event_receiver.
SET HANDLER event_receiver->handle_double_click FOR alv.
ENDIF.
ENDMODULE. " alv_display OUTPUT
*& Module USER_COMMAND_2008 INPUT
* text
module USER_COMMAND_2008 input.
case ok_code_2008.
when 'EXT'.
leave program.
when 'BCK'.
leave to screen 0.
when 'UP'.
leave program.
endcase.
endmodule. " USER_COMMAND_2008 INPUT
*& E N D O F M A I N P R O G R A M
*& Form initial
* text
* --> p1 text
* <-- p2 text
FORM initial .
CLEAR: wa_vbak,
wa_vbap,
wa_final.
REFRESH: it_vbak,
it_vbap,
it_final.
ENDFORM. " initial
*& Form at_sel_scr
* text
* --> p1 text
* <-- p2 text
FORM at_sel_scr .
SELECT vbeln
INTO TABLE it_vbak
FROM vbak
WHERE vbeln IN ss_vbeln.
IF sy-subrc <> 0.
MESSAGE e000.
ENDIF.
ENDFORM. " at_sel_scr
*& Form sel_records
* text
* --> p1 text
* <-- p2 text
FORM sel_records .
SELECT vbeln
erdat
vkorg
spart
INTO TABLE it_vbak
FROM vbak
WHERE vbeln IN ss_vbeln.
IF sy-subrc <> 0.
MESSAGE e000.
ENDIF.
SELECT vbeln
posnr
matnr
netpr
netwr
INTO TABLE it_vbap
FROM vbap
FOR ALL ENTRIES IN it_vbak
WHERE vbeln = it_vbak-vbeln.
IF sy-subrc <> 0.
MESSAGE e000.
ENDIF.
ENDFORM. " sel_records
*& Form join_tables
* text
* --> p1 text
* <-- p2 text
FORM join_tables .
SORT it_vbak BY vbeln.
SORT it_vbap BY vbeln posnr.
LOOP AT it_vbap INTO wa_vbap.
READ TABLE it_vbak INTO wa_vbak WITH KEY vbeln = wa_vbap-vbeln
BINARY SEARCH.
wa_final-vbeln = wa_vbak-vbeln.
wa_final-erdat = wa_vbak-erdat.
wa_final-vkorg = wa_vbak-vkorg.
wa_final-spart = wa_vbak-spart.
wa_final-posnr = wa_vbap-posnr.
wa_final-matnr = wa_vbap-matnr.
wa_final-netpr = wa_vbap-netpr.
wa_final-netwr = wa_vbap-netwr.
APPEND wa_final TO it_final.
CLEAR wa_final.
ENDLOOP.
ENDFORM. " join_tables
*& Form alv_output
* text
* --> p1 text
* <-- p2 text
FORM alv_output .
CALL SCREEN 2008.
ENDFORM. " alv_output
*& Form alv_layout
* text
* --> p1 text
* <-- p2 text
FORM alv_layout .
wa_layout-grid_title = 'SALES ORDER'.
wa_layout-zebra = 'X'.
ENDFORM. " alv_layout
*& Form fieldcatalog_display
* text
* --> p1 text
* <-- p2 text
FORM fieldcatalog_display .
* IT_FINAL-VBELN. SALES ORDER NUMBER
CLEAR wa_fcat.
wa_fcat-col_pos ='2'.
wa_fcat-fieldname ='VBELN'.
wa_fcat-tabname ='IT_FINAL'.
wa_fcat-key = 'X'.
wa_fcat-just = 'L'.
wa_fcat-hotspot = ' '.
wa_fcat-lzero ='X'.
wa_fcat-seltext ='SALES ORDER NO.'.
wa_fcat-outputlen = 15.
wa_fcat-ref_table ='VBAK'.
APPEND wa_fcat TO it_fcat.
* IT_FINAL-POSNR. SALES ITEM NUMBER
CLEAR wa_fcat.
wa_fcat-col_pos ='3'.
wa_fcat-fieldname ='POSNR'.
wa_fcat-tabname ='IT_FINAL'.
wa_fcat-key = 'X'.
wa_fcat-just = 'L'.
wa_fcat-hotspot = ' '.
wa_fcat-lzero ='X'.
wa_fcat-seltext ='SALES ITEM NO'.
wa_fcat-outputlen = 15.
wa_fcat-ref_table ='VBAP'.
APPEND wa_fcat TO it_fcat.
* IT_FINAL-ERDAT. DATE ON WHICH DOCUMENT WAS CREATED
CLEAR wa_fcat.
wa_fcat-col_pos ='4'.
wa_fcat-fieldname ='ERDAT'.
wa_fcat-tabname ='IT_FINAL'.
wa_fcat-key = ' '.
wa_fcat-just = 'L'.
wa_fcat-hotspot = ' '.
wa_fcat-lzero ='X'.
wa_fcat-seltext ='DATE OF CREATION'.
wa_fcat-outputlen = 10.
wa_fcat-ref_table ='VBAK'.
APPEND wa_fcat TO it_fcat.
* IT_FINAL-VKORG. SALES ORGANIZATION
CLEAR wa_fcat.
wa_fcat-col_pos ='5'.
wa_fcat-fieldname ='VKORG'.
wa_fcat-tabname ='IT_FINAL'.
wa_fcat-key = ' '.
wa_fcat-just = 'L'.
wa_fcat-hotspot = ' '.
wa_fcat-lzero ='X'.
wa_fcat-seltext ='SALES ORG'.
wa_fcat-outputlen = 10.
wa_fcat-ref_table ='VBAK'.
APPEND wa_fcat TO it_fcat.
* IT_FINAL-SPART. DIVISION
CLEAR wa_fcat.
wa_fcat-col_pos ='6'.
wa_fcat-fieldname ='SPART'.
wa_fcat-tabname ='IT_FINAL'.
wa_fcat-key = ' '.
wa_fcat-just = 'L'.
wa_fcat-hotspot = ' '.
wa_fcat-lzero ='X'.
wa_fcat-seltext ='DIVISION'.
wa_fcat-outputlen = 10.
wa_fcat-ref_table ='VBAK'.
APPEND wa_fcat TO it_fcat.
* IT_FINAL-MATNR. MATERIAL NUMBER
CLEAR wa_fcat.
wa_fcat-col_pos ='7'.
wa_fcat-fieldname ='MATNR'.
wa_fcat-tabname ='IT_FINAL'.
wa_fcat-key = ' '.
wa_fcat-just = 'L'.
wa_fcat-hotspot = ' '.
wa_fcat-lzero ='X'.
wa_fcat-seltext ='MATERIAL NUMBER'.
wa_fcat-outputlen = 20.
wa_fcat-ref_table ='VBAP'.
APPEND wa_fcat TO it_fcat.
* IT_FINAL-NETPR. NET PRICE
CLEAR wa_fcat.
wa_fcat-col_pos ='8'.
wa_fcat-fieldname ='NETPR'.
wa_fcat-tabname ='IT_FINAL'.
wa_fcat-key = ' '.
wa_fcat-just = 'L'.
wa_fcat-hotspot = ' '.
wa_fcat-lzero ='X'.
wa_fcat-seltext ='NET PRICE'.
wa_fcat-outputlen = 15.
wa_fcat-ref_table ='VBAP'.
APPEND wa_fcat TO it_fcat.
* IT_FINAL-NETWR. NAET VALUE
CLEAR wa_fcat.
wa_fcat-col_pos ='9'.
wa_fcat-fieldname ='NETWR'.
wa_fcat-tabname ='IT_FINAL'.
wa_fcat-key = ' '.
wa_fcat-just = 'L'.
wa_fcat-hotspot = ' '.
wa_fcat-lzero ='X'.
wa_fcat-seltext ='NET VALUE'.
wa_fcat-outputlen = 15.
wa_fcat-ref_table ='VBAP'.
APPEND wa_fcat TO it_fcat.
ENDFORM. " fieldcatalog_display
Regards,
Darpana.
Edited by: Darpana Ahire on Dec 3, 2008 7:10 AM
Edited by: Matt on Dec 4, 2008 12:04 PM - added tagsim99_chs wrote:
I have created a package with some functions in it.Keep in mind that these functions requires PL/SQL code to be executed. Thus it needs a context switch from the SQL engine (executing your view code) to the PL/SQL engine (to do the function call).
This may work fine for smaller data sets. But it does not scale well as context switches are expensive operations with inherent latency. The more switches there are, the bigger the execution time chunk required for context switching.
The ideal is to rather use SQL to perform the work of the function. SQL code can implement if-then-else logic via the DECODE() SQL function and SQL CASE command. Analytical functions can be used for complex aggregation and calculation.
If a user define (PL/SQL) function is needed, then ensure that the function is as fast as possible (minimal moving parts), and consider defining it as a deterministic function if the same input always produces the same output.
Maybe you are looking for
-
I have an ipad2 and an epson nx430 printer. I tried to print my airline itinerary and it printer 4 pages ,most ofwhich were ads. How can i focus just on the information that i need?
-
Time machine won't back up after Maverick install
Installed Maverick today on macbook pro, then have been unable to back up to Time Machine to my Western Digital 3TB drive. Last back up was successful just before install earlier today. Time Machine Error "Files can't be copied onto the backup disk
-
ABEND while creating file in the application server
Dear All, Please provide the solution for the following. REPORT ZMAIN. SELECT BKORM UP TO 1000 EXTRACT ext. ENDSELECT Imagine, now the extract file having 1000 Entries Reading the above EXTRACT file LOOP . submit ZSUB. ENDLOOP. End
-
Problem in triggering at line selection event in ooabap
hi ppl, Below is the code i did so far using interactive reports,but its showing error "statement END METHOD is missing". REPORT y_program_on_ooabap1. CLASS CL DEFINITION DATA: lf_matnr TYPE matnr. INITIALIZATION. PARAMETERS: pa_
-
My Adobe Application Manager is crashing, what should i do?
I'm using Windows 8.