zwei Tabellen "abmischen"

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

SAP R/3 Personamwirtschaft: Personalmanagement, Personalzeitwirtschaft, Personalabrechnung, Veranstaltungsmanagement, Personalentwicklung, Kostenplanung...
7 Beiträge • Seite 1 von 1
7 Beiträge Seite 1 von 1

zwei Tabellen "abmischen"

Beitrag von dvdh1979 (ForumUser / 15 / 0 / 0 ) »
Hallo zusammen,

derzeit versuche ich verzweifelt ein Problem zu lösen und komme einfach nicht weiter, daher hier meine Bitte um Hilfe bei folgender Herausforderung:

Es gibt zwei Tabellen (LT_PA9002_2 und LT_PA2001). Darin enthalten sind beispielhaft folgende Einträge:
LT_PA9002_2
BEGDA; ENDDA; BONUS
01.01.2013; 30.06.2013; 18.000,00 €
01.07.2013; 31.12.9999; 20.500,00 €

LT_PA2001
BEGDA; ENDDA
01.02.2013; 28.02.2013
01.05.2013; 31.05.2013
01.09.2013; 30.09.2013

Die Zeiträume sollen nun in einer neuen Tabelle UT_PA9002_2 "abgemischt" werden, sodass folgendes Ergebnis herauskommt:
BEGDA; ENDDA; BONUS
01.01.2013; 31.01.2013; 18.000,00 €
01.02.2013; 28.02.2013; 0 €
01.03.2013; 30.04.2013; 18.000,00 €
01.05.2013; 31.05.2013; 0 €
01.06.2013; 31.08.2013; 20.500,00 €
01.09.2013; 30.09.2013; 0 €
01.10.2013; 31.12.2013; 20.500,00 €

Hinweis: die 0 € in den drei Sätzen muss ich noch in einem separaten Schritt setzen

Wie kann ich das am geschicktesten lösen? PROVIDE scheint mir nicht viel zu helfen... Evtl. über JOIN (INNER, LEFT, OUTER, ...) - womit ich bisher kaum Berührungspunkte hatte...

Danke schon einmal für jeden Tipp!


Viele Grüße,
Dirk

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


Re: zwei Tabellen "abmischen"

Beitrag von ChrisB (Specialist / 406 / 8 / 20 ) »
Hallo Dirk,

wenn's Dir erst mal nur darum geht eindeutige Zeiträume zu bekommen und Du die Werte zu den Zeiträumen in einem zweiten Step ermittelst, dann kannst Du den Funktionsbaustein RHXPROVIDE_PERIODS verwenden. Wird da mal alle relevanten Zeiträume (also sowohl aus dem Infotyp 9002 als auch 2001) egal in welcher Reihenfolge als interne Tabelle über den Parameter PROVIDE_TAB rein und schau Dir die Tabelle dann nach dem Auruf des Funktionsbausteins an. Zumindest die eindeutigen Zeiträume hast Du dann schon mal fertig... mit diesen Zeiträumen kannst Du dann evtl. mit PROVIDE über Deine bisherigen internen Tabellen gehen und damit solltest Du dann eigentlich an die jeweiligen Werte zu den eindeutigen Zeiträumen kommen.

Viele Grüße
Chris

Re: zwei Tabellen "abmischen"

Beitrag von dvdh1979 (ForumUser / 15 / 0 / 0 ) »
Hallo Chris,

danke für den Hinweis, aber irgendwie komme ich mit dem FuBa nicht so richtig klar.

Kann ich ihm nur eine Tabelle übergeben (leider finde ich kein Beispielcoding)?

Wenn ja, sollen in dieser Tabelle alle relevanten Zeiträume stehen? Wenn ja, wie bekomme ich das hin?

Wenn ich per SELECT in eine temporäre Hilfstabelle nur das BEGDA und ENDDA zuerst aus PA2001 sammle und danach aus PA9002, überschreibt er mir die schon vorhandenen Zeiträume:
SELECT begda endda FROM pa2001 INTO TABLE lt_tmp
WHERE pernr = uv_pernr
AND subty = '0601'
AND begda LE uv_endda
AND endda GE uv_begda.
ENDSELECT.

SELECT begda endda FROM pa9002 INTO TABLE lt_tmp
WHERE pernr = uv_pernr
AND subty = '2
AND begda LE uv_endda
AND endda GE uv_begda.
ENDSELECT.

Danke schon einmal für jeden Hinweis!


Viele Grüße,
Dirk

Re: zwei Tabellen "abmischen"

Beitrag von Thanatos82 (Expert / 699 / 32 / 123 ) »
Hi,

was spricht dagegen beide Tabellen über einen Join direkt in deine Zieltabelle zu schreiben?

Code: Alles auswählen.

SELECT * INTO CORRESPONDING FIELDS OF TABLE ut_pa9002_2
   FROM pa2001 AS a INNER JOIN pa9002 AS b
     ON a~pernr = b~pernr
* eventuell weitere Verknüfpungen einfügen
WHERE a~subty = '601'
AND b~subty = '2'
AND a~begda LE uv_endda
AND b~begda LE uv_endda
AND a~endda GE uv_begda
AND b~endda GE uv_begda.
Das ist jetzt ungetestet aus dem Bauch raus geschrieben. Eventuell muss hier und da angepasst werden, aber grundsätzlich sollte das so funktionieren.
Gruß,
der Matze

Re: zwei Tabellen "abmischen"

Beitrag von dvdh1979 (ForumUser / 15 / 0 / 0 ) »
Hallo zusammen,

danke für die Hinweise, die mich sehr weitergebracht haben.
Es ist zwar etwas längeres Coding geworden aber jetzt funktioniert es wie es soll.

Danke nochmal!



Viele Grüße,
Dirk

Re: zwei Tabellen "abmischen"

Beitrag von Thanatos82 (Expert / 699 / 32 / 123 ) »
Hallo Dirk,

magst du uns deine Lösung auch zur Verfügung stellen? Dann haben auch andere User etwas davon, wenn sie mal auf ein ähnliches Problem stoßen sollten. :)
Gruß,
der Matze

Re: zwei Tabellen "abmischen"

Beitrag von dvdh1979 (ForumUser / 15 / 0 / 0 ) »
Klar gerne, ist halt nur individuell anzupassen:

* 1a. alle Sätze aus LT_PA2001 in temp. Tabelle sichern
LOOP AT lt_pa2001 INTO ls_pa2001.
IF ls_pa2001-begda LT uv_begda.
ls_tmp-begda = uv_begda.
ELSE.
ls_tmp-begda = ls_pa2001-begda.
ENDIF.
IF ls_pa2001-endda GT uv_endda.
ls_tmp-endda = uv_endda.
ELSE.
ls_tmp-endda = ls_pa2001-endda.
ENDIF.
APPEND ls_tmp TO lt_tmp.
ENDLOOP.

* 1b. alle Sätze aus LT_PA9002_2 in temp. Tabelle sichern
LOOP AT lt_pa9002_2 INTO ls_pa9002_2.
ls_tmp-begda = ls_pa9002_2-begda.
IF ls_pa9002_2-endda GT uv_endda.
ls_tmp-endda = uv_endda.
ELSE.
ls_tmp-endda = ls_pa9002_2-endda.
ENDIF.
APPEND ls_tmp TO lt_tmp.
ENDLOOP.

* 2. Zeitscheiben beider Tabellen (LT_PA2001 und LT_PA9002_2) übereinanderlegen
CALL FUNCTION 'RHXPROVIDE_PERIODS'
TABLES
PROVIDE_TAB = lt_tmp.
* Achtung: hier kommt eine Tabelle heraus, die nur BEGDA und ENDDA als Felder hat!

* 3. fehlende Werte zumischen
LOOP AT lt_tmp INTO ls_tmp.
PROVIDE FIELDS * FROM lt_pa9002_2 INTO ut_pa9002_2
VALID lv_flag1
BOUNDS begda AND endda
BETWEEN ls_tmp-begda
AND ls_tmp-endda.
APPEND ut_pa9002_2.
ENDPROVIDE.
ENDLOOP.

Seite 1 von 1

Vergleichbare Themen

6
Antw.
5720
Views
Tabellen vergleichen und abmischen
von bohne » 16.05.2006 11:06 • Verfasst in ABAP® für Anfänger
3
Antw.
502
Views
Operieren mit zwei Tabellen
von LisaKremer » 22.01.2020 17:57 • Verfasst in ABAP® für Anfänger
7
Antw.
8567
Views
Select auf zwei Tabellen
von mip » 27.03.2008 16:05 • Verfasst in ABAP® für Anfänger
7
Antw.
3726
Views
Zwei Tabellen joinen (für ALV)?
von k4lisp3r4 » 22.01.2007 16:33 • Verfasst in ABAP® für Anfänger
10
Antw.
4608
Views
Ausgabe von zwei Tabellen mit ALV
von Katinka » 15.09.2005 12:54 • Verfasst in ABAP® Core

Ü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

Aktuelle Forenbeiträge

Daten an Tabelle binden
vor 12 Stunden von Bright4.5 3 / 1485
Regex in where
vor 14 Stunden von tar 6 / 158

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 12 Stunden von Bright4.5 3 / 1485
Regex in where
vor 14 Stunden von tar 6 / 158

Unbeantwortete Forenbeiträge

aRFC im OO-Kontext
vor 5 Wochen von ralf.wenzel 1 / 3261
Hilfe bei SWEC/SWE2
September 2024 von retsch 1 / 9821