Ansicht
Dokumentation
MDRP_QUOTE_SAVE - Verändern und Sichern der Quotierung
Addresses (Business Address Services) CL_GUI_FRONTEND_SERVICES - Frontend ServicesDiese Dokumentation steht unter dem Copyright der SAP AG.
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_UPDKZT_QUOTA
Ausnahmen
SAVE_ERRORFunktionsgruppe
MDR0PERFORM 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 )