Ansicht
Dokumentation
CACS_READ_DATA - Provision: Datenbeschaffung
Vendor Master (General Section) SUBST_MERGE_LIST - merge external lists to one complete list with #if... logic for R3upDiese Dokumentation steht unter dem Copyright der SAP AG.
Dieser Funktionsbaustein erhält die Tabelle SELECTION_TABLE mit Selektionsbedingungen.
Er besorgt sich von der Tabelle/View 'RKB1X-TABNAME' die angeforderten Daten und füllt eine interne Tabelle, deren Struktur der Struktur von 'RKB1X-TABNAME' entspricht. Wenn 'I_RECHERCHE' mit 'X' belegt ist, wird diese Datentabelle ganz oder auch portionsweise dem generierten Recherchereport S_PROGRAM_NAME in der Routine S_FORM_NAME übergeben. Ansonsten wird die Tabelle nach E_CACS_EXTR_DATA kopiert. Der Parameter I_BUILD_CONVEX_HULL bestimmt, ob eine Obermenge der Selektionsbedingen gebildet werden soll.
Die Recherche erlaubt im Extremfall, pro Zelle einer Zeilen-/Spaltenstruktur eine eigene Selektion zu definieren. In SELECTION_TABLE sind diese einzelnen Selektionskarten durch die laufende Nummer getrennt.
Genauer: Unter der Nummer Null stehen alle Bedingungen, die sich auf alle Zellen beziehen, d.h. die ausgeklammert werden konnten. Das folgende Beispiel beschreibt, wie die SELECTION_TABLE in ein Select-Befehl umgeformt werden muß.
LFDNR | FNAM | SIGN | OPTION | LOW | HIGH |
---|---|---|---|---|---|
000 | FELD1 | I | EQ | A1 | |
000 | FELD1 | I | BT | A2 | A3 |
000 | FELD2 | I | EQ | A4 | |
001 | FELD1 | I | EQ | A5 | |
001 | FELD3 | I | GT | A6 | |
001 | FELD3 | I | LT | A7 | |
002 | FELD4 | I | EQ | A8 | |
003 | FELD1 | I | BT | A9 | A10 |
SELECT * FROM xy WHERE |
( ( FELD1 EQ A1 OR FELD1 BETWEEN A2 AND A3 ) AND ( FELD2 EQ A4 ) ) |
AND ( ( ( FELD1 EQ A5 ) AND ( FELD3 GT A6 OR FELD3 LT A7 ) ) |
OR ( ( FELD4 EQ A8 ) ) OR ( ( FELD1 BETWEEN A9 AND A10 ) ) ) |
Die Regeln zur Bildung des SELECT-Statements lauten:
- Alle Zeilen mit gleicher LFDNR bilden einen Block.
- Block 0 und Block 1 müssen mit 'AND (' verknüpft werden, alle folgenden Blöcke mit 'OR'. Der letze Block wird mit ')' abgeschlossen. Das ergibt: BLOCK0 AND ( BLOCK1 OR BLOCK2 OR BLOCK3 OR BLOCKn ).
- Innerhalb eines BLOCKs gilt: Felder mit gleichem Namen werden mit 'OR' verknüpft, Felder mit unterschiedlichen Namen mit 'AND', wobei die mit 'OR' verknüpften Felder geklammert werden: (F1 = 1 OR F1 = 3) AND F2 = 8
- Falls diese genaue Selektion zu aufwendig wird oder nicht performant gelesen werden kann, darf auch die größere 'Selektionshülle' gelesen werden. D.h. man setzt einen einfacheren z.B. durch Select-Options realisierbaren Select ab. Die Routine S_FORM_NAME filtert danach die qualifizierten Sätze heraus.
- Den Übergang zu dieser Vergröberung liefert der Funktionsbaustein RKE_SELTAB_CONVEX_HULL in der Gruppe KED4.
Parameter
ADD_SEL_TABE_CACS_EXTR_DATA
I_AUTH_CHECK
I_BUILD_CONVEX_HULL
I_CORRESPONDING
I_OUTPUT_STRUCTURE
I_RECHERCHE
RKB1X
SELECTED_FIELDS
SELECTED_HIERAS
SELECTION_TABLE
S_FORM_NAME
S_PROGRAM_NAME
Ausnahmen
NO_RECORD_FOUNDFunktionsgruppe
CACSIS_SGeneral Material Data BAL_S_LOG - Application Log: Log header data
Diese Dokumentation steht unter dem Copyright der SAP AG.
Length: 5446 Date: 20240523 Time: 113904 sap01-206 ( 55 ms )