Inhaltsverzeichnis
Schnittstelle 1203: Sage LohnXL-Personalimport
Diese technische Referenz beschreibt die Eingänge, Ausgänge und aktiven Codepfade von Sage LohnXL-Personalimport. Sie ist keine Anleitung zur ungeprüften Ausführung.
Stand: 02.10.2026, Desktop-Commit f1d82a003b62f2658f06eaa943dc685ab219bdf3. Statisch dokumentiert; Nutzerprüfung offen. Kein Import, Datenbank- oder HTTP-Test.
Dokumentiert / statisch geprüft: 2026-10-02. Statisch dokumentiert; Nutzerprüfung offen. Keine Schnittstelle ausgeführt.
Identität und Quellenstand
eProgramm.ImpPersonalSageXL = 1203. Aktive feste Registrierung → cSchnittSageLohnXL.Ausführen; Projekteinschluss bestätigt (E,P,PRJ). Active=True, InAutomatik=True und ManuellerAufruf=True (Registrierung bzw. Klassendefault); NurAufServer=False (Default bzw. Registrierung). Keine Aussage über eingerichtete Automatik oder produktive Nutzung.
Zweck und Ablauf
Festbreitendatei → SCHNITT_SageLohnXL → dbo.SCHNITT_SageLohnXl_SP → Personen sowie fehlende ITZeit/ITORGA und Basisstämme. PFAD=FileImport; direkter Dictionary-Zugriff vor Try, keine Dateiprüfung. Staging wird global gelöscht, bevor StreamReader die Datei öffnet.
Dateivertrag
Encoding.Default; keine Trennzeichen/Quotes/Kopfzeile. Nur Zeilen mit Zeichen1–2='01' verarbeitet. Mindestens668 Zeichen für diese Satzart nötig; keine Längenprüfung, bereits Zeile<2 bricht ab. Positionen ab1, Ende inklusive:
| Feld | Von | Bis | Länge |
|---|---|---|---|
| FirmaID | 3 | 4 | 2 |
| PersonID | 5 | 13 | 9 |
| PersonalNummer | 66 | 74 | 9 |
| Aktiv | 96 | 96 | 1 |
| Anrede | 377 | 393 | 17 |
| Nachname | 117 | 146 | 30 |
| Vorname | 147 | 176 | 30 |
| Titel | 167 | 186 | 20 |
| Strasse | 187 | 216 | 30 |
| PLZ | 217 | 221 | 5 |
| Ort | 222 | 246 | 25 |
| Telefon | 247 | 261 | 15 |
| Mobil | 534 | 558 | 25 |
| 559 | 658 | 100 | |
| Gebdat | 265 | 274 | 10 |
| Geschlecht | 275 | 275 | 1 |
| Abteilung | 277 | 281 | 5 |
| AbteilungBez | 282 | 301 | 20 |
| Kostenstelle5 | 302 | 306 | 5 |
| KostenstelleBez | 307 | 326 | 20 |
| Funktion | 327 | 331 | 5 |
| Eintritt | 352 | 361 | 10 |
| Austritt | 362 | 371 | 10 |
| Waz | 372 | 376 | 5 |
| WazTarif | 491 | 495 | 5 |
| WazIndividuell | 496 | 500 | 5 |
| EndeProbe | 501 | 510 | 10 |
| Befristung | 511 | 520 | 10 |
| Kostenstelle10 | 659 | 668 | 10 |
Strings werden überwiegend Trim verarbeitet; Zahlen implizit SQL-Parameterkonvertierung. Datumsstrings '00.00.0000'→NULL erst in SP, andere Datumswerte SQL-kulturabhängig.
SQL-Wirkung und Befunde
Personen nach PersonID anlegen/aktualisieren; Mapping unten. ITZeit nur bei überhaupt keinem Person-Zeitsatz neu: heute, RMID1, RMAZPlan1, Waz/WazTarif, Auszahlung1. ITORGA entsprechend nur wenn kein Orga-Satz existiert: heute/FirmaID/Abteilung/Hierarchiestufe1. Vorhandene IT-Sätze bleiben unverändert. Fehlende Filialen/Abteilungen aus Nummern; Auszahlungsgruppe/Hierarchiestufe1 Standard. Kein Rechenlauf/Archiv.
1203-F01: Vorname liest30 Zeichen, U481 erlaubt nvarchar20; lange Werte können SQL-Fehler auslösen. 1203-F02: Vorname (147–176) und Titel (167–186) überlappen zehn Zeichen; tatsächlicher Liefervertrag Q13. Weitere Stagingfelder (u.a. Titel/PersonalNummer/Geschlecht) werden von SP nicht auf Personen übertragen.
Standard30s, keine SQL_TIMEOUT-Zuweisung, keine Transaktion. Fehler→MsgBox/False, normal True. Kein BASE oder LEGACY-Profil. FK-vorausgesetzte RM/Plan1 werden hier nicht angelegt, Installation Q02. Test: kurze Sätze, langes Vorname, bestehende Zeit-/Orgahistorie, Fehler nach Reset.
Systemeinstellungen und gemeinsame Nebenwirkungen
Kein BASE-/LEGACY-Profil: direkter MsgBox-Fehlerpfad.
Keine zusätzliche fachliche ZW-Einstellung im lokalen Importpfad gelesen. Timeoutwerte stehen im Betriebsabschnitt, nicht automatisch SQL_TIMEOUT zuordnen.
Fachdaten werden ohne gemeinsame Transaktion verarbeitet. Defaults sind keine Livewerte.
Feldbeziehungen
Unqualifizierte Fachobjekte in der Anmeldedatenbank; Import.dbo ausdrücklich Importdatenbank. Dateifelder stehen separat im Dateivertrag.
| Beziehung | Tabelle.Feld | Operation | Datenfluss / Verwendung | Bedingung | Beleg |
|---|---|---|---|---|---|
| 1203-D001 | SCHNITT_SageLohnXL.— Zeilen | DELETE | Gesamtes Staging | Vor Fileöffnen | B |
| 1203-D002 | SCHNITT_SageLohnXL.FirmaID | INSERT | Dateiposition3 bis4 | Satzart01 | B |
| 1203-D003 | SCHNITT_SageLohnXL.PersonID | INSERT | Dateiposition5 bis13 | Satzart01 | B |
| 1203-D004 | SCHNITT_SageLohnXL.PersonalNummer | INSERT | Dateiposition66 bis74 | Satzart01 | B |
| 1203-D005 | SCHNITT_SageLohnXL.Aktiv | INSERT | Dateiposition96 bis96 | Satzart01 | B |
| 1203-D006 | SCHNITT_SageLohnXL.Anrede | INSERT | Dateiposition377 bis393 | Satzart01 | B |
| 1203-D007 | SCHNITT_SageLohnXL.Nachname | INSERT | Dateiposition117 bis146 | Satzart01 | B |
| 1203-D008 | SCHNITT_SageLohnXL.Vorname | INSERT | Dateiposition147 bis176 | Satzart01 | B |
| 1203-D009 | SCHNITT_SageLohnXL.Titel | INSERT | Dateiposition167 bis186 | Satzart01 | B |
| 1203-D010 | SCHNITT_SageLohnXL.Strasse | INSERT | Dateiposition187 bis216 | Satzart01 | B |
| 1203-D011 | SCHNITT_SageLohnXL.PLZ | INSERT | Dateiposition217 bis221 | Satzart01 | B |
| 1203-D012 | SCHNITT_SageLohnXL.Ort | INSERT | Dateiposition222 bis246 | Satzart01 | B |
| 1203-D013 | SCHNITT_SageLohnXL.Telefon | INSERT | Dateiposition247 bis261 | Satzart01 | B |
| 1203-D014 | SCHNITT_SageLohnXL.Mobil | INSERT | Dateiposition534 bis558 | Satzart01 | B |
| 1203-D015 | SCHNITT_SageLohnXL.Mail | INSERT | Dateiposition559 bis658 | Satzart01 | B |
| 1203-D016 | SCHNITT_SageLohnXL.Gebdat | INSERT | Dateiposition265 bis274 | Satzart01 | B |
| 1203-D017 | SCHNITT_SageLohnXL.Geschlecht | INSERT | Dateiposition275 bis275 | Satzart01 | B |
| 1203-D018 | SCHNITT_SageLohnXL.Abteilung | INSERT | Dateiposition277 bis281 | Satzart01 | B |
| 1203-D019 | SCHNITT_SageLohnXL.AbteilungBez | INSERT | Dateiposition282 bis301 | Satzart01 | B |
| 1203-D020 | SCHNITT_SageLohnXL.Kostenstelle5 | INSERT | Dateiposition302 bis306 | Satzart01 | B |
| 1203-D021 | SCHNITT_SageLohnXL.KostenstelleBez | INSERT | Dateiposition307 bis326 | Satzart01 | B |
| 1203-D022 | SCHNITT_SageLohnXL.Funktion | INSERT | Dateiposition327 bis331 | Satzart01 | B |
| 1203-D023 | SCHNITT_SageLohnXL.Eintritt | INSERT | Dateiposition352 bis361 | Satzart01 | B |
| 1203-D024 | SCHNITT_SageLohnXL.Austritt | INSERT | Dateiposition362 bis371 | Satzart01 | B |
| 1203-D025 | SCHNITT_SageLohnXL.Waz | INSERT | Dateiposition372 bis376 | Satzart01 | B |
| 1203-D026 | SCHNITT_SageLohnXL.WazTarif | INSERT | Dateiposition491 bis495 | Satzart01 | B |
| 1203-D027 | SCHNITT_SageLohnXL.WazIndividuell | INSERT | Dateiposition496 bis500 | Satzart01 | B |
| 1203-D028 | SCHNITT_SageLohnXL.EndeProbe | INSERT | Dateiposition501 bis510 | Satzart01 | B |
| 1203-D029 | SCHNITT_SageLohnXL.Befristung | INSERT | Dateiposition511 bis520 | Satzart01 | B |
| 1203-D030 | SCHNITT_SageLohnXL.Kostenstelle10 | INSERT | Dateiposition659 bis668 | Satzart01 | B |
| 1203-D031 | SCHNITT_SageLohnXL.FirmaID | SELECT | Übernahme-/Existenzpfad; übrige Stagingfelder nicht verwendet | SQL-Pfad | SQL |
| 1203-D032 | SCHNITT_SageLohnXL.PersonID | SELECT | Übernahme-/Existenzpfad; übrige Stagingfelder nicht verwendet | SQL-Pfad | SQL |
| 1203-D033 | SCHNITT_SageLohnXL.Aktiv | SELECT | Übernahme-/Existenzpfad; übrige Stagingfelder nicht verwendet | SQL-Pfad | SQL |
| 1203-D034 | SCHNITT_SageLohnXL.Nachname | SELECT | Übernahme-/Existenzpfad; übrige Stagingfelder nicht verwendet | SQL-Pfad | SQL |
| 1203-D035 | SCHNITT_SageLohnXL.Vorname | SELECT | Übernahme-/Existenzpfad; übrige Stagingfelder nicht verwendet | SQL-Pfad | SQL |
| 1203-D036 | SCHNITT_SageLohnXL.Strasse | SELECT | Übernahme-/Existenzpfad; übrige Stagingfelder nicht verwendet | SQL-Pfad | SQL |
| 1203-D037 | SCHNITT_SageLohnXL.PLZ | SELECT | Übernahme-/Existenzpfad; übrige Stagingfelder nicht verwendet | SQL-Pfad | SQL |
| 1203-D038 | SCHNITT_SageLohnXL.Ort | SELECT | Übernahme-/Existenzpfad; übrige Stagingfelder nicht verwendet | SQL-Pfad | SQL |
| 1203-D039 | SCHNITT_SageLohnXL.Telefon | SELECT | Übernahme-/Existenzpfad; übrige Stagingfelder nicht verwendet | SQL-Pfad | SQL |
| 1203-D040 | SCHNITT_SageLohnXL.Mobil | SELECT | Übernahme-/Existenzpfad; übrige Stagingfelder nicht verwendet | SQL-Pfad | SQL |
| 1203-D041 | SCHNITT_SageLohnXL.Mail | SELECT | Übernahme-/Existenzpfad; übrige Stagingfelder nicht verwendet | SQL-Pfad | SQL |
| 1203-D042 | SCHNITT_SageLohnXL.Gebdat | SELECT | Übernahme-/Existenzpfad; übrige Stagingfelder nicht verwendet | SQL-Pfad | SQL |
| 1203-D043 | SCHNITT_SageLohnXL.Abteilung | SELECT | Übernahme-/Existenzpfad; übrige Stagingfelder nicht verwendet | SQL-Pfad | SQL |
| 1203-D044 | SCHNITT_SageLohnXL.Eintritt | SELECT | Übernahme-/Existenzpfad; übrige Stagingfelder nicht verwendet | SQL-Pfad | SQL |
| 1203-D045 | SCHNITT_SageLohnXL.Austritt | SELECT | Übernahme-/Existenzpfad; übrige Stagingfelder nicht verwendet | SQL-Pfad | SQL |
| 1203-D046 | SCHNITT_SageLohnXL.Waz | SELECT | Übernahme-/Existenzpfad; übrige Stagingfelder nicht verwendet | SQL-Pfad | SQL |
| 1203-D047 | SCHNITT_SageLohnXL.WazTarif | SELECT | Übernahme-/Existenzpfad; übrige Stagingfelder nicht verwendet | SQL-Pfad | SQL |
| 1203-D048 | SCHNITT_SageLohnXL.EndeProbe | SELECT | Übernahme-/Existenzpfad; übrige Stagingfelder nicht verwendet | SQL-Pfad | SQL |
| 1203-D049 | SCHNITT_SageLohnXL.Befristung | SELECT | Übernahme-/Existenzpfad; übrige Stagingfelder nicht verwendet | SQL-Pfad | SQL |
| 1203-D050 | Personen.PersonID | SELECT/INSERT | Staging.PersonID, nur bei Neuanlage | Nach PersonID; vorhandene Personen aktualisiert | SQL |
| 1203-D051 | Personen.Nachname | INSERT/UPDATE | Staging.Nachname | Nach PersonID; vorhandene Personen aktualisiert | SQL |
| 1203-D052 | Personen.Vorname | INSERT/UPDATE | Staging.Vorname | Nach PersonID; vorhandene Personen aktualisiert | SQL |
| 1203-D053 | Personen.GebDat | INSERT/UPDATE | Staging.Gebdat; 00.00.0000→NULL | Nach PersonID; vorhandene Personen aktualisiert | SQL |
| 1203-D054 | Personen.Eintritt | INSERT/UPDATE | Staging.Eintritt; Nulldatum→NULL | Nach PersonID; vorhandene Personen aktualisiert | SQL |
| 1203-D055 | Personen.Austritt | INSERT/UPDATE | Staging.Austritt; Nulldatum→NULL | Nach PersonID; vorhandene Personen aktualisiert | SQL |
| 1203-D056 | Personen.aktiv | INSERT/UPDATE | Staging.Aktiv0→0, sonst1 | Nach PersonID; vorhandene Personen aktualisiert | SQL |
| 1203-D057 | Personen.EndeProbe | INSERT/UPDATE | Staging.EndeProbe; Nulldatum→NULL | Nach PersonID; vorhandene Personen aktualisiert | SQL |
| 1203-D058 | Personen.EndeBefristung | INSERT/UPDATE | Staging.Befristung; Nulldatum→NULL | Nach PersonID; vorhandene Personen aktualisiert | SQL |
| 1203-D059 | Personen.Adresse1 | INSERT/UPDATE | Staging.Strasse | Nach PersonID; vorhandene Personen aktualisiert | SQL |
| 1203-D060 | Personen.PLZ | INSERT/UPDATE | Staging.PLZ | Nach PersonID; vorhandene Personen aktualisiert | SQL |
| 1203-D061 | Personen.Ort | INSERT/UPDATE | Staging.Ort | Nach PersonID; vorhandene Personen aktualisiert | SQL |
| 1203-D062 | Personen.Telefon1 | INSERT/UPDATE | Staging.Telefon | Nach PersonID; vorhandene Personen aktualisiert | SQL |
| 1203-D063 | Personen.Telefon2 | INSERT/UPDATE | Staging.Mobil | Nach PersonID; vorhandene Personen aktualisiert | SQL |
| 1203-D064 | Personen.Mail | INSERT/UPDATE | Staging.Mail | Nach PersonID; vorhandene Personen aktualisiert | SQL |
| 1203-D065 | AuszahlungsGruppen.ID | SELECT/INSERT | 1/Standard | Nur fehlende Stammsätze | SQL |
| 1203-D066 | AuszahlungsGruppen.Bezeichnung | SELECT/INSERT | 1/Standard | Nur fehlende Stammsätze | SQL |
| 1203-D067 | Filialen.FilialID | SELECT/INSERT | FirmaID/Nummer | Nur fehlende Stammsätze | SQL |
| 1203-D068 | Filialen.Bezeichnung | SELECT/INSERT | FirmaID/Nummer | Nur fehlende Stammsätze | SQL |
| 1203-D069 | Hierarchiestufen.HiID | SELECT/INSERT | 1/Standard | Nur fehlende Stammsätze | SQL |
| 1203-D070 | Hierarchiestufen.HiBezeichnung | SELECT/INSERT | 1/Standard | Nur fehlende Stammsätze | SQL |
| 1203-D071 | Abteilungen.AbteilungID | SELECT/INSERT | Abteilung/Nummer | Nur fehlende Stammsätze | SQL |
| 1203-D072 | Abteilungen.Bezeichnung | SELECT/INSERT | Abteilung/Nummer | Nur fehlende Stammsätze | SQL |
| 1203-D073 | ITZeit.PersonenStammID | SELECT | Existiert überhaupt ein Zeit-Satz? | SQL-Pfad | SQL |
| 1203-D074 | ITZeit.PersonenStammID | INSERT | PersonID/heute/1/1/Waz/WazTarif/1 | Nur Person ohne ITZeit, keine Updates | SQL |
| 1203-D075 | ITZeit.von | INSERT | PersonID/heute/1/1/Waz/WazTarif/1 | Nur Person ohne ITZeit, keine Updates | SQL |
| 1203-D076 | ITZeit.RMID | INSERT | PersonID/heute/1/1/Waz/WazTarif/1 | Nur Person ohne ITZeit, keine Updates | SQL |
| 1203-D077 | ITZeit.RMAZPlanID | INSERT | PersonID/heute/1/1/Waz/WazTarif/1 | Nur Person ohne ITZeit, keine Updates | SQL |
| 1203-D078 | ITZeit.WAZ | INSERT | PersonID/heute/1/1/Waz/WazTarif/1 | Nur Person ohne ITZeit, keine Updates | SQL |
| 1203-D079 | ITZeit.WazBasis | INSERT | PersonID/heute/1/1/Waz/WazTarif/1 | Nur Person ohne ITZeit, keine Updates | SQL |
| 1203-D080 | ITZeit.Auszahlung | INSERT | PersonID/heute/1/1/Waz/WazTarif/1 | Nur Person ohne ITZeit, keine Updates | SQL |
| 1203-D081 | ITORGA.PersonenStammID | SELECT | Existiert überhaupt Orga-Satz? | SQL-Pfad | SQL |
| 1203-D082 | ITORGA.PersonenStammID | INSERT | PersonID/heute/FirmaID/Abteilung/1 | Nur Person ohne ITORGA, keine Updates | SQL |
| 1203-D083 | ITORGA.von | INSERT | PersonID/heute/FirmaID/Abteilung/1 | Nur Person ohne ITORGA, keine Updates | SQL |
| 1203-D084 | ITORGA.Filiale | INSERT | PersonID/heute/FirmaID/Abteilung/1 | Nur Person ohne ITORGA, keine Updates | SQL |
| 1203-D085 | ITORGA.Abteilung | INSERT | PersonID/heute/FirmaID/Abteilung/1 | Nur Person ohne ITORGA, keine Updates | SQL |
| 1203-D086 | ITORGA.Hierarchiestufe | INSERT | PersonID/heute/FirmaID/Abteilung/1 | Nur Person ohne ITORGA, keine Updates | SQL |
Teststatus und Pflege
Keine Laufzeit-/Live-Schema-/Lieferformat-Abnahme. Fachbefunde und Grenzen siehe oben und Fragen (interne Referenz); kundenspezifische Trigger/Constraints, DLLs und Jobs bleiben Q02. Nutzerprüfung offen.
Quellen je Datei
Repository: seegerstefan/pep4desktop, master, obiger Commit. Je Datei ein Quellenlink; Kürzel in den Tabellen. Private Git-Quellen setzen Zugriffsrechte voraus.
Offene Abnahme
Externe Liefer-/API-Verträge und installierte Migrationen sind nicht bestätigt. Vor einem Test die beschriebenen Datenrisiken in einer isolierten Umgebung klären. Bei1214/1215 sind weitere Calc-/CalcPep-Feldwirkungen ausdrücklich noch nicht vollständig analysiert.