Feld bzw. String auslesen

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

Feld bzw. String auslesen

Beitrag von robin1at (Specialist / 190 / 0 / 0 ) »
Guten Morgen liebe Helfer!


Da ich erst seit kurzem mit ABAP programmiere fehlt mir bei diesem Problem leider noch etwas wissen.


Und zwar habe ich ein Feld (ZUONR) in dem folgendes drinnen steht:


z. B: DE2780


Nun möchte ich dieses Feld für meine ALV Ausgabe folgender maßen auslesen:


Zuerst möchte ich für meine Spalte (Land) im ALV die ersten beiden Zeichen auslesen. Und dann möchte ich in die zweite Spalte (DLKZ) im ALV die 4 Stellige Nummer ausgeben.


Hoffe Ihr könnt mir bei diesem Problem helfen und mir vielleicht ein Coding Beispiel zeigen, da ich im Moment leider nicht weis, wie ich hier vorgehen muß.


Vielen vielen Dank für Eure Hilfe!


Schöne Grüße


Robin

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


2 Felder in Ausgabetab

Beitrag von manuk (Specialist / 108 / 0 / 0 ) »
Hallo Robin,


meine Empfehlung ist, an die Tabelle, die du zur Ausgabe an ALV übergibst, 2 Felder anzuhängen und diese mit dem Feld ZUONR zu füllen.


Als Beispiel:


itab-land = zuonr(2)


itab-nr = zuonr+2(4)


Ich hoffe das hilft dir weiter


Viele Grüße


Manuela
mfg manuk

Re: 2 Felder in Ausgabetab

Beitrag von robin1at (Specialist / 190 / 0 / 0 ) »
Hallo Manuela!


Danke für Deine Antwort. Nachdem ich ja noch Anfänger bin, muß ich leider nochmals etwas nachfragen.


itab-land = zuonr(2) bedeutet, daß er nur die ersten beiden Zeichen ausgibt, und


itab-nr = zuonr+2(4) bedeutet, daß er die 4 Stellen nach nach den ersten beiden ausgibt?


Danke


Robin

Re: 2 Felder in Ausgabetab

Beitrag von robin1at (Specialist / 190 / 0 / 0 ) »
Hallo Manuela!


Vielen Dank für Deine Antwort!


Hat mir super weitergeholfen!!


Liebe Grüße


Robin

Gleiches Problem mit Parameter

Beitrag von aaaarrrggh (ForumUser / 8 / 0 / 0 ) »
Hallo!

Ich hab da auch eine ähnliche Frage: Wie kann ich denn den Wert der Länge eines Strings erhalten? Bei Java ist es ja z.B: string1.length()
Und kann man auch die Länge eines Parameters erhalten? Habe dazu nichts in der Doku gefunden.

LG

Sarah

Beitrag von ereglam (Top Expert / 1829 / 2 / 7 ) »
Hallo Sarah,

dazu stehen je nach Release die 'COMPUTE'-Funktionen STRLEN und NUMOFCHAR zur Verfügung. Ab 4.7 sollte man eher mit NUMOFCHAR arbeiten, weil der in Unicode-Umfeld die Anzahl Zeichen statt Byte liefert...
Gruß
Ereglam


May the Force be with your code
|| .| |.|| | .... . ..|. ||| .|. |.|. . |... . .|| .. | .... |.|| ||| ..| .|. |.|. ||| |.. .

Beitrag von aaaarrrggh (ForumUser / 8 / 0 / 0 ) »
Hallo!

Habe jetzt strlen genommen. Danke!
Aber anderes Problem:
Bei meinem Report gehts darum, eine eingegebene Zahl in Wortlaut auszugeben. So weit so gut. Aber bei string+i zeigt er mir im Debug die ganze eingegebene Zahl und nicht nur die erste Ziffer, obwohl i hier eindeutig 0 ist..
Kann mir jemand helfen?
Und stimmt sonst der Code irgendwie nicht?

Danke schon mal für den strlen-Tipp :D

Code: Alles auswählen.

DATA: i TYPE i,
      string TYPE string,
      anzahl TYPE i.
PARAMETERS pzahl(10).

i = 0.

string = pzahl.
anzahl = strlen( string ).

WHILE i <= anzahl.
  CASE string+i.
    WHEN '0'.
      WRITE: 'null '.
    WHEN '1'.
      WRITE: 'eins '.
    WHEN '1'.
      WRITE: 'eins '.
    WHEN '2'.
      WRITE: 'zwei '.
    WHEN '3'.
      WRITE: 'drei '.
    WHEN '4'.
      WRITE: 'vier '.
    WHEN '5'.
      WRITE: 'fünf '.
    WHEN '6'.
      WRITE: 'sechs '.
    WHEN '7'.
      WRITE: 'sieben '.
    WHEN '8'.
      WRITE: 'acht '.
    WHEN '9'.
      WRITE: 'neun '.
    WHEN OTHERS.
      WRITE: 'Ungültige Eingabe!'.
  ENDCASE.
  i = i + 1.
ENDWHILE.
[/code]

Beitrag von RiffRaff (Specialist / 379 / 0 / 1 ) »
hallo,

string+i(1)

mfg
Richard


string+i(x) bedeutet:

string ab position i (1 stelle = 0), x zeichen lang. ist x nicht angeben, wird ab der position i bis zum schluß gelesen.

Beitrag von aaaarrrggh (ForumUser / 8 / 0 / 0 ) »
Ok, danke schön. Hab ich gemacht.. Nun kam aber ein Laufzeitfehler mit folgender Fehleranalyse:
Fehleranalyse

In dem laufenden Programm "!2HTEST1 " sollte auf einen Teil eines Strings mit
Offset und Länge zugegriffen werden.
Die Summe aus Offset (2) und Länge (1) war jedoch größer als die
aktuelle Länge des Strings (2).
Ein solcher Zugriff ist nicht erlaubt.
?? Tut mir leid, bin wirklich ein echter Newbie :(

Beitrag von JHM (Top Expert / 1189 / 1 / 196 ) »
aaaarrrggh hat geschrieben:?? Tut mir leid, bin wirklich ein echter Newbie :(
Du hast versucht auf einen Teil des Strings zuzugreifen, der nicht da ist.
Die Abbruchbedingung der WHILE-Schleife kommt zu spät.

Füllen wir den String mit 123
string = '123'

Im ersten Schleifendurchlauf ist i = 0. Es wird auf die erste Stelle im String zugegriffen, die 1.
Im zweiten Schlefendurchlauf ist i = 1. Es wird auf die zweite Stelle im String zugegriffen, die 2.
Im dritten Schlefendurchlauf ist i = 2. Es wird auf die dritte Stelle im String zugegriffen, die 3.

Jetzt ist der String eigentlich bearbeitet, deine Schleife läuft aber noch ein viertes mal durch. Jetzt ist i = 3. Es wird versucht auf die vierte Stelle im String zu gegriffen, welche nicht existiert. Somit Programmabbruch.

Ändere die Bedingen der WHILE-Schleife ab. Richtig ist "i < anzahl"
Als Tip debugg dein Coding, damit du verstehst warum die Abbruchbedingung falsch ist.

Man könnte das ganze auch mit einer Do-Schleife lösen.
DO anzahl_zeichen TIMES.
ENDDO.
Hier ist die Abbruchbedingungen besser lesbar.
Gruß Hendrik

Beitrag von aaaarrrggh (ForumUser / 8 / 0 / 0 ) »
Ui! Hätte ich auch allein drauf kommen sollen. Vielen Dank!

Beitrag von Lina (ForumUser / 4 / 0 / 0 ) »
Hallo!

Hab da auch mal eine Frage bzgl. String auslesen.
Ich hab eine Zeile, die etwa folgendermaßen aussieht:

D20061223+W14+T>=1345

Das + kann hier auch durch ein * ersetzt werden und nach W können eine oder zwei Zahlen stehen. Die Operatoren nach T können auch einstellig sein ( >, <, =).
Nun muss ich diese Zeile nach D, Operant, W, Operant, T trennen und in entsprechende Spalten schreiben.
Weis einer vielleicht, wie ich dies am besten lösen könnte?
Wäre für jede Hilfe dankbar!
Gruß
Lina

Edit: Hat sich erledigt.

Seite 1 von 1

Vergleichbare Themen

3
Antw.
9542
Views
Position aus dem String auslesen.
von nordlender » 20.03.2012 17:48 • Verfasst in ABAP® für Anfänger
3
Antw.
1824
Views
text aus einem String auslesen
von zickzack0312 » 22.03.2006 16:39 • Verfasst in ABAP® für Anfänger
8
Antw.
3371
Views
DB-Feld vom String -> autom. Komprimierung?
von ewx » 15.09.2014 17:12 • Verfasst in ABAP® Core
2
Antw.
4447
Views
Vergleich STRING <> CHAR Feld (Unicode-Problem?)
von ST22 » 04.04.2007 09:17 • Verfasst in ABAP® Core
8
Antw.
4313
Views
wert aus Feld auslesen
von bibo » 06.04.2006 13:55 • Verfasst in ABAP® für Anfänger

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.