Inhaltsverzeichnis
Schnittstelle 8000: ADP-Fehlzeiten als Differenzdatei exportieren
Dokumentiert / statisch geprüft: 2026-10-02. Statisch dokumentiert; Nutzerprüfung offen. Keine Schnittstelle ausgeführt.
Identität und Quellenstand
eProgramm.ADPFehlzeiten = 8000. Aktive feste Registrierung → cSchnittAdp.ExportADPFehlzeiten (E,P). Registrierung und erreichbare Quellen geprüft; installierte Binärdateien ungeprüft. 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 und Auswahl
PFAD=Ausgabedatei (FileExport), StreamWriter StandardUTF8/überschreiben. Kein Verzeichnisaufbau, keine automatische Archivierung oder Importquittierung. Fehlender PFAD-Key loggt, läuft mit leerem Pfad weiter. Keine Fach-SP/ZW-Fachschlüssel/Calc; Standardcommandtimeout. Modul ist irreführend cSchnittApd.ExportADPFehlzeiten (Apd statt Adp).
Differenz gegen ADPLog.AZID+ChangeDate: zuerst alte Logeinträge, für die keine Arbeitszeiten mit identischerID/ChangeDate mehr existiert; anschließend aktuelle Arbeitszeiten ohne diesen Logmatch, mit nichtleerem Kennzeichen.Symbol, Personenstamm, gültiger ITORGA zum Kommen und Filial-Mandant. Keine Datumseinschränkung, keine geloescht-/Aktiv-/Fixierungsprüfung.
Ausgangsformat
Erste Zeile 'Export: '+lokale lange Datums-/Uhrzeitdarstellung, kein Feldheader. Danach je Satz28 semikolonabgeschlossene Positionen, keine Quotes/Escapes. Positionen1-basiert:1 [ZEITENKAL];2 DELETE oder INSERT;3 Arbeitszeit-ID (DELETE ADPLog.AZID);7 Mandant;9 Person/PNR achtstellig mit führenden Nullen;13 Kommen-/Logdatum yyyy-MM-dd;14 Gehen yyyy-MM-dd nurINSERT;19 Symbol links5;20 I fürINSERT bzw. Log.Kennzeichen fürDELETE;24 Korrektur 0.00 nurINSERT, kulturabhängiges Dezimalzeichen. Alle übrigen Positionen leer;28 schließt mit ';' ab. Keine Uhrzeitenexportfelder.
DB-Schreiben und Wiederholung
Nach DELETE-Sätzen entfernt der Code die betreffenden ADPLog-Zeilen. Nach INSERT-Dateisätzen wird die Quellselektion erneut ausgeführt und als ADPLog(AZID,ChangeDate,Mandant,PNR,Datum,Symbol,Kennzeichen) angefügt; Datum=Kommen, Kennzeichen='I', Symbol ungekürzt. Arbeitszeiten selbst werden nicht geändert. Geänderte Arbeitszeit produziert somit DELETE des alten und INSERT des neuen Stands.
Keine Transaktion zwischen Datei und DB und kein Empfangsbeleg von ADP. Logneuanlage erfolgt vor sw.Close: Fehler beim Flush/Close kann bereits protokollierte, aber nicht vollständig gelieferte Daten hinterlassen. Erneute Abfrage kann bei Paralleländerungen andere Datensätze loggen als geschrieben. Wiederholung unterdrückt geloggte Werte, unabhängig ob Datei verarbeitet wurde; unverarbeitete Datei wird überschrieben.
Fehler und Grenzen
Äußerer Catch→False/LEGACY, keine Rücknahme schon gelöschter/angefügter Logs oder geschriebener Teilfile. StreamWriter nicht Using; Fehler kann Datei offen/ungeflusht lassen. Zeit-ID/ChangeDate ist einziger Diffbeleg: Änderungen allein an Mandant/Name/Symbol ohne Arbeitszeiten.ChangeDate erzwingen keinen neuen Satz. Keine fachliche ADP-Abnahme.
Einstellungen und gemeinsame Nebenwirkungen
Gemeinsames Profil: LEGACY (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 |
|---|---|---|---|---|---|
| 8000-D001 | ADPLog.AZID | SELECT | Altstand für DELETE-Sätze/Anti-Join neuer Zeit-ID+ChangeDate | Unbegrenzter Datenzeitraum | B |
| 8000-D002 | ADPLog.ChangeDate | SELECT | Altstand für DELETE-Sätze/Anti-Join neuer Zeit-ID+ChangeDate | Unbegrenzter Datenzeitraum | B |
| 8000-D003 | ADPLog.Mandant | SELECT | Altstand für DELETE-Sätze/Anti-Join neuer Zeit-ID+ChangeDate | Unbegrenzter Datenzeitraum | B |
| 8000-D004 | ADPLog.PNR | SELECT | Altstand für DELETE-Sätze/Anti-Join neuer Zeit-ID+ChangeDate | Unbegrenzter Datenzeitraum | B |
| 8000-D005 | ADPLog.Datum | SELECT | Altstand für DELETE-Sätze/Anti-Join neuer Zeit-ID+ChangeDate | Unbegrenzter Datenzeitraum | B |
| 8000-D006 | ADPLog.Symbol | SELECT | Altstand für DELETE-Sätze/Anti-Join neuer Zeit-ID+ChangeDate | Unbegrenzter Datenzeitraum | B |
| 8000-D007 | ADPLog.Kennzeichen | SELECT | Altstand für DELETE-Sätze/Anti-Join neuer Zeit-ID+ChangeDate | Unbegrenzter Datenzeitraum | B |
| 8000-D008 | Arbeitszeiten.ID | SELECT | Anti-Join Altstand und neuer Fehlzeitenexport | Keine geloescht-/Fixierungs-/Zeitraumprüfung | B |
| 8000-D009 | Arbeitszeiten.Changedate | SELECT | Anti-Join Altstand und neuer Fehlzeitenexport | Keine geloescht-/Fixierungs-/Zeitraumprüfung | B |
| 8000-D010 | Arbeitszeiten.Korrektur | SELECT | Anti-Join Altstand und neuer Fehlzeitenexport | Keine geloescht-/Fixierungs-/Zeitraumprüfung | B |
| 8000-D011 | Arbeitszeiten.Person | SELECT | Anti-Join Altstand und neuer Fehlzeitenexport | Keine geloescht-/Fixierungs-/Zeitraumprüfung | B |
| 8000-D012 | Arbeitszeiten.Kommen | SELECT | Anti-Join Altstand und neuer Fehlzeitenexport | Keine geloescht-/Fixierungs-/Zeitraumprüfung | B |
| 8000-D013 | Arbeitszeiten.Gehen | SELECT | Anti-Join Altstand und neuer Fehlzeitenexport | Keine geloescht-/Fixierungs-/Zeitraumprüfung | B |
| 8000-D014 | Arbeitszeiten.Kennzeichen | SELECT | Anti-Join Altstand und neuer Fehlzeitenexport | Keine geloescht-/Fixierungs-/Zeitraumprüfung | B |
| 8000-D015 | Personen.PersonID | SELECT | Muss zum Arbeitszeiten.Person existieren | Neue Inserts | B |
| 8000-D016 | Kennzeichen.Kennzeichen | SELECT | Nichtleeres ADP-Symbol; Dateisymbol Left5 | Neue Inserts | B |
| 8000-D017 | Kennzeichen.Symbol | SELECT | Nichtleeres ADP-Symbol; Dateisymbol Left5 | Neue Inserts | B |
| 8000-D018 | ITORGA.PersonenStammID | SELECT | Filiale zum Arbeitszeiten.Kommen | Bei Mehrfachgültigkeit mehrere Zeilen möglich | B |
| 8000-D019 | ITORGA.Filiale | SELECT | Filiale zum Arbeitszeiten.Kommen | Bei Mehrfachgültigkeit mehrere Zeilen möglich | B |
| 8000-D020 | ITORGA.von | SELECT | Filiale zum Arbeitszeiten.Kommen | Bei Mehrfachgültigkeit mehrere Zeilen möglich | B |
| 8000-D021 | ITORGA.bis | SELECT | Filiale zum Arbeitszeiten.Kommen | Bei Mehrfachgültigkeit mehrere Zeilen möglich | B |
| 8000-D022 | Filialen.FilialID | SELECT | ADP-Mandant | Kein aktivFilter | B |
| 8000-D023 | Filialen.Mandant | SELECT | ADP-Mandant | Kein aktivFilter | B |
| 8000-D024 | ADPLog.— Zeilen | DELETE | Altlog ohne identische Arbeitszeit-ID+ChangeDate | Nach DELETE-Dateisätzen, vor INSERT-Dateisätzen | B |
| 8000-D025 | ADPLog.AZID | INSERT | Neue Zeit-ID/ChangeDate;Mandant;Person;Kommen;vollesSymbol;I | Zweite Abfrage nach Dateischreiben | B |
| 8000-D026 | ADPLog.ChangeDate | INSERT | Neue Zeit-ID/ChangeDate;Mandant;Person;Kommen;vollesSymbol;I | Zweite Abfrage nach Dateischreiben | B |
| 8000-D027 | ADPLog.Mandant | INSERT | Neue Zeit-ID/ChangeDate;Mandant;Person;Kommen;vollesSymbol;I | Zweite Abfrage nach Dateischreiben | B |
| 8000-D028 | ADPLog.PNR | INSERT | Neue Zeit-ID/ChangeDate;Mandant;Person;Kommen;vollesSymbol;I | Zweite Abfrage nach Dateischreiben | B |
| 8000-D029 | ADPLog.Datum | INSERT | Neue Zeit-ID/ChangeDate;Mandant;Person;Kommen;vollesSymbol;I | Zweite Abfrage nach Dateischreiben | B |
| 8000-D030 | ADPLog.Symbol | INSERT | Neue Zeit-ID/ChangeDate;Mandant;Person;Kommen;vollesSymbol;I | Zweite Abfrage nach Dateischreiben | B |
| 8000-D031 | ADPLog.Kennzeichen | INSERT | Neue Zeit-ID/ChangeDate;Mandant;Person;Kommen;vollesSymbol;I | Zweite Abfrage nach Dateischreiben | B |
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). Externe Betriebs-/Schemaabweichungen sind nicht durch die statische Analyse ausgeschlossen.
Gemeinsame Nebenwirkungen LEGACY
Block17 ergänzt6001/6002/6003/6004/6005 ausschließlich für direkte Info-/Dialog-/Logmeldungen; keine BASE-Mail/API. Parameter, Auswahl, Return und Fachwirkung jeID.
Block16 ergänzt explizit3031/3032/3041/3042/3060/3500 für die direkten Info-/Logmeldungen. Keine BASE-Vererbung bzw. Mail-/API-Nebenwirkung; Fachdateien/SQL/Returns pro ID prüfen. Keine pauschale Übernahme alter Dateiverträge.
Stand 2026-10-02; statisch geprüft am Commit f1d82a003b62f2658f06eaa943dc685ab219bdf3. Mitglieder ausschließlich durch expliziten Profilverweis: Block 07, IDs 2000, 2001, 2010, 2020, 3020, 3021, 3030, 3040, 3050, 3070.
Block 13: Profil für 1067,1070,1073 nur bezüglich direkter cInfoTools-Dialog-/Logmeldungen und ihrer zwei Einstellungen wiederverwendet. Deren Datei-/Rückgabe-/Timeout-/Folgeaufrufverträge stehen ausschließlich in den Einzelbeschreibungen; die nachfolgenden Block-07-PFAD-/Return-Aussagen sind keine pauschale Behauptung für diese drei neuen IDs.
Block14 nutzt LEGACY ausschließlich für direkte Info-/Logpfade von 1100,1101,1102,1103,1200,1207,1208,1209,1223. Keine pauschale Übernahme der nachfolgenden Block07-Datei-/Rückgabeverträge; konkrete Unterschiede stehen je ID. 1203 verwendet nur direkten MsgBox-Fehlerpfad und ist kein Mitglied.
Block15 ergänzt ausdrücklich 1224/1225/1226/1320/1360/1400/1401/2021/2023 sowie die Veraltet-Stubs 2028/2029/2032/2046/2047/2048. Nur direkte Info-/Logpfade; konkrete Datei-/Return-/Timeoutverträge stehen je ID. Die sechs Stubs erben als Klasse zwar BASE, instanziieren aber nichts und rufen deren Start/Ende nicht auf. 2022 hat keinen solchen Pfad.
Abgrenzung und Ablauf
Die belegten LEGACY-Einstiege rufen cSchnitt_Basis.Start/Ende nicht auf. Die ursprünglichen Block-07-Klassen erben auch nicht von der Basis; für spätere statische Stubs gilt dagegen nur die fehlende Start-/Ende-Ausführung. Deshalb keine BASE-Mail-/API-/Outboxbeziehungen übernehmen. MAILTO wird zwar von cProgramm angelegt, aber hier nicht ausgewertet; ebenso keine fachliche Auswertung von MANUELL oder SILENT. RunWithDialog setzt MANUELL. Dialogunterdrückung kommt aus Settings.Info.SupressDialogs (Clientkonstruktor False, Worker True), kein belegter ZW-Schlüssel.
Die folgenden Datei-/Return-Aussagen gelten für Block 07, nicht pauschal für spätere Profilmitglieder. PFAD ist FileImport, auch bei den Exporten 2001/3021: vorhandene Datei erforderlich, OpenFileDialog statt SaveFileDialog. Der lokale Registrywert PEP3/PFADESCHNITT/<ID> speichert den zuletzt verwendeten Ordner; dies ist keine serverseitige Systemeinstellung. Fehlender PFAD-Schlüssel ergibt False mit Fehlermeldung. Value.ToString bei Nothing liegt vor dem Fach-Try und kann ungefangen abbrechen. Datei-Existenzprüfung und Startmeldung liegen ebenfalls davor.
Meldungen: ShowProgrammStart/ShowProgrammEndeSuccessDialog mit Level 51, ShowProgrammEndeErrorDialog 102, ShowExceptionDialog 105 → ZeigeInfoEvent, ggf. Dialog, Log. Kein Nachweis über externe Event-Abonnentenwirkungen. Dialog kann unterdrückt sein, Logging bleibt separat. Die acht Ausführen-Funktionen außer 2010/3070 haben keinen abschließenden Return und liefern deshalb Boolean False, auch wenn Daten geändert wurden. 2020/3020 und die beiden Exporte haben zusätzlich im Fachhelfer keinen Return; dort wird bereits Success=False und ein Fehlerdialog gewählt. 2000/3030/3040/3050 können Erfolg melden und dennoch False liefern.
Einstellungen
| Beziehung | Schlüssel / Variable | Default | Einfluss | Wirkung | Beleg |
|---|---|---|---|---|---|
| LEGACY-S001 | GLOBAL_LOGLEVEL / GLOBAL_LOGLEVEL | 50 | Init → Info.LogLevel | Meldung ab einschließlich Grenzwert in Datei/DB; verändert keine Fachdaten | LEGACY:SET, LEGACY:INIT, LEGACY:INFO |
| LEGACY-S002 | GLOBAL_LOGLEVELEVLOG / GLOBAL_LOGLEVELEVENTLOG | 0 | Init → Info.LogLevelEvLog | Windows-Ereignisprotokoll nur bei Level > Grenze, Grenze > 0 und Level < 200 | LEGACY:SET, LEGACY:INIT, LEGACY:INFO |
Beide gezeigten Settings-Konstruktoren setzen AlwaysToFile=True. Oberhalb LogLevel werden Datei UND DB versucht; bei False nur DB, Datei als Fehlerfallback. Datei unter ApplicationData/PEP/LogFiles/yyyyMMdd_peplog.txt (Append). DB-Fehler werden als False abgefangen, verhindern nicht zwingend den Import. EventLog-Fehler werden geschluckt. Direkte Fachcommands des Block 07 setzen kein Timeout; SQL_TIMEOUT ist in diesen zehn Pfaden nicht gelesen. Keine zusätzliche fachliche ZW-Einstellung nachgewiesen, auch nicht in spCalcUmsatzPlan.
Datenbeziehungen
DB-Rolle PEP4-Anmeldedatenbank. Log schreibt über eigene Verbindung; nicht atomar mit Fachoperationen. fnUserId liest minimalen UserID zum rechten 25-Zeichen-Teil von SUSER_NAME(), sonst 0.
| Beziehung | Tabelle.Feld | Operation | Datenfluss / Verwendung | Bedingung | Beleg |
|---|---|---|---|---|---|
| LEGACY-D001 | Pep3Log.UserID | INSERT | dbo.fnUserId() | Meldungslevel erreicht DB-Log | LEGACY:INFO, LEGACY:FN |
| LEGACY-D002 | Pep3Log.Datum | INSERT | getdate() | Meldungslevel erreicht DB-Log | LEGACY:INFO |
| LEGACY-D003 | Pep3Log.Kurz | INSERT | Kurztext, maximal 255 Zeichen | Meldungslevel erreicht DB-Log | LEGACY:INFO |
| LEGACY-D004 | Pep3Log.LogText | INSERT | Detailtext einschließlich Pfad/ggf. Exception | Meldungslevel erreicht DB-Log | LEGACY:INFO |
| LEGACY-D005 | Pep3Log.Modul | INSERT | Modulbezeichnung, maximal 50 Zeichen | Meldungslevel erreicht DB-Log | LEGACY:INFO |
| LEGACY-D006 | Pep3Log.InfoLevel | INSERT | 51, 102 oder 105 je Meldung | Meldungslevel erreicht DB-Log | LEGACY:INFO |
| LEGACY-D007 | tblUser.Name | SELECT | Abgleich RIGHT(SUSER_NAME(),25) | fnUserId bei Log-INSERT | LEGACY:FN |
| LEGACY-D008 | tblUser.UserID | SELECT | MIN(UserID), fehlend → 0 | fnUserId bei Log-INSERT | LEGACY:FN |
Quellenverzeichnis
| Kürzel | Quelldatei am geprüften Commit |
|---|---|
| E | PEP4/ZW/Allgemein.vb |
| P, LEGACY:P | PEP4/cSchnittstellen/Programme/cProgramme.vb |
| PRJ | PEP4/cSchnittstellen/cSchnittstellen.vbproj |
| B | PEP4/cSchnittstellen/Programme/Schnittstellen/cSchnittAdp.vb |
| LEGACY:INFO | PEP4/cTools/cInfoTools.vb |
| LEGACY:INIT | PEP4/ZW/Einstellungen/cSetting.vb |
| LEGACY:SET | PEP4/ZW/Einstellungen/cEinstellungenZw.vb |
| LEGACY:FN | Sqlfiles/PEP4Functions/fnUserId.sql |
Siehe auch: Übersicht der Schnittstellen. Keine Ausführung oder Codekorrektur.