ALV liest Zeit aus Excel falsch

Getting started ... Alles für einen gelungenen Start.
9 Beiträge • Seite 1 von 1
9 Beiträge Seite 1 von 1

ALV liest Zeit aus Excel falsch

Beitrag von Marc K. (ForumUser / 62 / 3 / 0 ) »
Hallo,

ich habe Problem mit meiner Zeitdarstellung aus EXCEL.

Ich lese Excel in alv aus und zwar mit allen Sheets. Die Daten, die Ausgelesen werden, sind. Name, Vorname, Pnr und Kommen- und Gehzeiten.

Mit der Methode -> call method GO_SPREADSHEET->GET_RANGES_DATA bekomme ich in meine interne Tabelle daten aus EXCEL.

Code: Alles auswählen.

call method GO_SPREADSHEET->GET_RANGES_DATA
      exporting
        ALL      = 'X'
      importing
        CONTENTS = LT_DATA
        ERROR    = GO_ERROR
      changing
        RANGES   = LT_RANGES.
Name, Vorname, Pnr sind ok.

Bei Kommen- und Gehzeiten: wenn im Excel steht 09:00 oder 08:20 oder 15:45 - ALV ist ok.
Wenn aber im Excel steht z.B. 0:55 -> ALV = 19:40 oder 2:14-> ALV = 07:20

Im Debuger sieht die Zeit z.B: 0:55 so aus: 3,81944444444444E-02
2:14 hat das Format 9,30555555555556E-02

Könnte mir jemand das Phänomen erklären bzw.habt ihr eine Lösung dafür ???

Danke!

gesponsert
Stellenangebote auf ABAPforum.com schalten
kostenfrei für Ausbildungsberufe und Werksstudenten


Re: ALV liest Zeit aus Excel falsch

Beitrag von bliss (ForumUser / 66 / 2 / 6 ) »
Marc K. hat geschrieben:Im Debuger sieht die Zeit z.B: 0:55 so aus: 3,81944444444444E-02
2:14 hat das Format 9,30555555555556E-02
Dann ist zumindest bis hierhin alles richtig. Ein Tag = 1. 12 Uhr = 0,5. 06:00:00 = 0,25. Eine Stunde = 0,041666667 usw. Das kannst du selbst überprüfen, wenn du die Uhrzeiten mit der rechten Maustaste verschiebst und Hierhin nur als Werte kopieren aus dem Kontextmenü wählst.
Marc K. hat geschrieben:Wenn aber im Excel steht z.B. 0:55 -> ALV = 19:40 oder 2:14-> ALV = 07:20
Schauen wir uns mal deine falschen Uhrzeiten und ihre Dezimalwerte dazu an:

00:55:00 0,038194444
19:40:00 0,819444444

02:14:00 0,093055556
07:20:00 0,305555556

Das ist sehr auffällig. Die 1. und 2. Nachkommastelle wurden nicht übernommen. Was sagt dir das?
Gruß
bliss
.|.. .. ...| . .|.. ||| |. ||. .| |. |.. .||. .|. ||| ... .||. . .|.

Ich bin Anfänger und meine Tipps sind mit Vorsicht zu genießen.

Re: ALV liest Zeit aus Excel falsch

Beitrag von Marc K. (ForumUser / 62 / 3 / 0 ) »
Hallo bliss, vielen Dank für deine Rückmeldung!

Ich rechne die Zeit so:

PV_TIME = 86400 * LV_ZEIT.

bei Zeit 2:14 ist LV_ZEIT zu dem Zeitpunkt = 9.30555555
und PV_TIME = 072000

Soll ich irgendwie umformatieren/umrechnen??? Und wie lautet dann die Umrechnung, damit ich alle anderen Zeiten nicht abschieße??

Danke!

Re: ALV liest Zeit aus Excel falsch

Beitrag von bliss (ForumUser / 66 / 2 / 6 ) »
Marc K. hat geschrieben:bei Zeit 2:14 ist LV_ZEIT zu dem Zeitpunkt = 9.30555555
Woher kommt diese Zahl? Es muss doch 0,093055556 sein! (Die 6 ist nur eine Aufrundung) Hier ist doch schon ein Fehler.

Und deine einfache Multiplation scheint auch nicht zu stimmen:
PV_TIME = 86400 * 9,30555555.
PV_TIME = 803999,9995.

Wie kommst du auf 072000? 86400 = 24*60*60 ist mir klar.

Ich habe auch keine fertige Lösung.
Gruß
bliss
.|.. .. ...| . .|.. ||| |. ||. .| |. |.. .||. .|. ||| ... .||. . .|.

Ich bin Anfänger und meine Tipps sind mit Vorsicht zu genießen.

Re: ALV liest Zeit aus Excel falsch

Beitrag von Marc K. (ForumUser / 62 / 3 / 0 ) »
Ich habe das Problem gelöst, in dem ich LV_ZEIT zerlege und Anfang auf '0' prüfe!

LV_CHECK = LV_ZEIT.

if LV_CHECK ne '0'.
translate LV_ZEIT using ', '.
condense LV_ZEIT no-gaps.
concatenate '0.0' LV_ZEIT into LV_FAKTOR.
PV_TIME = 86400 * LV_FAKTOR.
else.
LV_FAKTOR = LV_ZEIT.
condense LV_FAKTOR no-gaps.
translate LV_FAKTOR using ',.'.
PV_TIME = 86400 * LV_FAKTOR.
endif.

Und es funktioniert!!!

Danke bliss!!!

Re: ALV liest Zeit aus Excel falsch

Beitrag von bliss (ForumUser / 66 / 2 / 6 ) »
Ach und jetzt seh ich wo dieser Fehler herkommt:
Marc K. hat geschrieben:2:14 hat das Format 9,30555555555556E-02
Marc K. hat geschrieben:bei Zeit 2:14 ist LV_ZEIT zu dem Zeitpunkt = 9.30555555
E-02 ignoriert!
Gruß
bliss
.|.. .. ...| . .|.. ||| |. ||. .| |. |.. .||. .|. ||| ... .||. . .|.

Ich bin Anfänger und meine Tipps sind mit Vorsicht zu genießen.

Re: ALV liest Zeit aus Excel falsch

Beitrag von Marc K. (ForumUser / 62 / 3 / 0 ) »
Hallo,

meine Therie war nich 100% richtig!

Jetzt habe ich Probleme mit der folgenden Zeitdarstellung:

aus 00:05 liest er mir 00:50 aus -> 0,0347222
aus 00:10 - 01:40 -> 0,069444

d.h. es fehlt eine null nach komma

00:05 = 0,00347222
00:10 = 0.00694444

Wie fange ich den Fall ab??? Jemand Idee?
Danke!

Re: ALV liest Zeit aus Excel falsch

Beitrag von bliss (ForumUser / 66 / 2 / 6 ) »
Hi!

Es geht nicht darum, dass eine 0 nach dem Komma fehlt, sondern dass du grundsätzlich falsch rechnest und dann irgendwie den Fehler korrigierst. Deinen letzten Quelltext hab ich leider nicht verstanden, aber wie ich schon schrieb, liegt dein Fehler vermutlich irgendwo schon am Anfang beim Auslesen der Zahl. Ich denke du erhältst einen falschen Wert bei LV_ZEIT, weil du E-02 (also *10^-2) ignorierst.

Am Anfang hattest du noch diesen Fehler:
00:55:00 0,038194444 (wäre richtig)
19:40:00 0,819444444 (dein falscher Wert)

Als hättest du die richtige Zahl genommen, mit 100 multipliziert (also 10 hoch -2 ignoriert) und dann richtigerweise nur die Nachkommastellen berücksichtigt.

Jetzt hast du nur 1 von 2 Stellen korrigiert
00:05:00 0,003472222 (wäre richtig)
00:50:00 0,034722222 (dein falscher Wert)

Wäre es möglich, dass du anstatt diesen oder jenen Fall abzufangen, nicht gleich die Zahl richtig übernimmst? Warum wird im Debugger die Zahl als 10er-Potenz dargestellt? Wenn du einfach ZUERST die Potenz auflöst, solltest du gleich richtig rechnen.
Gruß
bliss
.|.. .. ...| . .|.. ||| |. ||. .| |. |.. .||. .|. ||| ... .||. . .|.

Ich bin Anfänger und meine Tipps sind mit Vorsicht zu genießen.

Re: ALV liest Zeit aus Excel falsch

Beitrag von Marc K. (ForumUser / 62 / 3 / 0 ) »
Die Methode macht mir aus Zeit eine Zahl:

Code: Alles auswählen.

call method GO_SPREADSHEET->GET_RANGES_DATA
      exporting
        ALL      = 'X'
      importing
        CONTENTS = LT_DATA
        ERROR    = GO_ERROR
      changing
        RANGES   = LT_RANGES.
LT_DATA hat schon die Zeiten in dem o.g. Format.

Wie kann ich die Zeiten umrechnen??

Seite 1 von 1

Vergleichbare Themen

4
Antw.
376
Views
ALV exportiert Dezimaltrenner falsch nach Excel
von DeathAndPain » 11.09.2024 12:39 • Verfasst in ABAP® Core
3
Antw.
10322
Views
Zeit/Datum je Werk in tatsächliche Zeit umrechnen!
von hsiebert » 27.08.2007 11:23 • Verfasst in ABAP® für Anfänger
1
Antw.
1731
Views
Liest READ Zeile für Zeile oder aufeinmal
von bohne » 26.11.2006 16:46 • Verfasst in ABAP® für Anfänger
4
Antw.
5581
Views
Zeit vergleichen
von Sebastian Hodapp » 17.11.2004 15:44 • Verfasst in Java & SAP®
9
Antw.
3935
Views
zeit messung
von kostonstyle » 18.09.2008 11:13 • Verfasst in ABAP® für Anfänger

Über diesen Beitrag


Unterstütze die Community und teile den Beitrag für mehr Leser und Austausch

Newsletter Anmeldung

Keine Beiträge verpassen! Wöchentlich versenden wir lesenwerte Beiträge aus unserer Community.
Die letzte Ausgabe findest du hier.
Details zum Versandverfahren und zu Ihren Widerrufsmöglichkeiten findest du in unserer Datenschutzerklärung.