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 / 4871 / 314 / 644 ) »
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.
2333
Views
Prüfung ob tabelle existiert
von bliP! » 07.02.2006 15:06 • Verfasst in ABAP® für Anfänger
4
Antw.
4153
Views
Prüfung vorhandener Einträge in Tabelle
von Stahle71 » 11.05.2016 10:00 • Verfasst in ABAP® für Anfänger
7
Antw.
4766
Views
Concatenate in interner Tabelle
von wenigerABAP » 16.09.2016 12:47 • Verfasst in ABAP® für Anfänger
10
Antw.
3944
Views
Select mit interner Tabelle
von Kenny » 13.11.2013 12:17 • Verfasst in ABAP® für Anfänger
7
Antw.
1978
Views
.xls Datei aus interner Tabelle
von JanR » 05.10.2020 10:10 • 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

Absprung VA02 Position
vor 15 Minuten von black_adept 2 / 5
OPD Druck im SPOOL
vor einer Stunde von Manfred K. 1 / 7
Hilfe zum FB MATERIAL_MAINTAIN_DARK
Gestern von black_adept gelöst 8 / 1796
HR-Entgeltnachweis
vor 2 Tagen von ChrisB 4 / 2333

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

Absprung VA02 Position
vor 15 Minuten von black_adept 2 / 5
OPD Druck im SPOOL
vor einer Stunde von Manfred K. 1 / 7
Hilfe zum FB MATERIAL_MAINTAIN_DARK
Gestern von black_adept gelöst 8 / 1796
HR-Entgeltnachweis
vor 2 Tagen von ChrisB 4 / 2333

Unbeantwortete Forenbeiträge

OPD Druck im SPOOL
vor einer Stunde von Manfred K. 1 / 7
Export von Spools in XLSX
vor 4 Tagen von abapamateur 1 / 374
Feldberechnung ME32K
vor einer Woche von ZF_SAPler 1 / 981
MS-Word als Editor
letzen Monat von tekko 1 / 4485