Show TOC

HintergrundDropdown-Boxen Dieses Dokument in der Navigationsstruktur finden

 

Neben der Eingabehilfe, die in separaten Dialogfenstern erscheint, können für Ein-/ Ausgabefelder auf Dynpros so genannte Dropdown-Boxen definiert werden, die dem Benutzer einen fest vordefinierten Satz von Eingabewerten zur Auswahl stellen. Der Benutzer kann in ein solches Eingabefeld keinen Wert eintippen, sondern muss einen der angebotenen Werte übernehmen. Bei Auswahl eines Werts kann gleichzeitig das Ereignis PAI ausgelöst werden. Die Verknüpfung mit einer Dropdown-Box schließt die gleichzeitige Verwendung der Eingabehilfetaste aus.

Zur Zeit sind Listboxen die einzig möglichen Dropdown-Boxen. Eine Listbox stellt eine einspaltige Werteliste von Textfeldern mit einer maximalen Länge von 80 Zeichen dar. Intern ist jedes Textfeld mit einem Schlüssel von maximal 40 Zeichen verknüpft. Bei Auswahl einer Zeile wird der Inhalt des Textfelds in das Eingabefeld auf dem Bildschirm und der Inhalt des Schlüssels in das Dynprofeld gestellt. Der Inhalt und die Länge von Bildschirmfeld und Dynprofeld sind hier also in der Regel nicht identisch.

Um ein Ein-/Ausgabefeld mit einer Listbox zu verknüpfen, muss im Screen Painter dem Attribut Dropdown des Bildschirmelements den Wert L bzw. LISTBOX zugewiesen werden. Mit dem Attribut visLänge bestimmt man die Ausgabebreite der Listbox und des Felds. Einem solchen Ein-/Ausgabefeld kann ein Funktionscode zugeordnet werden. Dann führt die Auswahl eines Werts der Listbox sofort zum Ereignis PAI und der Funktionscode wird in die Felder sy-ucomm und das OK-Feld gestellt. Ohne Zuordnung eines Funktionscodes, muss PAI wie üblich durch Drucktasten oder Elemente des GUI-Status ausgelöst werden.

Wenn einem Ein-/Ausgabefeld eine Listbox zugeordnet ist, kann mit dem Attribut Werteliste des Bildschirmelements bestimmt werden, wie die Texte in der Werteliste der Listbox erstellt werden. Es gibt zwei Möglichkeiten:

  • Werteliste aus der Eingabehilfe (empfohlen)

    Wenn im Attribut Werteliste nichts angegeben wird, übernimmt das Textfeld die erste Anzeigespalte der Eingabehilfe, die dem Bildschirmfeld zugeordnet ist. Diese Eingabehilfe sollte zweispaltig sein und kann im ABAP Dictionary, im Dynpro oder in POV-Dialogmodulen definiert sein. Der Schlüssel wird automatisch entsprechend gefüllt.

  • Werteliste aus PBO-Modulen (nicht empfohlen).

    Wenn im Attribut Werteliste ein A angegeben wird, muss die Werteliste vorm Senden des Bildschirms, z.B. zum Zeitpunkt PBO, mit dem Funktionsbaustein VRM_SET_VALUES gefüllt werden. Dazu wird dem Import-Parameter VALUES des Funktionsbausteins eine interne Tabelle mit Bezug auf den Typ VRM_VALUES der Typgruppe VRM übergeben. Der Zeilentyp ist eine Struktur zweier Textfelder KEY und TEXT, mit einer Länge von 40 bzw. 80 Zeichen. In den Tabellenzeilen kann man die gewünschten Benutzereingaben in der Komponente KEY beliebig mit Texten in der Komponente TEXT kombinieren. Im Import-Parameter ID wird das zugehörige ein Ein-/Ausgabefeld angegeben.

Beispiele

Dropdown-Listbox mit Werteliste aus Eingabehilfe (empfohlen)

Syntax Syntax

  1. *&---------------------------------------------------------------*
  2. *& Report DEMO_DROPDOWN_LIST_BOX                                 *
  3. *&---------------------------------------------------------------*
  4. REPORT demo_dropdown_list_box.
  5. *&---------------------------------------------------------------*
  6. *& Global Declarations                                           *
  7. *&---------------------------------------------------------------*
  8. * Screen Interfaces
  9. TABLES sdyn_conn.
  10. DATA   ok_code TYPE sy-ucomm.
  11. * Global data
  12. TYPES: BEGIN OF type_carrid,
  13.          carrid type spfli-carrid,
  14.          carrname type scarr-carrname,
  15.        END OF type_carrid.
  16. DATA itab_carrid TYPE STANDARD TABLE 
  17.      OF type_carrid WITH HEADER LINE.
  18. *&---------------------------------------------------------------*
  19. *& Processing Blocks called by the Runtime Environment           *
  20. *&---------------------------------------------------------------*
  21. * Event Block START-OF-SELECTION
  22. START-OF-SELECTION.
  23.   CALL SCREEN 100.
  24. * Dialog Module PBO
  25. MODULE status_0100 OUTPUT.
  26.   SET PF-STATUS 'SCREEN_100'.
  27. ENDMODULE.
  28. * Dialog Modules PAI
  29. MODULE cancel INPUT.
  30.   LEAVE PROGRAM.
  31. ENDMODULE.
  32. *
  33. MODULE user_command_0100 INPUT.
  34.   CASE ok_code.
  35.     WHEN 'SELECTED'.
  36.       MESSAGE i888(sabapdocu) WITH sdyn_conn-carrid.
  37.   ENDCASE.
  38. ENDMODULE.
  39. * Dialog Module POV
  40. MODULE create_dropdown_box INPUT.
  41.   SELECT carrid carrname
  42.                 FROM scarr
  43.                 INTO CORRESPONDING FIELDS OF TABLE itab_carrid.
  44.   CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
  45.        EXPORTING
  46.             retfield        = 'CARRID'
  47.             value_org       = 'S'
  48.        TABLES
  49.             value_tab       = itab_carrid
  50.        EXCEPTIONS
  51.             parameter_error = 1
  52.             no_values_found = 2
  53.             OTHERS          = 3.
  54.   IF sy-subrc <> 0.
  55.     ...
  56.   ENDIF.
  57. ENDMODULE.
Ende des Codes

Die statische Folge-Dynpro-Nummer von Dynpro 100 ist 100. Das Bildschirmbild enthält als einziges Eingabefeld die Komponente SDYN_CONN-CARRID. Sein Attribut Dropdown ist L, die Ausgabelänge ist 20, das Attribut Werteliste ist leer und ihm ist der Funktionscode SELECTED zugeordnet. Die Funktionen BACK, EXIT und CANCEL sind im GUI-Status mit dem Funktionstyp E definiert.

Die Bildschirmablauflogik ist:

Syntax Syntax

  1. PROCESS BEFORE OUTPUT.
  2.   MODULE status_0100.
  3. PROCESS AFTER INPUT.
  4.   MODULE cancel AT EXIT-COMMAND.
  5.   MODULE user_command_0100.
  6. PROCESS ON VALUE-REQUEST.
  7.   FIELD sdyn_conn-carrid MODULE create_dropdown_box.
Ende des Codes

Der Benutzer kann in das Bildschirmfeld keine Werte eintippen. Bei Auswahl des Eingabefelds auf Dynpro 100 wird ihm eine Listbox angezeigt. Da das Attribut Werteliste leer ist, wird der Eingabehilfe-Mechanismus gestartet. In diesem Fall ist in der Bildschirmabluflogik ein Ereignisblock PROCESS ON VALUE-REQUEST angelegt, welcher alle übrigen Mechanismen übersteuert. Im entsprechenden Dialogmodul wird eine zweispaltige interne Tabelle gefüllt und über den Funktionsbaustein F4IF_INT_TABLE_VALUE_REQUEST an die Eingabehilfe übergeben. Das System stellt die zweite Spalte dieser Tabelle in die Listbox.

Bei Auswahl einer Zeile der Listbox durch den Benutzer wird PAI mit dem Funktionscode SELECTED ausgelöst und der Wert in der ersten Spalte der internen Tabelle wird in das Eingabefeld übernommen.

Syntax Syntax

Dropdown-Listbox mit Werteliste aus PBO-Modul auf Dynpro 200 (nicht empfohlen)

  1. REPORT demo_dynpro_dropdown_listbox.
  2. TYPE-POOLS vrm.
  3. DATA: name  TYPE vrm_id,
  4.       list  TYPE vrm_values,
  5.       value LIKE LINE OF list.
  6. DATA: wa_spfli TYPE spfli,
  7.       ok_code TYPE sy-ucomm,
  8.       save_ok TYPE sy-ucomm.
  9. TABLES demof4help.
  10. name = 'DEMOF4HELP-CONNID'.
  11. CALL SCREEN 100.
  12. MODULE cancel INPUT.
  13.   LEAVE PROGRAM.
  14. ENDMODULE.
  15. MODULE init_listbox OUTPUT.
  16.   CLEAR demof4help-connid.
  17.   SELECT  connid cityfrom cityto deptime
  18.     FROM  spfli
  19.     INTO  CORRESPONDING FIELDS OF wa_spfli
  20.    WHERE  carrid = demof4help-carrier2.
  21.     value-key  = wa_spfli-connid.
  22.     WRITE wa_spfli-deptime TO value-text USING EDIT MASK '__:__:__'.
  23.     CONCATENATE value-text
  24.                 wa_spfli-cityfrom
  25.                 wa_spfli-cityto
  26.                 INTO value-text SEPARATED BY space.
  27.     APPEND value TO list.
  28.   ENDSELECT.
  29.   CALL FUNCTION 'VRM_SET_VALUES'
  30.        EXPORTING
  31.             id     = name
  32.             values = list.
  33. ENDMODULE.
  34. MODULE user_command_100.
  35.   save_ok = ok_code.
  36.   CLEAR ok_code.
  37.   IF save_ok = 'CARRIER' AND NOT demof4help-carrier2 IS INITIAL.
  38.     LEAVE TO SCREEN 200.
  39.   ELSE.
  40.     SET SCREEN 100.
  41.   ENDIF.
  42. ENDMODULE.
  43. MODULE user_command_200.
  44.   save_ok = ok_code.
  45.   CLEAR ok_code.
  46.   IF save_ok = 'SELECTED'.
  47.     MESSAGE i888(sabapdocu) WITH text-001 demof4help-carrier2
  48.                                           demof4help-connid.
  49.   ENDIF.
  50. ENDMODULE.
Ende des Codes

Die statische Folgedynpronummer von Dynpro 100 ist 200 und sein Layout ist wie folgt:

Die Abbildung wird im Begleittext erläutert.

Dem Eingabefeld ist die Komponente CARRIER2 der Struktur DEMOF4HELP aus dem ABAP Dictionary zugeordnet. Sein Attribut Dropdown ist L, die Ausgabelänge ist 15, das Attribut Werteliste ist leer und ihm ist der Funktionscode CARRIER zugeordnet. Der Funktionscode der Drucktaste ist CANCEL mit dem Funktionstyp E.

Die Bildschirmablauflogik ist:

Syntax Syntax

  1. PROCESS BEFORE OUTPUT.
  2. PROCESS AFTER INPUT.
  3.   MODULE cancel AT EXIT-COMMAND.
  4.   MODULE user_command_100.
Ende des Codes

Die statische Folge-Dynpro-Nummer von Dynpro 200 ist 100 und sein Layout ist wie folgt:

Die Abbildung wird im Begleittext erläutert.

Dem Eingabefeld ist die Komponente CONNID der Struktur DEMOF4HELP aus dem ABAP Dictionary zugeordnet. Sein Attribut Dropdown ist L, die Ausgabelänge ist 30, das Attribut Werteliste ist A und ihm ist der Funktionscode SELECTED zugeordnet. Der Funktionscode der Drucktaste ist CANCEL mit dem Funktionstyp E.

Die Bildschirmablauflogik ist:

Syntax Syntax

  1. PROCESS BEFORE OUTPUT.
  2.   MODULE init_listbox.
  3. PROCESS AFTER INPUT.
  4.   MODULE cancel AT EXIT-COMMAND.
  5.   MODULE user_command_200.
Ende des Codes

Der Benutzer kann in die Bildschirmfelder keine Werte eintippen. Bei Auswahl des Eingabefelds auf Dynpro 100 wird ihm in der Listbox eine Werteliste angezeigt, die sich aus der Eingabehilfe des Felds DEMOF4HELP-CARRIER2 ergibt. Dies ist in diesem Fall die Suchhilfe H_SCARR, die der Prüftabelle SCARR im Dictionary zugeordnet ist. Die Werteliste enthält die Namen der Fluggesellschaften. Bei Auswahl eines Eintrags wird das Dynprofeld mit dem Kürzel der Fluggesellschaft versorgt und es wird das Ereignis PAI ausgelöst. Im Modul user_command_100 wird das OK-Feld überprüft und das Dynpro 200 aufgerufen.

Zum Zeitpunkt PBO von Dynpro 200 wird eine interne Tabelle list mit Werten aus der Datenbanktabelle SPFLI gefüllt. Die Komponente key wird mit den Verbindungsnummern von Flügen versorgt, während in text entsprechende Informationen abgelegt werden. Die Tabelle list wird an den Funktionsbaustein VRM_SET_VALUES übergeben. Bei Auswahl des Eingabefelds auf Dynpro 200 wird in der Listbox die Spalte text der internen Tabelle angezeigt. Bei Auswahl eines Eintrags wird das Dynprofeld mit dem zugehörigen Eintrag der Spalte key versorgt und es wird das Ereignis PAI ausgelöst. Im Modul user_command_200 wird das OK-Feld überprüft und verarbeitet.