select über 3 Tabelle mit einer rekursive Beziehung

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

select über 3 Tabelle mit einer rekursive Beziehung

Beitrag von evian (ForumUser / 2 / 0 / 0 ) »
Hallo Zusammen

ich habe ein Problem. Und zwar habe ich 3 Tabelle e070CTV (keine Tabelle sondern eine View über 3 Tabellen) e070A (die brauche ich als Verbindungstabelle) und Ctsproject (brauche ich nur EXTERNALID).
die e070ctv hat eine rekursive Beziehung. Ich brauch alle Transportaufträge UND ihre aufgaben. Trkorr ist hier der Schlüssel und Strkorr der Fremdschlüssel.
Ausserdem habe ich noch 3 Select-Options mit denen ich eine Transportauftrag, User oder ein Projekt auswählen kann.

Wenn ich etwas selektiere möchte ich eigentlich so etwas bekommen.
TRKORR STRKORR EXTERNALID ...
Transportauftr. nichts zugehöriges Projekt ...
Aufgabe Transportauftrag zugehöriges Projekt ...

bis jetzt habe ich dieses Select.
Dies ist, wie mir klar ist falsch, mir fehlen erstens die Aufgaben, zweitens wenn ich nur nach dem User selektiere gibt es mir die transportaufträge gefühlt hundertfach wieder
SELECT e070ctv~trkorr, e070ctv~strkorr, ctsproject~externalid,
e070ctv~as4user, e070ctv~trstatus, e070ctv~as4date,
e070ctv~as4time, e070ctv~as4text, e070ctv~trfunction
INTO CORRESPONDING FIELDS OF TABLE @gt_struktur
FROM ( e070ctv LEFT JOIN e070a ON e070ctv~trkorr = e070a~trkorr )
LEFT JOIN ctsproject ON e070a~reference = ctsproject~trkorr
WHERE e070ctv~trkorr IN @so_trkor
AND ctsproject~externalid IN @so_extid
AND e070ctv~as4user IN @so_user

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


Re: select über 3 Tabelle mit einer rekursive Beziehung

Beitrag von zzcpak (Expert / 673 / 5 / 67 ) »
dürfte etwas umständlich werden, alles einen SELECT reinzuquetschen. JOINs sind nicht immer die beste Lösung

Ich würde folgendermaßen vorgehen:
- Transportaufträge aus E070 auslesen (also STRKORR = leer)
- E070A für TRKORR = E070~TRKORR dazulesen mit ATTRIBUTE = 'SAP_CTS_PROJECT'
- mit E070A~REFERENCE = CTSPROJECT~TRKORR dann deine EXTERNALID auslesen
- die dazugehörigen Aufgaben aus E070 lesen (STRKORR = TRKORR)

Re: select über 3 Tabelle mit einer rekursive Beziehung

Beitrag von evian (ForumUser / 2 / 0 / 0 ) »
Hallo zzcpak

wenn ich ehrlich bin verstehe ich nicht ganz was du damit meinst. Meinst du vier Selektionen?
Meine jetzige Version ist dieses Select dass ich geschrieben habe und ein weiteres Select, welches mir die aufgaben gibt. Jedoch gibt es mir dann alle aufgaben(auch wenn ich nur ein projekt auswähle), da ich ja die externalid nicht abfragen kann.
Bei deiner Version ist es noch verwirrter ^^.
Ich habe ausserdem einen Left Join gemacht, da ich alle Transportaufträge brauche, aber nicht unbedingt ein Projekt.

Re: select über 3 Tabelle mit einer rekursive Beziehung

Beitrag von zzcpak (Expert / 673 / 5 / 67 ) »
ahh, glaube, das habe a bisserl was falsch verstanden.
Trotzdem solltest du statt über den View direkt über Tabelle E070 gehen und beim JOIN E070 - E070A natürlich KEINEN LEFT JOIN.

so in der Art:
Das Projekt ist dem Transportauftrag zugeordnet, die Aufgaben dem Auftrag, daher würde ich die Aufgaben in einem zweiten Schritt lesen.

Code: Alles auswählen.

DATA:
  gs_e070       TYPE e070,
  gs_ctsproject TYPE ctsproject.

SELECT-OPTIONS:
  so_trkor FOR gs_e070-trkorr,
  so_user FOR gs_e070-as4user,
  so_extid FOR gs_ctsproject-externalid.


TYPES:
  BEGIN OF ts_list,
    trkorr     TYPE trkorr,
    externalid TYPE tr_extpid,
    task       TYPE trkorrs,
  END OF ts_list.

DATA:
  gt_list   TYPE STANDARD TABLE OF ts_list,
  gs_list   TYPE ts_list,
  gv_trkorr TYPE trkorr.
*
SELECT e070~trkorr, ctsproject~externalid
  INTO CORRESPONDING FIELDS OF @gs_list
  FROM ( ( e070 JOIN e070a
    ON e070a~trkorr = e070~trkorr )
    LEFT JOIN ctsproject
    ON ctsproject~trkorr = e070a~reference )
  WHERE e070~trkorr IN @so_trkor
  AND   e070~as4user IN @so_user
  AND   ctsproject~externalid IN @so_extid.

  SELECT trkorr FROM e070 INTO TABLE gs_list-task
    WHERE strkorr = gs_list-trkorr.

  APPEND gs_list TO gt_list.

ENDSELECT.

LOOP AT gt_list INTO gs_list.
  WRITE: / gs_list-trkorr,
           gs_list-externalid.
  LOOP AT gs_list-task INTO gv_trkorr.
    WRITE: / '    ', gv_trkorr.
  ENDLOOP.
ENDLOOP.

Seite 1 von 1

Vergleichbare Themen

1
Antw.
1669
Views
Select aus einer Tabelle mit Bedingung aus weiteren Tabelle
von Dyrdek » 02.01.2017 13:16 • Verfasst in ABAP® für Anfänger
2
Antw.
1982
Views
2
Antw.
5955
Views
Geschäftspartner-Beziehung anlegen
von Nikodemus » 14.06.2007 10:27 • Verfasst in CRM (Customer Relationship Management)
2
Antw.
237
Views
BP: Update Ansprechpartner (Beziehung)
von littleJohn » 29.08.2023 10:15 • Verfasst in SAP HANA für Anfänger
1
Antw.
987
Views
Beziehung zwischen Satndardtext und Formular
von GE_ZH » 13.03.2007 13:38 • Verfasst in ABAP® Core

Über diesen Beitrag


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

Aktuelle Forenbeiträge

Zugriff auf Daten via Webdav
vor einer Stunde von msfox 2 / 36
Interne Tabelle
vor 18 Stunden von sap_enthusiast 3 / 163
Zwischensumme Adobe Forms
vor 3 Tagen von Lucyalison 1 / 71

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

Zugriff auf Daten via Webdav
vor einer Stunde von msfox 2 / 36
Interne Tabelle
vor 18 Stunden von sap_enthusiast 3 / 163
Zwischensumme Adobe Forms
vor 3 Tagen von Lucyalison 1 / 71

Unbeantwortete Forenbeiträge

Zwischensumme Adobe Forms
vor 3 Tagen von Lucyalison 1 / 71
Group Items auf einer Filterbar
vor einer Woche von Bright4.5 1 / 111
tRFC Transaktionen SM58
vor 4 Wochen von A6272 1 / 141