Ansicht
Dokumentation

DMC_PRECALCULATION - MWB: Vorkalkulation starten

DMC_PRECALCULATION - MWB: Vorkalkulation starten

Addresses (Business Address Services)   General Material Data  
Diese Dokumentation steht unter dem Copyright der SAP AG.
SAP E-Book

Funktionalität

Der Funktionsbaustein erzeugt einen Zugriffspaln für eine angegebene Tabelle. Dabei wird der Key der Tabell bis zu einer vorgegebenen Tiefe aufgebaut. Zusätzlich kann eine Blockgröße angegeben werden, die festlegt, wieviele Datensätze sich in einer Portion maximal befinden dürfen.

Eine Tabelle wird in Portionen mit Hilfe vollständiger Teilschlüssel eingeteilt. Für die Abgrenzung der einzelnen Portionen, wird ein Schlüssel beim ersten Key-Feld beginnend Zeichenweise bis zu einer vorgegebenen Stufe aufgebaut. Die Zeichen der einzelnen Key-Felder werden nacheinander in Ranges geschrieben. Wird das letzte betroffene Key-Feld nur teilweise über den Range angegeben, dann werden damit alle Einträge selektiert, die mit den angegebenen Zeichen beginnen.

Zum Aufbau der Ranges werden schrittweise die bisherigen Ranges um ein Zeichen erweitert. Dabei werden alle möglichen Zeichen zum bisherigen Range hinzugefügt und somit neue Ranges generiert. Für die neuen Ranges wird dann überprüft, ob sich im jeweiligen Range Datensätze befinden (SELECT SINGLE). Bei einer positiven Prüfung, werden diese Ranges zur weiteren Verarbeitung verwendet, bei einer negativen Prüfung verworfen.

Um die Generierung und Prüfung neuer Ranges effektiver zu gestalten, erfolgt die Erweiterung der Ranges in Teilschritten nach dem Prinzip derbinären Suche. D.h. es werden nicht sofort mit allen möglichen Zeichen neue Ranges generiert, sondern zunächst Teilintervalle (z.B. 0-9, A-M, NZ) gebildet und nach Datensätzen untersucht. Dies bietet den Vorteil, daBereiche (z.B. A-M), die keine Datensätze enthalten ausgeklammerten werden können und nicht für jedes mögliche Zeichen im Intervall eine Generierung und Überprüfung stattfinden muss.

Als Ergebnis liefert der Algorithmus Ranges der vorgegebenen Tiefe zurück, in denen sich Datensätze befinden. Auf Basis der Ranges können dann die erforderlichen WHERE-Bedingungen für die Selektion erzeugt werden.

Für leere Bereiche, die zum Zeitpunkt der Range-Erstellung keine Datensätze enthalten werden zusätzliche Ranges (Leer-Ranges) erstellt, die nachträglich eingetragene Daten erfassen.

Mit Hilfe des Funktionsbaustein DMC_ACS_CREATE_WHERECLAUSE kann aus den Ranges eine WHERE-Bedingung für die Selektion erzeugt werden.

Der IMPORT-Parameter IM_TABNAME enthält den Namen der aktuellen Tabelle für die eine Rangebildung erfolgen soll.

Der IMPORT-Parameter IM_SEARCH_DEPTH gibt die Rangetiefe an, bis zu der gefüllte Ranges ermittelt werden sollen. Ist keine maximale Blockgröße angegeben (siehe IM_BLOCKSIZE) wird die Suche bei dieser Tiefe abgebrochen. Ist dagegen eine maximale Blockgröße angegeben, gibt der Parameter die Tiefe für den ersten Suchschritt an, nachdem dann zum ersten Mal die Anzahl der Einträge in den Ranges ermittelt wird.

Der optionale IMPORT-Parameter IM_BLOCKSIZE gibt die maximale Blockgröße für einen Range an. D.h. hier wird festgelegt wie viele Datenbankeinträge zu einem Range maximal existieren dürfen.

Der optionale IMPORT-Parameter IM_COUNT gibt an, ob die Anzahl der Datensätze pro Range ermittelt werden soll. Wird dieser Parameter nicht versorgt, wird keine Zählung vorgenommen, wodurch der Performance-lastige "SELECT COUNT"-Befehl verhindert wird. Für die Ermittlung von Ranges mit maximaler Blockgröße (s.o.) ist jedoch die Zählung der Ranges notwendig. Wird daher eine maximale Blockgröße angegeben, dann wird der Parameter IM_COUNT auf den Wert 'X' gesetzt.

Der TABLES-Parameter IM_IT_SETTINGS beinhaltet die statischen Abgrenzungen.

Die EXPORT-Parameter EX_TBL_ENTRIES, EX_RNG_ENTRIES_DATA und EX_RNG_ENTRIES_EMPTY enthalten die Anzahl der Einträge in der Tabelle, den gefüllten Ranges und den Leer-Ranges. Bei der Ermittlung der Einträge in der Tabelle werden dabei eventuel angegebene statische Abgrenzungen berücksichtigt.

Der TABELS-Parameter EX_IT_KEYDEF enthält die Schlüsselinformationen für die erzeugten Ranges.

Der TABELS-Parameter EX_IT_RANGE_DATA enthält die Ranges, die Datensätze enthalten.

Der TABELS-Parameter EX_IT_RANGE_EMPTY enthält die Leer-Ranges.

Beispiel

Key-Felder: MANDT (Länge 3), BUKRS (4) und BELNR (10)
Range, der bis zum 14. Zeichen aufgebaut wurde:
01000100002501

Zeichen 1-3 -> MANDT (hier 010)
Zeichen 4-7 -> BUKRS (hier 0010)
Zeichen 8-14 -> BELNR (hier 000251)

Hinweise

Weiterführende Informationen





Parameter

EX_IT_PRE_CALC_STG
IM_CLIENT_SPEC
IM_IT_CONSTKEY_CHCKTBL
IM_IT_SETTINGS
IM_REC_SEARCH
IM_SEARCH_DEPTH
IM_SEGMENT_SIZE
IM_TABNAME
IM_TBL_COUNT

Ausnahmen

CALCULATION_ERROR
NO_AUTHORIZATION
NO_RANGES_FOUND

Funktionsgruppe

CNV2

BAL Application Log Documentation   ABAP Short Reference  
Diese Dokumentation steht unter dem Copyright der SAP AG.

Length: 5783 Date: 20240523 Time: 143657     sap01-206 ( 126 ms )