SALV-Table-Popup als Suchhilfe
In diesem Artikel habe ich dir gezeigt, wie du die Klasse CL_SALV_TABLE als Popup und zur Auswahl von Daten nutzen kannst. Heute möchte ich dir zeigen, wie du diese Funktion in einer Suchhilfe mit Hilfe eines Suchhilfe-Exits nutzen kannst. In diesem Beispiel rufen wir, wie in dem verlinkten Artikel, eine Liste der Wochentage auf aus denen der Anwender einen auswählen kann.
Der einzige Unterschied zum verlinkten Code ist, dass ich für die Schlüsselkomponente nun ein einstelliges Kennzeichen vom Typ WEEKDAY verwende.
Suchhilfe
In der Codezentrale kannst du dir ansehen, wie du einen Wert in einem Report über eine eigenprogrammierte F4-Suchhilfe übergeben kannst:
Das Verfahren nützt dir jedoch nichts, wenn du die F4-Hilfe ohne Programmierung in einem Dynprofeld nutzen möchtest. Hierfür musst du in der Transaktion SE11 eine separate Suchhilfe anlegen:
Suchhilfe-Exit
Die Anlage der Suchhilfe ist in diesem Fall jedoch erst Schritt zwei. Im ersten Schritt musst du einen Funktionsbaustein anlegen, der die Werte anzeigt und mit der Suchhilfe kommuniziert.
Für den Suchhilfe-Exit benötigst du einen Funktionsbaustein mit einer definierten Schnittstelle. In der F1-Hilfe zum Suchhilfe-Exit erfährst du, dass du den Baustein F4IF_SHLP_EXIT_EXAMPLE als Vorlage verwenden kannst. Du musst eine neue Funktionsgruppe anlegen (Transaktion SE37: Springen • Funktionsgruppe • Funktionsgruppe anlegen) und den Vorlage-Baustein in diese Gruppe kopieren.
Am Ende des kopierten Funktionsbausteins setzt du das folgende Coding ein:
IF callcontrol-step = 'DISP'.
DATA(my_popup) = NEW main( ).
my_popup->set_items(
VALUE #(
( key = '1' value = 'Monday' )
( key = '2' value = 'Tuesday' )
( key = '3' value = 'Wednesday' )
( key = '4' value = 'Thursday' )
( key = '5' value = 'Friday' )
( key = '6' value = 'Saturday' )
( key = '7' value = 'Sunday' ) ) ).
TRY.
DATA(selected_entry) = my_popup->ask( 'Select day' ).
append value #( string = conv #( selected_entry-key ) ) to record_tab.
callcontrol-step = 'RETURN'.
CATCH cancelled.
callcontrol-step = 'EXIT'.
ENDTRY.
ENDIF.
In diesem Beispiel habe ich das Coding (Siehe CL_SALV_TABLE als Auswahl-Popup) als lokale Klasse im Funktionsbaustein verwendet. Sinnvoller wäre es jedoch, die Klasse MAIN als globale Klasse anzulegen (Transaktion SE24). In diesem Fall musst du bei der Instanziierung natürlich nicht MAIN verwenden, sondern den Namen der globalen Klasse.
Wichtig ist, dass bei Auswahl eines Eintrags die RECORD_TAB mit dem gewählten Eintrag angereichert wird und der CALLCONTROL-STEP auf “RETURN” gesetzt wird. Bricht der Benutzer den Dialog ab, dann muss CALLCONTROL-STEP auf “EXIT” gesetzt werden.
Den Funktionsbaustein und die Funktionsgruppe musst du selbstverständlich aktivieren.
Aktivierung Suchhilfe
Nachdem du den Suchhilfe-Exit Funktionsbaustein in die Suchhilfe eingetragen hast, musst du die Suchhilfe aktivieren und kannst sie testen:
Suchhilfe einbinden
Du kannst diese Suchhilfe nun in einem Datenelement unter der Registerkarte “Weitere Eigenschaften” festlegen:
Die Suchhilfe steht dir nun immer zur Verfügung, wenn du dieses Datenelement in einer Struktur verwendest.
Suchhilfe testen
Wenn du Suchhilfen mit Suchhilfe-Exits testest, dann achte darauf, dass du nach jeder Codeänderung im Suchhilfe-Exit-Funktionsbaustein die Transaktion SE11 neu aufrufst. Andernfalls ist das alte Coding noch geladen und du wirst die Änderungen nicht sehen!
- Meine Eclipse-Plugins - 22. November 2024
- Interview mit Björn Schulz (Software-Heroes.com) - 3. September 2024
- Daten aus ALV ermitteln - 3. September 2024