Ich habe in einer Query (Materalbeleg-Kopftabelle/Bewegungen zum Auftrag) 3 Felder zur Verfügung:
MKPF-CPUDT (Systemdatum zum Zeitpunkt der Buchung)
MKPF-CPUTM (Systemzeit zum Zeitpunkt der Buchung)
AUFM-WERKS (Werk, in dem die Buchung durchgeführt wurde)
Ich muss nun in der Query die Zeitzone berücksichtigen und aus diesen Infos die tatsächliche Buchungszeit berechnen.
Kann mir jemand einen Tipp geben, wie ich das in der Query mache?
Gibt es einen Fuba, der das ganze in einem Step erledigt? Ist einem Werk überhaupt fest eine Zeitzone zugeordnet, oder ist diese immer Userabhängig?
Bin sehr dankbar für Eure Hilfe, bitte berücksichtigt, dass meine ABAP Kenntnisse spärlich sind, kann gerade mal ein bisschen innerhalb einer Query berechnen...
Ich kann mich jetzt auch irren, aber Meines Wissens nach kennt SAP nur eine Uhrzeit und zwar die eingestellte Systemuhrzeit.
Zumindest wird nur mit dieser gearbeitet bzw in Datenbanken geschrieben.
Ja, SAP arbeitet intern mit den CPU Datum in der Regel in der Zeitzone UTC.
Das bedeutet aber, das ich je nach Datum (Sommerzeit) z.B. für Zentraleuropa 1-2 Stunden draufrechnen muss, um die reale Buchungszeit anzuzeigen (in meiner Query). Ich habe in dieser für einen 3-Schicht Betrieb die Produktionsmengen Schichtweise sortiert, dabei geht die erste Schicht von 23.00 Uhr bis 7.00 Uhr morgens.
Das ist aber die "reale Buchungszeit" in der Zeitzone CET (incl Sommer/Winter) natürlich kann ich die Differenz von 1-2 Stunden auch per Parameter auf die Systembuchungszeit draufrechnen, je nachdem, ob gerade Sommer oder Winterzeit gilt. Lieber wäre mir das allerdings mit Hilfe eines FuBas in der Query, der halt über das Werk der Buchung das Land/Region bestimmt, für diese Kombi die Zeitzone ermittelt und dann die gespeicherte Systemzeit in die "reale Erfassungszeit" umrechnet. Wie bekomme ich das in meine Query (grobe Anleitung (mit fiktiven Tabellennamen und in welche Sektion des Codings ich den FuBa wie einbaue) reicht vollkommen. Den Rest baue ich mir schon zusammen.
Vielen Dank.
H. Siebert
SAP Application Specialist PP/QM/PM
Frankfurt am Main
Hab grad nochmals ein bischen nachgeforscht und zumindest einen kleine Möglichkeit gefunden.
In dem du zuerst das Datum und die Uhrzeit mit Hilfe von "CONVERT DATE d TIME t INTO TIME STAMP tst TIME ZONE 'UTC'." in einen Timestamp verwandelst und anschliessend das ganze wieder zurück mit "CONVERT TIME STAMP tst TIME ZONE tz INTO DATE d TIME t. " und hier deine jeweilige Zeitzone eingibst.