Gruppenwechsel

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

Gruppenwechsel

Beitrag von KleinerEisbaer (Specialist / 123 / 3 / 0 ) »
Hallo,

warum funktioniert folgender Code nicht?

Code: Alles auswählen.

Tables: vbrk.

Data: it_vbrk type table of vbrk with header line.

Select * from vbrk 
INTO CORRESPONDING FIELDS OF TABLE it_vbrk
order by kunrg.

Sort it_vbrk by kunrg.

Loop at it_vbrk.
at new kunrg.
  write: / 'KNRG: ', it_vbrk-kunrg.
endat.
endloop.
Ich bin davon ausgegangen, dass ich nun immer dann eine Regulierernummer ausgegeben bekomme, wenn eine NEUE Nummer gefunden wird. Stattdessen werden aber ALLE Regulierernummern ausgegeben.

Gut möglich, dass ich da etwas noch nicht verstanden habe ... :?
Nimm die Menschen wie sie sind, es gibt keine anderen.

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


Re: Gruppenwechsel

Beitrag von ralf.wenzel (Top Expert / 3935 / 200 / 281 ) »
KleinerEisbaer hat geschrieben:Sort it_vbrk by kunrg.
AFAIR muss die itab nach allen Feldern links von KUNRG (einschließlich KUNRG) sortiert sein. Ich arbeite aber selten mit Gruppenwechseln.


Ralf
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Beitrag von KleinerEisbaer (Specialist / 123 / 3 / 0 ) »
Hm, das ist ja doof.
Wenn ich eine Tabelle mit
Select * from ... INTO CORRESPONDING FIELDS OF TABLE ...
aus dem DDIC hole, weiß ich doch gar nicht, welche Felder links von meinem bestimmten Feld sind. (Oder sind die DDIC-Tabellen doch tatsächlich in der Reihenfolge geordnet, wie sie in der Strukturansicht abgebildet werden?)
Das bedeutet also, dass ich händisch eine interne Tabelle anlegen muss, mit exakt den Feldern, die ich benötige?

Danke für die Infos!
Nimm die Menschen wie sie sind, es gibt keine anderen.

Beitrag von ralf.wenzel (Top Expert / 3935 / 200 / 281 ) »
Du musst doch wissen wie die Zieltabelle deklariert ist. Schon hast du deine Feldreihenfolge für den Sort.


Ralf
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Beitrag von KleinerEisbaer (Specialist / 123 / 3 / 0 ) »
Ok, ich habe jetzt mal folgendes Konstrukt gemacht, nachdem ich eine interne Tabelle it_vbrk ordnungsgemäß erstellt und gefüllt habe:

Code: Alles auswählen.

Loop at it_vbrk
where fkdat between '20060201' and '20080229'
and vkorg = '3000'
and fkart = 'ZES'.
at first.
  write: / 'Dies ist eine Überschrift'.
endat.
at new kunrg.
  write: / 'KUNRG: ', it_vbrk-kunrg.
endat.
endloop.
Komischerweise wird bei 'KUNRG' auch etwas ausgegeben, nicht aber die Zeile 'Dies ist eine Überschrift'. Eigentlich müsste doch, da die Loopschleife ja durchlaufen wird, auch die Überschrift ausgegeben werden. :?:
Nimm die Menschen wie sie sind, es gibt keine anderen.

Beitrag von ralf.wenzel (Top Expert / 3935 / 200 / 281 ) »
Die Hilfe sagt dazu:
After LOOP there should be no limiting condition cond specified.
Sorry, habs nur auf Englisch, "mein" System steht in Thailand ;)

LG

Ralf
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Beitrag von KleinerEisbaer (Specialist / 123 / 3 / 0 ) »
Na gut, hab' jetzt einen ganz normalen Loop:

Code: Alles auswählen.

Loop at itab into wa.
at new kunrg.
write: / 'Regulierer: ', wa-kunrg.
write: / 'Kunde: ', wa-name1.
endat.
endloop.
Vorher habe ich die interne Tabelle gefüllt und nach kunrg sortiert.
Wenn ich die Loop-Schleife nun ohne die 'at new kunrg'-Zeile laufen lasse, werden alle vorhandenen Regulierernummern und Kundennamen entsprechend ihrer vorkommenden Häufigkeit ausgegeben.
Sobald ich die 'at new kunrg'-Zeile einfüge, erhalte ich eine Ausgabe die wie folgt aussieht:
Regulierer: 11111111
Kunde: ****************
Regulierer: 55555555
Kunde: ****************
D.h. an Stelle der eigentlich vorhandenen Kundennamen werden tatsächlich die Sternchen ausgegeben.
Was sagt denn Dein thailändisches System dazu?
Nimm die Menschen wie sie sind, es gibt keine anderen.

Beitrag von ralf.wenzel (Top Expert / 3935 / 200 / 281 ) »
Das sagt mir, dass es in der VBRK kein Feld namens NAME1 gibt. Das heißt ich weiß nicht wie deine interne Tabelle deklariert ist. Ich würde aber wetten, dass NAME1 links von KUNRG steht.

Das mit den Sternen passiert nämlich immer in dem von dir geschilderten Fall wenn NAME1 links von KUNRG steht.


Ralf
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Beitrag von KleinerEisbaer (Specialist / 123 / 3 / 0 ) »
Meine Tabelle ist diesmal so zustande gekommen:

Code: Alles auswählen.

Types: Begin of satz,
kunrg type vbrk-kunrg,
vkorg type vbrk-vkorg,
fkart type vbrk-fkart,
fkdat type vbrk-fkdat,
netwr type vbrk-netwr,
mwsbk type vbrk-mwsbk,
vbeln type vbrk-vbeln,
valdt type vbrk-valdt,
name1 type kna1-name1,
stras type kna1-stras,
ort01 type kna1-ort01,
pstlz type kna1-pstlz,
bankl type knbk-bankl,
bkont type knbk-bkont,
bankn type knbk-bankn,
end of satz.

Types: tabelle type standard table of satz.

Data: itab type tabelle,
wa type satz.

* Interne Tabelle füllen
Select * from vbrk
where fkdat between '20060201' and '20080229'
and vkorg = '3000'
and fkart = 'ZES'.

  Select * from kna1 where kunnr = vbrk-kunrg.

    Select * from knbk where kunnr = kna1-kunnr.

      wa-kunrg = vbrk-kunrg.
      wa-name1 = kna1-name1.
      wa-bankl = knbk-bankl.
      wa-bkont = knbk-bkont.
      wa-bankn = knbk-bankn.
      wa-valdt = vbrk-valdt.
      wa-vbeln = vbrk-vbeln.
      Insert wa into table itab.

    Endselect.
  Endselect.
Endselect.
Ich würde jetzt mal behaupten, da steht nix 'links' von kunrg, da ich ja kunrg als erstes Feld definiert habe. Oder muss ich mir das mit 'links' und 'rechts' anders vorstellen?
Nimm die Menschen wie sie sind, es gibt keine anderen.

Beitrag von ralf.wenzel (Top Expert / 3935 / 200 / 281 ) »
Entschuldige. Dreimal LINKS geschrieben, dreimal RECHTS gemeint.

Das ist ja auch ganz logisch, die Gruppenwechselbearbeitung BEDINGT, dass die Felder nach dem Gruppenwechsel ausgeblendet werden müssen. Du wirst feststellen, dass das in allen anderen Fällen (also wo AT NEW KUNRG nicht durchlaufen wird) nicht so ist.

Es ist mir übrigens ein Rätsel, wie du das Programm so aktivieren konntest. Kein INTO im select, aber auch per tables die Tabellenarbeitsbereiche nicht deklariert.

Und zu deinem (ich drücke mich mal diplomatisch aus) antiquarischen und extrem langsamen select-endselect - mehrfach ineinander verschachtelt - sag ich mal nix.


Ralf
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Beitrag von KleinerEisbaer (Specialist / 123 / 3 / 0 ) »
Ich hab das Feld name1 also mal von links nach rechts gewechselt :wink: . Und siehe da, es klappt.

Bei der 'antiquarischen' unperformanten Select-Schleife braucht man kein into. Ich hab' das mal so beigebracht bekommen ( in einer professionellen Ausbildung ! :wink: ) und tu' mich manchmal schwer mit anderen Select's.

Kannst Du vielleicht noch mal zwei, drei erklärende Sätze dazu schreiben, was es mit dem Ausblenden von Feldern nach dem Gruppenwechsel auf sich hat? Irgendwie habe ich das noch nicht so ganz verstanden.

Danke auf jeden Fall schon mal für Deine Unterstützung!
Nimm die Menschen wie sie sind, es gibt keine anderen.

Beitrag von ralf.wenzel (Top Expert / 3935 / 200 / 281 ) »
Fein dass es funtkioniert.

Diese Selects solltest du dir dringend abgewöhnen, bei nennenswerten Datenmengen kommst du sonst nicht weit. Das ist ein MERKLICHER Unterschied. Dringender Rat an dich. Ich musste mich da auch mal umgewöhnen, inzwischen finde ich Selects ohne Schleife viel besser - auch besser lesbar.

Das mit den erklärenden Zeilen mache ich nicht mehr jetzt, ich bin noch in Bangkok am Arbeiten (Internet sei Dank, ich sitze dabei in HH) obwohl es Samstagabend 10 vor 11 abends ist (Ortszeit HH ;) ), aber das mache ich gern beizeiten mal in diesem Thread.

Sollte ich es vergessen, tritt mir verbal in den Hintern. Wäre aber auch nett, wenn jemand für mich einspringen könnte.


Ralf
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Seite 1 von 1

Vergleichbare Themen

6
Antw.
2940
Views
Gruppenwechsel im ALV
von ch|ma|ra » 14.05.2008 15:05 • Verfasst in ABAP® für Anfänger
0
Antw.
1190
Views
Smartforms: Gruppenwechsel
von oasiedl » 25.05.2007 05:26 • Verfasst in ABAP® für Anfänger
1
Antw.
1445
Views
Gruppenwechsel in Smartforms
von an4kh4 » 09.11.2006 09:53 • Verfasst in ABAP® Core
1
Antw.
1187
Views
ALV + Überschrift bei Gruppenwechsel
von SD*TK » 03.01.2007 11:39 • Verfasst in ABAP® Core
1
Antw.
1488
Views
ALV-Druck mit Seitenzähler / Gruppenwechsel
von TakerOne » 08.02.2008 13:23 • Verfasst in ABAP® Core

Über diesen Beitrag


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

Aktuelle Forenbeiträge

Daten an Tabelle binden
vor 4 Minuten von Bright4.5 3 / 1465
Regex in where
vor einer Stunde von tar 6 / 103
Programm anlegen mit Vorlage
vor 16 Stunden von DeathAndPain 2 / 118
IT0024 Qualifikationen CP-ID
vor 17 Stunden von DeathAndPain 2 / 353

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

Daten an Tabelle binden
vor 4 Minuten von Bright4.5 3 / 1465
Regex in where
vor einer Stunde von tar 6 / 103
Programm anlegen mit Vorlage
vor 16 Stunden von DeathAndPain 2 / 118
IT0024 Qualifikationen CP-ID
vor 17 Stunden von DeathAndPain 2 / 353

Unbeantwortete Forenbeiträge

BUSOBJEKT zu CMIS PHIO ermitteln
vor 18 Stunden von snooga87 1 / 86
aRFC im OO-Kontext
vor 5 Wochen von ralf.wenzel 1 / 3261
Hilfe bei SWEC/SWE2
September 2024 von retsch 1 / 9821