Inhaltsverzeichnis
Schnittstelle 5324: GKKZa AZV — monatliche Arbeitszeitverschiebung als XML
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.ExportSchnittGKKAZV = 5324. Aktive feste Registrierung → cSchnittGKKZalAZV.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.
Parameter, XML und Aufruf
PFAD vorhandener Folder, kein Default. AusführungStart → SetPfad → SCHNITT_AZV_GKK (SqlCommand Text, SQL ohne Parameter, keine Timeout-Einstellung) → zwei Resultsets → BASE-Ende/Fehlerfrei. Kein Eingang oder direkter HTTP-Upload. StreamWriter zu yyyyMMdd_HHmmss_AZV.xml, XML UTF-8.
Wurzel ns0:MT_mdUpdateDirectRequest (zalaris.com/api/nonSAP/mdUpdateDirect), MessageID=Unixsekunden UTC, ModeA. Je Dataset ObjectTypeP/ObjectIDPerson/MethodP2012/OperationD(erstes) oderI(zweites), Structures.RecordIDID, P2012.PERNRPerson, ENDDA undBEGDA beide von-yyyyMMdd, SUBTY9PP + Monat1…9,A,B,C aus Datum, ANZHLWert mit Komma→Punkt. Kein XML-Escaping/XSD geprüft.
Datenfluss
SP liest DB-Schlüssel SCHNITT_GKKZA_Abw_MONATE (MIN/Fallback−1), ermittelt Startmonat. ITORGA-Abteilungswechsel/Zeile>1 und Abteilung0 → letzte bis+1 als MinDat, sonst01.01.2000. Aus JahresPlan Monat1…12 ab Start: SummeAzVerschiebung jePerson/Monat, nur ungleich0.
SCHNITT_AZV ist Differenzspeicher: erstes Resultset aus altem Bestand mit Person/Mindat-Filter → fehlende/geänderte alte Werte löschen → bereits gleiche Lieferung entfernen → neue Person/Datum/Wert/ts einfügen → zweites Resultset mit Person/Mindat ausgeben. Vorangehende Löschung/INSERT hat nicht denselben Mindat-Ausgabefilter. Keine Transaktion und kein ACK, Dateischreibfehler kann bereits markierten Bestand hinterlassen.
SCHNITT_ZAL_ZE_DATMIN wird per Datumsmuster zu DatMin berechnet, aber nirgendwo benutzt: keine wirksame Datenuntergrenze. Dies im Einstellungsindex als gelesen/ohne Filterwirkung halten.
Befunde
⚠ Differenzspeicher vor fertigem XML geändert; Mindat-Ausgabe vsLöschumfang, ungenutztesDatMin und identische BEGIN/END-Date prüfen. Synthetischer XML/XSD-/Wiederholungsvertrag Q19. Kein bestätigter Transport.
Einstellungen und gemeinsame Nebenwirkungen
Gemeinsames Profil: BASE (interne Referenz).
| Beziehung | Schlüssel / Variable | Default | Einflussweg | Wirkung | Beleg |
|---|---|---|---|---|---|
| 5324-S001 | SCHNITT_ZAL_ZE_DATMIN / SCHNITT_ZAL_ZE_DATMIN | −30 | VB Datumsmuster | Gelesen/ausgewertet, DatMin danach ungenutzt; KEIN SQL-/Dateifilter | B,SET |
| 5324-S002 | SCHNITT_GKKZA_Abw_MONATE / SQL @Monate | −1 | SQL DB-MIN | Startmonat für JahresPlan/Differenzbestand | SQL |
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 |
|---|---|---|---|---|---|
| 5324-D001 | EinstellungenZw.Einstellung | SELECT | Monatsversatz | SP | SQL |
| 5324-D002 | EinstellungenZw.Wert | SELECT | Monatsversatz | SP | SQL |
| 5324-D003 | ITORGA.PersonenStammID | SELECT | LAG/ROW_NUMBER nach bis2 und Wechsel zuAbteilung0; MinDat | SP | SQL |
| 5324-D004 | ITORGA.bis | SELECT | LAG/ROW_NUMBER nach bis2 und Wechsel zuAbteilung0; MinDat | SP | SQL |
| 5324-D005 | ITORGA.bis2 | SELECT | LAG/ROW_NUMBER nach bis2 und Wechsel zuAbteilung0; MinDat | SP | SQL |
| 5324-D006 | ITORGA.Abteilung | SELECT | LAG/ROW_NUMBER nach bis2 und Wechsel zuAbteilung0; MinDat | SP | SQL |
| 5324-D007 | Personen.PersonID | SELECT | #Personen für Ausgabefilter | SP | SQL |
| 5324-D008 | #Personen.PersonID | INSERT | Person und Organisationsgrenze | SELECT INTO | SQL |
| 5324-D009 | #Personen.MinDat | INSERT | Person und Organisationsgrenze | SELECT INTO | SQL |
| 5324-D010 | #Personen.PersonID | SELECT | Ausgabe ab letzter Grenze / Jahresanfang | Nur Resultsets | SQL |
| 5324-D011 | #Personen.MinDat | SELECT | Ausgabe ab letzter Grenze / Jahresanfang | Nur Resultsets | SQL |
| 5324-D012 | JahresPlan.PersonID | SELECT | Nichtnull Summe pro Monat | Monat1..12 und ab Start | SQL |
| 5324-D013 | JahresPlan.Jahr | SELECT | Nichtnull Summe pro Monat | Monat1..12 und ab Start | SQL |
| 5324-D014 | JahresPlan.Monat | SELECT | Nichtnull Summe pro Monat | Monat1..12 und ab Start | SQL |
| 5324-D015 | JahresPlan.AzVerschiebung | SELECT | Nichtnull Summe pro Monat | Monat1..12 und ab Start | SQL |
| 5324-D016 | #Lieferung.PersonID | INSERT | DatumMonatserster,ArtAZ,WertSumme | SELECT INTO | SQL |
| 5324-D017 | #Lieferung.Datum | INSERT | DatumMonatserster,ArtAZ,WertSumme | SELECT INTO | SQL |
| 5324-D018 | #Lieferung.Art | INSERT | DatumMonatserster,ArtAZ,WertSumme | SELECT INTO | SQL |
| 5324-D019 | #Lieferung.Wert | INSERT | DatumMonatserster,ArtAZ,WertSumme | SELECT INTO | SQL |
| 5324-D020 | #Lieferung.PersonID | SELECT | Differenzvergleich/NeuINSERT | SP | SQL |
| 5324-D021 | #Lieferung.Datum | SELECT | Differenzvergleich/NeuINSERT | SP | SQL |
| 5324-D022 | #Lieferung.Wert | SELECT | Differenzvergleich/NeuINSERT | SP | SQL |
| 5324-D023 | #Lieferung.— Zeilen | DELETE | Unveränderte Lieferung entfernen | SP | SQL |
| 5324-D024 | SCHNITT_AZV.ID | SELECT | Differenzvergleich sowie XML-RecordID/Monat/Wert | SP | SQL |
| 5324-D025 | SCHNITT_AZV.Person | SELECT | Differenzvergleich sowie XML-RecordID/Monat/Wert | SP | SQL |
| 5324-D026 | SCHNITT_AZV.Datum | SELECT | Differenzvergleich sowie XML-RecordID/Monat/Wert | SP | SQL |
| 5324-D027 | SCHNITT_AZV.Wert | SELECT | Differenzvergleich sowie XML-RecordID/Monat/Wert | SP | SQL |
| 5324-D028 | SCHNITT_AZV.— Zeilen | DELETE | Nicht mehr aktuelle Werte ab Startmonat | Kein #Personen.Mindat-Filter | SQL |
| 5324-D029 | SCHNITT_AZV.Person | INSERT | Neue Monatswerte,GETDATE | Restliche #Lieferung | SQL |
| 5324-D030 | SCHNITT_AZV.Datum | INSERT | Neue Monatswerte,GETDATE | Restliche #Lieferung | SQL |
| 5324-D031 | SCHNITT_AZV.Wert | INSERT | Neue Monatswerte,GETDATE | Restliche #Lieferung | SQL |
| 5324-D032 | SCHNITT_AZV.ts | INSERT | Neue Monatswerte,GETDATE | Restliche #Lieferung | SQL |
| 5324-D033 | SCHNITT_AZV.ID | IDENTITY | Neue RecordID; PK(Person,Datum) | DDL0868 | DDL |
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 | 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
| Kürzel | Quelldatei am geprüften Commit |
|---|---|
| E | PEP4/ZW/Allgemein.vb |
| P | PEP4/cSchnittstellen/Programme/cProgramme.vb |
| PRJ | PEP4/cSchnittstellen/cSchnittstellen.vbproj |
| B | PEP4/cSchnittstellen/Programme/Schnittstellen/GKK/ZAL/cSchnittGKKZalAZV.vb |
| SQL | Sqlfiles/PEP4Functions/SCHNITT_AZV_GKK.sql |
| SET, BASE:SET | PEP4/ZW/Einstellungen/cEinstellungenZw.vb |
| DATE | SubProjekte/RibbonTools/cRibbonDatum/cDatumMuster.vb |
| DDL | Sqlfiles/PEP4Update/update_0868.sql |
| BASE:BASE | PEP4/cSchnittstellen/Programme/Schnittstellen/cSchnitt_Basis.vb |
| BASE:MAIL | PEP4/cKommunikation/cMail.vb |
| BASE:API | PEP4/cSchnittstellen/cApiCall.vb |
| BASE:LOG | PEP4/cTools/cInfoTools.vb |
| BASE:INIT | PEP4/ZW/Einstellungen/cSetting.vb |
| BASE:USER | Sqlfiles/PEP4Functions/fnUserId.sql |
| BASE:DOC | PEP4/cHilfsprogramme/cDocument.vb |
Siehe auch: Übersicht der Schnittstellen. Keine Ausführung oder Codekorrektur.