Tabellenvergleich

Getting started ... Alles für einen gelungenen Start.

Tabellenvergleich

Postby Rebekka2773 » Tue Sep 03, 2013 2:10 pm

Huhu zusammen,

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)
  1. REPORT zsd01_korrektur MESSAGE-ID zsd.
  2.  
  3. * SAP Tabellen
  4. TABLES: tab1,
  5.              tab2.  
  6.  
  7. * Definition interner Tabellen
  8.  
  9. DATA: i_tab1_1TYPE TABLE OF tab1 WITH HEADER LINE,
  10.           i_tab1_1 TYPE TABLE OF tab1 WITH HEADER LINE,
  11.           i_tab2   TYPE TABLE OF tab1 WITH HEADER LINE.
  12.  
  13.  
  14. * Definition Workareas
  15.  
  16. DATA: wa_tab1 LIKE LINE OF i_tab1_1.
  17.  
  18.  
  19. * Definition lokale Variablen
  20.  
  21. DATA: l_aenetwr     LIKE tab1-aenetwr,
  22.       l_aemenge     LIKE tab1-aemenge,
  23.       l_aewavwr     LIKE tab1-aewavwr,
  24.       l_znemetkae   LIKE tab1-znemetkae,
  25.       l_spmon       LIKE tab2-spmon,
  26.       l_sptag       LIKE tab2-sptag,
  27.       l_sptag_low   LIKE tab2-sptag,
  28.       l_sptag_high  LIKE tab2-sptag,
  29.       flag(1)       TYPE c.
  30.  
  31. * Eingabeparameter: Tagesdatum -> hier wird das FEHLENDE Datum eingegeben!
  32.  
  33. PARAMETERS:  p_datum  TYPE tab1-sptag OBLIGATORY,
  34.                       p_vrsio  TYPE tab1-vrsio DEFAULT '000' OBLIGATORY,
  35.                       p_flag   TYPE flag DEFAULT 'X'.
  36.  
  37. * Initialzation
  38.  
  39.  
  40. * Start of selection
  41.  
  42.   REFRESH: i_tab1_1.
  43.   REFRESH: i_tab1_2.
  44.  
  45. * aus Eingabedatum Monat/Jahr ermitteln
  46.   l_sptag = p_datum.
  47.   l_spmon = l_sptag.
  48.   CONCATENATE l_spmon '01' INTO l_sptag_low.
  49.   CONCATENATE l_spmon '31' INTO l_sptag_high.
  50.  
  51. * Daten für gesamten Monat aus tab1 und tab2 selektieren
  52.   SELECT * FROM tab1
  53.       APPENDING CORRESPONDING FIELDS OF TABLE i_tab1_1
  54.       WHERE sptag >= l_sptag_low AND sptag <= l_sptag_high
  55.       AND vrsio EQ p_vrsio.
  56.  
  57.   SELECT * FROM tab2
  58.       APPENDING CORRESPONDING FIELDS OF TABLE i_tab2
  59.       WHERE spmon = l_spmon AND vrsio EQ p_vrsio.
  60.  
  61.   LOOP AT i_tab1_1 INTO wa_tab1.
  62. *   Auftragseingang, Auftragsmenge und offene Auftragsmenge negieren
  63.     l_aenetwr   = wa_tab1-aenetwr * ( -1 ).
  64.     l_aemenge   = wa_tab1-aemenge * ( -1 ).
  65.     l_aewavwr   = wa_tab1-aewavwr * ( -1 ).
  66.     l_znemetkae = wa_tab1-znemetkae * ( -1 ).
  67. *   Monatswert eintragen, Tagesdatum auf 0 setzen
  68.     MOVE l_spmon    TO wa_tab1-spmon.
  69.     CLEAR: wa_tab1-sptag.
  70. *   Werte übernehmen, alle anderen auf 0 setzen und Tabelle auf Monatsebene zusammendampfen
  71.     MOVE l_aenetwr    TO wa_tab1-aenetwr.
  72.     MOVE l_aemenge    TO wa_tab1-aemenge.
  73.     MOVE l_aewavwr    TO wa_tab1-aewavwr.
  74.     MOVE l_znemetkae  TO wa_tab1-znemetkae.
  75.     CLEAR:  wa_tab1-umnetwr,
  76.             wa_tab1-ummenge,
  77.             wa_tab1-netwr,
  78.             wa_tab1-wmeng,
  79.             wa_tab1-oauwe,
  80.             wa_tab1-oaume,
  81.             wa_tab1-gunetwr,
  82.             wa_tab1-gumenge,
  83.             wa_tab1-renetwr,
  84.             wa_tab1-remenge,
  85.             wa_tab1-rewavwr,
  86.             wa_tab1-umwavwr,
  87.             wa_tab1-guwavwr,
  88.             wa_tab1-oeimeb,
  89.             wa_tab1-oeiweb,
  90.             wa_tab1-z_oauwe_vw,
  91.             wa_tab1-znemetkum,
  92.             wa_tab1-vkbur.
  93.     COLLECT wa_tab1 INTO i_tab1_2.
  94.  
  95.   CLEAR: wa_tab1.
  96.  
  97. * Daten aus tab2 dazulesen -> Ergebnis ist Monatsdifferenz aus tab2 und tab1
  98.   LOOP AT i_tab2 INTO  wa_tab1.
  99.     CLEAR:  wa_tab1-umnetwr,
  100.             wa_tab1-ummenge,
  101.             wa_tab1-netwr,
  102.             wa_tab1-wmeng,
  103.             wa_tab1-oauwe,
  104.             wa_tab1-oaume,
  105.             wa_tab1-gunetwr,
  106.             wa_tab1-gumenge,
  107.             wa_tab1-renetwr,
  108.             wa_tab1-remenge,
  109.             wa_tab1-rewavwr,
  110.             wa_tab1-umwavwr,
  111.             wa_tab1-guwavwr,
  112.             wa_tab1-oeimeb,
  113.             wa_tab1-oeiweb,
  114.             wa_tab1-z_oauwe_vw,
  115.             wa_tab1-znemetkum,
  116.             wa_tab1-vkbur.
  117.     COLLECT wa_tab1 INTO i_tab1_2.
  118.  
  119.   REFRESH: i_tab1_1.
  120.   CLEAR: wa_tab1.
  121.  
  122. * Fehlendes Tagesdatum in Feld sptag schreiben und Monatsangabe wieder löschen
  123.   LOOP AT i_tab1_2 INTO wa_tab1.
  124.     MOVE l_sptag    TO wa_tab1-sptag.
  125.     CLEAR: wa_tab1-spmon.
  126.     COLLECT wa_tab1 INTO i_tab1_1.
  127.   SORT i_tab1_1.
  128.  
  129.   IF p_flag IS NOT INITIAL.
  130.  
  131. * Daten als ALV-Liste anzeigen.
  132.  
  133.   ELSE.
  134.     MODIFY tab1 FROM TABLE i_tab1_1.
  135.     COMMIT WORK.
  136.   ENDIF.
  137.  
  138. * End of selection
  139.  
GeSHi ©


*help please*

LG Luja
Rebekka2773
..
..
 
Posts: 21
Joined: Fri Aug 13, 2010 3:33 pm

Re: Tabellenvergleich

Postby Tron » Wed Sep 04, 2013 7:06 am

Moin.
Besitzt deine Tabelle auch Felder für die Einheiten ?
Poste doch mal die Tabellen Definition.
Gruß Jens
Tron
.....
.....
 
Posts: 1112
Joined: Sat Aug 04, 2007 10:21 pm

Re: Tabellenvergleich

Postby Rebekka2773 » Wed Sep 04, 2013 7:35 am

Moin :-)

Ja, die Tabelle hat Felder für die Einheiten. Hier ist die Definition der Tabelle:

Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1. MANDT      Mandant
  2. SSOUR      Statistik-Herkunft
  3. VRSIO      Nummer der Version in der Informationsstruktur
  4. SPMON      Analysezeitraum - Monat
  5. SPTAG      Analysezeitraum - Tagesdatum
  6. SPWOC      Analysezeitraum - Woche
  7. SPBUP      Analysezeitraum - Buchungsperiode
  8. PRODH1      PH1 Segment
  9. VKORG      Verkaufsorganisation
  10. KDGRP      Kundengruppe
  11. KUNNR      Auftraggeber
  12. PRODH2      PH2 Markt
  13. PRODH3      PH3 Kostenträger
  14. PRODH4      PH4 Spez. Merkmale
  15. MATNR      Materialnummer
  16. VTWEG      Vertriebsweg
  17. (bis hier hin Schlüsselfelder)
  18. PERIV      Geschäftsjahresvariante
  19. VWDAT      Zeiger auf Verwaltungsdaten
  20. BASME      Basismengeneinheit
  21. STWAE      Statistikwährung
  22. WMENG      Auftragsmenge des Kunden in VME
  23. NETWR      Nettowert des Auftrags in Belegwährung
  24. OAUME      Offene Auftragsmenge
  25. OAUWE      Offener Auftragsnettowert
  26. AENETWR      Auftragseingang Nettowert
  27. AEWAVWR      Auftragseingang Verrechnungswert
  28. RENETWR      Retoureneingang Nettowert
  29. REWAVWR      Retoureneingang Verrechnungswert
  30. REMENGE      Retourenmenge
  31. UMNETWR                   Umsatz Nettowert
  32. UMWAVWR   Umsatz Verrechnungswert
  33. UMMENGE      Umsatz Menge
  34. GUNETWR      Gutschrifts-Nettowert
  35. GUWAVWR   Gutschrifts-Verrechnungswert
  36. GUMENGE      Gutschriftsmenge
  37. AEMENGE      Auftragseingang Menge
  38. OEIMEB      Konsignationsbeatnd Menge
  39. OEIWEB      Konsignationsbestand Wert
  40. Z_OAUWE_VW   Offener Auftragswert (VW)
  41. ZNEMETKAE   NE-Metall-Kosten AE
  42. ZNEMETKUM   NE-Metall-Kosten Umsatz
  43. VKBUR                   Verkaufsbüro
  44.  
GeSHi ©


Die Felder PERIV und VWDAT sind immer leer.

LG Luja
Rebekka2773
..
..
 
Posts: 21
Joined: Fri Aug 13, 2010 3:33 pm

Re: Tabellenvergleich

Postby Rebekka2773 » Thu Sep 05, 2013 10:07 am

Hallo Jens,

vielen lieben Dank für Deinen Tipp! Ich habe jetzt die Felder

PERIV Geschäftsjahresvariante
VWDAT Zeiger auf Verwaltungsdaten
BASME Basismengeneinheit
STWAE Statistikwährung

auch noch leer geputzt, jetzt funktioniert es. Da scheint der Modify doch irgendwie auf die Nase gefallen zu sein. ;-)

Das Verhalten verstehe ich aber nicht so ganz. Ich dachte, der Befehl "Modify" guckt nur nach dem Schlüssel und macht dann entsprchend entweder ´nen Insert oder `nen Update? Und der Inhalt für Währung bzw. Mengeneinheit ist außedem in beiden Tabellen der gleiche. Die Tabellen unterscheiden sich ja nur durch die Einträge in Monat/Tag und den entsprechenden Kennzahlen (Tageswerte und kumuliert)....
Wo ist da mein Gedankenfehler?

LG Luja
Rebekka2773
..
..
 
Posts: 21
Joined: Fri Aug 13, 2010 3:33 pm


Return to ABAP® für Anfänger

Who is online

Users browsing this forum: No registered users and 3 guests