Ansicht
Dokumentation

MDRP_QUOTE_SAVE - Verändern und Sichern der Quotierung

MDRP_QUOTE_SAVE - Verändern und Sichern der Quotierung

Addresses (Business Address Services)   CL_GUI_FRONTEND_SERVICES - Frontend Services  
Diese Dokumentation steht unter dem Copyright der SAP AG.
SAP E-Book

Funktionalität

Versucht, Quoteninformationen synchron in der globalen Buffertabelle TAB_QUOTA und in den zugehörigen Datenbanktabellen EQUK und EQUP zu verändern. Außerdem werden entsprechende Dispsätze mittels Aufrufe der Funktionsbausteine DISPSATZ_ERSTELLEN bzw. MD_MDVM_TABLE_GENERAL erzeugt. Der Parameter I_UPDKZ kann die Werte 'D' (= delete), 'U' (= update) und 'I' (= insert) annehmen. Die Tabelle T_QUOTA enthält die zu ändernden Datensätze. Im Fehlerfalle wird eine Exception SAVE_ERROR erzeugt.

Falls Löschungen (I_UPDKZ = 'D') vorgenommen werden sollen, sind nur die Felder MATNR, WERKS, BDATU, QUNUM und QUPOS in T_QUOTA von Bedeutung. Diese müssen Keys existierender Tabelleneinträge darstellen, die gelöscht werden sollen. Ansonsten wird eine Exception SAVE_ERROR erzeugt.

Falls Updates (I_UPDKZ = 'U') vorgenommen werden sollen, müssen die Keyfelder MATNR, WERKS, BDATU, QUNUM und QUPOS auf existierende Tabellenfelder verweisen. Ansonsten wird eine Exception SAVE_ERROR erzeugt. Die weiteren Felder von T_QUOTA, die in der Headertabelle EQUK enthalten sind, werden ignoriert, d.h. per Update können Headerinformationen (z.B. VDATU) nicht verändert werden. Die restlichen Felder, die sich auf Felder in der Positionstabelle EQUP beziehen, enthalten die beim Update zu verändernden Daten.

Falls Inserts (I_UPDKZ = 'I') vorgenommen werden sollen, werden für jeden Datensatz in T_QUOTA zwei Fälle unterschieden:

Falls die Keyfelder MATNR, WERKS und BDATU auf einen bereits existierenden Headereintrag zeigen, werden die Keyfelder QUNUM und QUPOS der Positionstabelle EQUP sowie die übrigen Felder, die sich auf die Headertabelle EQUK beziehen, ignoriert. Die restlichen Felder, die sich auf Nicht-Keyfelder der Tabelle EQUP beziehen, werden als neue Quotenposition in die Tabelle EQUP eingefügt. Der QUNUM-Wert wird dabei aus dem schon existierenden Header übernommen, der QUPOS-Wert wird aus dem größten bereits vorhandenen Wert durch Inkrementierung generiert.

Falls die Keyfelder MATNR, WERKS und BDATU auf keinen schon existierenden Header zeigen, wird ein neuer Header angelegt. Der zugehörige QUNUM-Wert wird aus dem Nummernkreisobjekt QUOTIERUNG bestimmt. Die neuen QUPOS-Werte werden mit dem Wert 001 beginnend neu festgelegt.

Beim Einfügen neuer Header wird darauf geachtet, daß sich die Intervalle [VDATU, BDATU] aller zu einer (MATNR, WERKS)-Kombination gehörenden Header nicht überlappen. Sollten Überlappungen vorkommen, werden diese durch entsprechende Verkleinerungen der Zeitintervalle und/oder durch Löschung oder "Splittung" von Headern beseitigt. Dabei haben neu hinzugefügte Header Vorrang vor schon bestehenden. Falls ein Header mit einer unsinnigen zeitlichen Begrenzung VDATU > BDATU gefunden wird, wird eine Exception SAVE_ERROR erzeugt.

Beispiel

Hinweise

Weiterführende Informationen





Parameter

I_UPDKZ
T_QUOTA

Ausnahmen

SAVE_ERROR

Funktionsgruppe

MDR0

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

Length: 3396 Date: 20240523 Time: 123729     sap01-206 ( 96 ms )