ich habe eine Liste mit offenen Posten erstellt, wo meine Beträge zwar durch meine If-Anweisung jetzt zeigen, ob es sich um negative oder positive Zahlen handelt, aber mein Vorzeichen hinter dem Betrag steht.
Ich habe eine Spalte mit Betrag (BSID-WRBTR) und Soll-/Haben-Kennzeichen (BSID-SHKZG).
Meine Anweisung lautet:
LOOP AT ITAB INTO WA.
IF WA-SHKZG = 'H'.
WA-WRBTR = ( -1 ) * WA-WRBTR.
In welchen Zusammenhang "vor dem Betrag"?
Im Moment hast du das ganze ja in einem Tabellenfeld und da gibt es technisch kein "Vorzeichen" sondern nur einen negativen oder positiven Betrag.
Ich versuch mal ins Blaue hinein zu raten und vermute du möchtest den Betrag, anschließend zu deinem Coding, auf einer Liste mittels WRITE-Befehl ausgeben.
Hast du dir die Hilfe zum WRITE-Befehl schon mal angeschaut?
Hier gibt es mehrere Möglichkeiten:
Verwendung des STYLE Zusatzes (sofern unter deinem SAP-Release bereits unterstützt)
Verwendung einer EDIT-Mask (z.B.: "RRV_______")
Ändern der Länderspezifischen Einstellungen (Siehe SET COUNTRY)
Ausgabe mit NO-SIGN und das Vorzeichen dann extra ausgeben.
lg ADT
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.
Bei mir ist das Problem, dass WRBTR Typ CURR hat, da gibt er mir immer wieder eine Fehlermeldung raus. Daher habe ich eine neue Zeile in meine ALV-Tabelle eingefügt, mit dem Namen BTR vom Typ CHAR.
Ich weiß aber nicht, wie ich dann später WRBTR durch BTR ersetzen soll, der mir dann auch die Vorzeichen angibt.
Hast du in deinem Feldkatalog (LVC_S_FCAT) den du ans ALV schickst zum Feld WRBTR auch die richtige CURRENCY eingetragen? Dann solte nämlich das ALV die Ausgabe entsprechend deiner Währung richtig darstellen und du kannst dir das ganze Hecki-Mecki mit dem zusätzlichen Feld ersparen.
Die Edit Mask ist eine Ausgabeschablone für deine Werte.
z.B. wird mit "_.___,__" aus dem Wert 100000 der Text "1.000,00"
Aus 100 würde aber "1.00,"
Wenn man stattdessen die Maske "RR_.___,__" verwendet, wird aus 100 der Text "1,00"
Das ganze Ding arbeitet also positionsbezogen.
Schau dir die ABAP-Hilfe für weitere Möglichkeiten an.
Zusätzlich gibt es auch noch die Möglichkeit mittels Edit Mask sog. Conversation-Exits anzugeben. Hinter diesen verbergen sich eigene Funktionsbausteine die eine umfangreichere textuelle Aufbereitung vornehmen können. Beim Write-Befehl muss man dazu "==" gefolgt vom Exit angeben. z.B. "==ALPHA"
lg ADT
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.