Prüfung interner Tabelle

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

Prüfung interner Tabelle

Beitrag von knut (ForumUser / 4 / 0 / 0 ) »
Hallo,

ich muss eine interne Tabelle mit 10 Feldern auf Inhalt prüfen. Wenn ein Feld initial ist, sollen Sonderzeichen aufgefüllt werden.
Wie stell ich es geschickt an, um nicht bei jedem Feld: IF feld1 initial... fragen zu müssen.

Gruß knut

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


Beitrag von ewx (Top Expert / 4784 / 294 / 628 ) »
Hi Knut,

ASSIGN COMPONENT heisst das Zauberwort.

Gruß,
Enno.

Beitrag von babap (Expert / 681 / 1 / 1 ) »
Hallo,

einfach alle Felder der Struktur durchsehen, unabhängig davon, wie sie heißen, oder was sie sind.

Code: Alles auswählen.

data: xxx TYPE mytype. "irgendwelche Felder
field-symbols: <xxx> type any.

CLEAR h_comp.
DO.
  ADD 1 TO h_comp.
* Quell-Feld zuweisen
  ASSIGN COMPONENT h_comp OF STRUCTURE xxx TO <xxx>.
* Fertig, wenn Zuweisung fehlschlägt
  IF sy-subrc NE 0.
    EXIT.
* Zuweisung OK
  ELSE.
* Quellfeld prüfen??
    IF <xxx> IS INITIAL.
* ins Zielfeld was reinstellen
      MOVE 'yyyy' to <xxx>.
    ENDIF." Quell-Feld war leer
  ENDIF. "Komponente war gültig
ENDDO. "Datenfelder der Struktur bearbeiten
Gruß
babap

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

da Du doch die jeweilige gesamte Struktur durchforsten willst, kannst Du auf die Hilfsvariable h_comp verzichten und statt dessen sy-index benutzen, das wegen der DO-Schleife korrekt hochzählt... ;)

Da es sich ja bei der Aufgabenstellung um eine Tabelle handelt: Ist da das durchLOOPen für jeden Satz notwendig?
Meine Idee war es, eine Kopfzeile/WA für die Tabelle mittels DO. ASSIGN COMPONENT... durchzugehen und dann mit MODIFY itab FROM wa zu arbeiten. Geht das?
Beispiel:

Code: Alles auswählen.

DATA:
  itab    TYPE TABLE,
  wa_itab LIKE LINE OF itab.
FIELD-SYMBOLS:
  <field> TYPE ANY. 
DO. 
  ASSIGN COMPONENT sy-index OF STRUCTURE wa_itab TO <field>. 
  IF sy-subrc NE 0. 
    EXIT. 
  ELSE. 
* Quellfeld prüfen?? 
    IF <field> IS INITIAL. 
* ins Zielfeld was reinstellen 
      CLEAR <field> WITH 'Ï'. 
      MODIFY itab FROM wa_itab
                  WHERE 'Feldname' = space "woher??
                  TRANSPORTING ('Feldname').
    ENDIF." Quell-Feld war leer 
  ENDIF. "Komponente war gültig 
ENDDO. "Datenfelder der Struktur bearbeiten
Gruß
Ereglam


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

Beitrag von babap (Expert / 681 / 1 / 1 ) »
Hallo,

mit sy-index, sy-tabix, sy-loopc habe ich so meine "schlechten" Erfahrungen gemacht. Kaum füge ich eine "Unterschleife" ein, funktioniert das ganze nicht mehr, deshalb nehme ich einen eigenen Zähler (reine Erfahrung ...).

Da die Prüfung, um die es geht auf eine Tabellenzeile angewendet werden soll, würde ich das ganze, auch aus Performance-Gründen, mit LOOP AT table ASSIGNING <table> machen.

Es ist keine Kopfzeile, kein Arbeitsbereich und kein MODIFY FROM irgendwas notwendig.

Man arbeitet einfach direkt auf der Tabelle. (Änderung bei --->>> <<<---, alles andere wie vorher)

Code: Alles auswählen.

*--->>>
DATA: itab TYPE TABLE of mytable.
FIELD-SYMBOL: <itab> like line of itab.
*<<<---

field-symbols: <xxx> type any. 

LOOP AT itab assigning <itab>.

CLEAR h_comp. 
DO. 
  ADD 1 TO h_comp. 
* Quell-Feld zuweisen

*--->>> 
  ASSIGN COMPONENT h_comp OF STRUCTURE [b]<itab[/b]> TO <xxx>. 
*<<<---

* Fertig, wenn Zuweisung fehlschlägt 
  IF sy-subrc NE 0. 
    EXIT. 
* Zuweisung OK 
  ELSE. 
* Quellfeld prüfen?? 
    IF <xxx> IS INITIAL. 
* ins Zielfeld was reinstellen 
      MOVE 'yyyy' to <xxx>. 
    ENDIF." Quell-Feld war leer 
  ENDIF. "Komponente war gültig 
ENDDO. "Datenfelder der Struktur bearbeiten
In der ASSIGN COMPONENT-Zeile wurde nur xxx gegen <itab> ausgetauscht.

(müsste so funktionieren)

Gruß
babap

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

bei meinem Beispiel, dass ja so noch nicht funktioniert, gibt es noch den Fehler, dass man für die Kopfzeile keine Prüfung benötigt und die eigentliche Arbeit durch den MODIFY ... WHERE gemacht werden sollte.
Welcher Ansatz performancemäßig günstiger ist, ist ohnehin noch zu klären.

Bzgl. SY-INDEX:
bei verschachtelten DO-Schleifen ist es mit SY-INDEX, wie von Dir schon gesagt, etwas kritisch wegen möglicher Nebenwirkungen durch PERFORMs und Mehrfachschachtelungen.
Bei obigen Beispiel wäre es einfache eine Alternative.
Gruß
Ereglam


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

Seite 1 von 1

Vergleichbare Themen

2
Antw.
2204
Views
Prüfung ob tabelle existiert
von bliP! » 07.02.2006 15:06 • Verfasst in ABAP® für Anfänger
4
Antw.
3758
Views
Prüfung vorhandener Einträge in Tabelle
von Stahle71 » 11.05.2016 10:00 • Verfasst in ABAP® für Anfänger
10
Antw.
3381
Views
Select mit interner Tabelle
von Kenny » 13.11.2013 12:17 • Verfasst in ABAP® für Anfänger
1
Antw.
5020
Views
Move-Corresponding mit interner Tabelle
von Dele » 13.10.2015 13:53 • Verfasst in Tips + Tricks & FAQs
6
Antw.
5907
Views
Select bei interner Tabelle
von Buetzy » 09.07.2007 13:58 • Verfasst in ABAP® für Anfänger

Über diesen Beitrag


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

Aktuelle Forenbeiträge

Zwischensumme Adobe Forms
vor 3 Tagen von Lucyalison 1 / 64
Interne Tabelle
vor 5 Tagen von black_adept 2 / 133
MaLo-Checker in ABAP
vor einer Woche von A6272 6 / 254

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

Zwischensumme Adobe Forms
vor 3 Tagen von Lucyalison 1 / 64
Interne Tabelle
vor 5 Tagen von black_adept 2 / 133
MaLo-Checker in ABAP
vor einer Woche von A6272 6 / 254

Unbeantwortete Forenbeiträge

Zwischensumme Adobe Forms
vor 3 Tagen von Lucyalison 1 / 64
Group Items auf einer Filterbar
vor einer Woche von Bright4.5 1 / 107
tRFC Transaktionen SM58
vor 4 Wochen von A6272 1 / 140