ALV Funktionen von CL_SALV_TABLE werden nicht angezeigt

Getting started ... Alles für einen gelungenen Start.
4 Beiträge • Seite 1 von 1
4 Beiträge Seite 1 von 1

ALV Funktionen von CL_SALV_TABLE werden nicht angezeigt

Beitrag von BecomingAnAbapGuru (ForumUser / 83 / 31 / 3 ) »
Hi,

ich habe folgendes Problem:

Code: Alles auswählen.

METHOD create_alv.

    FIELD-SYMBOLS: <ft_table> TYPE STANDARD TABLE.
    ASSIGN _rt_table->* TO <ft_table>. 

    IF <ft_table> IS ASSIGNED AND <ft_table> IS NOT INITIAL.

      TRY.
          CALL METHOD cl_salv_table=>factory
            IMPORTING
              r_salv_table = _alv
            CHANGING
              t_table      = <ft_table>.
        CATCH cx_salv_msg.
      ENDTRY.
    ENDIF.

  ENDMETHOD.

Code: Alles auswählen.

    _r_functions = _alv->get_functions( ).
    _r_functions->set_all( abap_true ).

        TRY.
            _r_functions->add_function( name = 'TEST'
                                            tooltip = 'TEST'
*                                        text = 'test'
                                            position = if_salv_c_function_position=>right_of_salv_functions ).
          CATCH cx_salv_method_not_supported INTO DATA(lr_error).

        ENDTRY.
Ich bekomme beim Erstellen von eigene Funktionsbuttons immer eine Fehlermeldung : only possible in grid view.

Ich nehme mal an, dass Fehler deswegen auftritt, weil beim Erstellen von ALV die Exportingparameter unbefüllt ist.
Aber wie genau mache ich da jetzt weiter? Ich will alles in einer Klasse gelagert haben & nicht im Report.
Danke

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


Re: ALV Funktionen von CL_SALV_TABLE werden nicht angezeigt

Beitrag von a-dead-trousers (Top Expert / 4414 / 224 / 1186 ) »
Die "dynamische" Variante der Funktionscodes verwendet eine CL_GUI_TOOLBAR. Da kann man beliebige Funktionen hinzufügen. Damit man diese Variante von SALV bekommt, benötigt man ein Dynpro mit einem Custom-Container und im Aufruf der Factory-Methode muss man entweder dessen Namen angeben oder eine bereits darauf initialisierte Container-Instanz.

Die "statische" Variante der Funktionscodes verwendet einen GUI-Status. Dabei übernimmt das SALV-Framework alles, von der Bereitstellung eines Dynpros bis hin zur Funktionscodeverabeitung des GUI-Status. Der Nachteil ist, dass man hier nicht so ohne weiteres neue Funktionscodes hinzufügen kann. Man müsste sich den Standard-GUI-Status des SALV kopieren und dann um eigene Funktionscodes erweitern. Diesen neuen GUI-Status kann man dem SALV dann mit der Methode SET_SCREEN_STATUS anweisen zu verwenden.
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: ALV Funktionen von CL_SALV_TABLE werden nicht angezeigt

Beitrag von BecomingAnAbapGuru (ForumUser / 83 / 31 / 3 ) »
a-dead-trousers hat geschrieben:
11.11.2022 17:30
Die "dynamische" Variante der Funktionscodes verwendet eine CL_GUI_TOOLBAR. Da kann man beliebige Funktionen hinzufügen. Damit man diese Variante von SALV bekommt, benötigt man ein Dynpro mit einem Custom-Container und im Aufruf der Factory-Methode muss man entweder dessen Namen angeben oder eine bereits darauf initialisierte Container-Instanz.

Die "statische" Variante der Funktionscodes verwendet einen GUI-Status. Dabei übernimmt das SALV-Framework alles, von der Bereitstellung eines Dynpros bis hin zur Funktionscodeverabeitung des GUI-Status. Der Nachteil ist, dass man hier nicht so ohne weiteres neue Funktionscodes hinzufügen kann. Man müsste sich den Standard-GUI-Status des SALV kopieren und dann um eigene Funktionscodes erweitern. Diesen neuen GUI-Status kann man dem SALV dann mit der Methode SET_SCREEN_STATUS anweisen zu verwenden.
Ich habe es jetzt doch außerhalb der Klasse gemacht, weils für mich unkomplizierter war.
Jetzt habe ich ein Button hinzugefügt und nach dem eventhandler Methode ein refresh eingebaut. Die Tabelle wird aber leider nicht aktualisert angezeigt. Im Debugger passt alles.

Woran könnte das liegen?

EDIT: Mir ist aufgefallen, dass wenn ich im Debugger Zeilen der Tabelle lösche, dass der ALV-Attribut (Tabelle) noch immer die alten Einträhe hat. Das heißt, es wird wahrscheinlich daran liegen.

Wie bekomme ich meine neue Tabelle da rein?

Re: ALV Funktionen von CL_SALV_TABLE werden nicht angezeigt

Beitrag von a-dead-trousers (Top Expert / 4414 / 224 / 1186 ) »
Ich glaube du bist in das "alte" Problem von ständig neu erzeugten Grid Instanzen gestolpert. Du darfst in einem PBO nicht das Grid neu erzeugen, sondern wenn bereits eine Instanz vorhanden ist, ist diese weiterzuverwenden.
Zudem muss die in der Factory-Methode übergebene Tabelle "global änderbar" sein. Änderungen die Im Grid gemacht werden, können sonst nicht in die Tabelle zurückgeschrieben werden und vice versa. Also aufpassen, dass du nicht einen als IMPORTING deklarierten Parameter oder eine lokale Variable verwendest. Die Datentabelle muss immer vorhanden sein (z.B. ein Instanzattribut einer Klasse oder eine globale variable)
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

Seite 1 von 1

Vergleichbare Themen

2
Antw.
5157
Views
Salv Table - Layouts speichern
von JohnLocklay » 14.06.2019 11:33 • Verfasst in ABAP Objects®
3
Antw.
2988
Views
GUI Status verhindert on click Event des SALV Table
von Pinguincommander » 05.02.2019 09:51 • Verfasst in ABAP® Core
4
Antw.
2289
Views
SAP Funktionen
von Yllana » 16.05.2007 20:48 • Verfasst in ABAP® für Anfänger
0
Antw.
516
Views
ALV Funktionen
von BecomingAnAbapGuru » 08.02.2022 20:19 • Verfasst in ABAP® für Anfänger
0
Antw.
3931
Views
Inaktive Funktionen im GUI-Status
von ewx » 25.08.2010 19:05 • Verfasst in Tips + Tricks & FAQs

Über diesen Beitrag


Unterstütze die Community und teile den Beitrag für mehr Leser und Austausch

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.