Page 1 of 1

TEVEN und RPTIME

PostPosted: Thu Mar 09, 2017 7:14 am
by Simone4399
Hallo,

ich habe mit einem merkwürdigen Problem zu kämpfen --- vielleicht kann mir ja jemand bei der Lösung helfen.

Ich habe eine Webdynpro-Anwendung geschrieben, die für Meister und Vorarbeiter einer Pflegeoberfläche für Zeitbuchungen ihrer Mitarbeiter zur Verfügung stellt, d.h. die eigentlichen Zeitbuchungen werden angepasst oder mit Arbeitsplatzinformationen erweitert. Nach dem Speichern der Daten wird automatisch der RPTIME00 angestoßen und die Oberfläche mit den frischen Statusinformationen (Fehlermeldungen, errechnete Arbeitszeit ... ) versorgt.

Das funktioniert grundsätzlich auch sehr gut. Problem dabei sind nicht reproduzierbare gelegentlich auftretende Fehler.

Ich versuche das mal zu beschreiben:
Der Meister bearbeitet ein Zeitpaar. Dieses wird anschließend vom ihm gespeichert. Dazu verwende ich die Funktionsbausteine NUMBER_GET_NEXT und HR_TMW_DB_UPDATE_TEVENT. Anschließend wird per SUBMIT der RPTIME00 angestoßen. Abschließend werden die Zeitpaare neu eingelesen und die Statusinformationen des B1/B2-Cluster dazu gelesen.
Jetzt passiert es manchmal (manchmal gar nicht ... manchmal mehrmals am Tag), das der RPTIME abbricht mit der Fehlermeldung, dass das Gehen fehlt. Lasse ich den RPTIME danach sofort nochmal laufen, ist alles i.O. Weiter ist mir aufgefallen, dass im Cluster in solchen Fällen die alte Kommen-Zeit abgespeichert ist.
Mein Gedanke war nun, dass mit dem Speichern der Daten diese erst in den Cache geschrieben wurden und der RPTIME quasi während des echten Update gelaufen ist. Da wäre ja ein COMMIT WORK AND WAIT' hilfreich .... dachte ich. Leider brachte das nicht die Lösung.

Hätte jemand noch eine Idee?

Gruß
Ulf

Re: TEVEN und RPTIME

PostPosted: Thu Jun 08, 2017 7:45 am
by Bilal3242
Hallo Ulf,

ich habe eine ähnliche Lösung entwickelt, jedoch nicht über Webdynpro, sondern stattdessen über Excel. SAP schreibt regelmäßig die Zeitdaten in eine CSV-Datei und ein Makro in der Datei des Vorgesetzten sucht sich da die passenden Mitarbeiter heraus und bereitet dies schön formatiert auf.

Wenn der Vorgesetzte nun eine Stempelzeit nachmeldet oder Mehrarbeiten genehmigt, sendet er die per Knopfdruck per E-Mail an SAP. Wenige Sekunden später kann er dann schon das Ergebnis seiner Änderung in der Excel-Tabelle sehen.

Fehler wie oben beschrieben sind mir bisher nicht aufgefallen. Ich fülle die TEVEN wie folgt:

[...]
LX_P2011-PERNR = LDV-PERNR.
LX_P2011-SATZA = SATZA.
LX_P2011-LTIME = LTIME.
LX_P2011-LDATE = LDV-DATUM.

LD_PERNR = LDV-PERNR.

CALL FUNCTION 'HR_INFOTYPE_OPERATION'
EXPORTING
INFTY = '2011'
NUMBER = LX_P2011-PERNR
RECORD = LX_P2011
OPERATION = 'INS'
NOCOMMIT = 'X'
DIALOG_MODE = '0'
VALIDITYBEGIN = LX_P2011-LDATE
VALIDITYEND = LX_P2011-LDATE
IMPORTING
RETURN = LX_BAPIRET.

Vielleicht klappt es damit ja besser?

Zeitereignisse löschen läuft einfach über einen SELECT auf die TEVEN und setzen des Stornokennzeichens.

Viele Grüße
Michael