Ansicht
Dokumentation

CNV_CHECK_SEQNUM_ORDER - Überprüfung der Mischbarkeit mehrerer Pakete aufgrund der seqnum

CNV_CHECK_SEQNUM_ORDER - Überprüfung der Mischbarkeit mehrerer Pakete aufgrund der seqnum

RFUMSV00 - Advance Return for Tax on Sales/Purchases   CPI1466 during Backup  
Diese Dokumentation steht unter dem Copyright der SAP AG.
SAP E-Book

Motivation :

Es wurde nach einem Algorithmus gesucht , der automatisch überprüft ob mehrere Pakete miteinander mischbar sind, d.h ob die sequentielle Abfolge der aufzurufenden Tabellen miteinander kompatibel ist oder obmehes hier zu einem Konflikt kommt.

Beispiel :

In Paket 1 ist gefordert, daß Tabelle 10 unbedingt vor Tabelle 3 in der Abfolge kommen muß. In Paket 4 hingegen, wird genau das Gegenteil gefordert. Somit kommt es bei dem Zusammenmischen zu einem Konflikt, was impliziert, daß diese beiden Pakete nicht miteinander mischbar sind.

Die Funktion (kurze Beschreibung der Vorgehensweise) :

Die Funktion CNV_CHK_SEQNUM_ORDER aus der Funktionengruppe CNV_00001_CHECKS ist die Lösung dieses Problems. Sie ermittelt zuerst die sogenannten Konflikttabellen, nämlich die Tabellen, die mehrmals unter den verschie- denen Paketen vorkommen. Dies geschieht mit der Routine "KONFLIKT_TABS_ ERMITTELN". Nur solche können bei unglücklicher Konstellation zu einem Konflikt führen. Danach werden die übriggebliebenen Tabellen, die aus dem gleichen Paket stammen und die zu der gleichen Zeit gestartet werden sollen zu Blöcken zusammengefaßt, um die Datenmenge zu reduzieren und die Verarbeitung zu erleichtern. Dies geschieht in der Routine "BLÖCKE_BILDEN". Wenn die Blöcke zusammengefaßt worden sind wird von jeder Tabelle und von jedem Block der unmittelbare Vorgänger bestimmt und diese Information in der Tabelle "I_CNV_PAK_MISCH_RE" abgespeichert. Über diese Vorgängerinformationen wird jetzt Stück für Stück jedes Paket eingefügt und zwar so, daß jede Tabelle mittels der Vorgängerinformation in die Tabelle i_cnv_pak_misch_ar einsortiert wird und dann mit der rekursiv definierten Funktion "REIHEN_CHECK" die Sequenz vor dieser Tabelle durchgelaufen wird, solange bis man an den Anfang der "I_CNV_PAK_MISCH_AR" gelangt -> Kein Konflikt oder bis man auf die selbe Tabelle wieder trifft -> Konflikt. Tritt ein solcher Konflikt auf, so werden die an diesem Konflikt beteiligten Pakete in der Tabelle "I_CNV_PAK_MISCH_LO" abgespeichert. Zu guter letzt wird bei einem Konflikt mit der Routine "MINIMAL_HOLEN" die kleinste Menge der Pakete ermittelt, die den Konflikt ausgelöst hatten. Bei einem Gelingen der Mischung werden jetzt noch, auch in der o.g. Routine, die restlichen Tabellen in der möglichen Reihenfolge eingetragen. Es gilt zu beachten, daß bei größerem Datenvolumen die Abarbeitung des Algorithmusses seine Zeit brauchen kann, da sehr viele Vergleiche und Schleifen über interne Tabellen abgearbeitet werden müssen, was die Laufzeit ziemlich erhöht.

Eingabeparameter :

GEMISCHTES_PAKET :

Tabelle mit der Datenstruktur CNV_CHKORDER_AR mit der die ganze Zeit gearbeitet wird und in der zum Schluß der Funktion bei erfolgreicher Mischung eine mögliche Tabellensequenz steht, so daß die Tabellen in ihrer zeitlichen abfolge nicht miteinander kollidieren.

Pakete_Mischbar :

Flagvariable, die die Funktion "CNV_CHECK_SEQNUM_ORDER" wieder an das Programm zurückgibt. Diese Flagvariable muß von der Struktur cnv_chkorder-clu sein. Sie ist belegt mit :

pakete_mischbar = 'X' wenn die Pakete nicht miteinander mischbar sind pakete_mischbar = space wenn die Pakete miteinander mischbar sind

PAKETE_LISTE :

Tabelle mit der Datenstruktur einer internen Tabelle, die erzeugt wird wenn man eine Datenselektion mit dem Befehl select-options machen würde mit Bezug auf die Datenstruktur cnvtables-packid. Eine mögliche Übergabemöglichkeit wäre also wenn man sich eine Tabelle pak_list definiert über: "select-options pak_list for cnvtables-packid"

KONFLIKT_PAKETE :

Tabelle mit der Datenstruktur CNV_CHKORDER_AR-PACKID in der zum Schluß der Funktion bei einem Miserfolg, also wenn ein paar Pakete miteinander kollidieren, die Pakete stehen, die die Auslöser dieser Kollision waren.

KONFLIKT_TABELLEN:

Tabelle mit der Datenstruktur KONFLIKTTABS in der zum Schluß der Funktion bei Miserfolg, die Tabellen stehen, die der Auslöser der Kollision waren.

Bemerkung :

Der Baustein versucht zwar immer die minimalste Konfliktsequenz zu ermitteln, was aber nicht unter allen Umständen möglich ist. Wenn also eine Konfliktpaketesequenz ermittelt wird, kann es passieren, daß diese nur eine der möglichen Konfliktsequenzen ist und noch weitere Konflikte in den Paketen "versteckt" sind. Es kann auch sein, daß die ermittelte Konfliktsequenz eben nicht die Minimalste ist.





Parameter

GEMISCHTES_PAKET
KONFLIKT_PAKETE
KONFLIKT_TABELLEN
PAKETE_LISTE
PAKETE_MISCHBAR
PMANDT

Ausnahmen

Funktionsgruppe

CNV_00001_CHECKS

ROGBILLS - Synchronize billing plans   PERFORM Short Reference  
Diese Dokumentation steht unter dem Copyright der SAP AG.

Length: 5382 Date: 20240523 Time: 135331     sap01-206 ( 139 ms )