Wie kann ich für ein cl_salv_tree einen eigenen Button erstellen?
Ich wäre euch sehr dankbar wenn ihr mir das sehr detailliert erklären könnt, da ich noch ein Anfänger bin.
Ich freue mich auf jede Antwort.
Verwendest du das SALV in der Fullscreen-Anzeige (GUI-Status) oder eingebunden in einen Container (GUI-Toolbar)?
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.
Ich verwende SALV in der Fullscreen-Anzeige?
Ist es nur in einen Container möglich? Wenn ja würde das ganze sehr viel Sinn machen... Wie kann ich den die SALV in einem Container einbinden?
Im Fullscreen-SALV musst du zuvor den Standard-GUI-Status des SALV-Adapters kopieren und dann deinen Button in der Kopie einbauen. Am einfachsten kommst du dran, wenn du in deinem Programm auf Menü->System->Status gehst. Da steht dann unter Programm(GUI) und Oberflächenstatus alles was du für die Kopie braucht. Dem SALV weist du den neuen Status dann über die Methode SET_SCREEN_STATUS zu.
Im Container-SALV musst du zuerst ein Dynpro mit einem Custom-Container anlegen. Dann kannst du entweder in der Factory-Methode den Container-Namen an das SALV übergeben oder du erzeugst selbst die CL_GUI_CUSTOM_CONTAINER Instanz und übergibst diese. Um das SALV zur Anzeige zu bringen musst du dein Dynpro aufrufen und dann im PBO die DISPLAY Methode des SALV aufrufen.
Mit der Methode GET_FUNCTIONS erhälltst du dann Zugriff auf die Funktions-Verwaltung mit der du die Funktionen steuern kannst. Mit SET_FUNCTION kannst du die Funktionen ein-/ausblenden.
Im Fullscreen-SALV ist das Hinzufügen nur möglich indem du den Funktionscode im GUI-Status einfügst.
Im Container-SALV kannst du das Hinzufügen mit ADD_FUNCTION erledigen. Zusätzlich zu SET_FUNCTION ist hier auch noch ENABLE_FUNCTION möglich um Funktionen zu de-/aktivieren (ausgrauen).
Mit der Methode GET_EVENT erhälltst du Zugriff auf die Eventsteuerung mit der du auf das Eregnis ADDED_FUNCTION deiner neuen Funktion reagieren kannst.
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.
Vielen Dank für die ausführliche Antwort!
Das mit dem Container hat super geklappt. Könntest du allerdings das mir das vorgehen beim Fullscreen-SALV genauer erklären, vor allem das mit dem Kopieren des Standard-GUI-Status des SALV-Adapters versteh ich nicht ganz.
GUI-Status sind statische Objekte die an Programmen hängen (genauso wie Dynpros) und können nicht dynamisch erweitert werden. Um nun einen neuen Funktionscode in einen vorhandenen Status einzufügen muss man ihn daher auch ändern. Das ist aber bei Standardobjekten nicht erlaubt. Daher muss man zuerst den Status in ein Program im Kundennamensraum kopieren um ihn dann im Anschluss dort modifizieren zu können.
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.