Ersetzen von oboleten DO VARYING

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

Ersetzen von oboleten DO VARYING

Beitrag von Barney (Specialist / 104 / 20 / 9 ) »
Hallo,

bei der Lagerbereichsfindung im WM hat SAP eine Tabelle T334B, bei der die Reihenfolge der Lagerbereiche definiert ist. Da hat jeder in Frage kommende Lagerbereich seine eigene Spalte - insgesamt sind es 30.

SAP benutzt dann bei der Platzsuche die DO-Schleife

Code: Alles auswählen.

DO 30 TIMES VARYING SAV_LGBER FROM T334B-LGBE0 NEXT T334B-LGBE1.

bla bla bla 

ENDDO.
Jetzt sagt SAP selber, dass solche Konstrukte obsolet sind. Nun stelle ich mir die Frage, wie man das heute geschickter lösen würde. Hintergrund: Ich nutze einen Exit in der Lagerplatzsuche und möchte auch auf die Lagerbereichssuchreihenfolge zugreifen und diese berücksichtigen. Da die Spalten leider nicht konsistent hochgezählt werden (LGBE0 bis LGBE9, ab dann LGB10 - LGB29), tue ich mich etwas schwer mit einem Zähler und der Konstruktion über Feldsysmbole.

Vielleicht hat jemand ja eine schlaue Idee, wie man so was geschickt lösen könnte...

Danke im Voraus.

Tot ziens

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


Re: Ersetzen von oboleten DO VARYING

Beitrag von black_adept (Top Expert / 4103 / 128 / 945 ) »
Do ... Varying soll ersetzt werden durch Assign ... Increment
Alternativ könntest du auch do xxx times. Assign ... component ... Enddo. verwenden

Folgende Benutzer bedankten sich beim Autor black_adept für den Beitrag:
Barney

live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: Ersetzen von oboleten DO VARYING

Beitrag von Barney (Specialist / 104 / 20 / 9 ) »
black_adept hat geschrieben:Do ... Varying soll ersetzt werden durch Assign ... Increment
Alternativ könntest du auch do xxx times. Assign ... component ... Enddo. verwenden
Erstmal vielen Dank... Ich habe nun die Stelle mit DO 30 TIMES VARYING...

Code: Alles auswählen.

DO 30 TIMES VARYING lf_sav_lgber
         FROM ls_t334b-lgbe0 NEXT ls_t334b-lgbe1.
ersetzt mit

Code: Alles auswählen.

DATA   lf_counter        TYPE i VALUE '7'. "for structure T334B

FIELD-SYMBOLS: <t334b> TYPE t334b,
                          <field> TYPE any.

bla bla bla 

  ASSIGN ls_t334b TO <t334b>.

  DO 30 TIMES.

      ASSIGN COMPONENT lf_counter OF STRUCTURE <t334b> TO <field>.

      MOVE <field> TO lf_sav_lgber.

bla bla bla bla 

ENDDO.
Funktioniert alles... nun noch eine Verständnisfrage: Was ist daran schlauer/eleganter/besser als beim DO... VARYING...?

Re: Ersetzen von oboleten DO VARYING

Beitrag von black_adept (Top Expert / 4103 / 128 / 945 ) »
Beim DO...VARYING {varfeld} FROM {strucfeld1} NEXT {strucfeld2} bekommt man mit {varfeld} de facto eine Art "verzögertes Feldsymbol" auf ein Feld der Struktur geliefert, denn ein Ändern des Feldes {varfeld} hat eine Änderung in der Struktur zur Folge. Aber leider ist der Variablen nicht anzusehen, dass es sich um ein Feldsymbol handelt weil es mit dem "falschen" Deklarationswort DATA definiert war und nicht via FIELD-SYMBOLS. Außerdem wird das Rückschreiben in die Originalstruktur auch erst beim nächsten Schleifendurchlauf ausgeführt und nicht sofort.
Beispiel:

Code: Alles auswählen.

REPORT.

DATA:gs_mard  TYPE mard,
     gs_stock LIKE gs_mard-labst.

DO 3 TIMES VARYING gs_stock FROM gs_mard-labst NEXT gs_mard-umlme.
  gs_stock = 12.
ENDDO.

WRITE gs_mard-labst.
Bitte einfach mal debuggen und im single-step modus auf die Felder gs_stock und gs_mard-labst achten.
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Seite 1 von 1

Vergleichbare Themen

53
Antw.
1259413
Views
DO... VARYING vs ASSIGN INCREMENT
von DeathAndPain » 17.04.2018 15:00 • Verfasst in ABAP® für Anfänger
5
Antw.
1126
Views
Zeilenumbrüche ersetzen
von ralf.wenzel » 23.11.2024 13:34 • Verfasst in ABAP® Core
4
Antw.
3537
Views
SE16 Ersetzen
von milk_shake_69 » 03.04.2007 09:44 • Verfasst in Sonstige Module
2
Antw.
1958
Views
Ersetzen von Zeichen
von SAP_ENTWICKLER » 10.12.2018 08:01 • Verfasst in ABAP® Core
0
Antw.
1121
Views
in SAP FI die Daten von xx in fr xx ersetzen
von mac2023 » 14.04.2023 20:59 • Verfasst in Financials

Über diesen Beitrag


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

Aktuelle Forenbeiträge

Nach MESSAGE TYPE E Felder entsperren
vor einer Woche von rob_abc gelöst 8 / 8528
ABAP - Mail so10 Text
vor einer Woche von retsch 6 / 2431
selection-screen comment mit icon
vor einer Woche von DeathAndPain 9 / 3711

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.

Aktuelle Forenbeiträge

Nach MESSAGE TYPE E Felder entsperren
vor einer Woche von rob_abc gelöst 8 / 8528
ABAP - Mail so10 Text
vor einer Woche von retsch 6 / 2431
selection-screen comment mit icon
vor einer Woche von DeathAndPain 9 / 3711

Unbeantwortete Forenbeiträge

SD_PRINT_TERMS_OF_PAYMENT
vor einer Woche von Manfred K. 1 / 2842
BUSOBJEKT zu CMIS PHIO ermitteln
vor 4 Wochen von snooga87 1 / 4651