Code lesen

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

Code lesen

Beitrag von HH_ABAP (Specialist / 116 / 38 / 1 ) » 19. Sep 2018 09:39

Hallo,

kann jemand mir sagen, was passiert hier:

Code: Alles auswählen.

shift ls_boeking-bedrag right deleting trailing space.
ls_boeking-bedrag+27(1) = '.'.
shift ls_boeking-bedrag left deleting leading space.
Vielen Dank & Grüße


Re: Code lesen

Beitrag von ewx (Top Expert / 3963 / 164 / 366 ) » 19. Sep 2018 09:55

Das kommt darauf an, wie BEDRAG definiert ist und was drin steht.
Das einfachste ist es, wenn du es dir im Debugger anschaust!

Re: Code lesen

Beitrag von a-dead-trousers (Top Expert / 3212 / 81 / 798 ) » 19. Sep 2018 12:28

Ich würde mal darauf tippen, dass hier aus einer Zahl in Form eines Textes, eine Gleitpunktzahl erzeugt wird.
Vermutlich ist das Feld größer als 28 Zeichen und der Text hat derzeit entweder ein Leerzeichen oder einen Beistrich als Trennzeichen. Alles andere würde zu einem Fehler führen.
Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.07
Basis: 7.40

Re: Code lesen

Beitrag von DeathAndPain (Top Expert / 1051 / 122 / 230 ) » 19. Sep 2018 12:59

ewx hat geschrieben:Das kommt darauf an, wie BEDRAG definiert ist und was drin steht.
Es wird ein dreißigstelliges Characterfeld sein, in dem, wie adt schon sagte, eine Zahl mit zwei Nachkommastellen gespeichert ist. Der Code ist eine IMHO recht unbeholfene Methode, aus dem Komma einen Punkt zu machen, damit der Wert anschließend einer numerisch definierten Variable zugewiesen werden kann.

Wesentlich eleganter wäre gewesen, einfach zu schreiben:

Code: Alles auswählen.

OVERLAY ls_boeking-bedrag with '..............................' only ','.
Oder einen Replace.

Danach eventuell noch den shift ls_boeking-bedrag left deleting leading space., wenn die Möglichkeit besteht, dass die Zahl nicht linksbündig im Characterfeld steht.

Gibt da garantiert auch Funktionsbausteine für, aber die zu rufen ist weder einfacher noch schneller.

Re: Code lesen

Beitrag von GastX (Specialist / 269 / 4 / 10 ) » 24. Mai 2019 12:14

Wenn es darum geht, alle ggfs. vorhandenen Punkte zu ersetzen, bietet sich Translate an.

Code: Alles auswählen.

TRANSLATE bedrag USING ',.'.
Der Code mit dem Shift stellt natürlich sicher, dass nur an genau einer Stelle, und zwar der dritten von rechts, ein Zeichen geändert wird. Allerdings unabhängig davon, was sich im Feld befindet.

Seite 1 von 1

Aktuelle Forenbeiträge

BAPI_PO_CREATE1 und Einkaufsinfosatz
vor 13 Stunden von SweetRuedi 1 / 28
Format xx oder xx-xx oder xx-xx-xx
Gestern von black_adept 5 / 171
Salv Table - Layouts speichern
Gestern von ewx 2 / 66
Quellcodeänderung mehrerer Programme
vor 2 Tagen von Tron 9 / 288
WCOCO: Gruppe für Betragsfelder 0S01
vor 2 Tagen von SAP_ENTWICKLER 1 / 40

Unbeantwortete Forenbeiträge

BAPI_PO_CREATE1 und Einkaufsinfosatz
vor 13 Stunden von SweetRuedi 1 / 28
WCOCO: Gruppe für Betragsfelder 0S01
vor 2 Tagen von SAP_ENTWICKLER 1 / 40
CAS-Nr.: Chemical Abstracs Service
vor 4 Tagen von SAP_ENTWICKLER 1 / 74
Interaktives Skript, Rolle IC-Manager
vor einer Woche von erubadhron86 1 / 113
Wie findet man das Rahmenprogramm eines Infosets?
vor einer Woche von DeathAndPain 1 / 130