Brett vorm Kopf!

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

Brett vorm Kopf!

Beitrag von Phrusias (ForumUser / 5 / 0 / 0 ) »
Hallo erstmal,

ich bin neu hier und hoffe, dass man mir weiterhelfen kann. Ich schaffe es zumindest nicht alleine das Problem zu lösen... komme einfach nicht darauf!

Ich habe eine Tabelle aus der ich zwei mache in dem ich ein Kennzeichen als Differenzierer verwende. Danach habe ich alle gwünschten Daten in itab1 und itab2.

Im nächsten Schritt werte ich per loop die Daten der Itab1 aus und benötige im weiteren Verlauf Summendaten aus der itab1, die ich dann bei der Ausgabe der Daten von itab2 wieder miteinbringen möchte.

Hierzu habe ich mir während der Verarbeitung vopn itab1 eine sum_tab gebildet in die ich per move alle relevanten Daten eintrage.

So weit so gut.

Innerhalb der Verarbeitung von itab2 muss ich nun die Werte aus der sum_tab übertragen. Nur das wie verschließt sich mir!

Ich hoffe, dass war soweit verständlich.

Danke im Voraus

Phrusias

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


Beitrag von Asaph (Expert / 580 / 6 / 1 ) »
Hallo Phrusias,

leider ist mir deine Schilderung nicht verständlich.

aber trotzdem ein Tip.
-die Summentabelle solttest Du mit collect füllen nicht mit append.
- du mußt die Tabellen untereinander mit einem eindeutigen key
verbinden ( Bsp: bukrs/belnr/gjahr z.B. bei einem FI-Beleg )

Loop at itab2.
read table itab1 wiht key bukrs = itab2-bukrs
belnr = itab2-belnr...
endloop.

-> falls es das nicht war, poste doch bitte etwas mehr infos rüber


Gruß

Andreas

Danke

Beitrag von Phrusias (ForumUser / 5 / 0 / 0 ) »
Danke erstmal für Deine schnelle Antwort. Habe schon befürchtet, dass meine Schilderung etwas unklar war, daher hier ein Auszug aus dem Quelltext.


Trennung von Itab1:

Code: Alles auswählen.

loop at itab1.
  case itab-trenner.
     when space.
   move-corresponding itab1 to itab2.
     append itab2.
  when 'X'.
    move-corresponding itab1 to itab3.
  append itab3.
 endcase.
endloop.
Bearbeitung von itab2 zu Summentabelle:

Code: Alles auswählen.

form itab2_bearb.

loop at itab2.

move itab2 to zf_itab2.

move-corresponding zf_itab2 to sum_tab.
move endbetrag                   to sum_tab-endbetrag.
move artikel                         to sum_tab-artikel.
append sum_tab.

endloop.
Das ist wie geschrieben nur ein Ausschnitt da ich mir hier die Deklaration sparen konnte und mich auch eher kurz halten wollte. Ich fülle innerhalb der Verarbeitung von itab2 (die ich hier weggelassen habe) die Felder Endbetrag und Artikel und übergebe sie wie die übereinstimmenden Felder von zf_itab2 nach sum_tab.

Das funktioniert auch alles und meine Tabelle ist nachweißlich gefüllt.

Jetzt geht es darum die Werte aus der sum_tab in die itab3 zu bekommen, die die gleiche Struktur hat wie die itab2 und sich eben nur durch die Trenner unterscheidet.

Schlüssel habe ich keine definiert.

Danke im Voraus.

Gruß

Phrusias

Beitrag von sapish (ForumUser / 10 / 0 / 0 ) »
Hallo Phrusias,

wenn das Datum "artikel" aus der sum_tab eineindeutig ist, und ebenfalls in der itab3 geführt wird, kannst du es so machen wie ASAPH vorgeschlagen hat.

also

Loop at sum_tab.
read table itab3 with key artikel = sum_tab-artikel
if sy-subrc = 0.
itab3-artikel = sum_tab-artikel.
....

modify itab3 index sy-tabix.
endif.
endloop.

DAS FUNKTIONIERT ABER NUR WENN "ARTIKEL" WIRKLICH EINEINDEUTIG IST ! :wink:

@Sapish

Beitrag von Phrusias (ForumUser / 5 / 0 / 0 ) »
Leider ist "Artikel" bzw. die Nummer nicht eineindeutig, da an verschiedenen Tagen dieser Artikel verkauft wurde und ich aus der Aufstellung wann welcher Artikel verkauft wird die verschiedenen Tabellen erstelle.

Schlußendlich geht es darum den Gesamtpreis und die verkaufte Gesamtanzahl aus der itab2 in die itab3 zu transferieren. Das funktioniert wie du es beschrieben hast leider nicht. (Oder ich stelle mich einfach zu dumm an)

Welches wäre denn die beste Lösung um dieses Problem zu beheben?


Wie arbeite ich mit Collect und wie definiere ich Schlüssel? Ich muss zu meiner Schande gestehen, dass ich das noch nie gemacht habe!
Gruß

Phrusias

PS:Danke für deinen Vorschlag

Beitrag von sapish (ForumUser / 10 / 0 / 0 ) »
Hallo Phrusias,

wenn ich dich richtig verstanden habe, sollst du die Gesamt Summe der
einzelnen Artikel ermitteln.
Es gibt so wie es scheint keinen Artikel mit der gleichen Nummer zweimal.
Also ist Artikel eineindeutig. (das ist ein Schlüssel :wink: )
d.h. jeder Artikel kommt in deiner Summen Tabelle nur ein einziges mal vor.
Richtig ?

Aber die summierten Werte die jetzt eine 1:n Beziehung zu der Tabelle
itab3 haben ?! in die Tabelle zu bringen verstehe ich nicht ganz.
Das würde deine Summierung ad absurdum führen. Richtig ?

Also :

itab3 :

Artikel 001 Menge 2 summe 4 wasweisich 'huhu'
Artikel 001 Menge 3 summe 6 wasweisich 'huhu'

sum_tab :
Artikel 001 Menge 5 summe 10


Nach zusammenführung

itab3:
artikel 001 Menge 5 summe 10 wasweisich 'huhu'
artikel 001 Menge 5 summe 10 wasweisich 'huhu'

Und du willst entweder

itab3:
artikel 001 Menge 5 summe 10 wasweisich 'huhu'

oder aber bei Situation

itab3:
artikel 001 Menge 5 summe 10 wasweisich 'huhu'
artikel 001 Menge 5 summe 10 wasweisich 'Kuckuck'


eine Ausgabe

artikel 001 Menge 5 summe 10
wasweisich 'huhu'
wasweisich 'Kuckuck'

bei Fall zwei :

Loop at sum_tab.
write:/ sum_tab-artikel,
.....
loop at itab3 where artikel = sum_tab-artikel
write:/ itab3-wasweisich,
....

endloop.
endloop.

Ich hoffe das hilft dier weiter :)

gruß
sapish

Beitrag von Asaph (Expert / 580 / 6 / 1 ) »
Hallo Phrusias ,

...das ist keine Schande , jeder hat mal angefangen...

1. ich vermute einmal , daß du evtl. sogar mit einer oder 2 Tabellen
hinkommst, aber dazu benötoge ich mehr Infos über die Aufgabenstellung .

2.collect: Alle nicht zum Schlüssel gehörigen Komponenten müssen numerischen Typs sein (ABAP-Zahlentypen)
Beispiel : wert type bseg-dmbtr
über die Schlüssel der itab wird verdichtet -> siehe auch F1 zu collect

3.wenn du nur eine Liste ausgibst , versuche mit einer Tabelle auszukommen und benutze den u.g. fuba.
Lege deine itab am besten im DD als Struktur an,
oder nimm eine ähnliche, die im DD hinterlegt ist - die überzähligen
Felder kannst du im layout (s.u.) später wieder ausblenden
-> die Summierung braucht Du nicht zu programmieren;
die kannst du nach dem Ausführen in einem layout festlegen
und speichern

Code: Alles auswählen.

  DATA: VARIANT LIKE DISVARIANT.
  data i_save value 'X'.
  VARIANT-REPORT     = sy-repid.

  CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
       EXPORTING
            I_STRUCTURE_NAME = 'BSEG'
            IS_VARIANT       = VARIANT
            I_SAVE           = I_SAVE
       TABLES
            T_OUTTAB         = ITAB
       EXCEPTIONS
            OTHERS           = 1.
lg Andreas

kuckukwasweißich

Beitrag von Phrusias (ForumUser / 5 / 0 / 0 ) »
Das trifft es ganz genau. ich summiere aus der itab2 Datensätze in die sum_tab und muss die Datensätze aus der sum_tab bei der Verarbeitung (Ausgabe einer Liste) der itab3 pro Artikel ausgeben.
Aber die summierten Werte die jetzt eine 1:n Beziehung zu der Tabelle
itab3 haben ?! in die Tabelle zu bringen verstehe ich nicht ganz.
Das würde deine Summierung ad absurdum führen. Richtig ?
Warum würde es die Summierung ad absurdum führen? Ich sammle die summen_daten in der sum_tab um sie an die itab3 zu übergeben.

Ist das der falsche Weg? Bei der Ausgabe der Liste zu itab2 entstehen die Daten die innerhalb der Ausgabe der Liste zu itab3 noch zusätzlich in der Fußzeile benötigt werden.

Die Herangehensweise ist wohl etwas suboptimal denn mit dem mir gegebenen Rüstzeug krieg ich dat nicht hin.
Also :

itab3 :

Artikel 001 Menge 2 summe 4 wasweisich 'huhu'
Artikel 001 Menge 3 summe 6 wasweisich 'huhu'

sum_tab :
Artikel 001 Menge 5 summe 10
Genau so sieht es aus.
Loop at sum_tab.
write:/ sum_tab-artikel,
.....
loop at itab3 where artikel = sum_tab-artikel
write:/ itab3-wasweisich,
....

endloop.
endloop.
Ich kann einen Loop innerhalb eines anderen loops vornehmen? So easy?
Das ginge dann also auch umgekehrt...

Ich versuch das mal und melde mich dann wieder!

Danke für eure Hilfe.

Gruß

Phru

Lesen

Beitrag von Boris (ForumUser / 3 / 0 / 0 ) »
Hi, will hier nicht auch noch mit Lösugsvorschlag kommen, aber die Themen "COLLECT itab" uns "SELECT SUM( ... )" solltest Du dir irgendwann mal ansehen, denn das sind die performanteren Lösungen!

Gruß.

Danke

Beitrag von Phrusias (ForumUser / 5 / 0 / 0 ) »
Hallo Leute,

ich wollte mich noch mal ganz herzlich für eure Hilfe bedanken. Schlußendlich konnte ich das Problem lösen.

Und es hat sich gezeigt, dass es noch nie geschadet hat sich intensiv mit der Materie auseinanderzusetzen.

Gruß

Phru

Seite 1 von 1

Vergleichbare Themen

1
Antw.
1742
Views
user-exit vorm Einspielen eines IDOC's
von dimes » 20.02.2007 09:45 • Verfasst in ABAP® Core
1
Antw.
2781
Views
Kopf für ALV Grid Control
von m4rkusr » 25.09.2006 15:09 • Verfasst in Dialogprogrammierung
2
Antw.
2448
Views
Stücklisten Kopf Text
von dmi » 11.10.2013 11:57 • Verfasst in ABAP® Core
2
Antw.
2400
Views
BAPI_SALESORDER_CREATEFROMDAT2 texte im Kopf??
von dimes » 18.07.2006 15:30 • Verfasst in ABAP® Core
0
Antw.
2205
Views
Archivierung von SD Kopf- und Positionstexten
von Piwi » 07.08.2007 10:55 • Verfasst in Sales and Distribution

Über diesen Beitrag


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

Aktuelle Forenbeiträge

BAPI zur ABSO?
vor 10 Stunden von DeathAndPain 2 / 375
Materialstammerweiterung: Neuer Reiter
vor einer Woche von DeathAndPain gelöst 4 / 1010
Ermittlung der Arbeitstage (Mosid)
vor einer Woche von Radinator 11 / 46676
LSMW-Problem
vor 3 Wochen von DeathAndPain gelöst 6 / 4566

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

BAPI zur ABSO?
vor 10 Stunden von DeathAndPain 2 / 375
Materialstammerweiterung: Neuer Reiter
vor einer Woche von DeathAndPain gelöst 4 / 1010
Ermittlung der Arbeitstage (Mosid)
vor einer Woche von Radinator 11 / 46676
LSMW-Problem
vor 3 Wochen von DeathAndPain gelöst 6 / 4566