Ansicht
Dokumentation

FREE_SELECTIONS_INIT - Initialisierung dynamische Selektion: Bekanntgabe zulässiger Tabellen ...

FREE_SELECTIONS_INIT - Initialisierung dynamische Selektion: Bekanntgabe zulässiger Tabellen ...

SUBST_MERGE_LIST - merge external lists to one complete list with #if... logic for R3up   ABAP Short Reference  
Diese Dokumentation steht unter dem Copyright der SAP AG.
SAP E-Book

Funktionalität

Initialisierung für die Erfassung freier Abgrenzungen mit dem Funktionsbaustein FREE_SELECTIONS_DIALOG.

Im einfachsten Fall bekommt der Funktionsbaustein die Information, für
welchen Feldvorrat freie Abgrenzungen ermöglicht werden sollen, und
liefert eine sogenannte Selektions-Id zurück, die wiederum als Input
für den Funktionsbaustein FREE_SELECTIONS_DIALOG dient.

Der Funktionsbaustein kann während des Ablaufs einer Transaktion mehrfach (mit unterschiedlichem Feldvorrat) aufgerufen werden und liefert jeweils eine neue Selektions-Id zurück. Damit ist es möglich, Dialoge für unterschiedliche Feldvorräte während einer Transaktion zu führen.

Im einzelnen muß bzw. kann dem Funktionsbaustein übergeben werden:

  1. Die Art des Feldvorrats (Parameter KIND):
    T: alle Felder aus der mitgegebenen Liste von Tabellen (P_TABLES)

    G: die Felder eines Selektionsviews (pflegbar über die Workbench), Schlüssel im Parameter FIELD_GROUPS_KEY

    F: Einfache Ansammlung von Feldern (in Tabelle FIELDS_TAB übergeben).

    Ist das Feld TABLENAME gefüllt, so wird das Feld im Data Dictionary gesucht. Ist TABLENAME leer, kann FIELDNAME beliebig sein. In diesem Fall muß in den restlichen Feldern von FIELD_TAB oder in FIELD_DESC (s.u.) eine Feldbeschreibung mitgeliefert werden.
  2. Die Tabellen, für die der Funktionsbaustein FREE_SELECTIONS_DIALOG z.B. WHERE-Klauseln generieren soll (TABLES_TAB).

    Nur bei der Art "F" darf TABLES_TAB leer sein. In diesem Fall werden alle Tabellen genommen, zu denen eines der Felder in FIELDS_TAB gehört.

    Bei TABLES_TAB gibt es die Möglichkeit, auch Joins von Tabellen mitzugeben. In diesem Fall enthält das Feld PRIM_TAB den Namen des Joins, das Feld SEC_TAB den Namen einer Teiltabelle. Dem Benutzer gegenüber erscheint (höchstens) der Name der einzelnen Teiltabellen, aber die von FREE_SELECTIONS_INIT bzw. FREE_SELECTIONS_DIALOG zurückgelieferten WHERE-Klauseln enthalten auch die Einträge für die Joins. Falls ein Feld im Join einen anderen Namen hat als das entsprechende Feld in der Teiltabelle, so muß dies über die Felder PRIM_FNAME (Name im Join) und SEC_FNAME (Name in der Teiltabelle) mitgeteilt werden, damit die WHERE-Klauseln für den Join die richtigen Feldnamen enthalten. Falls PRIM_FNAME leer, SEC_FNAME aber gefüllt ist, bedeutet dies, daß das entsprechende Feld im Join nicht vorkommt. Dann werden für dieses Feld keine WHERE-Klauseln für den Join generiert. Im "Normalfall" (d.h. wenn keine Joins verwendet werden) ist nur das Feld PRIM_TAB gefüllt.
  3. Eine Vorauswahl selektierter Felder (Tabellenparameter FIELDS_TAB) (optional außer bei der Art "F").

    Aus dieser Feldliste werden alle Felder gestrichen, die zu keiner in TABLES_TAB aufgeführten Tabelle gehören (Ausnahme: Art "F", s.o.).

    Besteht der Feldvorrat aus einem Selektionsview (Art "G") und ist FIELDS_TAB leer, so werden die im Selektionsview vorausgewählten Felder übernommen.

    Sind nach Ablauf des Funktionsbaustein vorselektierte Felder vorhanden, so verzweigt der Funktionsbaustein FREE_SELECTIONS_DIALOG Dialog sofort auf das Selektionsbild zur Eingabe der Abgrenzungen für die vorselektierten Felder. Sonst erscheint ein Feldauswahlbild.

    Während bei den Arten "G" und "T" FIELDS_TAB die Menge der vorausgewählten Felder definiert, bestimmt FIELDS_TAB bei Art "F" die Gesamtmenge der zur Verfügung stehenden Felder. Um auch in diesem Fall eine Vorauswhl zu ermöglichen kann folgender Parameter versorgt werden:
  4. FIELDS_NOT_SELECTED: bei Art "F": Liste der zunächst nicht anzubietenden Felder. Der nachfolgende Aufruf von FREE_SELECTIONS_DIALOG präsentiert also zunächst nur die NICHT in FIELDS_NOT_SELECTED aufgeführten Felder. Die Felder aus FIELDS_NOT_SELECTED sind erst mit der Funktion 'Neue Feldauswahl' verfügbar. Dadurch kann insgesamt eine relativ umfangreiche Feldliste angeboten werden und dennoch das Einstiegsbild von FREE_SELECTIONS_DIALOG übersichtlich gehalten werden.
  5. Feldbeschreibungen für Nicht-Dictionary-Felder (nur KIND F), für die die FIELDS_TAB nicht ausreicht (FIELD_DESC).

    Ist für ein Feld mit leerem Tabellennamen aus FIELDS_TAB ein Eintrag in FIELD_DESC vorhanden, so wird dieser genommen. Ist kein Eintrag vorhanden, werden die Informationen aus FIELDS_TAB genommen. Es muß mindestens der Feldtyp spezifiziert sein. Fehlen weitere Informationen (wie z.B. die Feldlänge), so werden die Defaultwerte genommen.
  6. Eine bereits früher erstellte Abgrenzungsmenge in Gestalt eines Objekts vom Typ RSDS_TEXPR (Typepool RSDS), übergeben im Parameter EXPRESSIONS (optional).

    Hierdurch kann erreicht werden, daß die "alten" Abgrenzungen bereits beim ersten Dialog nach dem Initialisierungsaufruf wieder erscheinen.
  7. Abweichende Selektionstexte (FIELD_TEXTS). Hierdurch können die im Dictionary abgelegten Standardtexte überschrieben werden und auch für Felder ohne Dictionary-Bezug Selektionstexte mitgegeben werden.
  8. Eine Liste von Ereignissen auf dem Selektionsbild, bei denen der Aufrufer die Kontrolle bekommen möchte (EVENTS). Hierin werden mitgeteilt:
    - welche Ereignisse sollen selbst behandelt werden (Feld EVENT)
    - welche FORM-Routine soll bei diesem Ereignis angesprungen werden
    (Felder PROG und FORM)
    Wie das Feld EVENT zu füllen ist und wie die Schnittstelle der aufzurufenden Routinen aufgebaut sein muß, ist in der Dokumentation des Parameters EVENTS beschrieben.
  9. Eine Liste von (auch generisch angebbaren) Feldnamen, für die Ereignisse aus Tabelle EVENTS, die von der einzelnen Abgrenzung abhängen (wie z.B. AT SELECTION-SCREEN ON ) vom Aufrufer behandelt werden sollen (EVENT_FIELDS). Hierbei sind Tabellenname und Feldname (bei Feldern ohne Dictionary-Bezug nur Feldname) anzugeben sowie die Ereignisse anzukreuzen, bei denen der Aufrufer die Kontrolle möchte.
  10. Zuordnung von Betragsfeldern zu Währungsschlüsseln bzw. von Mengenfeldern zu Einheiten (Parameter CURR_QUAN_PROG bzw. CURR_QUAN_RELATION). Damit kann eine währungs- bzw. einheitengerechte Aufbereitung erreicht werden.
  11. Vorschriften für die Einschränkung der zulässigen Vorzeichen und Selektionsoptionen (Parameter RESTRICTION). Dies entspricht dem Funktionsbaustein SELECT_OPTIONS_RESTRICT bei 'normalen' Selektionsbildern.

Als Output liefert der Funktionsbaustein:

  1. Die Selektions-Id (Parameter SELECTION_ID).

    Diese dient als Identifikator und muß dem Funktionsbaustein FREE_SELECTIONS_DIALOG übergeben werden.
  2. Die im Import-Parameter EXPRESSIONS mitgegebenen Abgrenzungen, bereinigt um alle Abgrenzungen zu Feldern einer nicht in TABLES_TAB vorhandenen Tabelle (Export-Parameter EXPRESSIONS).
  3. Dasselbe in Form von direkt an ein SAP-SELECT-Statement übergebbaren WHERE-Klauseln (Export-Parameter WHERE_CLAUSES, Typ RSDS_TWHERE ==> Typepool RSDS).
  4. Dasselbe in Form von direkt an ein SAP-SELECT-Statement (IN-Operator) übergebbaren Ranges-Tabellen (Export-Parameter FIELD_RANGES, Typ RSDS_TRANGE ==> Typepool RSDS)
  5. Die Anzahl der Felder, für die tatsächlich Angrenzungen vorhanden sind (Export-Parameter NUMBER_OF_ACTIVE_FIELDS).




Parameter

ALV
ALV_QINFO
CURR_QUAN_PROG
CURR_QUAN_RELATION
EVENTS
EVENT_FIELDS
EXPRESSIONS
EXPRESSIONS
FIELDS_NOT_SELECTED
FIELDS_TAB
FIELD_DESC
FIELD_GROUPS_KEY
FIELD_RANGES
FIELD_RANGES_INT
FIELD_TEXTS
KIND
NO_INT_CHECK
NUMBER_OF_ACTIVE_FIELDS
RESTRICTION
SELECTION_ID
TABFIELDS_NOT_DISPLAY
TABLES_TAB
WHERE_CLAUSES

Ausnahmen

AREA_NOT_FOUND
AREA_NO_FIELD
DUP_EVENT_FIELD
DUP_FIELD
EXPRESSION_NOT_SUPPORTED
FIELDS_INCOMPLETE
FIELDS_NO_JOIN
FIELD_ILL_TYPE
FIELD_NOT_FOUND
FIELD_NO_TYPE
ILLEGAL_KIND
INCONSISTENT_AREA
INCORRECT_EXPRESSION
KIND_F_NO_FIELDS
KIND_F_NO_FIELDS_LEFT
NODE_NOT_IN_LDB
NO_TABLES
TABLE_NOT_FOUND
TOO_MANY_FIELDS

Funktionsgruppe

SSEL

SUBST_MERGE_LIST - merge external lists to one complete list with #if... logic for R3up   PERFORM Short Reference  
Diese Dokumentation steht unter dem Copyright der SAP AG.

Length: 12061 Date: 20240523 Time: 072625     sap01-206 ( 192 ms )