Back button issue in ALV Grid(Factory method)
Hi All,
I have displayed a report using factory method(CL_SALV_TABLE).In that i have added buttons in application bar too.So when clicking on refresh button ALV should display again with latest number of records,that is working fine but when clicking on back button it should go to selection screen instead of that it is going a step back and displaying previous list of grid and then back and then selection screen.
Can any one help me how to directly go to input selection screen instead of going step back...
Regards,
Ram
HI,
Use this syntax (CALL SELECTION-SCREEN 1000)...Try this one
regards,
balaji
Similar Messages
-
How to add a new button in an ALV using factory method
im using factory method to creat an ALV
The reason why I'm doing this is because I want the ALV and the selection screen in the same screen like exemplified here http://help-abap.blogspot.com/2008/10/dispaly-alv-report-output-in-same.html
CALL METHOD cl_salv_table=>factory
EXPORTING
list_display = if_salv_c_bool_sap=>false
r_container = lo_cont
container_name = 'DOCK_CONT'
IMPORTING
r_salv_table = lo_alv
CHANGING
t_table = me->t_data.
The above code already uses every parameter that method as to offer.
Is it possible to add extra buttons to an ALV using that method?Hi Ann,
The reason you are not able to see any of the new columns as a option to select in your web service block is because when you have published that block, they were not present. Add these two new objects in your block and publish it again. You will be prompted for duplication content. Select the highlighted block for duplicate and now you can see the new added objects in the filter option. Update and this will overwrite your published block. Please note, web services do appear to behave weirdly when used with dashboards so I request you to please try it in a separate test report first.
Hope that helps.
Regards,
Tanisha -
How can we add a button on our ALV Grid
Hello,
I need to add a button on the ALV Grid and write a code on that button to download a file on the desktop of the user's machine.
How can we write a code for the same and what would be the syntax of that code.Hi,
you should copy the 'STANDARD' GUI status from program SAPLKKBL using transaction SE90 >Programming SubObjects> Gui Status.
ENTER SAPLKKBL PROGRAM
STATUS STANDARD.
exexute.
select standard check box. copy to your zprogram and your gui status.
Enter your Z program name and the name you what for this status - you can keep it as 'STANDARD' to be simple.
then go to se 38 double click on pf status .it goes to me41 screen .
there you can add your button along with predefined buttons on application toolbar.
then write code for button using user command event.
Code:
Form Set_pf_status
Notes: Called by FM REUSE_ALV_GRID_DISPLAY
FORM set_pf_status USING rt_extab TYPE slis_t_extab.
SET PF-STATUS 'ZSTANDARD'.
ENDFORM. "Set_pf_status
In the above case the GUI status copied was named ZSTANDARD and adjusted accordingly, adding and removing the desired buttons. A button was added called '%DELETE'.
3). Create the following report:
Code:
Form User_command
Notes: Called by FM REUSE_ALV_GRID_DISPLAY
Detects whether the icon/button for
'Return Tag Deletion' has been pressed. If it has then
detect whether any rows have been highlighted and then
set the delete flag.
FORM user_command USING r_ucomm LIKE sy-ucomm
rs_selfield TYPE slis_selfield.
DATA: li_count TYPE I.
IF r_ucomm EQ '%DELETE'.
LOOP AT %g00 WHERE mark EQ 'X'.
ADD 1 TO li_count.
ENDLOOP.
IF li_count GT 0.
gc_delete_flag = 'X'.
r_ucomm = '&F03'. "Back arraow
ELSE.
MESSAGE W000 WITH 'Please highlight the rows to be deleted!'.
ENDIF.
ENDIF.
ENDFORM. "User_command
*reward points if usefull -
How to add a push button on an ALV grid ?
Hi,
How to add a push button on an ALV grid, using ON_TOOLBAR, ON_USERCOMMAND Methods. Clicking on that push button, a new screen has to be displayed.Hi,
Assuming that you want to have a "push-button" column, i.e. push-buttons within an ALV grid then you need to implement the following steps:
(1) Set the style of the column as button
ls_fcat-style = CL_GUI_ALV_GRID => MC_STYLE_BUTTON.
(2) When the user pushes the button event BUTTON_CLICK is triggered. Thus, define an appropriate event handler method.
<b>Reward points</b>
Regards -
Coloring an single field of an ALV using factory method
how can we color just a single field in ALV using factory method.
Hello Regi you may want to check this sample code, basically what you need is to use the lvc_s_colo structure and the set_color method of the class cl_salv_column_table.
METHOD set_colors.
*.....Color for COLUMN.....
DATA: lo_cols_tab TYPE REF TO cl_salv_columns_table,
lo_col_tab TYPE REF TO cl_salv_column_table.
DATA: ls_color TYPE lvc_s_colo. " Colors strucutre
* get Columns object
lo_cols_tab = co_alv->get_columns( ).
INCLUDE <color>.
* Get ERDAT column & set the yellow Color fot it
TRY.
lo_col_tab ?= lo_cols_tab->get_column( 'ERDAT' ).
ls_color-col = col_total.
lo_col_tab->set_color( ls_color ).
CATCH cx_salv_not_found.
ENDTRY.
*.......Color for Specific Cell & Rows.................
* Applying color on the 3rd Row and Column AUART
* Applying color on the Entire 5th Row
DATA: lt_s_color TYPE lvc_t_scol,
ls_s_color TYPE lvc_s_scol,
la_vbak LIKE LINE OF ct_vbak,
l_count TYPE i.
LOOP AT ct_vbak INTO la_vbak.
l_count = l_count + 1.
CASE l_count.
* Apply RED color to the AUART Cell of the 3rd Column
WHEN 3.
ls_s_color-fname = 'AUART'.
ls_s_color-color-col = col_negative.
ls_s_color-color-int = 0.
ls_s_color-color-inv = 0.
APPEND ls_s_color TO lt_s_color.
CLEAR ls_s_color.
* Apply GREEN color to the entire row # 5
* For entire row, we don't pass the Fieldname
WHEN 5.
ls_s_color-color-col = col_positive.
ls_s_color-color-int = 0.
ls_s_color-color-inv = 0.
APPEND ls_s_color TO lt_s_color.
CLEAR ls_s_color.
ENDCASE.
* Modify that data back to the output table
la_vbak-t_color = lt_s_color.
MODIFY ct_vbak FROM la_vbak.
CLEAR la_vbak.
CLEAR lt_s_color.
ENDLOOP.
* We will set this COLOR table field name of the internal table to
* COLUMNS tab reference for the specific colors
TRY.
lo_cols_tab->set_color_column( 'T_COLOR' ).
CATCH cx_salv_data_error. "#EC NO_HANDLER
ENDTRY.
ENDMETHOD. "set_colors -
ALV Grid Using Methods-handle_top_of_page
riends please explain how to resolve the below issue.
I am working on ALV Grid using methods & trying to display
page heading using handle_top_of_page event.
I have defined & implemented the above method and in the implementation I have
given a write statement, which has to be displayed on the top of page.
I have also set the handler for top of page.
The program does not have any errors, but top of page event is not triggered, what might be the problem.
Regards,
UshaHi,
Check this code
Class definition :
CLASS v_lcl_event_receiver DEFINITION
CLASS v_lcl_event_receiver DEFINITION.
PUBLIC SECTION.
METHODS:
handle_print_top_of_page FOR EVENT print_top_of_page OF
cl_gui_alv_grid,
handle_top_of_page FOR EVENT top_of_page OF
cl_gui_alv_grid.
ENDCLASS.
CLASS V_LCL_EVENT_RECEIVER IMPLEMENTATION
CLASS v_lcl_event_receiver IMPLEMENTATION.
METHOD handle_print_top_of_page.
IF sy-pagno = 1.
PERFORM top_of_page.
ENDIF.
ENDMETHOD.
METHOD handle_top_of_page.
PERFORM top_of_page.
ENDMETHOD.
ENDCLASS.
DATA: v_event_receiver TYPE REF TO v_lcl_event_receiver.
FORM top_of_page.
WRITE: text-020,
ENDFORM. " top_of_page
In PBo of the screen
DATA: v_split TYPE REF TO cl_gui_easy_splitter_container,
v_contnr_top TYPE REF TO cl_gui_container,
v_contnr_bot TYPE REF TO cl_gui_container,
v_grid_02 TYPE REF TO cl_gui_alv_grid,
v_html TYPE REF TO cl_dd_document,
v_text20(255) TYPE c,
v_text16(255) TYPE c,
FORM f9000_objects_create.
IF cl_gui_alv_grid=>offline( ) IS INITIAL.
Create a container
CREATE OBJECT o_dockingcontainer
EXPORTING
ratio = '95'
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
create_error = 3
lifetime_error = 4
lifetime_dynpro_dynpro_link = 5
others = 6.
IF sy-subrc NE 0.
MESSAGE i000 WITH text-e01."Error in creating Docking container
LEAVE LIST-PROCESSING.
ENDIF.
CREATE OBJECT v_split
EXPORTING
parent = o_dockingcontainer
ORIENTATION = 0
sash_position = 25
with_border = 0
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
others = 3.
IF sy-subrc NE 0.
MESSAGE i000 WITH text-e01."Error in creating Docking container
LEAVE LIST-PROCESSING.
ENDIF.
Get the containers of the splitter control
v_contnr_top = v_split->top_left_container.
v_contnr_bot = v_split->bottom_right_container.
CREATE OBJECT o_alvgrid
EXPORTING
i_parent = o_dockingcontainer.
Create an instance of alv control
CREATE OBJECT o_alvgrid
EXPORTING i_parent = v_contnr_bot.
Object for display of selection parameters in HTML top container
CREATE OBJECT v_html
EXPORTING
style = 'ALV_GRID'.
Must be after the SET HANDLER for TOP_OF_PAGE and foreground only
CALL METHOD o_alvgrid->list_processing_events
EXPORTING i_event_name = 'TOP_OF_PAGE'
i_dyndoc_id = v_html.
v_text20 = text-020(summary Record counts)Any text.
CALL METHOD v_html->add_gap
EXPORTING
width = 120.
CALL METHOD v_html->add_text
EXPORTING
text = v_text20.
CALL METHOD v_html->new_line.
Display Text-016
v_text16 = text-016.
CALL METHOD v_html->add_gap
EXPORTING
width = 1.
CALL METHOD v_html->add_text
EXPORTING
text = v_text16.
v_text16 = v_sap_recon.
CALL METHOD v_html->add_gap
EXPORTING
width = 1.
CALL METHOD v_html->add_text
EXPORTING
text = v_text16.
CALL METHOD v_html->new_line.
Display the data
CALL METHOD v_html->display_document
EXPORTING
parent = v_contnr_top.
Handle the event
CALL METHOD o_alvgrid->list_processing_events
EXPORTING i_event_name = 'PRINT_TOP_OF_PAGE'.
IN PBO while populating in the output table
FORM f9004_display_data TABLES p_report_tab
p_fieldcat.
CALL METHOD o_alvgrid->set_table_for_first_display
EXPORTING
is_variant = w_variant
i_save = c_a
is_layout = w_layout
CHANGING
it_outtab = p_report_tab[]
it_fieldcatalog = p_fieldcat[]
EXCEPTIONS
invalid_parameter_combination = 1
program_error = 2
too_many_lines = 3
OTHERS = 4.
IF sy-subrc <> 0.
MESSAGE i000 WITH text-e06."Error in ALV report display
LEAVE LIST-PROCESSING.
ENDIF.
Create object
IF v_event_receiver IS INITIAL.
CREATE OBJECT v_event_receiver.
ENDIF.
SET HANDLER v_event_receiver->handle_print_top_of_page FOR o_alvgrid.
SET HANDLER v_event_receiver->handle_top_of_page FOR o_alvgrid.
Hope this helps. -
Issue with ALV grid print preview/spool
Hello everyone,
I am working on a report and I am having some issues with ALV grid. Currently in our DEV and QA environments the user can run the report, view the ALV grid, and print the grid without any issues.
However this isn't the case in the Prod environment. The user is able to run the report and view the grid without any issues. But when they click print preview or click print, the spool is incorrect. It shows the proper values from the grid, but the first field is reduced in length. Rather than showing a numeric field of length 10 it shows 99999999# or 99999999...
The programs are identical through every environment, including user parameters, formats, and spool settings. I have been told printing grids may have some issues, does anyone have any advice or dealt with this issue before?
I appreciate the help.
Thanks,
CI was waiting to hear from the functional team on the matter and no one has mentioned any more issues. I am assuming the problem is solved. I just noticed the thread was still un-answered and wanted to give an update.
Thank you for you help Vijay.
Regards
C -
Create standard sap "SAVE" button along with ALV grid buttons
I need to create a standard SAP "Save" button in my ALV GRID display in the application tool bard
I copied the PF-Status 'standard' from a SAP program and assinged it here.
When i try to add the SAP save buttion by using this standard pf-status , its not getting displayed in the application tool bar.
But in STandard TOOl bar (in menu painter ) , when i assign save its displayed in the screen .
I need this to be displayed in the application tool ba
Please suggest me how to do this.
Thanks in advance.Hello,
Application of ALV means the place where the buttons(standard for ALV) like sort,add,delete,copy etc are dipslayed.IF u need need to add a save button on the same toolbar/same place u need to copy the standard GUI status of standard ALV program .For that go to SE80 , give the program name as SAPLSLVC_FULLSCREEN
In the GUI status u'll find the status named as STANDARD_FULLSCREEN ....Right click on it and give the "TO Program " as your program.Now once u activate ur program u'll find the same status there.
add ur save button in the status by edidting it. Now u need to write the FORM ENDFORM for user command and assign the form name in caps to the USER_COMMAND parameter in the func module REUSE_ALV_GRID_DISPLAY.
Hope this help.
Regards,
Neeraj -
Can we disable the default push buttons on the ALV Grid
Hi,
Can we disable the default push buttons on the ALV
Grid Control...
If so, pls send me the procedure...
thanks and regards
raghuHi,
In the PBO:
PERFORM f9100_exclude_functions USING :
i_exclude[] '&CHECK',
i_exclude[] '&REFRESH',
i_exclude[] '&LOCAL&CUT' ,
i_exclude[] '&LOCAL©',
i_exclude[] '&LOCAL&PASTE',
i_exclude[] '&LOCAL&PASTE_NEW_ROW',
i_exclude[] '&LOCAL&UNDO' ,
i_exclude[] '&LOCAL&APPEND',
i_exclude[] '&LOCAL&INSERT_ROW',
i_exclude[] '&LOCAL&DELETE_ROW',
i_exclude[] '&SORT_ASC',
i_exclude[] '&SORT_DSC',
i_exclude[] '&FIND',
i_exclude[] '&SUMC',
i_exclude[] '&SUBTOT',
i_exclude[] '&MINIMUM',
i_exclude[] '&MAXIMUM' ,
i_exclude[] '&VGRID' ,
i_exclude[] '&VEXCEL' ,
i_exclude[] '&VCRYSTAL',
i_exclude[] '&HTML',
i_exclude[] '&MAINTAIN',
i_exclude[] '&SAVE',
i_exclude[] '&GRAPH',
i_exclude[] '&HELP',
i_exclude[] '&ALL' ,
i_exclude[] '&SAL' .
* i_exclude[] '&EXCLALLFC'.
*& Form f9100_exclude_functions
* This form exclude buttons from the toolbar.
* -->P_IEXCLUDE text
* -->P_1150 text
FORM f9100_exclude_functions USING pexclude LIKE i_exclude
value(pfunction).
DATA: l_exclude TYPE ui_func.
l_exclude = pfunction.
APPEND l_exclude TO pexclude.
ENDFORM. " f9100_exclude_functions
This will exculde the default push buttons.
Let us know if it works for you.
Regards,
Anjali -
Possible to have vertical scroll bar for a cell in ALV Grid (using methods)
Hi All,
I have a field with length 100 characters on a ALV Grid (using methods)..User doesn't want to scroll all the 100 characters horizontally to see the whole text rather he wants to have a vertical scroll bar for the cell so that he can scroll vertically.
Is it possible to have split the cell text into lines and have a vertical scroll bar for a cell in ALV Grid?
Regards
Jaker.Thanks for the suggestion Balu.I tried this , but while scrolling,headers also getting scrolled.
Becoz of this , if i scroll down to the last row,headers are getting hidden.
Headers should always be static.only the data should scroll.
Since h:datatable is being rendered as one table , i can div tag for this table alone.
If i have seperate datatable for headers alone i can do this .But i should not use two datatables. -
ALV grid using methods: how to get modified cells
Hi all,
IAM USING alv grid using methods,
i have few fields as editable
if the user edits any of those fields how can i know which cell is modified and what is the new value.
i tried to use method get_modified_cells
but iam getting a msg saying protected method and u can not use.
please advise.
thanks
JAfarJafar,
You need to Take the Help of DATA_CHANGED event, when ever there is a change in the Grid, it will trigger, here you can capture the Cells which are modified.
in your PAI call the method check changed data
CL_GUI_ALV_GRID-->CHECK_CHANGED_DATA
You need to set the handler for datachanged.
set the handler for this, and register the event modified or enter.
**Handler to Check the Data Change
HANDLE_DATA_CHANGED FOR EVENT DATA_CHANGED
OF CL_GUI_ALV_GRID
IMPORTING ER_DATA_CHANGED
E_ONF4
E_ONF4_BEFORE
E_ONF4_AFTER,
**Handle Data Change
METHOD HANDLE_DATA_CHANGED.
DATA: X_CHANGE TYPE LVC_S_MODI. "modified cells
LOOP AT ER_DATA_CHANGED->MT_GOOD_CELLS INTO X_CHANGE.
ENDLOOP.
ENDMETHOD. "HANDLE_DATA_CHANGED
Regards
Vijay -
hi experts,
i have a requirement to create a alv grid report and in the output one column should be editable.(till here every thing is correct what i did)
i have to create a 'update' button to the tool bar of alv output screen so that if i enter my own data in the editable screen,and press 'update' button then my database table should be updated..
can anyone tell me how to create 'update' button and write code for that.
my code is as below:
TABLES: vbak,vbap.
TYPE-POOLS: slis. "ALV Declarations
*Data Declaration
TYPES: BEGIN OF t_final,
vbeln LIKE vbak-vbeln,
erdat LIKE vbak-erdat,
matnr LIKE vbap-matnr,
posnr LIKE vbap-posnr,
END OF t_final.
DATA: i_final TYPE STANDARD TABLE OF t_final INITIAL SIZE 0,
wa_final TYPE t_final.
*ALV data declarations
DATA: fieldcatalog TYPE slis_t_fieldcat_alv WITH HEADER LINE,
gd_tab_group TYPE slis_t_sp_group_alv,
gd_layout TYPE slis_layout_alv,
gd_repid LIKE sy-repid.
*Start-of-selection.
START-OF-SELECTION.
PERFORM data_retrieval.
PERFORM build_fieldcatalog.
PERFORM build_layout.
PERFORM display_alv_report.
*& Form BUILD_FIELDCATALOG
Build Fieldcatalog for ALV Report
FORM build_fieldcatalog.
fieldcatalog-fieldname = 'VBELN'.
fieldcatalog-seltext_m = 'sales order'.
fieldcatalog-col_pos = 0.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'ERDAT'.
fieldcatalog-seltext_m = 'date'.
fieldcatalog-col_pos = 1.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'MATNR'.
fieldcatalog-seltext_m = 'material no.'.
fieldcatalog-col_pos = 2.
fieldcatalog-edit = 'X'.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'POSNR'.
fieldcatalog-seltext_m = 'line item no.'.
fieldcatalog-col_pos = 3.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
ENDFORM. " BUILD_FIELDCATALOG
*& Form BUILD_LAYOUT
Build layout for ALV grid report
FORM build_layout.
gd_layout-no_input = 'X'.
gd_layout-colwidth_optimize = 'X'.
gd_layout-totals_text = 'Totals'(201).
gd_layout-totals_only = 'X'.
gd_layout-f2code = 'DISP'. "Sets fcode for when double
"click(press f2)
gd_layout-zebra = 'X'.
gd_layout-group_change_edit = 'X'.
gd_layout-header_text = 'helllllo'.
ENDFORM. " BUILD_LAYOUT
*& Form DISPLAY_ALV_REPORT
Display report using ALV grid
FORM display_alv_report.
gd_repid = sy-repid.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = gd_repid
i_callback_top_of_page = 'TOP-OF-PAGE' "see FORM
i_callback_user_command = 'USER_COMMAND'
i_grid_title = outtext
is_layout = gd_layout
it_fieldcat = fieldcatalog[]
it_special_groups = gd_tabgroup
IT_EVENTS = GT_XEVENTS
i_save = 'X'
is_variant = z_template
TABLES
t_outtab = I_FINAL
EXCEPTIONS
program_error = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. " DISPLAY_ALV_REPORT
*& Form DATA_RETRIEVAL
Retrieve data form EKPO table and populate itab it_ekko
FORM data_retrieval.
SELECT avbeln aerdat bmatnr bposnr FROM vbak AS a
INNER JOIN vbap AS b ON avbeln = bvbeln
INTO TABLE i_final WHERE avbeln = bvbeln.
ENDFORM. " DATA_RETRIEVAL
points will be rewarded.Hi Nani
TO add a button on alv tool bar and to handle it
u have to use object oriented approach
for this u have to define class and implement class in which u will write code inside the method to hadle particlur event
here is the code for it.
*& Class z_cl_9_u_EVENT_RECEIVER this class contains the definition
of methods for handling events
CLASS z_cl_9_u_event_receiver DEFINITION DEFERRED.
DATA : event_receiver TYPE REF TO z_cl_9_u_event_receiver.
*data: create object e1 type ref to cl_alv_event_toolbar_set.
*& Class z_cl_9_u_EVENT_RECEIVER this class contains the definition
of methods for handling events
CLASS z_cl_9_u_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. "z_cl_9_u_EVENT_RECEIVER
CLASSES
CLASS lcl_event_receiver DEFINITION DEFERRED.
*& Class (Implementation) z_cl_9_u_EVENT_RECEIVER
Add a Update Button On ALV-Toolbar and put the logic
for handing that button
*& Class z_cl_9_u_EVENT_RECEIVER this class contains the implementation
of methods for handling events.
CLASS z_cl_9_u_event_receiver IMPLEMENTATION.
*& Method HANDLE_TOOLBAR is to handle toolbar.
In event handler method for event TOOLBAR: Append own functions
by using event parameter E_OBJECT.
METHOD handle_toolbar.
In event handler method for event TOOLBAR: Append own functions
by using event parameter E_OBJECT.
DATA: L_T_toolbar TYPE stb_button.
Append an icon to update tables if country is otherthan NZ.
IF g_flag = c_x AND g_back NE c_x.
CLEAR L_T_toolbar.
MOVE 0 TO L_T_toolbar-butn_type.
MOVE 'UPDATE' TO L_T_toolbar-function.
MOVE icon_modify TO L_T_toolbar-icon.
MOVE text-062 TO L_T_toolbar-quickinfo.
MOVE '' TO L_T_toolbar-text.
MOVE ' ' TO L_T_toolbar-disabled.
APPEND L_T_toolbar TO e_object->mt_toolbar.
In a self defined button, you can disable the button with option DISABLED = 'X'
ELSEIF g_back = c_x.
CLEAR L_T_toolbar.
L_T_toolbar-function = 'UPDATE'.
L_T_toolbar-butn_type = 0.
L_T_toolbar-icon = icon_modify.
L_T_toolbar-quickinfo = text-015.
L_T_toolbar-disabled = 'X'.
APPEND L_T_toolbar TO e_object->mt_toolbar.
CLEAR ok_code.
ENDIF.
ENDMETHOD. "handle_toolbar
*& Method HANDLE_USER_COMMAND does processing based on user inputs.
E_UCOMM has the user command.
METHOD handle_user_command.
In event handler method for event USER_COMMAND:
DATA: L_T_Rows TYPE lvc_t_row,
L_Size TYPE sy-tabix.
CASE e_ucomm.
WHEN 'UPDATE'.
REFRESH L_T_Rows.
CALL METHOD alv_grid->get_selected_rows
IMPORTING
et_index_rows = L_T_Rows.
CALL METHOD cl_gui_cfw=>flush.
DESCRIBE TABLE L_T_Rows LINES L_Size.
IF L_Size IS INITIAL.
MESSAGE i071.
ELSE.
Execute this subroutines to capture the changed data
in ALV and pass it to Ztables,
PERFORM f4700_update_table TABLES L_T_Rows.
PERFORM f4800_get_changed_data.
PERFORM f0500_get_analysis_details USING g_socnr g_matnr.
CALL METHOD alv_grid->refresh_table_display.
ENDIF.
ENDCASE.
ENDMETHOD. "handle_user_command
ENDCLASS.
now call these methods wher eever u r calling the alv like in PBO of screen.
IF g_custom_container IS INITIAL.
g_t_lvc_s_layo-info_fname = c_l_line_colour.
g_t_lvc_s_layo-no_keyfix = '1'. "
CREATE OBJECT g_custom_container
EXPORTING container_name = 'CONTAINER_DETAIL'.
CREATE OBJECT alv_grid
EXPORTING i_parent = g_custom_container.
CALL METHOD alv_grid->set_table_for_first_display
EXPORTING
i_structure_name = 'structre of table'
is_layout = g_t_lvc_s_layo
CHANGING
it_outtab = g_t_outtab[]
it_fieldcatalog = g_t_fieldcat.
*OLY EN01434 BEGIN
->Create Object to receive events and link them to handler methods.
CREATE OBJECT event_receiver.
SET HANDLER event_receiver->handle_user_command FOR alv_grid.
SET HANDLER event_receiver->handle_toolbar FOR alv_grid.
ELSE. "SUBSEQUENT ITERATIONS:
F g_custom_container IS INITIAL.
Layout field 'info-fname' points to the field/column in the
OUTTAB that controls the colour attribute. (OUTTAB is
maintained in function Y_DIP_METER_REC_CALCULATION).
g_t_lvc_s_layo-info_fname = c_l_line_colour.
g_t_lvc_s_layo-no_keyfix = '1'. "RSC18Sep02 - allow hor scroll
CREATE OBJECT g_custom_container
EXPORTING container_name = 'CONTAINER_DETAIL'.
CREATE OBJECT alv_grid
EXPORTING i_parent = g_custom_container.
CALL METHOD alv_grid->set_table_for_first_display
EXPORTING
i_structure_name = 'ZV9NDMRA'
is_layout = g_t_lvc_s_layo
CHANGING
it_outtab = g_t_outtab[]
it_fieldcatalog = g_t_fieldcat.
*OLY EN01434 BEGIN
->Create Object to receive events and link them to handler methods.
CREATE OBJECT event_receiver.
SET HANDLER event_receiver->handle_user_command FOR alv_grid.
SET HANDLER event_receiver->handle_toolbar FOR alv_grid.
ELSE. "SUBSEQUENT ITERATIONS:
*********SAVE IMPORT PARMAETER IS ADDED BY NEEC
PERFORM f4900_set_excluding_buttons." USING sy-dynnr.
CALL METHOD alv_grid->set_table_for_first_display
EXPORTING
i_structure_name = 'ZV9NDMRA'
is_layout = g_t_lvc_s_layo
it_toolbar_excluding = g_t_toolbar_excl
CHANGING
it_outtab = g_t_outtab[]
it_fieldcatalog = g_t_fieldcat.
CALL METHOD alv_grid->set_toolbar_interactive.
CALL METHOD alv_grid->refresh_table_display.
I hope it will help to sme extent
Rewards if helpful and if any help required reply back.....
CALL METHOD alv_grid->set_table_for_first_display
EXPORTING
i_structure_name = 'ZV9NDMRA'
is_layout = g_t_lvc_s_layo
it_toolbar_excluding = g_t_toolbar_excl
CHANGING
it_outtab = g_t_outtab[]
it_fieldcatalog = g_t_fieldcat.
CALL METHOD alv_grid->set_toolbar_interactive.
CALL METHOD alv_grid->refresh_table_display. -
How to add the REFRESH button in OOPs ALV grid
how to add the REFRESH button in OOPs ALV grid
Hi Naidu.
Check the below code:
Local Class Definition and implementation For events handeling
CLASS LCL_EVENT DEFINITION .
PUBLIC SECTION.
METHODS :TOOLBAR FOR EVENT TOOLBAR OF CL_GUI_ALV_GRID
IMPORTING E_OBJECT,
USER_COMMAND FOR EVENT USER_COMMAND OF CL_GUI_ALV_GRID
IMPORTING E_UCOMM.
ENDCLASS.
CLASS LCL_EVENT IMPLEMENTATION.
METHOD TOOLBAR.
WA_TOOL-FUNCTION = 'ZFC1'.
WA_TOOL-TEXT = 'TEST'.
WA_TOOL-ICON = '@EA@'.
APPEND WA_TOOL TO E_OBJECT->MT_TOOLBAR.
ENDMETHOD. "DISPLAY
METHOD USER_COMMAND.
IF E_UCOMM = 'ZFC1'.
ENDIF.
ENDMETHOD. "USER_COMMAND
ENDCLASS. "LCL_EVENT IMPLEMENTATION
MODULE STATUS_0200 OUTPUT.
SET PF-STATUS 'ZALV_BTON'.
SELECT * FROM VBAK INTO TABLE GT_VBAK
UP TO 30 ROWS.
**** CREATE CONTAINER OBJECT
CREATE OBJECT MY_CONTAINER
EXPORTING
CONTAINER_NAME = 'CC1'
EXCEPTIONS
CNTL_ERROR = 1
CNTL_SYSTEM_ERROR = 2
CREATE_ERROR = 3
LIFETIME_ERROR = 4
LIFETIME_DYNPRO_DYNPRO_LINK = 5
OTHERS = 6 .
****** GRID TO CONTAINER
CREATE OBJECT ALV
EXPORTING
I_PARENT = MY_CONTAINER
EXCEPTIONS
ERROR_CNTL_CREATE = 1
ERROR_CNTL_INIT = 2
ERROR_CNTL_LINK = 3
ERROR_DP_CREATE = 4
OTHERS = 5.
CREATE OBJECT OBJ.
SET HANDLER : OBJ->TOOLBAR FOR ALV.
SET HANDLER : OBJ->USER_COMMAND FOR ALV.
****** ALV DISPLAY
CALL METHOD ALV->SET_TABLE_FOR_FIRST_DISPLAY
EXPORTING
I_STRUCTURE_NAME = 'VBAK'
CHANGING
IT_OUTTAB = GT_VBAK[]
EXCEPTIONS
INVALID_PARAMETER_COMBINATION = 1
PROGRAM_ERROR = 2
TOO_MANY_LINES = 3
OTHERS = 4.
ENDMODULE. " STATUS_0200 OUTPUT
*& Module USER_COMMAND_0200 INPUT
* text
MODULE USER_COMMAND_0200 INPUT.
IF SY-UCOMM EQ 'BACK'.
LEAVE PROGRAM.
ENDIF.
ENDMODULE. " USER_COMMAND_0200 INPUT
Regards
Kumar M -
Back button not working after navigation using method navigate_to_account
Hi,
I have the following scenario.
1. From Account Search navigating to one Account (Page 1 to Page 2)
2. From Account there is a hyperlink with opens another page (Page 2 to Page 3). For this navigation I am using method cl_crm_uiu_bp_tools=>navigate_to_account
3. Page is opening successfully but when I am clicking on the BACK button for the first, nothing is happening. On the second click in the BACK button its navigating back to the Search page. (Page 3 to Page 1).
So the history is not triggering for Account page (Page 2)
Please help me with this issue.Hi Tapas,
You actually need to explicitly record it using the below statement.
RAISE EVENT history_trigger .
Use this starement before calling the outbound plug.
Please let me know if you still have any issues.
Regards,
Jotsaroop Singh -
How to make a field manadatory within ALV Grid using methods and classes
Hi,
I am using ALV Grid using set_table_for_first_display
inside my dialog programming. I have a field called project number inside my grid which has to be made as mandatory field.
I have defined a method called catch_data_changed inside my class lcl_event_receiver. This method captures the changes made to one of the fields inside my ALV grid and displays all the default values of the other fields from the grid.
Now, i have to make project number which is one of my fields inside my ALV grid as mandatory. At the field catalog level i did not find any such option for making a field as required field.
Is there any other way, i can accomplish this within the ALV grid?from my understanding from ur question, i understood that u want the editable field inside alvgrid to be mandatory.
i dont know anthing in fieldcat, but u can try the following logic.
FORM DATA_CHANGED USING P_ER_DATA_CHANGED TYPE REF TO
CL_ALV_CHANGED_DATA_PROTOCOL .
DATA: L_VALUE TYPE LVC_VALUE,
ls_mod_cell type lvc_s_modi.
READ TABLE P_ER_DATA_CHANGED->MT_MOD_CELLS INTO LS_MOD_CELL.
if sy-subrc = 0.
CALL METHOD P_ER_DATA_CHANGED->GET_CELL_VALUE
EXPORTING
I_ROW_ID = LS_MOD_CELL-row_id
I_FIELDNAME = LS_MOD_CELL-fieldname
IMPORTING
E_VALUE = L_VALUE.
IF LS_MOD_CELL-FIELDNAME <> 'fieldname what u want'
MESSAGE 'ENTER VALUE INTO (fieldname u want) ' TYPE 'I'.
ENDIF.
ELSE.
MESSAGE 'ENTER VALUE INTO (fieldname u want) ' TYPE 'I'.
ENDIF.
Maybe you are looking for
-
Dear All, I have a trigger that works fine when the value is updated by a user but when the value is updated by another trigger it does not seem to work. When i log in and update the value in sqlplus it works fine but when I update a value in another
-
Automatic TO Creation for QM Usage Decision
Dear Gurus We all know WM TO to releasing stock from QI to UU or return goods to vendor can be created automatically, My question is, when the usage decision is split into two, some material going into stock, and some returned to vendor. for return t
-
well it won't turn on so i restart it and same thing happens the next time, and the next time, and the next what do i do
-
Random volume change on midi track during
Hey guys! For some reason a random midi track will just all of a sudden increase to max on volume while play back and I haven't got any automation on it at all. I have tried unplugging the midi and in again but still won't solve the problem. Anyone k
-
培训邀请函 - SAP DB2 Migration Optimization workshop -- SAP DB2迁移优化 (免费)
尊敬的客户,您好: 为了帮助SAP客户更好地进行系统异构迁移,提高用户在DB2数据库环境下的SAP迁移和管理能力,我们代表IBM公司邀请您参加由IBM公司提供的<SAP DB2 Migration Optimization>培训. 此次免费培训将在北京(4月12日 -4月14 日 )举办.授课对象为具有一定SAP管理经验,希望进一步深入了解DB2 LUW,并了解如何在SAP环境下有效进行异构迁移的SAP系统管理员,DBA和技术顾问.培训为每位学员提供实验环境,其授课目标为: u2022