Delete row in ALV
Hi,
I am working on an interactive ALV list. As per the requirement I have been able to remove the standard delete button through the following technique:
ls_exclude = cl_gui_alv_grid=>mc_fc_loc_delete_row.
append ls_exclude to pt_exclude.
It is working fine and the delete button is removed from the tool bar as required. But it is still possible to delete a row by selecting the row and pressing the 'Delete' key in the key board. Can anyone tell be how to stop this. I have already gone through various SDN postings and "An easy reference for ALV grid control.pdf" but could not find any clue.
Hi,
It should work just fine so let me expand a little more.
STEP 1:
Your datadeclaration should look something like this:
TYPES: BEGIN OF TY_OUTTAB.
INCLUDE STRUCTURE <FILL IN YOUR STRUCTURE>.
TYPES: CELLTAB TYPE LVC_T_STYL.
TYPES: END OF TY_OUTTAB.
TYPES: TT_OUTTAB TYPE TABLE OF TY_OUTTAB.
DATA: GT_OUTTAB TYPE TABLE OF TY_OUTTAB.
DATA: GS_OUTTAB TYPE TY_OUTTAB.
DATA: GS_CELLTAB TYPE LVC_S_STYL.
DATA: GT_CELLTAB TYPE LVC_T_STYL.
DATA: L_INDEX TYPE SY-TABIX.
STEP 2:
Select wat you want to select and then loop over your itab.
LOOP AT GT_OUTTAB INTO GS_OUTTAB.
L_INDEX = SY-TABIX.
REFRESH GT_CELLTAB.
CLEAR GS_CELLTAB.
GS_CELLTAB-STYLE = CL_GUI_ALV_GRID=>MC_STYLE_NO_DELETE_ROW.
INSERT GS_CELLTAB INTO TABLE GT_CELLTAB.
INSERT LINES OF GT_CELLTAB INTO TABLE GS_OUTTAB-CELLTAB.
MODIFY GT_OUTTAB FROM GS_OUTTAB INDEX L_INDEX.
ENDLOOP.
STEP 3:
remember to fill GS_LAYOUT-SYLEFNAME = 'CELLTAB'.
Did you do all this ?
Hope it helps.
Similar Messages
-
Deleting rows in alv report.
Hi Experts,
I want to delete a row in alv report output, It is duplicating records in the report and 'GRAND TOTAL' also be displayed . In under the report . <<removed_by_moderator>>
Thanks,
Dinesh.B
Edited by: Vijay Babu Dudla on May 11, 2009 9:15 AMHi,
use the following code for deleting duplicate and adjacent records from itab
delete ADJACENT DUPLICATES FROM itab.
or
sort itab by pernr.
delete ADJACENT DUPLICATE FROM itab COMPARING pernr.
Also, for grand total you can use fieldcat-do_sum = 'X' with the field catalog. It will give you total for the required column.
Hope this solves your problem.
Regards,
Ibrar Munsif. -
How to get Inserted and Deleted Rows in ALV
I have looked at the BC_EDIT* examples but I still can't figure out how to determine which rows were Inserted and Deleted from the ALV list. Can someone please provide me the code to do this?
Thanks.
SandyHi sandy,
i dont think you will have issue in inserting a row in ALV because whenever the user done some actions say for eg clicking the pushbutton at the toolbar you could insert the a new row into the ALV.for creating pushbutton you need to use the events TOOLBAR,USER_COMMAND.
deleting a row may also follow the above procedure.
Have a look at the demo program
BCALV_GRID_05
Cheers,
Abdul Hakim -
Add/Delete rows from ALV-grid
Hi to all,
i have 2 questions concerning alv-grids:
i have an alvgrid displaying a table and what i need is some functionality to add or delete rows from the alvgrid - how can i do that ?
within one row i have one field containing the status and i want to be able to select the status from a combo/dropdown-field and set it for this particular row.
thanks in advance!Hi,
Report BCALV_EDIT_04 shows how to append and delete rows.
Report BCALV_EDIT_06 shows drop down list for cells in a column.
These report should be available in any R/3 system including all ABAP Preview versions.
Hope this can help.
Regards, Johan -
Does't delete final row in alv
hi. friends..^^
i want delete row in alv.
I can delete first row and second row ... final - 1 row.(r_param->t_deleted_rows is not initial)
But...I can't delete final row.(r_param->t_deleted_rows is initial)
how to delete final row?
vesion 2004s
METHOD on_alv_delete .
DATA : ls_row LIKE LINE OF r_param->t_deleted_rows.
DATA : ls_lecture TYPE REF TO zlecture.
FIELD-SYMBOLS : <fs_lecture> TYPE zlecture.
LOOP AT r_param->t_deleted_rows INTO ls_row.
ls_lecture ?= ls_row-r_value.
ASSIGN ls_lecture->* TO <fs_lecture>.
DELETE FROM zregistration WHERE lecture_num = <fs_lecture>-lecture_num
AND devide_num = <fs_lecture>-devide_num.
ENDLOOP.
ENDMETHOD.
Edited by: Ki-Joon Seo on Aug 22, 2008 12:09 PMHi
Are you using the method <node_name>->Invalidate( ). to delete it's data ?
If not, try using this method in you logic to delete the data.
Regards,
Trikanth -
How to delete a particular row in ALV table
Hi,
How to delete a particular row in ALV table based on some condition(by checking value for one of the columns in a row)
Thanks
Bala DuvvuriHello Bala,
Can you please be a bit more clear as to how you intend to delete the rows from your ALV? By the way deleting rows from an ALV is no different from deleting rows from a normal table. Suppose you have enabled selection property in ALV & then select multiple rows and click up on a button to delete the rows then below would be the coding: (Also keep in mind that you would have to maintain the Selection property of the context node that you are binding to your ALV to 0..n)
data : lr_table_settings TYPE REF TO if_salv_wd_table_settings,
lr_config TYPE REF TO cl_salv_wd_config_table.
lr_table_settings ?= lr_config.
** Setting the ALV selection to multiple selection with no lead selection
lr_table_settings->set_selection_mode( value = cl_wd_table=>e_selection_mode-multi_no_lead ).
Next delete the selected rows in the action triggered by the button:
METHOD onactiondelete_rows .
DATA: wd_node TYPE REF TO if_wd_context_node,
lt_node1 TYPE ig_componentcontroller=>elements_node,
wa_temp TYPE REF TO if_wd_context_element,
lt_temp TYPE wdr_context_element_set,
row_number TYPE i VALUE 0.
wd_node = wd_context->get_child_node( name = 'NODE' ).
CALL METHOD wd_node->get_selected_elements
RECEIVING
set = lt_temp.
LOOP AT lt_temp INTO wa_temp.
wd_node->remove_element( EXPORTING element = wa_temp ).
ENDLOOP.
CALL METHOD wd_node->get_static_attributes_table
EXPORTING
from = 1
to = 2147483647
IMPORTING
table = lt_node1.
wd_node->bind_table( new_items = lt_node1 ).
ENDMETHOD.
If in case this isn't your requirement please do let me know so that I can try come up with another analysis.
Regards,
Uday -
Delete Selected rows in ALV display
Hi everyone,
I have a requirement where in my output display, I will have 3 buttons, like Select all, Deselect all and Delete selected.
For Select all and Deselect all I am able to write code and they are working fine. But for Delete selected I am not getting
its actual functionality in the output.
Please help me in this and provide some part of code which can fulfill this.
Regards.
Moderator Message: FAQ. Explore the already given answers and search the forum and the web for more.
Edited by: kishan P on Sep 15, 2010 12:45 PMHi Dieter,
I think the problem is smwhr else...Delete is a stanard functionality in the ALV Grid and would not fire your own code...
@Latha: I guess the row is getting deleted but your functionality is not working..If that is right then follow this approach:
When u delete a row it doesnot call your event handler and hence your code is not executed...You have to implement the toolbar event for this...In the toolbar event put a breakpoint and see the sy-ucomm for delete...you will then have to manually change this standard delete sy-ucomm to your custom sy-ucomm...
The code in the handle_toolbar method would be somthing like this
loop at mt-toolbar.
if sy-ucomm = standarad delete code
replace with your own custom code for exapmle 'DELETE'.
endif.
endloop.
Once you have done this then the Delete row would fire your own code for delete event...
Hope this helps...
Regards,
Sitakant -
Delete row in OO ALV grid toolbar
Hello;
I am using OO ALV grid to display data. On the standard toolbar when delete row button is activated the relevant row is removed from the screen. The program catches this event only when Enter is pressed. Is it possible to catch it as soon as delete row is pressed?
Thx in advance.
AliHi Ali,
You have to handle standard ALV toolbar. Even you can use Custom Toolbar. But you can handle it from Standard toolbar user command. Register events..
Thanks and Regards,
Sampath -
Editable ALV- Disable Add, delete row buttons
Hi,
I have an editable ALV using OO Grid. Some columns are editable and some are not using field catalog. I want to disable the 'add new row' and 'delete row' buttons. How to go about it ?
Regards,
VinYou can simply add them to the "Exclude" table and pass them to the SET_TABLE_FOR_FIRST_DISPLAY method.
data: iexclude type ui_functions,
data: xexclude type ui_func.
define macro_exclude.
xexclude = &1.
append xexclude to iexclude.
end-of-definition.
macro_exclude cl_gui_alv_grid=>mc_fc_loc_copy_row.
macro_exclude cl_gui_alv_grid=>mc_fc_loc_delete_row.
macro_exclude cl_gui_alv_grid=>mc_fc_loc_append_row.
macro_exclude cl_gui_alv_grid=>mc_fc_loc_insert_row.
macro_exclude cl_gui_alv_grid=>mc_fc_loc_move_row.
macro_exclude cl_gui_alv_grid=>mc_fc_loc_copy.
macro_exclude cl_gui_alv_grid=>mc_fc_loc_cut.
macro_exclude cl_gui_alv_grid=>mc_fc_loc_paste.
macro_exclude cl_gui_alv_grid=>mc_fc_loc_paste_new_row.
macro_exclude cl_gui_alv_grid=>mc_fc_loc_undo.
call method alv_grid->set_table_for_first_display(
exporting
it_toolbar_excluding = iexclude "<--- Right HEre
is_layout = xlayout
changing
it_outtab = izcmptrans[]
it_fieldcatalog = ifc[] ).
Regards,
Rich Heilman -
To add/delete the rows in ALV report outpout
Hi,
Is there any way by which we can add/delete the rows in ALV report output.
Thanks
AnkulHi,
Try out this way:
data: i_modified TYPE STANDARD TABLE OF mara,"For getting modified rows
w_modified TYPE mara.
CASE e_ucomm.
WHEN 'EDIT'.
perform save_database.
CALL METHOD ref_GRID->REFRESH_TABLE_DISPLAY.
ENDCASE.
FORM SAVE_DATABASE .
data: i_selected_rows TYPE lvc_t_row, "Selected Rows
w_selected_rows TYPE lvc_s_row.
* Getting the selected rows index
CALL METHOD ref_grid->get_selected_rows
IMPORTING et_index_rows = i_selected_rows.
* Through the index capturing the values of selected rows
LOOP AT i_selected_rows INTO w_selected_rows.
READ TABLE it_tab INTO wa_it_tab INDEX w_selected_rows-index.
IF sy-subrc EQ 0.
MOVE-CORRESPONDING wa_it_tab TO w_modified.
APPEND w_modified TO i_modified.
ENDIF.
ENDLOOP.
MODIFY mara FROM TABLE i_modified.
Thanks,
Krishna -
Undo deleting rows in Editable ALV
Hi All,
i have to check something (at event data_changed of cl_gui_alv_grid), after the user click delete row in an editable ALV. If any expression is true, then the deleted row should not be deleted, it should be undo.
Have anyone a idea to undo this deleting-function.
Best regards
Andreashi,
SAP provides provision for overwriting the functionality of standard buttons displayed in the ALV. You have write a subroutine in which your code has to be executed. That subroutine will be executed during the runtime,
when a standard button has been clicked.
if you are using the function module to display the data, you have to pass the program name to I_CALLBACK_PROGRAM ,subroutine name to I_CALLBACK_USER_COMMAND. Refer below code.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = sy-repid
* I_CALLBACK_PF_STATUS_SET = 'SET_PF_STATUS'
i_callback_user_command = 'USER_COMMAND1'
i_callback_top_of_page = 'TOP_OF_PAGE'
* I_BACKGROUND_ID = 'ALV_BACKGROUND'
i_grid_title = i_title_vbfa
is_layout = i_layout
it_fieldcat = i_fldcat[]
it_sort = i_sort
it_events = i_event
TABLES
t_outtab = it_so1
FORM user_command1 USING r_ucomm LIKE sy-ucomm
rs_selfield TYPE slis_selfield.
*CASE R_UCOMM .
* WHEN '&IC1' .
* IF rs_selfield-FIELDNAME = 'VBELN' .
* ENDIF .
* WHEN OTHERS .
* ENDCASE .
CLEAR wa_so.
REFRESH: it_del1 .
IF r_ucomm = '&IC1' AND rs_selfield-fieldname = 'VBELN' AND
rs_selfield-value IS NOT INITIAL.
READ TABLE it_so1 INTO wa_so INDEX rs_selfield-tabindex.
IF sy-subrc = 0.
LOOP AT it_vbfa INTO wa_vbfa WHERE vbelv = wa_so-vbeln
AND posnv = wa_so-posnr.
READ TABLE it_del_ful INTO wa_it_del_ful
WITH KEY vbeln = wa_vbfa-vbelv
posnr = wa_vbfa-posnn.
IF sy-subrc = 0.
CLEAR wa_del.
MOVE wa_it_del_ful TO wa_del.
APPEND wa_del TO it_del1.
ENDIF.
ENDLOOP.
ENDIF.
ENDIF.
********* SECOND ALV GRID DISPLAY ***********************************
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = sy-repid
* I_CALLBACK_PF_STATUS_SET = 'SET_PF_STATUS'
i_callback_user_command = 'USER_COMMAND2'
i_callback_top_of_page = 'TOP_OF_PAGE'
* I_BACKGROUND_ID = 'ALV_BACKGROUND'
i_grid_title = i_title_vbpa
it_fieldcat = i_fldcat2[]
it_sort = i_sort
TABLES
t_outtab = it_del_ful
* 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 . "USER_COMMAND1
Regards,
Veersh
Edited by: veereshbabu ponnada on Feb 11, 2009 3:04 PM -
Delete row in a table (not ALV)
i have a table on my web-dynpro-view. I defined a delete-Button and a method with some coding.
If the User marks a row and press the button, the row is deleted. Here's the code:
METHOD onactioneintrag_loeschen .
DATA: wd_node TYPE REF TO if_wd_context_node,
wa_temp TYPE REF TO if_wd_context_element,
lt_temp TYPE wdr_context_element_set.
wd_node = wd_context->get_child_node( name = 'LV' ).
CALL METHOD wd_node->get_selected_elements
RECEIVING
set = lt_temp.
LOOP AT lt_temp INTO wa_temp.
wd_node->remove_element( EXPORTING element = wa_temp ).
ENDLOOP.
ENDMETHOD.
My problem: in the context-change-log i can't identify the deleted rows. It's impossible to make a difference between a change of selection and a delete.Hi David,
You can declare one attribute in the view of type ur row.
and store the deleted row in this attribute in ur delete method.
DATA: wd_node TYPE REF TO if_wd_context_node,
wa_temp TYPE REF TO if_wd_context_element,
lt_temp TYPE wdr_context_element_set.
wd_node = wd_context->get_child_node( name = 'LV' ).
CALL METHOD wd_node->get_selected_elements
RECEIVING
set = lt_temp.
LOOP AT lt_temp INTO wa_temp.
<Attribute_name> = wa_temp .
wd_node->remove_element( EXPORTING element = wa_temp ).
ENDLOOP.
ENDMETHOD.
Hope this will help you.
Thanks & Regards,
Arvind -
Hi ,
I need to insert a row in ALV output. On click of a Inser Row button a pop up should show with a parameter.Once the value in entered in the parameter enter is hit , the first column of the new row should have value put in that parameter as non editable field.
The Insert row of standard toolbar inserts a blank row . Is there any way to incorporate the above logic in the standard toolbar?
I'm using CL_GUI_ALV_GRID to display the ALV.
It would be helpful if you provide sample coding.
Thanks.
Ajith
Edited by: Ajith Krishna on Oct 28, 2008 8:01 PMHello Ajith
The enhanced version of sample report ZUS_SDN_ALVGRID_EDITABLE_8A demonstrates how to implement your requirement.
*& ZUS_SDN_ALVGRID_EDITABLE_8A
*& Thread: Insert a row in ALV
*& <a class="jive_macro jive_macro_thread" href="" __jive_macro_name="thread" modifiedtitle="true" __default_attr="1105097"></a>
*& Thread: Blanking values on ALV Grid Row Duplicate
*& <a class="jive_macro jive_macro_thread" href="" __jive_macro_name="thread" modifiedtitle="true" __default_attr="1057161"></a>
*& Thread: Delete line event in ALV
*& <a class="jive_macro jive_macro_thread" href="" __jive_macro_name="thread" modifiedtitle="true" __default_attr="945471"></a>
REPORT zus_sdn_alvgrid_editable_8a.
TYPES: BEGIN OF ty_s_outtab.
INCLUDE TYPE knb1.
TYPES: END OF ty_s_outtab.
TYPES: ty_t_outtab TYPE STANDARD TABLE OF ty_s_outtab
WITH DEFAULT KEY.
DATA:
gd_okcode TYPE ui_func,
gd_repid TYPE syst-repid,
gt_fcat TYPE lvc_t_fcat,
go_docking TYPE REF TO cl_gui_docking_container,
go_grid TYPE REF TO cl_gui_alv_grid.
DATA:
gt_outtab TYPE ty_t_outtab.
* CLASS lcl_eventhandler DEFINITION
CLASS lcl_eventhandler DEFINITION.
PUBLIC SECTION.
CLASS-DATA:
mt_sel_rows TYPE lvc_t_row.
CLASS-METHODS:
handle_toolbar
FOR EVENT toolbar OF cl_gui_alv_grid
IMPORTING
e_object
sender,
handle_user_command
FOR EVENT user_command OF cl_gui_alv_grid
IMPORTING
e_ucomm
sender.
ENDCLASS. "lcl_eventhandler DEFINITION
* CLASS lcl_eventhandler IMPLEMENTATION
CLASS lcl_eventhandler IMPLEMENTATION.
METHOD handle_toolbar.
* define local data
DATA: ls_button TYPE stb_button.
LOOP AT e_object->mt_toolbar INTO ls_button.
CASE ls_button-function.
when cl_gui_alv_grid=>MC_FC_LOC_INSERT_ROW.
ls_button-function = 'INSERT_ROW'.
MODIFY e_object->mt_toolbar FROM ls_button INDEX syst-tabix.
WHEN cl_gui_alv_grid=>mc_fc_loc_delete_row.
ls_button-function = 'DELETE_ROW'.
MODIFY e_object->mt_toolbar FROM ls_button INDEX syst-tabix.
WHEN cl_gui_alv_grid=>mc_fc_loc_copy_row OR
cl_gui_alv_grid=>mc_fc_loc_copy.
ls_button-function = 'COPY_ROW'.
MODIFY e_object->mt_toolbar FROM ls_button INDEX syst-tabix.
WHEN OTHERS.
CONTINUE.
ENDCASE.
ENDLOOP.
ENDMETHOD. "handle_toolbar
METHOD handle_user_command.
* define local data
DATA: lt_rows TYPE lvc_t_row,
ls_row TYPE lvc_s_row.
REFRESH: mt_sel_rows.
CASE e_ucomm.
when 'INSERT_ROW'.
WHEN 'DELETE_ROW'.
WHEN 'COPY_ROW'.
WHEN OTHERS.
RETURN.
ENDCASE.
" User wants to delete or copy rows => store them in class attribute
" and trigger PAI afterwards where we actually delete /copy the rows
" and do the recalculations (in case of deletion)
CALL METHOD sender->get_selected_rows
IMPORTING
et_index_rows = mt_sel_rows
* et_row_no =
* Trigger PAI
CALL METHOD cl_gui_cfw=>set_new_ok_code
EXPORTING
new_code = e_ucomm
* IMPORTING
* rc =
ENDMETHOD. "user_command
ENDCLASS. "lcl_eventhandler IMPLEMENTATION
PARAMETERS:
p_bukrs TYPE bukrs DEFAULT '2000' OBLIGATORY.
START-OF-SELECTION.
SELECT * FROM knb1 INTO CORRESPONDING FIELDS OF TABLE gt_outtab
UP TO 15 ROWS
WHERE bukrs = p_bukrs.
PERFORM init_controls.
SET HANDLER:
lcl_eventhandler=>handle_toolbar FOR go_grid,
lcl_eventhandler=>handle_user_command FOR go_grid.
" Used to replace standard toolbar function code with custom FC
go_grid->set_toolbar_interactive( ).
* Link the docking container to the target dynpro
gd_repid = syst-repid.
CALL METHOD go_docking->link
EXPORTING
repid = gd_repid
dynnr = '0100'
* CONTAINER =
EXCEPTIONS
OTHERS = 4.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
* ok-code field = GD_OKCODE
CALL SCREEN '0100'.
END-OF-SELECTION.
*& Module STATUS_0100 OUTPUT
* text
MODULE status_0100 OUTPUT.
SET PF-STATUS 'STATUS_0100'.
* SET TITLEBAR 'xxx'.
** CALL METHOD go_grid1->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.
ENDMODULE. " STATUS_0100 OUTPUT
*& Module USER_COMMAND_0100 INPUT
* text
MODULE user_command_0100 INPUT.
CASE gd_okcode.
WHEN 'BACK' OR
'END' OR
'CANC'.
SET SCREEN 0. LEAVE SCREEN.
WHEN 'INSERT_ROW'.
perform INSERT_ROW.
WHEN 'DELETE_ROW'.
PERFORM delete_rows.
WHEN 'COPY_ROW'.
PERFORM copy_rows.
WHEN OTHERS.
ENDCASE.
CLEAR: gd_okcode.
CALL METHOD go_grid->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.
ENDMODULE. " USER_COMMAND_0100 INPUT
*& Form BUILD_FIELDCATALOG_KNB1
* text
* --> p1 text
* <-- p2 text
FORM build_fieldcatalog_knb1 .
* define local data
DATA:
ls_fcat TYPE lvc_s_fcat.
CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
EXPORTING
* I_BUFFER_ACTIVE =
i_structure_name = 'KNB1'
* I_CLIENT_NEVER_DISPLAY = 'X'
* I_BYPASSING_BUFFER =
* I_INTERNAL_TABNAME =
CHANGING
ct_fieldcat = gt_fcat
EXCEPTIONS
inconsistent_interface = 1
program_error = 2
OTHERS = 3.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
* Only non-key fields are editable
ls_fcat-edit = 'X'.
MODIFY gt_fcat FROM ls_fcat
TRANSPORTING edit
WHERE ( key NE 'X' ).
ENDFORM. " BUILD_FIELDCATALOG_KNB1
*& Form INIT_CONTROLS
* text
* --> p1 text
* <-- p2 text
FORM init_controls .
* Create docking container
CREATE OBJECT go_docking
EXPORTING
parent = cl_gui_container=>screen0
ratio = 90
EXCEPTIONS
OTHERS = 6.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
* Create ALV grid
CREATE OBJECT go_grid
EXPORTING
i_parent = go_docking
EXCEPTIONS
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.
* Build fieldcatalog and set hotspot for field KUNNR
PERFORM build_fieldcatalog_knb1.
* Display data
CALL METHOD go_grid->set_table_for_first_display
CHANGING
it_outtab = gt_outtab
it_fieldcatalog = gt_fcat
EXCEPTIONS
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. " INIT_CONTROLS
*& Form delete_rows
* text
* --> p1 text
* <-- p2 text
FORM delete_rows .
* define local data
DATA: ls_row TYPE lvc_s_row.
SORT lcl_eventhandler=>mt_sel_rows BY index DESCENDING. " !!!
LOOP AT lcl_eventhandler=>mt_sel_rows INTO ls_row.
DELETE gt_outtab INDEX ls_row-index.
ENDLOOP.
" After deleting rows do RE-CALCULATION
* perform RECALCULATION.
ENDFORM. " delete_rows
*& Form COPY_ROWS
* text
* --> p1 text
* <-- p2 text
FORM copy_rows .
* define local data
DATA: ld_next TYPE i,
ls_row TYPE lvc_s_row,
ls_outtab TYPE ty_s_outtab.
SORT lcl_eventhandler=>mt_sel_rows BY index DESCENDING. " !!!
LOOP AT lcl_eventhandler=>mt_sel_rows INTO ls_row.
READ TABLE gt_outtab INTO ls_outtab INDEX ls_row-index.
CLEAR: ls_outtab-akont. " In your case: clear GUID
ld_next = ls_row-index + 1.
INSERT ls_outtab INTO gt_outtab INDEX ld_next.
ENDLOOP.
ENDFORM. " COPY_ROWS
*& Form INSERT_ROW
* text
* --> p1 text
* <-- p2 text
form INSERT_ROW .
* define local data
DATA: ld_value1 type SPOP-VARVALUE1,
ls_outtab TYPE ty_s_outtab.
CALL FUNCTION 'POPUP_TO_GET_ONE_VALUE'
EXPORTING
textline1 = 'Enter Value (4 Chars):'
* TEXTLINE2 = ' '
* TEXTLINE3 = ' '
titel = 'Enter Value'
valuelength = 4
IMPORTING
* ANSWER =
VALUE1 = ld_value1
EXCEPTIONS
TITEL_TOO_LONG = 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.
ls_outtab-kunnr = ld_value1.
ls_outtab-bukrs = ld_value1.
append ls_outtab to gt_outtab.
endform. " INSERT_ROW
Regards
Uwe -
Hi,
Does any one have a code sample for the ALV Table Delete button? When I hit the DELETE button the selected row gets deleted but how can I save this deletion to the database table so that when I do a refresh the deleted row does not re-appear.
Thanks. KimHi Kim,
i am sorry but I dont have a sample code for this .. but yes i can tell you a very simple logic here that should work fine ..
When the user clicks on Delete Entry call method say "Delete_entry" and within this you can write code based on this logic..
1) On_Action_Lead_Select should copy the content of that row to another context node say "Selected_Entry"
2) Search for this entry in your internal table/database that was bound to the ALVs context node(data source) and remove it using standard functions
3) again read the database/internal table data and bind it to the context node ..
Your changes will be reflected in your ALV..
I hope this helps and if it does please do award points
Also please close the thread if the issue gets resolved ..
Regards,
Anoop -
Disable delete button in ALV grid
Hi Experts,
I have a functionality to disable some buttons in alv grid such as delete row,cut,print etc.
I know how to exclude them by using it_toolbar_excluding , but I need to disable them.
Can you please let me know how to handle this.
I am displaying the ALV grid by calling the method set_table_for_first_display.
Thanks in Advance
PrasanthHi,
By using below code you can disable any button in ALV display
data : tool_wa_exclude type ui_func.
tool_wa_exclude = cl_gui_alv_grid=>mc_fc_loc_delete_row.
append tool_wa_exclude to tool_it_exclude .
call method grid2->set_table_for_first_display
exporting
it_toolbar_excluding = tool_it_exclude
changing
it_outtab = it_ekpo
it_fieldcatalog = it_fcat
exceptions
invalid_parameter_combination = 1
program_error = 2
too_many_lines = 3
others = 4.
U need to pass tool_it_exclude internal table to method for displaying
Maybe you are looking for
-
How to delete a file from Appliction Server.
Hi Gurus, I want to delete a file from application server . can any one tell me the FM/BAPI. Plz Reply me ASAP. Thanks in Advance.
-
How to open a file and display the complete file path?
In my script, I want to create a dialog that prompts the user to define a few variables for the script. One of those variables is the path to a template file. I want it to work the same way that an upload form works. You click the browse button, the
-
Multiple SLM Configuration Assistant
Hi All, I got an error whilst trying to update our XI system using Maintenance Optimizer were it said The system/systems - XID-cischexid01, has/have not been registered in SLM Message no./TMWFLOW/SLMMSG002 Diagnosis In order to download and deploy th
-
Public class and just class ??
when i try to compile this program i get an error message /* Well, maybe this isn't completely useless. */ /* This program uses API introduced in 1.1. */ public class Useless { public static void main(String[] args) { System.out.println(java.util.Loc
-
Hi all, I was wondering if there was any libraries that allowed you to view the e-mail messages in an outlook inbox. I wish to scan for all undeliverable messages, and then remove them from our mailing list. Thanks in advanced, Glen