Code: Alles auswählen.
DATA: gt_zbackwaren TYPE TABLE OF zbackwaren,
gt_znaehrwerte TYPE TABLE OF znaehrwerte,
gt_zwork_area_backwaren TYPE zbackwaren,
gr_table TYPE REF TO cl_salv_table,
gr_display TYPE REF TO cl_salv_display_settings.
Set PF-STATUS 'ZDELETE_BUTTON'.
CLASS lcl_events DEFINITION.
PUBLIC SECTION.
CLASS-METHODS on_double_click
FOR EVENT if_salv_events_actions_table~double_click
OF cl_salv_events_table
IMPORTING row
column.
ENDCLASS.
CLASS lcl_events IMPLEMENTATION.
METHOD on_double_click.
DATA: ls_zbackwaren TYPE zbackwaren.
DATA: ls_znaehrwerte TYPE znaehrwerte.
DATA: ls_naehrwert TYPE znaehrwerte.
READ TABLE gt_zbackwaren INTO ls_zbackwaren INDEX row.
SELECT *
FROM znaehrwerte
INTO TABLE @DATA(lt_znaehrwerte)
WHERE naehrwert_id = @ls_zbackwaren-naehrwertid.
READ TABLE lt_znaehrwerte INTO ls_naehrwert INDEX 1.
IF ls_naehrwert-naehrwerte IS NOT INITIAL.
MESSAGE ls_naehrwert-naehrwerte TYPE 'E' DISPLAY LIKE 'S'.
ELSE.
MESSAGE 'We are sorry to inform you but the chosen Product has no data about the nutrients. Please check out the nutrients later when we might have updated our System' TYPE 'I'.
ENDIF.
ENDMETHOD.
ENDCLASS.
START-OF-SELECTION.
SELECT *
INTO TABLE gt_zbackwaren
FROM zbackwaren.
TRY.
DATA: o_salv TYPE REF TO cl_salv_table,
o_events TYPE REF TO cl_salv_events_table.
CALL METHOD cl_salv_table=>factory
IMPORTING
r_salv_table = o_salv
CHANGING
t_table = gt_zbackwaren.
o_salv->get_functions( )->set_all( abap_true ).
o_salv->get_columns( )->set_optimize( abap_true ).
o_salv->get_display_settings( )->set_list_header( 'salv table' ).
o_salv->get_display_settings( )->set_striped_pattern( abap_true ).
o_salv->get_selections( )->set_selection_mode( if_salv_c_selection_mode=>row_column ).
* Spalte über Namen suchen
DATA(o_col) = CAST cl_salv_column_list( o_salv->get_columns( )->get_column( 'NAEHRWERTID' ) ).
o_col->set_visible( abap_false ).
o_col = CAST cl_salv_column_list( o_salv->get_columns( )->get_column( 'MANDT' ) ).
o_col->set_visible( abap_false ).
o_events = o_salv->get_event( ).
SET HANDLER lcl_events=>on_double_click FOR o_events.
o_salv->display( ).
CATCH cx_salv_msg.
CATCH cx_salv_not_found.
ENDTRY.
Code: Alles auswählen.
REPORT ztest.
" [...]
START-OF-SELECTION.
SET PF-STATUS 'ZTESTSTATUS'.
" [...]
AT USER-COMMAND.
CASE sy-ucomm.
WHEN 'DELETE'.
" [...]
ENDCASE.
Code: Alles auswählen.
DATA: lt_selected_rows TYPE salv_t_row.
lt_selected_rows = go_salv->get_selections( )->get_selected_rows( ).
Code: Alles auswählen.
go_salv->refresh( refresh_mode = if_salv_c_refresh=>full ).
Code: Alles auswählen.
bei Data: it_selected_rows TYPE salv_t_row hinzugefügt
Des Weiteren habe über den o_salv->get_functions( )->set_all( abap_true ).
die Codezeilen:
it_selected_rows = o_salv->get_selections( )->get_selected_rows( ).
go_salv->refresh( refresh mode = if_salv_c_refresh=>full ).
hinzugefügt, aber die go_alv gibt es nicht steht dort. Also habe ich versucht
Data: go_salv TYPE und TYPE REF TO zu machen aber da kam nichts sinnvolles bei mir rum und ich weiß leider nicht was genau ich da reinschreiben muss.
Liebe Grüße
Nochmal herzlichsten Dank für alles.
Kommt darauf an, wo sich der Button befinden soll. Ich hatte ihn so verstanden, dass er ihn der Buttonleiste des ALV hinzufügen möchte.Lukas Sanders hat geschrieben: ↑08.09.2023 09:31um mit Buttons im Status zu arbeiten, legt man in der Regel Dynpros an.
Mit DATA: it_tab... wird eine interne Tabelle deklariert, die ist in Deinem Programm schon vorhanden (gt_zbackwaren). Relevant sind nur die Methode on_toolbar_click in der Eventhandler-Klasse (ab Zeile 9 und ab Zeile 16) sowie Zeilen 44 bis 51. In Zeile 40 werden die übrigen Standard-Buttons (Exportieren, Sortieren...) ausgeblendet, man könnte diese aber auch einblenden, je nach Bedarf.
go_alv ist in diesem Beispiel die Referenz auf das SALV-Objekt, in Deinem Protramm o_salv.