Dynamischer Selection Screen mit dynamischer Suchhilfe

Alles rund um die Sprache ABAP®: Funktionsbausteine, Listen, ALV
14 Beiträge • Seite 1 von 1
14 Beiträge Seite 1 von 1

Dynamischer Selection Screen mit dynamischer Suchhilfe

Beitrag von Johnny11 (ForumUser / 32 / 1 / 0 ) »
Hallo zusammen,

ich hätte ein Frage bzgl. der ABAP Programmierung. Und zwar
habe ich folgende Problemstellung:

Ich möchte einen "Selection-Screen" dynamisch aufbauen. Dies ist mir
schon gelungen, unter Verwendungen der beiden Funktionsbausteine
"FREE_SELECTIONS_INIT" und "FREE_SELECTIONS_DIALOG". Des Weiteren
sollen auch die Suchhilfen, der jeweiligen Felder dynamisch aufgebaut
werden, z.B. das erste Feld wäre die Fluggesellschaft und das zweite
Feld, die Verbindungen. Somit soll bei dem Feld Verbindungen nur die
Verbindungen in der Suchhilfe auftauchen, welche zu der angegebenen
Fluggesellschaft passen. - Hoffe ich konnte die Problemstellung soweit
verständlich beschreiben?

Einen Screenshot habe ich, zur Verdeutlichung, angefügt.

Könnte mir diesbezüglich evtl. jemand weiterhelfen?

Vielen Dank im Voraus für die Hilfe.

Viele Grüße
Johnny

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


Re: Dynamischer Selection Screen mit dynamischer Suchhilfe

Beitrag von ewx (Top Expert / 4842 / 310 / 638 ) »
Verwende mal ein Kopie von SFLIGHT und binde an das Feld CONNID in der SE11 die Suchhilfe SFLIGHT an.
Dann sollte es gehen.
Bei SFLIGHT ist das Feld CARRID als Importing-Parameter definiert, was bedeutet, dass Werte aus CARRID automatisch von der Wertehilfe berücksichtigt werden.

Re: Dynamischer Selection Screen mit dynamischer Suchhilfe

Beitrag von Johnny11 (ForumUser / 32 / 1 / 0 ) »
Hallo ewx,

vielen Dank für Deine schnelle Antwort.

Die Felder die bei dem Selection-Screen angezeigt werden, sind nicht fix. Somit ist nicht sichergestellt, dass z.B. das Feld "Verbindungen" wirklich vorhanden ist.
Dadurch muss die Suchhilfe dynamisch aufgebaut werden.

Ich würde gerne sowas, wie im folgenden Coding aufgezeigt, einbinden.

Also, dass ich als erstes einen dynamischen Selection-Screen mit den Funktionsbausteinen "FREE_SELECTIONS_INIT" und "FREE_SELECTIONS_DIALOG" aufbaue und die Suchhilfe damit verknüpfe.

Wäre so etwas überhaupt möglich? Oder gibt es evtl. andere Ansätze?

Code: Alles auswählen.

*----------------------------------------------------------------------*
*  MODULE value_connection INPUT
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
MODULE value_connection INPUT.

  CALL FUNCTION 'DYNP_VALUES_READ'
    EXPORTING
      dyname             = progname
      dynumb             = dynnum
      translate_to_upper = 'X'
    TABLES
      dynpfields         = dynpro_values.

  READ TABLE dynpro_values INDEX 1 INTO field_value.

  SELECT carrid connid
   FROM spfli
   INTO CORRESPONDING FIELDS OF TABLE values_tab
   WHERE carrid = field_value-fieldvalue.

  CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
    EXPORTING
      retfield    = 'CONNID'
      dynpprog    = progname
      dynpnr      = dynnum
      dynprofield = 'CONNECTION'
      value_org   = 'S'
    TABLES
      value_tab   = values_tab.

ENDMODULE.                    "value_connection INPUT
Viele Grüße

Re: Dynamischer Selection Screen mit dynamischer Suchhilfe

Beitrag von ewx (Top Expert / 4842 / 310 / 638 ) »
Johnny11 hat geschrieben:Die Felder die bei dem Selection-Screen angezeigt werden, sind nicht fix. Somit ist nicht sichergestellt, dass z.B. das Feld "Verbindungen" wirklich vorhanden ist.
Dadurch muss die Suchhilfe dynamisch aufgebaut werden.
Das ist eine falsche Annahme. Wenn es für ein Feld eine Suchhilfe-Anbindung gibt, dann kann diese genutzt werden. Wenn z.B. CARRID nicht nicht auf dem Dynpro vorhanden ist, kann es in der Suchhilfe zu CONNID ausgewählt werden (oder wird angezeigt).

Re: Dynamischer Selection Screen mit dynamischer Suchhilfe

Beitrag von Johnny11 (ForumUser / 32 / 1 / 0 ) »
Hallo,

es mag sein, dass es mit der Suchhilfe funktioniert bei einer fixen Tabelle.
Ich möchte, aber die Suchhilfen immer dynamisch aufbauen. z.B. können ja die Felder "Material" und "Bestellung" Bestandteil des Selection-Screen sein.
Dann möchte ich in der Suchhilfe von Bestellung, nur die Bestellungen sehen, welche zu dem zuvor eingegebenen Material passen.

Ist dies auch mit der Suchhilfe abbildbar oder gibt es evtl. einen anderen Ansatz? Ich hoffe, dass mein Problem klar wurde, welches ich gerne lösen möchte?

Vielen Dank.

Viele Grüße

Re: Dynamischer Selection Screen mit dynamischer Suchhilfe

Beitrag von ewx (Top Expert / 4842 / 310 / 638 ) »
Probier mal in Fuba FREE_SELECTIONS_INIT die Parameter EVENTS und EVENT_FIELDS.
Sind dokumentiert. Damit müsstest du weiter kommen.

Re: Dynamischer Selection Screen mit dynamischer Suchhilfe

Beitrag von Johnny11 (ForumUser / 32 / 1 / 0 ) »
Hallo,

an dieser Stelle befinde ich mich aktuell, also bevor ich diesen Thread geöffnet habe.
Ich komme leider nicht weiter, da mir unklar ist, wie die Suchhilfe aussehen muss, bzw. wie die Parameter EVENTS und EVENT_FIELDS korrekt gefüllt werden?

Viele Grüße

Re: Dynamischer Selection Screen mit dynamischer Suchhilfe

Beitrag von ewx (Top Expert / 4842 / 310 / 638 ) »
Das wäre ja durchaus eine Info Wert gewesen... :/
Include LTXW5F04, Unterroutinen free_selections_layout_add und free_selections_f4

Re: Dynamischer Selection Screen mit dynamischer Suchhilfe

Beitrag von Johnny11 (ForumUser / 32 / 1 / 0 ) »
Hallo,

das stimmt allerdings - das habe ich ganz vergessen zu beschreiben.

Ich werde mir einmal das Include anschauen - ich nehme an, dass das ein Beispiel ist?

Re: Dynamischer Selection Screen mit dynamischer Suchhilfe

Beitrag von ewx (Top Expert / 4842 / 310 / 638 ) »
Johnny11 hat geschrieben:Ich werde mir einmal das Include anschauen - ich nehme an, dass das ein Beispiel ist?
ja, genau.

Re: Dynamischer Selection Screen mit dynamischer Suchhilfe

Beitrag von Johnny11 (ForumUser / 32 / 1 / 0 ) »
Mir ist leider noch nicht ganz klar, wie ich die Abhängigkeit z.B. von Fluggesellschaft und Verbindungen in der F4-Hilfe realisieren kann.
>> Es sollen nur die Verbindungen in der F4 Hilfe des Feldes "Verbindungen" angezeigt werden, welche zu der entsprechenden Fluggesellschaft passt. (siehe bitte obige Beschreibung)

Das folgende Unterprogramm übergebe ich dem Funktionsbaustein "FREE_SELECTIONS_INIT", danach folgt dann der Funktionsbaustein "FREE_SELECTIONS_DIALOG"- Doch leider funktioniert das nicht wirklich.

Code: Alles auswählen.

FORM free_f4_help.

  progname = sy-repid.
  dynnum  = sy-dynnr.

  CALL FUNCTION 'DYNP_VALUES_READ'
    EXPORTING
      dyname             = progname
      dynumb             = dynnum
      translate_to_upper = 'X'
    TABLES
      dynpfields         = dynpro_values.

  READ TABLE dynpro_values INDEX 1 INTO field_value.

  SELECT carrid connid
   FROM spfli
   INTO CORRESPONDING FIELDS OF TABLE values_tab
   WHERE carrid = ls_expr-low.

  CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
    EXPORTING
      retfield    = 'CONNID'
      dynpprog    = progname
      dynpnr      = dynnum
      dynprofield = 'CONNECTION'
      value_org   = 'S'
    TABLES
      value_tab   = values_tab.


ENDFORM. 
Könnte mir jemand bitte weiterhelfen. Vielen Dank.

Re: Dynamischer Selection Screen mit dynamischer Suchhilfe

Beitrag von Lucyalison (Specialist / 262 / 51 / 26 ) »
Hallo Johnny,

ich weiss zwar nicht ob Du inzwischen schon eine Lösung gefunden hast aber so sollte es funktionieren:

Der Funktionsbaustein 'DYNP_VALUES_READ' ist richtig um bereits eingegebene Werte aus dem Selektionsbildschirm auszulesen. Allerdings irritiert mich der Index 1 den Du verwendest. Ich würde die Rückgabetabelle mit dem Feld welches Du benötigst lesen. Also read table dynpro_values WITH KEY fieldname = 'Fluggesellschaft' ASSIGNING <dynfield>.

Der folgende Baustein ruft eine im Data-Dictionary angelegte Suchhilfe auf, da würde für Dich die schon existierende Suchhilfe DRCONN_AIRLINE wahrscheinlich passen:

Code: Alles auswählen.

CALL FUNCTION 'F4IF_GET_SHLP_DESCR'
    EXPORTING
      shlpname = 'DRCONN_AIRLINE'
      shlptype = 'SH'
    IMPORTING
      shlp     = ls_shlp.

Dann gibst Du der Suchhilfe den oben ermittelten Wert für die Fluggesellschaft mit:

Code: Alles auswählen.

 LOOP AT ls_shlp-interface ASSIGNING <i>.
    IF <i>-shlpfield = 'CARRID'.
      <i>-value = Wert aus FB 'DYNP_VALUES_READ'  .
    ENDIF.
    IF <i>-shlpfield = 'CONNID'.
      <i>-valfield = 'X'.
    ENDIF.
  ENDLOOP.

Dieser Funktionsbaustein ruft dann letztendlich die Anzeige der Suchhilfe auf:

Code: Alles auswählen.

  CALL FUNCTION 'F4IF_START_VALUE_REQUEST'
    EXPORTING
      shlp          = ls_shlp
      disponly      = space
      multisel      = 'X'
    TABLES
      return_values = lt_return
    EXCEPTIONS
      error_message = 1.
Wenn Du nicht mehrere Verbindungen auswählen willst, dann lösche den Exporting Parameter multisel.
Ich hoffe das hilft Dir weiter!

Viele Grüsse
Nicola

Re: Dynamischer Selection Screen mit dynamischer Suchhilfe

Beitrag von Johnny11 (ForumUser / 32 / 1 / 0 ) »
Hallo,

vielen Dank für Deine Unterstützung. Ich werde Deine Informationen auf jeden Fall ausprobieren.
Doch leider wird dies ein wenig dauern, bis ich dazu kommen werden. Ich gebe Dir auf jeden Fall eine Rückmeldung und hoffe evtl. noch einmal auf Deine Hilfe :wink:?

Viele Grüße


Seite 1 von 1

Vergleichbare Themen

5
Antw.
4670
Views
Dynamischer Methodenaufruf mit dynamischer Tabelle
von Tommy Nightmare » 08.09.2017 13:23 • Verfasst in ABAP Objects®
2
Antw.
1936
Views
Dynamischer Methodenaufruf mit dynamischer Tabelle
von mark.thk » 12.12.2018 10:34 • Verfasst in ABAP Objects®
0
Antw.
1829
Views
Suchhilfe bei SELECTION-SCREEN
von A6272 » 25.06.2008 18:09 • Verfasst in Dialogprogrammierung
3
Antw.
2622
Views
dynamischer select
von angelika » 29.04.2005 09:39 • Verfasst in ABAP® Core
2
Antw.
1746
Views
dynamischer Select
von BesenWesen » 12.01.2005 12:45 • Verfasst in ABAP® Core

Ü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.