CL_SALV_TABLE Buttons hinzufügen

Die Objektorientierung mit ABAP®: Vererbung, Dynamische Programmierung, GUI Controls (u.a. ALV im OO).
4 Beiträge • Seite 1 von 1
4 Beiträge Seite 1 von 1

CL_SALV_TABLE Buttons hinzufügen

Beitrag von shayanoronaldo (ForumUser / 4 / 1 / 0 ) »
Hallo Zusammen,

ich möchte bei meiner ALV Ausgabe einen Delete Button hinzufügen. Finde allerdings gefühlt 100 Ansätze wie man es theoretisch machen könnte. Wie würdet ihr vorgehen? Mein Coding sieht aktuell wie folgt aus (ALV ist nicht in einem Container eingebetet):
*Datendeklaration
DATA gs_mara TYPE mara.
DATA o_salv TYPE REF TO cl_salv_table.

*Datenselektion (nicht zwingend notwendig für die ALV Ausgabe)
SELECT-OPTIONS so_matnr FOR gs_mara-matnr.
SELECT-OPTIONS so_mtart FOR gs_mara-mtart.
SELECT-OPTIONS so_mstae FOR gs_mara-mstae. "mstae = Werksübergreifender Materialstatus

START-OF-SELECTION.

*Daten in die interne Tabelle (inline Deklaration der internen Tabelle) und absteigend sortiert nach Materialnummer
SELECT * FROM mara INTO TABLE @DATA(lt_output)
WHERE matnr IN @so_matnr
AND mtart IN @so_mtart
AND mstae IN @so_mstae
ORDER BY matnr DESCENDING.

*SALV-Tabelle
TRY.
cl_salv_table=>factory(
EXPORTING
list_display = if_salv_c_bool_sap=>false " ALV Displayed in List Mode
* r_container = " Abstracter Container fuer GUI Controls
* container_name =
IMPORTING
r_salv_table = o_salv " Basisklasse einfache ALV Tabellen
CHANGING
t_table = lt_output
).
CATCH cx_salv_msg. " ALV: Allg. Fehlerklasse mit Meldung
ENDTRY.

*Einstellungen
o_salv->get_display_settings( )->set_striped_pattern( value = abap_true ). "Zebramuster bei der Ausgabe.
o_salv->get_columns( )->set_optimize( abap_true ). "Optimierung der Spaltenbreite
o_salv->get_display_settings( )->set_list_header( 'Beispiel Liste der Tabelle Mara' ). "Ueberschrift festlegen
o_salv->get_functions( )->set_all( abap_true ). "Funktionsbuttons des Grids einblenden.

*ALV Ausgeben
o_salv->display( ).

gesponsert
Stellenangebote auf ABAPforum.com schalten
kostenfrei für Ausbildungsberufe und Werksstudenten



Re: CL_SALV_TABLE Buttons hinzufügen

Beitrag von a-dead-trousers (Top Expert / 4286 / 214 / 1142 ) »
Da hier ein Fullscreen SALV verwendet wird muss ein GUI-Status (Kopie des Standard SALV GUI Status) mit den zusätzichen Buttons erstellt werden.
Im Falle eines SALV im Container kann man Buttons dynamisch zur Laufzeit hinzufügen.
Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.18
Basis: 7.50

Re: CL_SALV_TABLE Buttons hinzufügen

Beitrag von black_adept (Top Expert / 3947 / 105 / 886 ) »
Für derart simple Report verwende ich meist folgendes Template, wo die ALV-Funktionen von den Userinteraktionen getrennt werden. Sieht auch aus wie ein Fullscreen und man muss keinen eigenen Dynpro erstellen, aber da die Fullscreenversion des Salv diverse Einschränkungen hat, bevorzuge ich diesen Ansatz. ( Er hat evtl. Probleme, wenn mit vielen Dynpros nachher gearbeitet wird, aber einfach Navigation oder Aktionen sind so sehr schnell und übersichtlich erstellt ), zumal man hier auch keinen GUI-Status kopieren muss sondern einfach einen neuen anlegt und genau auf die eigenen Bedürfnisse zuschneidern kann.

Code: Alles auswählen.

REPORT demo_simple_alv_with_interaction.

CLASS lcl_application DEFINITION FINAL.
  PUBLIC SECTION.
    TYPES: BEGIN OF mts_selections,
             t_r_dummy TYPE RANGE OF sy-subrc,
           END OF mts_selections.
    TYPES:  BEGIN OF mts_data.
*              include type ...
    TYPES:
      land1 TYPE land1,
      END OF mts_data,
      mtt_data TYPE STANDARD TABLE OF mts_data WITH NON-UNIQUE DEFAULT KEY.
    METHODS:
      main IMPORTING is_selections TYPE mts_selections,
      at_user_command IMPORTING iv_ucomm TYPE syucomm.

    CLASS-DATA:
      mo_instance TYPE REF TO lcl_application.
    DATA:
      mt_data TYPE mtt_data,
      mo_salv TYPE REF TO cl_salv_table.
ENDCLASS.

END-OF-SELECTION.
  NEW lcl_application( )->main( is_selections = VALUE #( t_r_dummy = VALUE #( sign = 'I' option = 'EQ' ( low = '123')
                                                                            )
                                                        )
                                ).

AT USER-COMMAND.
  lcl_application=>mo_instance->at_user_command( sy-ucomm ).


CLASS lcl_application IMPLEMENTATION.
  METHOD main.
    mo_instance = me.
    SELECT land1 FROM t005 INTO TABLE @me->mt_data.


    TRY.
        cl_salv_table=>factory( EXPORTING r_container  = cl_gui_container=>screen0               " Abstract Container for GUI Controls
                                IMPORTING r_salv_table = me->mo_salv              " Basis Class Simple ALV Tables
                                CHANGING  t_table      = me->mt_data
                                        ).
        me->mo_salv->get_selections( )->set_selection_mode( if_salv_c_selection_mode=>row_column ).
        me->mo_salv->display( ).
        WRITE '.'.
        SET PF-STATUS 'BOOK'.
      CATCH cx_root INTO DATA(lo_cx).
        MESSAGE lo_cx TYPE 'I' DISPLAY LIKE 'E'.
    ENDTRY.


  ENDMETHOD.

  METHOD at_user_command.
    me->mo_salv->get_metadata( ).  "Necessary since Usercommand does not trigger ALV-Backend transport
    CASE iv_ucomm.
      WHEN 'ACTION1'.
        LOOP AT me->mo_salv->get_selections( )->get_selected_rows( ) ASSIGNING FIELD-SYMBOL(<lv_row>).
          READ TABLE me->mt_data INDEX <lv_row> ASSIGNING FIELD-SYMBOL(<ls_data>).
          <ls_data>-land1 = '???'.
        ENDLOOP.

        me->mo_salv->refresh( VALUE #( row = 'X' col = 'X' ) ).
    ENDCASE.
  ENDMETHOD.
ENDCLASS.
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Seite 1 von 1

Vergleichbare Themen

5
Antw.
5554
Views
Wie kann ich bestimmte Buttons im ALV (SALV,Popup) abfangen?
von einar46 » 23.07.2014 09:12 • Verfasst in ABAP Objects®
9
Antw.
10194
Views
SALV Button menu hinzufügen?
von ralf.wenzel » 23.02.2014 12:54 • Verfasst in ABAP Objects®
2
Antw.
3865
Views
Salv Table - Layouts speichern
von JohnLocklay » 14.06.2019 11:33 • Verfasst in ABAP Objects®
3
Antw.
1931
Views
GUI Status verhindert on click Event des SALV Table
von Pinguincommander » 05.02.2019 09:51 • Verfasst in ABAP® Core
0
Antw.
799
Views
ALV Buttons
von robz » 27.11.2006 16:08 • Verfasst in ABAP® Core

Newsletter Anmeldung

Keine Beiträge verpassen! Wöchentlich versenden wir lesenwerte Beiträge aus unserer Community.
Die letzte Ausgabe findest du hier.
Details zum Versandverfahren und zu Ihren Widerrufsmöglichkeiten findest du in unserer Datenschutzerklärung.