Ansicht
Dokumentation

CACS_READ_DATA - Provision: Datenbeschaffung

CACS_READ_DATA - Provision: Datenbeschaffung

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

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_TAB
E_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_FOUND

Funktionsgruppe

CACSIS_S

General 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 )