====== Schnittstelle 3020 – Umsatz-Kostenstellenzuordnungen aus Datei übernehmen ======
Die Schnittstelle **Kostenstellen Umsatz** verarbeitet Zuordnungen zwischen Kostenstelle und PEP-Gruppe. In einer Datei können neue Zuordnungen stehen, aber auch Löschbefehle. Die Reihenfolge der Zeilen entscheidet über das Ergebnis.
Eine Zeile mit Satzkennung ''3022'' löscht alle Zeilen aus ''UmsKstGr'', ohne Kostenstellen-, Gruppen- oder Datumsfilter. Eine Zeile ''3021'' löscht alle Zuordnungen einer Kostenstelle. Prüfe die gesamte Datei vor dem Start und sichere die Zuordnungen. Ein späterer Fehler rollt frühere Löschungen nicht zurück.
===== Eingabedatei =====
PEP4 verlangt eine vorhandene Datei; der Dialog schlägt ''UmsatzKostenstellen.pep'' vor. Die Datei nutzt Semikolon als Trenner. In Anführungszeichen eingeschlossener Text wird als ein Feld gelesen. Der verwendete ''TextFieldParser'' erhält keinen ausdrücklich festgelegten Zeichensatz. Es gibt keinen Header-Skip und keine Prüfung der Feldzahl vor dem Zugriff. Unbekannte Satzkennungen bleiben unbeachtet.
^ Satzkennung ^ Aufbau nach Positionen ^ Wirkung ^
| ''3020'' | 1=Satzkennung; 2=Kostenstelle; 3=PEP-Gruppe; 4=''von''; 5=''bis''; 6=Faktor | Neue Zeile in ''UmsKstGr'' einfügen. |
| ''3021'' | 1=Satzkennung; 2=Kostenstelle | Alle Zuordnungen dieser Kostenstelle löschen. |
| ''3022'' | 1=Satzkennung | Gesamte Tabelle ''UmsKstGr'' leeren. |
Der Faktor wird direkt als Multiplikator gespeichert: ''1'' steht für den vollen Anteil, nicht für 1 %. Leere oder ungültige Datumsfelder werden zu SQL-NULL. Ein leeres ''bis'' kann über das berechnete Feld ''bis2'' bis 31.12.2099 reichen; ein leeres ''von'' passt bei späteren Datumsvergleichen nicht automatisch. Datum und Zahlformat hängen bei gültigen Textwerten von der Laufzeitkultur ab.
Die Satzkennung ''3021'' innerhalb der Datei ist ein Löschbefehl des Imports **3020**. Die Programmkennung **3021** bezeichnet dagegen einen Export. Diese beiden Bedeutungen dürfen nicht verwechselt werden.
===== Vorgehen =====
- Prüfe alle Satzkennungen und die Reihenfolge der Datei. Suche insbesondere nach ''3021'' und ''3022''.
- Sichere ''UmsKstGr'' und teste die Datei zuerst in einer isolierten Datenbankkopie.
- Öffne das Modul [[module:extras_schnittstellen|Schnittstellen]], wähle **Kostenstellen Umsatz** mit Kennung **3020** und klicke auf **Ausführen**.
- Wähle die Datei aus. Vergleiche danach die Zuordnungen nach Kostenstelle, Gruppe und Gültigkeitszeitraum.
===== Ergebnis und Grenzen =====
Satz ''3020'' fügt immer eine neue Zeile ein; er aktualisiert keine vorhandene Zuordnung. Ein reiner Wiederimport kann deshalb Duplikate erzeugen. Eine Gruppen-ID muss wegen des Fremdschlüssels als PEP-Gruppe vorhanden sein. Die Schnittstelle ändert ''Umsätze'' nicht unmittelbar; spätere Berechnungen können die neuen Zuordnungen lesen.
Die drei SQL-Befehle sind nicht durch eine gemeinsame Transaktion geschützt. Beim ersten Parser-, Konvertierungs- oder SQL-Fehler stoppt der Import; frühere Änderungen bleiben. Die Einstiegsmethode liefert im untersuchten Code auch nach einem fachlich erfolgreichen Lauf ''False''. Prüfe deshalb den tatsächlichen Tabellenstand und das Protokoll.
===== Technische Referenz =====
^ Merkmal ^ Wert ^
| Programmkennung | ''3020'' / ''ImpUmsatzKostenstellen'' |
| Einstieg | ''cSchnittKostenstellenUmsatz.Ausführen'' |
| Parameter | ''PFAD''; vorhandene Datei, Dialogvorschlag ''UmsatzKostenstellen.pep'' |
| Fachliche Tabelle | ''UmsKstGr''; INSERT oder DELETE nach Satzkennung |
| Geschriebene Felder bei 3020-Satz | ''Kst'', ''Gr'', ''von'', ''bis'', ''Prozent''; ''ID'' entsteht als Identity |
| Fachliches SQL | Drei direkte Befehle, keine Stored Procedure |
| Systemeinstellungen | ''GLOBAL_LOGLEVEL'' und ''GLOBAL_LOGLEVELEVLOG'' beeinflussen nur die Protokollierung; Standardwerte laut Code 50 und 0 |
===== Siehe auch =====
* [[schnittstellen:2010|Aprocon-Filialdatei übernehmen (2010)]]
* [[schnittstellen:schnittstellen|Übersicht der dokumentierten Schnittstellen]]
===== Prüfstand =====
Am 25.09.2026 statisch gegen den Quellcommit ''f1d82a003b62f2658f06eaa943dc685ab219bdf3'' geprüft. Kein Importlauf und kein konkreter produktiver Datenbankstand bestätigt.