Ansicht
Dokumentation

FREE_SELECTIONS_LDB_JOINS_INIT - Initialisierung dynamische Selektion (logische Datenb.)

FREE_SELECTIONS_LDB_JOINS_INIT - Initialisierung dynamische Selektion (logische Datenb.)

SUBST_MERGE_LIST - merge external lists to one complete list with #if... logic for R3up   Addresses (Business Address Services)  
Diese Dokumentation steht unter dem Copyright der SAP AG.
SAP E-Book

Funktionalität

Der Funktionsbaustein erleichtert es einer logischen Datenbank, sowohl die Technik der freien Abgrenzungen (Sprachelement SELECTION-SCREEN DYNAMIC SELECTIONS ...) als auch Joins auf Datenbanktabellen (zur Performance-Verbesserung) zu nutzen.

Während bei SELECTION-SCREEN DYNAMIC SELECTIONS FOR TABLE dbtab nur in der logischen Datenbank verwendete Tabellen dbtab angegeben werden können (und auch nur deren Felder dem Benutzer zur Erfassung von freien Abgrenzungen angeboten werden sollen), ist es möglich, daß die logische Datenbank tatsächlich die Daten durch einen Zugriff auf einen aus mehreren Tabellen zusammengesetzten Join besorgt. In diesem Fall ist es erforderlich, daß der logischen Datenbank WHERE-Klauseln auch auf diese Joins zur Verfügung gestellt werden.
Die Information, um welche Joins es sich handelt, aus welchen Tabellen sie sich zusammensetzen sowie über abweichende Feldnamen und im Join fehlende Felder müssen vor dem ersten Senden des Selektionsbildes durch Aufruf dieses Funktionsbausteins mitgeteilt werden. Diese Information wird in der Tabelle TABLES_TAB (Struktur RSDSTABS) übergeben. Die einzelnen Felder haben folgende Bedeutung:

PRIM_TAB: Name des Joins
SEC_TAB: Name der Teiltabelle
PRIM_FNAME: Feldname im Join (bei Abweichung gegenüber Teiltabelle)
SEC_FNAME: Feldname in der Teiltabelle

Ist in einem Eintrag PRIM_FNAME leer und SEC_FNAME gefüllt, so bedeutet dies, daß daß entsprechende Feld im Join nicht vorhanden ist. Die Abgrenzungen für dieses Feld werden bei den WHERE-Klauseln für den Join dann nicht berücksichtigt.

Beispiel

PROGRAM SAPDBldb DEFINING DATABASE ldb.

...

FORM INIT.

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

PERFORM FILL_TABS TABLES L_TABLES USING:
'JOIN1' 'TAB1' SPACE SPACE,
'JOIN1' 'TAB2' SPACE SPACE,
'JOIN2' 'TAB3' 'X_FIELD1' 'FIELD1',
'JOIN2' 'TAB3' SPACE 'FIELD2',
'JOIN2' 'TAB4' SPACE 'FIELD3'.

CALL FUNCTION 'FREE_SELECTIONS_LDB_JOINS_INIT'
TABLES
TABLES_TAB = L_TABLES
EXCEPTIONS
FIELDS_INCOMPLETE = 01
FIELD_NOT_FOUND = 02
LDB_INIT_REPEAT = 03
LDB_INIT_TOO_LATE = 04
NO_JOINS = 05
TABLE_NOT_FOUND = 06
TABLE_NO_JOIN = 07.

ENDFORM.

...

FORM FILL_TABS TABLES TABS STRUCTURE RSDSTABS
USING PRIM_TAB SEC_TAB PRIM_FNAME SEC_FNAME.

CHECK PRIM_TAB NE SPACE.

MOVE: PRIM_TAB TO TABS-PRIM_TAB,
SEC_TAB TO TABS-SEC_TAB,
PRIM_FNAME TO TABS-PRIM_FNAME,
SEC_FNAME TO TABS-SEC_FNAME.
APPEND TABS.

ENDFORM.

In diesem Fall werden WHERE-Klauseln für den Join JOIN1 bestehend aus den Tabellen TAB1 und TAB2 erzeugt, wobei die Feldnamen im Join mit denen in TAB1 bzw. TAB2 übereinstimmen. Für JOIN2 werden ebenfalls WHERE-Klauseln generiert; das Feld TAB3-FIELD1 entspricht dem Feld JOIN2-X_FIELD1, den Feldern TAB3-FIELD2 und TAB4-FIELD3 entsprechen keine Felder in JOIN2, so daß die Abgrenzungen nach TAB3-FIELD2 und TAB4-FIELD3 sich in der WHERE-Klausel für JOIN2 nicht widerspiegeln.

Weiterführende Informationen





Parameter

FIELD_TEXTS
TABLES_TAB

Ausnahmen

FIELDS_INCOMPLETE
FIELD_NOT_FOUND
ILLEGAL_LDB
LDB_INIT_REPEAT
LDB_INIT_TOO_LATE
LDB_NO_NODES
NODE_NOT_IN_LDB
TABLE_NOT_FOUND
TABLE_NO_JOIN

Funktionsgruppe

SSEL

BAL_S_LOG - Application Log: Log header data   ABAP Short Reference  
Diese Dokumentation steht unter dem Copyright der SAP AG.

Length: 4817 Date: 20240523 Time: 074844     sap01-206 ( 78 ms )