ich habe ein Problem mit einem Vergleich von zwei Datenbanktabellen.
Ich möchte gerne zwei Tabellen vergleichen, die vom Aufbau her grundsätzlich gleich sind. Die eine Tabelle enthält Daten auf Monatsebene, die andere Tabelle die gleichen auf Tagesebene. Nun möchte ich gerne Differenzen in diesen beiden Tabellen für vier bestimmte Spalten ermitteln und diese Differenzen zu einem speziellen Datum in die Tabelle mit den Tageswerten zurückschreiben.
Mein Problem liegt hier anscheinend irgendwie beim Zurückschreiben in die Datenbanktabelle. Wenn ich mir kurz vorher die interne Tabelle angucke und eine Summe über die Spalten lege, entspricht diese genau der Differenz, die ich gerne ausgeglichen haben möchte. Aber nach dem Modify zeigt die veränderte Datenbanktabelle leider nicht den Wert, den ich erwarte. Und ich komme einfach nicht auf den Fehler....
- Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
- * SAP Tabellen
- tab2.
- * Definition interner Tabellen
- i_tab1_1 TYPE TABLE OF tab1 WITH HEADER LINE,
- i_tab2 TYPE TABLE OF tab1 WITH HEADER LINE.
- * Definition Workareas
- * Definition lokale Variablen
- l_aemenge LIKE tab1-aemenge,
- l_aewavwr LIKE tab1-aewavwr,
- l_znemetkae LIKE tab1-znemetkae,
- l_spmon LIKE tab2-spmon,
- l_sptag LIKE tab2-sptag,
- l_sptag_low LIKE tab2-sptag,
- l_sptag_high LIKE tab2-sptag,
- flag(1) TYPE c.
- * Eingabeparameter: Tagesdatum -> hier wird das FEHLENDE Datum eingegeben!
- p_vrsio TYPE tab1-vrsio DEFAULT '000' OBLIGATORY,
- p_flag TYPE flag DEFAULT 'X'.
- * Initialzation
- * Start of selection
- * aus Eingabedatum Monat/Jahr ermitteln
- l_sptag = p_datum.
- l_spmon = l_sptag.
- * Daten für gesamten Monat aus tab1 und tab2 selektieren
- APPENDING CORRESPONDING FIELDS OF TABLE i_tab1_1
- WHERE sptag >= l_sptag_low AND sptag <= l_sptag_high
- AND vrsio EQ p_vrsio.
- APPENDING CORRESPONDING FIELDS OF TABLE i_tab2
- WHERE spmon = l_spmon AND vrsio EQ p_vrsio.
- * Auftragseingang, Auftragsmenge und offene Auftragsmenge negieren
- l_aenetwr = wa_tab1-aenetwr * ( -1 ).
- l_aemenge = wa_tab1-aemenge * ( -1 ).
- l_aewavwr = wa_tab1-aewavwr * ( -1 ).
- l_znemetkae = wa_tab1-znemetkae * ( -1 ).
- * Monatswert eintragen, Tagesdatum auf 0 setzen
- * Werte übernehmen, alle anderen auf 0 setzen und Tabelle auf Monatsebene zusammendampfen
- wa_tab1-ummenge,
- wa_tab1-netwr,
- wa_tab1-wmeng,
- wa_tab1-oauwe,
- wa_tab1-oaume,
- wa_tab1-gunetwr,
- wa_tab1-gumenge,
- wa_tab1-renetwr,
- wa_tab1-remenge,
- wa_tab1-rewavwr,
- wa_tab1-umwavwr,
- wa_tab1-guwavwr,
- wa_tab1-oeimeb,
- wa_tab1-oeiweb,
- wa_tab1-z_oauwe_vw,
- wa_tab1-znemetkum,
- wa_tab1-vkbur.
- * Daten aus tab2 dazulesen -> Ergebnis ist Monatsdifferenz aus tab2 und tab1
- wa_tab1-ummenge,
- wa_tab1-netwr,
- wa_tab1-wmeng,
- wa_tab1-oauwe,
- wa_tab1-oaume,
- wa_tab1-gunetwr,
- wa_tab1-gumenge,
- wa_tab1-renetwr,
- wa_tab1-remenge,
- wa_tab1-rewavwr,
- wa_tab1-umwavwr,
- wa_tab1-guwavwr,
- wa_tab1-oeimeb,
- wa_tab1-oeiweb,
- wa_tab1-z_oauwe_vw,
- wa_tab1-znemetkum,
- wa_tab1-vkbur.
- * Fehlendes Tagesdatum in Feld sptag schreiben und Monatsangabe wieder löschen
- SORT i_tab1_1.
- * Daten als ALV-Liste anzeigen.
- ELSE.
- COMMIT WORK.
- * End of selection
- GeSHi ©
*help please*
LG Luja