rightstring-Funktion in ABAP

Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

Alles rund um die Sprache ABAP®: Funktionsbausteine, Listen, ALV
8 Beiträge • Seite 1 von 1
8 Beiträge Seite 1 von 1

rightstring-Funktion in ABAP

Beitrag von Gast ( / / 0 / 3 ) »
Hi,

weiß jemand ob es eine right-Funktion für Strings im ABAP gibt (wenn man z.B. nur die letzten 5 Zeichen eines Strings benötigt)?
Danke.

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


Beitrag von Frank Dittrich (Expert / 674 / 0 / 15 ) »
Wenn auch eventtuelle Leerzeichen am Ende des Strings relevant sind:

Code: Alles auswählen.

DATA: hilfs_string TYPE string.
hilfs_string = quelle.
SHIFT hilfs_string BY 5 PLACES RIGHT CIRCULAR.
ziel = hilfs_string(5).
Wenn Leerzeichen am Ende ignoriert werden sollen, noch eine Anweisung

Code: Alles auswählen.

SHIFT hilfs_string RIGHT DELETING TRAILING space.
an der richtigen Stelle einfügen.
Wenn Dein Zielfeld mindestens so lang ist wie das Quellfeld, kommst Du auch ohne hilfsfeld aus.
Wenn Type STRING in Deinem Release noch nicht geht, ein C-Feld mit bis zu 65535 Bytes Länge definieren.
Oder falls quelle (zumindest vorübergehend) verändert werden darf - geht aber z.B. für IMPORTING-Parameter von FBs ebensowenig wie für FORMs, denen ein Literal übergeben wird), das SHIFT mit dem Quellfeld veranstalten, SY-FDPOS merken, nach Zuweisung ans Zielfeld wieder zurückschieben.

Andere Möglichkeit:

Beitrag von Frank Dittrich (Expert / 674 / 0 / 15 ) »
Mit Leerzeichen am Ende:

Code: Alles auswählen.

DESCRIBE FIELD quelle TYPE t LENGTH l.
Ohne:

Code: Alles auswählen.

l = strlen( quelle ).
und dann

Code: Alles auswählen.

offset = l -5.
CHECK offset GE 0.
zeil = quelle+offset(5).
In älteren Releases waren an der Stelle dynamische Offset- und Längenangaben nicht erlaubt.
Ich weiß nicht mehr, wie lange es schon erlaubt ist.
Wenn das bei Dir nicht geht (Syntaxfehler), muß Du entweder noch mit ASSIGN oder mit WRITE arbeiten.

Beitrag von Gast ( / / 0 / 3 ) »
Mit offset passt! Klasse, danke!

Beitrag von Gast ( / / 0 / 3 ) »
Die Offset-/Längenangaben sollten ab Basis Release 4.6D bei den wesentlichen Datentypen unterstützt sein. In älteren Releases kann man sich wahrscheinlich meist mit einem Assign behelfen. Bei diesem Befehl sollten dynamische Offset-/Längenangaben auch in Releases < 4.6D unterstützt sein. Man setzt dann einfach ein Feldsymbol auf die Variable (geht allerdings nicht bei Strings).
Die Lösung mit dem Shift kann ziemlich laufzeitintensiv sein (in vielen Fällen proportional zur Länge des Feldes). Die Offset-/Längen-Variante ist weitgehend unabhändig von der Feldgröße.

Beitrag von Wolfgang G. Propfe (ForumUser / 23 / 0 / 0 ) »
Moin:
offset = l -5.
CHECK offset GE 0.
zeil = quelle+offset(5).
How about:
clear zeil.
length = 5.
offset = l - length.
if offset lt 0.
add offset to length.
endif.
CHECK length GT 0.
zeil = quelle+offset(length).

In case the string is 'ABC', the modified function would at least return what it has.

Regards,
Wolfgang

Beitrag von Frank Dittrich (Expert / 674 / 0 / 15 ) »
Wolfgang G. Propfe hat geschrieben:Moin:
offset = l -5.
CHECK offset GE 0.
zeil = quelle+offset(5).
How about:

Code: Alles auswählen.

clear zeil.
length = 5. 
offset = l - length.
if offset lt 0.
  add offset to length.
endif.
CHECK length GT 0. 
zeil = quelle+offset(length). 
In case the string is 'ABC', the modified function would at least return what it has.
Hallo Wolfgang, es kommt hier sicher darauf an, was man will.

clear zeil. ???

Eigentlich wollte ich ziel statt zeil schreiben.
Der Fehler ist mir erst in Deinem Reply aufgefallen.
Und auch erst in der CLEAR-Anweisung, nicht in dem von mir zitierten Quelltext.:)

In Deinem Beispiel fehlt dann aber noch ein
CLEAR offset.
vor dem ENDIF.

Beitrag von Wolfgang G. Propfe (ForumUser / 23 / 0 / 0 ) »
Dear Frank:
Correct on all counts.

Regards,
Wolfgang

Seite 1 von 1

Vergleichbare Themen

2
Antw.
13118
Views
Web Dynpro ABAP: ALV Doppelklick funktion / Zelle
von reinhold_j » 07.08.2008 13:47 • Verfasst in Web Application Server
5
Antw.
8889
Views
Funktionsbausteine - FUNKTION/FUNKTION TOOL
von kafka » 06.02.2018 08:04 • Verfasst in ABAP® für Anfänger
5
Antw.
5538
Views
Funktion CO 24 ???
von Pinguincommander » 23.08.2013 08:38 • Verfasst in Material Management & Produktionsplanung
3
Antw.
4374
Views
Funktion POPUP_TO_CONFIRM
von kaim77 » 07.03.2013 12:37 • Verfasst in ABAP® für Anfänger
2
Antw.
3851
Views
Filter bei ALV-Funktion
von ibo » 18.11.2016 13:29 • Verfasst in ABAP® für Anfänger

Über diesen Beitrag


Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

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

Aktuelle Forenbeiträge

IF mit AND und OR
vor 13 Stunden von DeathAndPain 10 / 27450
BAPI zur ABSO?
vor 3 Wochen von DeathAndPain 2 / 6479
Materialstammerweiterung: Neuer Reiter
vor 4 Wochen von DeathAndPain gelöst 4 / 7760

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.