Aufbau Itab mit Key und lesen mit Gruppenwechsel

Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

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

Aufbau Itab mit Key und lesen mit Gruppenwechsel

Beitrag von AbAp User ( / / 0 / 3 ) »
Hallo,

ich habe momentan ein unlösliches Problem und weiss nicht mehr weiter.

Ich habe ein itab

Feld1
Feld2
Feld3

da möchte ich gerne das Feld1 + Feld2 als Keyfeld sind.

Die Tabelle fülle ich dann mit Daten

Feld1 = 100
Feld2 = Peter
Feld3 = rot

Feld1 = 100
Feld2 = Peter
Feld = blau

Feld1 = 200
Feld2 = Markus
Feld = rot

Feld1 = 300
Feld2 = martin
Feld = rot

Nun Möchte ich die itab in Schleife lesen und immer wenn der Key sind ändert ... irdenwas(write) machen.

Könnt Ihr mir da helfen ?

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


Beitrag von Gast ( / / 0 / 3 ) »
Hallo,

sry ich habe mich vertan.

Feld1+Feld2 = Keyfeld.

Gfüllt wird dann

Feld1 = Bereich1
Feld2 = 10
Feld3 = rot

Feld1 = Bereich1
Feld2 = 20
Feld3 = rot

Feld1 = Bereich2
Feld2 = 10
Feld3 = rot

Nun möchte ich sobal sich der Bereich ändert etwas machen(write mit summe aller Feld2)

Danke und Entschuldigung

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

wenn ich's richtig verstanden hab, sollte es so funken.

Code: Alles auswählen.

  SORT it_data.
  LOOP AT it_data INTO wa_data.

    AT END OF f1.
      SUM.
      WRITE: / wa_data-f1, wa_data-f2.
    ENDAT.
  ENDLOOP.
mfg
Richard

Beitrag von ereglam (Top Expert / 1829 / 2 / 7 ) »
RiffRaff hat geschrieben:Hallo,

wenn ich's richtig verstanden hab, sollte es so funken.

Code: Alles auswählen.

  SORT it_data.

    AT END OF f1.
      SUM.
      WRITE: / wa_data-f1, wa_data-f2.
    ENDAT.
  ENDLOOP.
mfg
Richard
das wird leider nicht funktionieren, weil alle Felder nach F1 mit '*' belegt werden.

Benutzt man statt dessen

Code: Alles auswählen.

  LOOP AT it_data ASSIGNING <wa_data>.
geht es, weil die '*'-Belegung dann nicht greift...
Gruß
Ereglam


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

Beitrag von Gast ( / / 0 / 3 ) »
vielen Dank.

Wie muss ich den den wa und die itab aufbauen ?

Beitrag von ereglam (Top Expert / 1829 / 2 / 7 ) »
Anonymous hat geschrieben:vielen Dank.

Wie muss ich den den wa und die itab aufbauen ?
nun, die Tabellenstruktur hast Du doch schon vorgegeben...
Und WA ist als FIELD-SYMBOL zu definieren. (beachte bitte die Besonderheiten bei der Arbeit mit Feldsymbolen bzgl. Änderung von Werten)

Dein Gruppenwechesl muss dann bei 'AT f2' erfolgen, damit Änderungen sowohl für F1 als auch F2 erkannt werden.
Und die Tabelle muss nach F1, F2 sortiert sein!
Gruß
Ereglam


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

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

was meinst du mit
das wird leider nicht funktionieren, weil alle Felder nach F1 mit '*' belegt werden
etwa:

Code: Alles auswählen.

AT END OF f1. 
dann muß ich sagen:
1) funktioniert es, weil ich es bevor ich es gepostet hab, ausprobiert hab.
2) nur die Felder links (in der Tabelle) vom Feld f1 mit * gefüllt sind. Nicht aber die rechts davon.

mfg
Richard

Beitrag von ereglam (Top Expert / 1829 / 2 / 7 ) »
RiffRaff hat geschrieben:Hallo ereglam,

was meinst du mit
das wird leider nicht funktionieren, weil alle Felder nach F1 mit '*' belegt werden
etwa:

Code: Alles auswählen.

AT END OF f1. 
dann muß ich sagen:
1) funktioniert es, weil ich es bevor ich es gepostet hab, ausprobiert hab.
2) nur die Felder links (in der Tabelle) vom Feld f1 mit * gefüllt sind. Nicht aber die rechts davon.

mfg
Richard
nach meinem Kenntnisstand werden zeichenartige Felder, die weiter rechts vom Feld (hier F1) stehen, innerhalb des AT-Blocks mit '*...*' maskiert, wenn man eine Workarea benutzt.
(vielleicht sollte ich ab und zu mich etwas vollständiger ausdrücken... ;))
Außerhalb eines AT-Blocks steht die WA im normalen Umfang zur Verfügung.

Bei Feldsymbolen passiert dies nicht, weil hier durch die Maskierung die Daten in der Tabelle selbst geändert würden...

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

dann wäre ein vollständiges Coding nicht schlecht gewesen.

Code: Alles auswählen.

TYPES: BEGIN OF lin_data,
          f1(10) TYPE c,
          f2     TYPE i,
          f3(10) TYPE c,
       END OF lin_data.


DATA: it_data TYPE TABLE OF lin_data,
      wa_data TYPE lin_data.
:wink:

Scherz beiseite. Habe auch was dazugelernt. Das mit den Feldsymbolen wußte ich noch nicht.

mfg
Richard

Beitrag von Gast ( / / 0 / 3 ) »
muss ich die itab nicht gesondert als keyfeld(er) definieren ?

Beitrag von Wolfi ( / / 0 / 3 ) »
Hi,

ich habe das mal versucht, aber scheitere hier und da.

Kann mir jemand mal ein kleines Listing fertig machen.
Wie die Tabellen Struktur/WA und der Loop auszusehen hat ?

Rechtherzlichen Dank

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

0815 Testprogramm:

Code: Alles auswählen.

TYPES: BEGIN OF lin_data,
          f1(10) TYPE c,
          f2     TYPE i,
          f3(10) TYPE c,
       END OF lin_data.


DATA: it_data TYPE TABLE OF lin_data,
      wa_data TYPE lin_data.



  wa_data-f1 = 'Bereich1'.
  wa_data-f2 = 10.
  wa_data-f3 = 'rot'.
  APPEND wa_data TO it_data.

  wa_data-f1 = 'Bereich1'.
  wa_data-f2 = 20.
  wa_data-f3 = 'rot'.
  APPEND wa_data TO it_data.

  wa_data-f1 = 'Bereich1'.
  wa_data-f2 = 20.
  wa_data-f3 = 'rot'.
  APPEND wa_data TO it_data.

  wa_data-f1 = 'Bereich2'.
  wa_data-f2 = 20.
  wa_data-f3 = 'rot'.
  APPEND wa_data TO it_data.


  SORT it_data.
  LOOP AT it_data INTO wa_data.

    AT END OF f1.
      SUM.
      WRITE: / wa_data-f1, wa_data-f2.
    ENDAT.
  ENDLOOP.
ist sicherlich anzupassen.

mfg
Richard

Beitrag von RiffRaff (Specialist / 379 / 0 / 1 ) »
:oops: HALT - STOP - Korrektur

nachdem endlich mein Anwalt eingetroffen ist, möchte ich meine Aussage korrigieren :oops:
2) nur die Felder links (in der Tabelle) vom Feld f1 mit * gefüllt sind. Nicht aber die rechts davon.
Ereglam hat natürlich recht. Es ist genau umgekehrt
nach meinem Kenntnisstand werden zeichenartige Felder, die weiter rechts vom Feld (hier F1) stehen, innerhalb des AT-Blocks mit '*...*' maskiert, wenn man eine Workarea benutzt.
Ist ja auch logisch.
Welches f2 von den x-Datensätze soll er nehmen??

Code: Alles auswählen.

    AT END OF f1. 
      WRITE: / wa_data-f1, wa_data-f2. 
In diesem Fall funktioniert es, da die Summe gebildet wird.

Code: Alles auswählen.

    AT END OF f1. 
      SUM. 
      WRITE: / wa_data-f1, wa_data-f2. 
mfg
Richard

Seite 1 von 1

Vergleichbare Themen

4
Antw.
2069
Views
Daten in ITAB lesen für jeden Eintrag ohne Loop
von kpas » 04.08.2006 08:07 • Verfasst in ABAP® Core
11
Antw.
8103
Views
Gruppenwechsel
von KleinerEisbaer » 07.03.2008 19:23 • Verfasst in ABAP® für Anfänger
6
Antw.
2932
Views
Gruppenwechsel im ALV
von ch|ma|ra » 14.05.2008 15:05 • Verfasst in ABAP® für Anfänger
1
Antw.
1441
Views
Gruppenwechsel in Smartforms
von an4kh4 » 09.11.2006 09:53 • Verfasst in ABAP® Core
0
Antw.
1188
Views
Smartforms: Gruppenwechsel
von oasiedl » 25.05.2007 05:26 • Verfasst in ABAP® für Anfänger

Über diesen Beitrag


Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

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

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.

Unbeantwortete Forenbeiträge

aRFC im OO-Kontext
vor 4 Wochen von ralf.wenzel 1 / 2437
Hilfe bei SWEC/SWE2
September 2024 von retsch 1 / 9020