Inhaltsverzeichnis

Schnittstelle 5319: KaDeWeZa Istzeiten — tägliche SAP-Datei

Dokumentation ins Wiki übernommen am 02.10.2026. Das ist keine Laufzeitabnahme.

Diese technische Referenz beschreibt die Eingänge, Datenwirkung und Ausgänge dieser Kennung im statisch geprüften Desktop-Quellenstand. Nutzerprüfung offen.

Dokumentiert / statisch geprüft: 2026-10-02. Statisch dokumentiert; Nutzerprüfung offen. Keine Schnittstelle ausgeführt.

Identität und Quellenstand

eProgramm.ImportKaDeWeZaIstzeiten = 5319. Aktive feste Registrierung → cSchnittKaDeWeZaIstImport.Ausführen (E,P). Projekteinschluss der genannten VB-Quellen geprüft (PRJ). Active=True, InAutomatik=true, ManuellerAufruf=true, NurAufServer=false. Kennzeichen beschreiben Registrierung/Defaults, nicht eingerichtete Jobs; Run selbst prüft keine Serverbindung.

seegerstefan/pep4desktop, master, Commit f1d82a003b62f2658f06eaa943dc685ab219bdf3. Lokale .DS_Store-/cPep/PEP-Abweichungen nicht vermischt; Fachquellen cSchnittstellen/ZW/Sqlfiles unverändert. Kein Remote-/Installationsabgleich.

Eingangsdatei und Ablauf

PFAD vorhandener Folder; IMP erstellen. Alle *_SAP_PEP4_TAEGLISTAZ.csv (nicht sortiert). Encoding.Default, Semikolon, Trim; erste Zeile stets übersprungen. Fünf tatsächlich verwendete Felder:1 PersonID,2 Datum yyyyMMdd,3 Kommen HH:mm,4 Gehen HH:mm,5 cStatus. Beide Uhrzeiten auf dasselbe Datum, keine Nachtverschiebung oder Feldzahlprüfung.

Je Datei global TRUNCATE IMPORT.dbo.Istzeiten_KaDeWe, INSERT(PersonID,Datum1,Datum2,cStatus), dann SCHNITT_KADEWEZA_Istzeiten; MoveFile nach IMP auch nach intern gefangenen Zeilenfehlern. CommandTimeout0. Update0524 stellt Tabelle nur bei vorhandener IMPORT-DB her und verschluckt DDL-Fehler; RecordType bleibt NULL. Kein Calc im aktiven VB/SQL-Pfad; auskommentierte KaDeWe_Berechnung_Istzeiten nicht zuschreiben.

SQL und Ziel

SP leert SCHNITT_Zeitereignis_In, fügt K(Datum1)/G(Datum2) hinzu. Beide INSERTs prüfen nur Datum1-Uhrzeit>0, nicht Datum2. Folge-SP SCHNITT_KADEWEZA_Istzeiten2: #PersonTage aus gelieferten Ereignissen; auf diesen Tagen Terminal0-Ereignisse mit exaktem Match aktivieren, fehlende softlöschen; neue Ereignisse je Person/Minute/Kennung anfügen. Insert-Deduplikation filtert Terminal nicht, Update-Match nutzt exakten Timestamp. Bekannte Person für INSERT. DatumDate ist computed CONVERT(date,Datum), Update0584.

SCHNITT_ZerfStatus je Person/DATE(Datum1): vorhandenen Status bei cStatus1→0 sonst−2; neuen Status bei1→0 sonst−1, neue Zeile nur cStatus nichtNULL. Keine allgemeine CStatus-Aktualisierung aus Kommentaren behaupten.

Befunde

⚠ Null-/Mitternachtslieferung erzeugt keinen #PersonTag und kann deshalb alte Terminal0-Ereignisse nicht löschen. G wird nur nach Kommenfilter angelegt; Nachtintervall, ungesicherte Feldzahl, Sekunden-vs-Minutenmatch und unsortierter Vollersatz prüfen. Keine Gesamttransaktion, Teilimport wird archiviert. Q19 Liefer-/Schemaabnahme.

Einstellungen und gemeinsame Nebenwirkungen

Gemeinsames Profil: BASE (interne Referenz).

Keine fachliche ZW-Einstellung im erreichbaren Einstieg nachgewiesen; gemeinsame Meldeeinstellungen nur über die ausdrücklich genannten Profile.

Defaults sind keine Livewerte. Melde-/Datei-/DB-Wirkungen sind nicht atomar.

Feldbeziehungen

DB-Rolle PEP4-Anmeldedatenbank, soweit nicht ausdrücklich Aprocon oder Import angegeben. Unqualifizierte Objektschemata nicht als Live-dbo-Vertrag behaupten. INSERT-Defaults/Computed-Spalten sind gesonderte Schemawirkung, kein explizites UPDATE.

Beziehung Tabelle.Feld Operation Datenfluss / Verwendung Bedingung Beleg
5319-D001 IMPORT.dbo.Istzeiten_KaDeWe.— Zeilen TRUNCATE Globales Staging je Datei Externe IMPORT-Datenbank erforderlich B
5319-D002 IMPORT.dbo.Istzeiten_KaDeWe.PersonID INSERT Felder1–5; gemeinsames Tagesdatum Kein Nachtwechsel B
5319-D003 IMPORT.dbo.Istzeiten_KaDeWe.Datum1 INSERT Felder1–5; gemeinsames Tagesdatum Kein Nachtwechsel B
5319-D004 IMPORT.dbo.Istzeiten_KaDeWe.Datum2 INSERT Felder1–5; gemeinsames Tagesdatum Kein Nachtwechsel B
5319-D005 IMPORT.dbo.Istzeiten_KaDeWe.cStatus INSERT Felder1–5; gemeinsames Tagesdatum Kein Nachtwechsel B
5319-D006 IMPORT.dbo.Istzeiten_KaDeWe.PersonID SELECT K/G und ZerfStatus SQL SQL
5319-D007 IMPORT.dbo.Istzeiten_KaDeWe.Datum1 SELECT K/G und ZerfStatus SQL SQL
5319-D008 IMPORT.dbo.Istzeiten_KaDeWe.Datum2 SELECT K/G und ZerfStatus SQL SQL
5319-D009 IMPORT.dbo.Istzeiten_KaDeWe.cStatus SELECT K/G und ZerfStatus SQL SQL
5319-D010 SCHNITT_Zeitereignis_In.— Zeilen TRUNCATE Globaler Ereigniseingang SP SQL
5319-D011 SCHNITT_Zeitereignis_In.PersonID INSERT K/G; beide prüfen Datum1-Uhrzeit SP SQL
5319-D012 SCHNITT_Zeitereignis_In.Datum INSERT K/G; beide prüfen Datum1-Uhrzeit SP SQL
5319-D013 SCHNITT_Zeitereignis_In.Kennung INSERT K/G; beide prüfen Datum1-Uhrzeit SP SQL
5319-D014 SCHNITT_Zeitereignis_In.PersonID SELECT Tag-/Timestamp-/Minutenmatch FolgeSP SQL2
5319-D015 SCHNITT_Zeitereignis_In.Datum SELECT Tag-/Timestamp-/Minutenmatch FolgeSP SQL2
5319-D016 SCHNITT_Zeitereignis_In.Kennung SELECT Tag-/Timestamp-/Minutenmatch FolgeSP SQL2
5319-D017 #PersonTage.PersonID INSERT DISTINCT Person/DATE(Datum) aus Ereignisstaging SELECT INTO SQL2
5319-D018 #PersonTage.Datum INSERT DISTINCT Person/DATE(Datum) aus Ereignisstaging SELECT INTO SQL2
5319-D019 #PersonTage.PersonID SELECT Aktiv-/Softlösch-Tagesfilter FolgeSP SQL2
5319-D020 #PersonTage.Datum SELECT Aktiv-/Softlösch-Tagesfilter FolgeSP SQL2
5319-D021 Zeitereignisse.PersonID SELECT UPDATE exakt bei Terminal0; INSERT-Deduplikation pro Minute ohne Terminalfilter FolgeSP SQL2
5319-D022 Zeitereignisse.Datum SELECT UPDATE exakt bei Terminal0; INSERT-Deduplikation pro Minute ohne Terminalfilter FolgeSP SQL2
5319-D023 Zeitereignisse.DatumDate SELECT UPDATE exakt bei Terminal0; INSERT-Deduplikation pro Minute ohne Terminalfilter FolgeSP SQL2
5319-D024 Zeitereignisse.Kennung SELECT UPDATE exakt bei Terminal0; INSERT-Deduplikation pro Minute ohne Terminalfilter FolgeSP SQL2
5319-D025 Zeitereignisse.Terminal SELECT UPDATE exakt bei Terminal0; INSERT-Deduplikation pro Minute ohne Terminalfilter FolgeSP SQL2
5319-D026 Zeitereignisse.geloescht UPDATE 1 für fehlende und0 für exakt gelieferte Terminal0-Ereignisse Nur #PersonTage SQL2
5319-D027 Zeitereignisse.PersonID INSERT Neu; GETDATE,Terminal0 Bekannte Person, noch nicht proMinute vorhanden SQL2
5319-D028 Zeitereignisse.Datum INSERT Neu; GETDATE,Terminal0 Bekannte Person, noch nicht proMinute vorhanden SQL2
5319-D029 Zeitereignisse.Kennung INSERT Neu; GETDATE,Terminal0 Bekannte Person, noch nicht proMinute vorhanden SQL2
5319-D030 Zeitereignisse.ts INSERT Neu; GETDATE,Terminal0 Bekannte Person, noch nicht proMinute vorhanden SQL2
5319-D031 Zeitereignisse.Terminal INSERT Neu; GETDATE,Terminal0 Bekannte Person, noch nicht proMinute vorhanden SQL2
5319-D032 Zeitereignisse.DatumDate COMPUTED DATE(Datum) Insert D584
5319-D033 Personen.PersonID SELECT Bekannte Person FolgeSP INSERT SQL2
5319-D034 SCHNITT_ZerfStatus.PersonID SELECT Person-/Tag-Schlüssel SQL SQL
5319-D035 SCHNITT_ZerfStatus.Datum SELECT Person-/Tag-Schlüssel SQL SQL
5319-D036 SCHNITT_ZerfStatus.ZerfStatus UPDATE cStatus1→0 sonst−2 Vorhandene Person-/Tag-Zeile SQL
5319-D037 SCHNITT_ZerfStatus.PersonID INSERT cStatus1→0 sonst−1 Fehlend, cStatus nichtNULL SQL
5319-D038 SCHNITT_ZerfStatus.Datum INSERT cStatus1→0 sonst−1 Fehlend, cStatus nichtNULL SQL
5319-D039 SCHNITT_ZerfStatus.ZerfStatus INSERT cStatus1→0 sonst−1 Fehlend, cStatus nichtNULL SQL

Teststatus und Pflege

Keine Laufzeit-/Live-Schema-/Lieferformat-Abnahme, keine Codekorrektur. Q02 gilt für kundenspezifische Trigger/Constraints/DLLs/Jobs; weitere Grenzen siehe oben und Fragen (interne Referenz). Nicht indizierte Folgefelder einer Teilanalyse sind unbekannt, nicht wirkungslos.

Gemeinsame Nebenwirkungen BASE

Einstellungen

Beziehung Schlüssel / Variable Default Einfluss Wirkung Beleg
BASE-S001 MAIL_SCHNITTSTELLEONSUCCESS / MAIL_SchnittstelleOnSuccess False Basis Direkte Mail bei Result 0 oder1, nicht MANUELL/SILENT BASE:BASE, BASE:SET
BASE-S002 MAIL_SCHNITTSTELLEONERROR / MAIL_SchnittstelleOnError False Basis Direkte Mail bei Result 1 oder2, nicht MANUELL/SILENT BASE:BASE, BASE:SET
BASE-S003 SCHNITT_MELDUNG_SchnittstelleOnSuccess / SCHNITT_MELDUNG_SchnittstelleOnSuccess False Basis/API sendmail=1 bei Result 0 oder1, nicht MANUELL/SILENT; API-Meldung sonst weiterhin sendmail=0 BASE:BASE, BASE:SET
BASE-S004 SCHNITT_MELDUNG_SchnittstelleOnError / SCHNITT_MELDUNG_SchnittstelleOnError True Basis/API sendmail=1 bei Result 1 oder2, nicht MANUELL/SILENT BASE:BASE, BASE:SET
BASE-S005 MAIL_SCHNITTSTELLETO / MAIL_SchnittstelleTo leer Mail Ersatz bei leerem MAILTO; Semikolonliste BASE:MAIL, BASE:SET
BASE-S006 MAIL_SMTP_SERVER / MAIL_SMTPServer leer SMTP Server für direkten Versand BASE:MAIL, BASE:SET
BASE-S007 MAIL_USER / MAIL_User leer SMTP Nichtleer setzt NetworkCredential und überschreibt Defaultcredentials BASE:MAIL, BASE:SET
BASE-S008 MAIL_PASS / MAIL_Pass leer; verschlüsselte Einstellung SMTP Passwort für explizite Credentials; kein Geheimnis dokumentiert BASE:MAIL, BASE:SET
BASE-S009 MAIL_USEDEFAULTCREDENTIALS / MAIL_UseDefaultCredentials False SMTP SmtpClient.UseDefaultCredentials; ggf. durch MAIL_USER überschrieben BASE:MAIL, BASE:SET
BASE-S010 MAIL_SSL / MAIL_SSL True SMTP SmtpClient.EnableSsl BASE:MAIL, BASE:SET
BASE-S011 MAIL_TESTADRESSE / MAIL_TestAdresse nichtleere Testadresse im Quellcode (Wert bewusst nicht kopiert) SMTP Nichtleer ersetzt tatsächlichen To-Empfänger, auch wenn MAILTO gesetzt BASE:MAIL, BASE:SET
BASE-S012 MAIL_FROM / MAIL_From leer SMTP Absenderadresse BASE:MAIL, BASE:SET
BASE-S013 MAIL_FROM_NAME / MAIL_FromName leer SMTP Absendername BASE:MAIL, BASE:SET
BASE-S014 GLOBAL_LOGLEVEL / GLOBAL_LOGLEVEL 50 Logging Persistenz bei InfoLevel>=Schwelle; Start/Erfolg51, ImportError102 BASE:INIT, BASE:LOG, BASE:SET
BASE-S015 GLOBAL_LOGLEVELEVLOG / GLOBAL_LOGLEVELEVENTLOG 0 Logging Eventlog bei Level>Schwelle, Schwelle>0 und Level<200 BASE:INIT, BASE:LOG, BASE:SET

Datenbeziehungen

DB-Rolle Anmeldung; Logging über cInfoTools-Verbindung. Keine Geheimnisse/Livewerte. Indizes verknüpfen jede Mitglieds-ID mit diesen Beziehungen, auch wenn die Details nur einmal stehen.

Beziehung Tabelle.Feld Operation Datenfluss / Verwendung Bedingung Beleg
BASE-D001 Dokumente.oFilename INSERT MAIL_BODY Direkte Rückmeldung aktiviert BASE:MAIL
BASE-D002 Dokumente.oFilesize INSERT Byteanzahl Body Direkte Rückmeldung aktiviert BASE:MAIL
BASE-D003 Dokumente.Daten INSERT cFn.StringToByteArray(MailBody) Direkte Rückmeldung aktiviert BASE:MAIL
BASE-D004 Dokumente.UserID INSERT dbo.fnUserId() Direkte Rückmeldung aktiviert BASE:MAIL
BASE-D005 Dokumente.ts INSERT getdate() Direkte Rückmeldung aktiviert BASE:MAIL
BASE-D006 Outbox.mTo INSERT MAILTO oder MAIL_SCHNITTSTELLETO; je Semikolonadresse Direkte Rückmeldung aktiviert BASE:MAIL
BASE-D007 Outbox.mCc INSERT leer Direkte Rückmeldung aktiviert BASE:MAIL
BASE-D008 Outbox.mFrom INSERT leer Direkte Rückmeldung aktiviert BASE:MAIL
BASE-D009 Outbox.mSubject INSERT Statusabhängiger Betreff Direkte Rückmeldung aktiviert BASE:MAIL
BASE-D010 Outbox.mBodyID INSERT ID des gespeicherten Bodys Direkte Rückmeldung aktiviert BASE:MAIL
BASE-D011 Outbox.mBodyHtml INSERT False Direkte Rückmeldung aktiviert BASE:MAIL
BASE-D012 Outbox.mDelayUntil INSERT getdate() Direkte Rückmeldung aktiviert BASE:MAIL
BASE-D013 Outbox.mStatus INSERT 1 Direkte Rückmeldung aktiviert BASE:MAIL
BASE-D014 Outbox.mSize INSERT Bodyzeichenanzahl (ohne Anhänge) Direkte Rückmeldung aktiviert BASE:MAIL
BASE-D015 Outbox.refArt INSERT 0 Direkte Rückmeldung aktiviert BASE:MAIL
BASE-D016 Outbox.RefID INSERT 0 Direkte Rückmeldung aktiviert BASE:MAIL
BASE-D017 Outbox.MailArt INSERT 5 (SchnittstellenMeldung) Direkte Rückmeldung aktiviert BASE:MAIL
BASE-D018 Outbox.UserID INSERT fnUserId() Direkte Rückmeldung aktiviert BASE:MAIL
BASE-D019 Outbox.ts INSERT getdate() Direkte Rückmeldung aktiviert BASE:MAIL
BASE-D020 Outbox.ID SELECT SendOutbox(5): fällige Mails; auch frühere Outbox-Einträge derselben MailArt Versandpfad BASE:MAIL
BASE-D021 Outbox.mFrom SELECT SendOutbox(5): fällige Mails; auch frühere Outbox-Einträge derselben MailArt Versandpfad BASE:MAIL
BASE-D022 Outbox.mTo SELECT SendOutbox(5): fällige Mails; auch frühere Outbox-Einträge derselben MailArt Versandpfad BASE:MAIL
BASE-D023 Outbox.mCc SELECT SendOutbox(5): fällige Mails; auch frühere Outbox-Einträge derselben MailArt Versandpfad BASE:MAIL
BASE-D024 Outbox.mBodyID SELECT SendOutbox(5): fällige Mails; auch frühere Outbox-Einträge derselben MailArt Versandpfad BASE:MAIL
BASE-D025 Outbox.mSubject SELECT SendOutbox(5): fällige Mails; auch frühere Outbox-Einträge derselben MailArt Versandpfad BASE:MAIL
BASE-D026 Outbox.mBodyHtml SELECT SendOutbox(5): fällige Mails; auch frühere Outbox-Einträge derselben MailArt Versandpfad BASE:MAIL
BASE-D027 Outbox.mStatus SELECT SendOutbox(5): fällige Mails; auch frühere Outbox-Einträge derselben MailArt Versandpfad BASE:MAIL
BASE-D028 Outbox.mDelayUntil SELECT SendOutbox(5): fällige Mails; auch frühere Outbox-Einträge derselben MailArt Versandpfad BASE:MAIL
BASE-D029 Outbox.MailArt SELECT SendOutbox(5): fällige Mails; auch frühere Outbox-Einträge derselben MailArt Versandpfad BASE:MAIL
BASE-D030 Outbox.mSent UPDATE Erfolg → getdate() Versandpfad BASE:MAIL
BASE-D031 Outbox.mStatus UPDATE Erfolg → 0; Fehler → +1, bei Status 20 pauschal -1 ohne WHERE Versandpfad BASE:MAIL
BASE-D032 Outbox.mDelayUntil UPDATE Fehler → Staffel 2/5/10/30 Minuten; ab Status 12 CASE ohne ELSE → NULL Versandpfad BASE:MAIL
BASE-D033 Dokumente.ID SELECT Body/Anhänge laden Versandpfad BASE:MAIL, BASE:DOC
BASE-D034 Dokumente.oFilename SELECT Body/Anhänge laden Versandpfad BASE:MAIL, BASE:DOC
BASE-D035 Dokumente.Daten SELECT Body/Anhänge laden Versandpfad BASE:MAIL, BASE:DOC
BASE-D036 OutboxAttachment.OutBoxID SELECT Anhangszuordnung; diese Basisaufrufe erstellt selbst keine Anhänge SendOutbox kann ältere Mailart-5-Einträge versenden BASE:MAIL
BASE-D037 OutboxAttachment.DokumenteID SELECT Anhangszuordnung; diese Basisaufrufe erstellt selbst keine Anhänge SendOutbox kann ältere Mailart-5-Einträge versenden BASE:MAIL
BASE-D038 Pep3Log.UserID INSERT fnUserId() InfoLevel >= GLOBAL_LOGLEVEL, DB-Logging möglich BASE:LOG
BASE-D039 Pep3Log.Datum INSERT getdate() InfoLevel >= GLOBAL_LOGLEVEL, DB-Logging möglich BASE:LOG
BASE-D040 Pep3Log.Kurz INSERT Kurztext max255 InfoLevel >= GLOBAL_LOGLEVEL, DB-Logging möglich BASE:LOG
BASE-D041 Pep3Log.LogText INSERT Protokoll InfoLevel >= GLOBAL_LOGLEVEL, DB-Logging möglich BASE:LOG
BASE-D042 Pep3Log.Modul INSERT Modulname max50 InfoLevel >= GLOBAL_LOGLEVEL, DB-Logging möglich BASE:LOG
BASE-D043 Pep3Log.InfoLevel INSERT Start/Erfolg=51; Importfehler=102; weitere Mail-Meldungen InfoLevel >= GLOBAL_LOGLEVEL, DB-Logging möglich BASE:LOG
BASE-D044 tblUser.Name SELECT fnUserId: min(UserID) WHERE Name=RIGHT(SUSER_NAME(),25), sonst 0 Mail-/Logpersistenz BASE:USER
BASE-D045 tblUser.UserID SELECT fnUserId: min(UserID) WHERE Name=RIGHT(SUSER_NAME(),25), sonst 0 Mail-/Logpersistenz BASE:USER

Weitere Ausgänge und Grenzen

Logdateien unter ApplicationData/PEP/LogFiles; kontextabhängig Windows-Eventlog. Start/Erfolg InfoLevel 51, Importfehler 102; Schwellen beeinflussen Persistenz. SQL-fnUserId liest tblUser anhand RIGHT(SUSER_NAME(),25). API Send(MELDUNG) nutzt Anmeldungskontext und fest codierten Endpoint; dessen Serverimplementierung fehlt in dieser Quellenbasis (Q01).

Bekannte gemeinsame Befunde aus Pilot: Outbox-Retry bei Status 20 setzt mStatus=-1 ohne WHERE; Retry-CASE ab Status 12 ohne ELSE → NULL. Nicht korrigiert. Keine Kundendaten oder Zugangswerte übertragen.

Quellenverzeichnis

Siehe auch: Übersicht der Schnittstellen. Keine Ausführung oder Codekorrektur.