REPLACE in interne Tabelle

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

REPLACE in interne Tabelle

Beitrag von Bjuti (ForumUser / 45 / 14 / 0 ) »
Hallo zusammen,

ich würde gerne mit REPLACE einen bestimmten Inhalt in einer bestimmten Spalte ersetzen.

Code: Alles auswählen.

REPLACE ALL OCCURRENCES OF REGEX '1' IN ITAB-SPALTE1 WITH 'X'.
Nun hat ITAB keine Kopfzeile. Dementsprechend ist SPALTE1 unbekannt. Gibt es eine elegante (performante) Lösung ohne eine Kopfzeile zu definieren?

Momentan arbeite ich mit:

Code: Alles auswählen.

LOOP AT ITAB ASSIGNING <ITAB> WHERE SPALTE1 = '1'.
 <ITAB>-SPALTE1 = 'X'.
ENDLOOP.
Ich hatte die Hoffnung das Replace performanter ist als eine LOOP?

VG

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


Re: REPLACE in interne Tabelle

Beitrag von ST22 (Specialist / 283 / 44 / 41 ) »
Hast du nicht das in table vergessen?

Code: Alles auswählen.

    REPLACE ALL OCCURRENCES OF REGEX '1' IN Table ITAB-SPALTE1 WITH 'X'.
Sorry, das war Quatsch. Evtl. mit Modify itab arbeiten, brauchst du dann aber auch einen Arbeitsbereich.

Re: REPLACE in interne Tabelle

Beitrag von a-dead-trousers (Top Expert / 4484 / 231 / 1205 ) »
ST22 hat geschrieben:Hast du nicht das in table vergessen?

Code: Alles auswählen.

    REPLACE ALL OCCURRENCES OF REGEX '1' IN Table ITAB WITH 'X'.
Das funktioniert nur mit einer "flachen" Text-Tabelle (Zeile muss CLIKE entsprechen) und würde in ALLEN Spalten die Textersetzung durchführen.

Richtiger wäre:

Code: Alles auswählen.

LOOP AT ITAB ASSIGNING <ITAB>.
  REPLACE ALL OCCURRENCES OF REGEX '1' IN <ITAB>-SPALTE1 WITH 'X'.
ENDLOOP.
lg ADT

EDIT:
ST22 hat geschrieben:Sorry, das war Quatsch. Evtl. mit Modify itab arbeiten, brauchst du dann aber auch einen Arbeitsbereich.
Das kam zu "spät" :P
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.18
Basis: 7.50

Re: REPLACE in interne Tabelle

Beitrag von Bjuti (ForumUser / 45 / 14 / 0 ) »
Ok Dankeschön, wäre

Code: Alles auswählen.

    LOOP AT ITAB ASSIGNING <ITAB>.
      REPLACE ALL OCCURRENCES OF REGEX '1' IN <ITAB>-SPALTE1 WITH 'X'.
    ENDLOOP.
performanter als

Code: Alles auswählen.

    LOOP AT ITAB ASSIGNING <ITAB> WHERE SPALTE1 = '1'.
     <ITAB>-SPALTE1 = 'X'.
    ENDLOOP.
?

VG

Re: REPLACE in interne Tabelle

Beitrag von ralf.wenzel (Top Expert / 4011 / 209 / 283 ) »
Das kommt drauf an. Wenn du eine sortierte Tabelle (Typ SORTED TABLE) hast und einen entsprechenden Sekundärindex definierst, bringt eine WHERE-Bedingung im LOOP was, sonst nicht.
Bild
Ralf Wenzel Heuristika SAP-Development -- 25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Re: REPLACE in interne Tabelle

Beitrag von JHM (Top Expert / 1225 / 2 / 204 ) »
ralf.wenzel hat geschrieben:und einen entsprechenden Sekundärindex definierst, bringt eine WHERE-Bedingung im LOOP was, sonst nicht.
Ist das bei diesem aktuellen Beispiel wirklich schneller?

Es soll ja der Feldwert geändert werden, auf den der Sekundärindex liegt. Es kommt also zu der Feldänderung noch eine Indexänderung dazu. Keine Ahnung wie lange diese benötigt, aber sie steht ja der Einsparung beim LOOP WHERE gegenüber.


Ich mache solche Änderungen eigentlich immer mittels MODIFY itab FROM wa TRANSPORTING feld1 WHERE feld1 = wert. Hatte dabei noch nie Performenceprobleme.
Gruß Hendrik

Seite 1 von 1

Vergleichbare Themen

4
Antw.
4655
Views
5
Antw.
5741
Views
Inhalt interne Tabelle an andere interne Tabelle übergeben
von L0w-RiDer » 30.01.2020 16:28 • Verfasst in ABAP® für Anfänger
5
Antw.
5382
Views
1
Antw.
4924
Views

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.