Ansicht
Dokumentation

FREE_SELECTIONS_DIALOG - Dialog zum Erfassen von dynamischen Selektionsbedingungen.

FREE_SELECTIONS_DIALOG - Dialog zum Erfassen von dynamischen Selektionsbedingungen.

Vendor Master (General Section)   SUBST_MERGE_LIST - merge external lists to one complete list with #if... logic for R3up  
Diese Dokumentation steht unter dem Copyright der SAP AG.
SAP E-Book

Funktionalität

Dialog zum Erfassen freier Abgrenzungen.

Derzeit ist es nur möglich die freien Abgrenzungen als Fullscreen oder Pop-up zu nutzen. Eine Verwendung als Subscreen ist nicht implementiert !


Der einfachste Ablauf ist der, daß nach Aufruf des Funktionsbausteins ein Selektionsbild erscheint. Nach Eingabe der gewünschten Abgrenzungen und Drücken der Taste 'Übernehmen' liefert der Funktionsbaustein die eingegebenen Abgrenzungen in drei verschiedenen Formen an den Aufrufer zurück.

Der wesentliche Input-Parameter (SELECTION_ID) ist die durch den vorherigen Aufruf von FREE_SELECTIONS_INIT zurückgelieferte Selektions-Id. Sie dient zur Identifikation dieses speziellen Satzes von freien Abgrenzungen. Damit hat man die Möglichkeit, während des Ablaufs einer Transaktion mehrere Sätze von freien Abgrenzungen zu verwalten, die auch abwechselnd wieder zur Pflege angeboten werden können.

Im zweiten Input-Parameter TITLE kann der Titel für das Selektionsbild mitgegeben werden.

Im dritten Input-Parameter STATUS kann die Nummer eines GUI-Status für das Selektionsbild mitgegeben werden (siehe Dokumentation des Parameters "STATUS").

Falls beim Aufruf von FREE_SELECTIONS_INIT oder einem vorherigen Aufruf von FREE_SELECTIONS_DIALOG bereits eine Feldauswahl getroffen wurde, erscheint sofort das Selektionsbild zum Erfassen der Abgrenzungen für die ausgewählten Felder. Von hier aus kann dann - falls dies bei dieser Selektions-Id vorgesehen ist - eine neue Feldauswahl getroffen werden. Sind noch keine Felder ausgewählt, so erscheint zunächst das Feldauswahlbild, von dem aus dann auf das Selektionsbild verzweigt werden kann.

Der Funktionsbaustein liefert 5 Objekte zurück (falls gewünscht):

  1. Eine Tabelle der ausgewählten Felder (FIELDS_TAB).
  2. Die erfaßten Abgrenzungen in Form von logischen Ausdrücken
    (Export-Parameter EXPRESSIONS, Typ RSDS_TEXPR ==> Typepool RSDS). Diese Form kann abgespeichert und zu einem späteren Zeitpunkt wieder an den Funktionsbaustein FREE_SELECTIONS_INIT übergeben werden, damit dann beim Aufruf von FREE_SELECTIONS_DIALOG die alten Abgrenzungen sofort wieder angeboten werden.
  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 Abgrenzungen erfaßt wurden (diese kann kleiner sein als die Anzahl der Einträge in FIELDS_TAB).

Beispiel

Die Feldleiste QCAT (Struktur RSDSQCAT) enthält den Schlüssel eines Selektionsviews:

ORIGIN: 'CUS' (Kunde)
DBNA: leer (es wird keine logische Datenbank verwendet)
NAME: CHARLY

...

TABLES: ABCD, XYZW.

TYPE-POOLS RSDS.

DATA TEXPR TYPE RSDS_TEXPR.
DATA TWHERE TYPE RSDS_TWHERE.
DATA TRANGE TYPE RSDS_TRANGE.

DATA DS_CLAUSES TYPE RSDS_WHERE.

DATA BEGIN OF TABS OCCURS 10.
INCLUDE STRUCTURE RSDSTABS.
DATA END OF TABS.

DATA BEGIN OF FIELDS OCCURS 10.
INCLUDE STRUCTURE RSDSFIELDS.
DATA END OF FIELDS.

DATA SELID LIKE RSDYNSEL-SELID.
DATA ACTNUM LIKE SY-TFILL.
DATA TITLE LIKE SY-TITLE VALUE 'My title'.

... (Füllen der Tabellen TABS und FIELDS,
... z.B. enthalte TABS die Tabellen ABCD und XYZW,
... FIELDS die Felder ABCD-F1 und ABCD-F2 sowie XYZW-F0)


CALL FUNCTION 'FREE_SELECTIONS_INIT'
EXPORTING
EXPRESSIONS = TEXPR.
KIND = 'G'
FIELD_GROUPS_KEY = QCAT
IMPORTING
SELECTION_ID = SELID
EXPRESSIONS = TEXPR
WHERE_CLAUSES = TWHERE
FIELD_RANGES = TRANGE
NUMBER_OF_ACTIVE_FIELDS = ACTNUM
TABLES
TABLES_TAB = TABS
FIELDS_TAB = FIELDS
EXCEPTIONS
FIELDS_INCOMPLETE = 01
FIELDS_NO_JOIN = 02
FIELD_NOT_FOUND = 03
NO_TABLES = 04
TABLE_NOT_FOUND = 05
EXPRESSION_NOT_SUPPORTED = 06
INCORRECT_EXPRESSION = 07
ILLEGAL_KIND = 08
AREA_NOT_FOUND = 09
INCONSISTENT_AREA = 10
KIND_F_NO_FIELDS_LEFT = 11
KIND_F_NO_FIELDS = 12
TOO_MANY_FIELDS = 13.

IF SY-SUBRC = 0.
CALL FUNCTION 'FREE_SELECTIONS_DIALOG'
EXPORTING
SELECTION_ID = SELID
TITLE = TITLE
IMPORTING
WHERE_CLAUSES = TWHERE
EXPRESSIONS = TEXPR
FIELD_RANGES = TRANGE
NUMBER_OF_ACTIVE_FIELDS = ACTNUM
TABLES
FIELDS_TAB = FIELDS
EXCEPTIONS
INTERNAL_ERROR = 01
NO_ACTION = 02
NO_FIELDS_SELECTED = 03
NO_TABLES_SELECTED = 04
SELID_NOT_FOUND = 05.

IF SY-SUBRC = 0.
CLEAR DS_CLAUSES.
MOVE 'ABCD' TO DS_CLAUSES-TABLENAME.
READ TABLE TWHERE WITH KEY DS_CLAUSES-TABLENAME INTO DS_CLAUSES.
SELECT * FROM ABCD WHERE ...
AND (DS_CLAUSES-WHERE_TAB).

...

ENDIF.
ENDIF.

An den Funktionsbaustein FREE_SELECTIONS_DIALOG wird also die vom Funktionsbaustein FREE_SELECTIONS_INIT zurückgelieferte Selektions-Id übergeben. Da der FREE_SELECTIONS_INIT bereits eine Tabelle mit ausgewählten Feldern in Empfang genommen hat, verzweigt FREE_SELECTIONS_DIALOG sofort auf das Selektionsbild für die Felder ABCD-F1, ABCD-F2 und XYZW-F0. Nunmehr kann der Benutzer die Abgrenzungen erfassen, eine neue Feldauswahl treffen usw. Das Ergebnis wird zurückgeliefert und kann dann beispielsweise (in Form von TWHERE) an ein SELECT-Statement weitergegeben werden. Dabei wird die zur Tabelle ABCD (z.B.) gehörende Zeile von TWHERE in das Objekt DS_CLAUSES (vom Typ RSDS_WHERE = Zeilentyp von RSDS_TWHERE) eingelesen und die Tabelle DS_CLAUSES-WHERE_TAB (die die eigentliche WHERE-Klausel enthält) an das SELECT-Statement weitergereicht.





Parameter

ALV
AS_SUBSCREEN
AS_WINDOW
DIAG_TEXT_1
DIAG_TEXT_2
EXPRESSIONS
FCODE_TAB
FIELDS_NOT_SELECTED
FIELDS_TAB
FIELD_RANGES
FRAME_TEXT
JUST_DISPLAY
NO_FRAME
NO_INTERVALS
NUMBER_OF_ACTIVE_FIELDS
PFKEY
SELECTION_ID
START_COL
START_ROW
STATUS
TITLE
TREE_VISIBLE
WARNING_TITLE
WHERE_CLAUSES

Ausnahmen

ILLEGAL_STATUS
INTERNAL_ERROR
NO_ACTION
SELID_NOT_FOUND

Funktionsgruppe

SSEL

PERFORM Short Reference   General Material Data  
Diese Dokumentation steht unter dem Copyright der SAP AG.

Length: 9883 Date: 20240523 Time: 083949     sap01-206 ( 122 ms )