SAP Jobsuche bei DV-Treff
Chrissauter
vor 5 Jahre
Hallo Ich bin mal wieder auf die Hilfe von Euch Experten angewiesen. Ich habe ein Query mit den Tabellen EKET - EKBE - EKKO - EKPO. Nun habe ich ein Problem mit den Bestellpositionen. Wenn ich eine Bestellung mit mehreren Positionen habe und bei einer Position wurden z. B. 3 Wareneingangsbuchungen gemacht, dann kommt im Query alle Position 3 mal obwohl nur eine Position 3 mal gebucht wurde. Wie kann ich dies Unterbinden?

Meine Verknüpfungen:

EKET-EBELN EKBE-EBELN EKKO-EBELN

EKPO-EBELN

EKET-EBELP EKBE-EBELP EKPO-EBELP

Danke für eure Hilfe

Chris

wreichelt
vor 5 Jahre
Hallo,

müssen die Felder von der Tabelle EKET aus verknüpft werden ?

Ich würde eher über EKKO EKPO EKBE EKET laufen.

Gibt es keine LDB dazu in denen die Tabellen vorhanden sind ?

Gruß Wolfgang

Chrissauter
vor 5 Jahre
Hallo

Habe es schon mit deiner Version Versucht, dann bekomme ich nur die letzte Bestellposition. Was meinst Du mit LDB?

Gruss

Chris.

wreichelt
vor 5 Jahre
Hallo Chris,

LDB. = Logische Datenbank hier gibt es viele vorgefertigte Pfade mit den entsprechenden Tabellen.

Eine ist die LDB ELM.

Die Verknüpfung zwischen EKBE und EKET hast du mit Left outer Join angelegt?

Es muss ja noch keine WE Buchung zu der Einteilung geben.

Gruß Wolfgang

Chrissauter
vor 5 Jahre
Hallo Wolfgang

Ich bin der Sache schon näher gekommen. Ich hab die Tabellen EKPO mit EKET und EKBE mit left outer Join Verknüpft. Jetzt kommen die Wareneingänge schon so wie Sie Eingebucht wurden. Wenn ich aber eine Einteilung habe dann kommt diese doppelt.

Gruss Chris

Chrissauter
vor 5 Jahre
Hallo

Kann es sein, dass es an dem statistischen Lieferdatum und den Einteilungen liegt? Wenn ich nur die Tabellen EKPO, EKBE und EKKO nehme und das Feld EKET-SLFDT mit einem Coding abfrage. Ginge dies auch?

Gruss Chris

wreichelt
vor 5 Jahre
Hallo Chris,

es kann schon mehrere Ursachen haben.

- es geht nur ein Left Outer Join

- in der Tabelle mit dem WE stehen auch die Rechungseingänge

Ein Abap Coding ist im Infoset immer möglich

Es ist schwer so im trockenen das ganze richtig einzuschätzen

Gruß Wolfgang

Chrissauter
vor 5 Jahre
Guten Morgen

Mein Query sieht schon recht gut aus, hab "fast" alle Infos. Ich hab die Tabellen EKPO - EKBE - EKKO Verknüpft. Zusätzlich habe ich ein Saztzverarbeitungs-Coding von der Tabelle EKET angelegt. Sieht so aus:

select single eindt

from eket

into LDPOS

where ebeln = ekpo-ebeln

and ebelp = ekpo-ebelp.

select single slfdt

from eket

into stldat

where ebeln = ekpo-ebeln

and ebelp = ekpo-ebelp.

Hier habe ich ein kleines Problem. Ich hab eine Bestellung mit 2 Positionen. Die erste Position hat einen Liefertermin, wurde aber an 2 verschiedene Datum geliefert, dies Funktioniert. Bei der 2ten Position habe ich eine Einteilung. Dort habe ich den richtigen Wareneingangstermin, bei der Einteilung habe ich aber nicht die verschiedene Datum. Beispiel Einteilung:

1 Einteilungsdatum 1.9.19 - Wareneingang 1.9.19 - Funktioniert

2 Einteilungsdatum 20.9.19 - Wareneingang 20.9.19 - Hier bringt es das erste Einteilungsdatum 1.9.19, Wareneingangsdatum ist aber korrekt.

Was muss ich da im Coding noch einbauen?

Ich hoffe, Ich habe mich gut ausgedrückt und Ihr könnt mir helfen.

Danke und Gruss Chris

wreichelt
vor 5 Jahre
Hallo Chris,

der Select Single findet immer die 'erste' Einteilung in der EKET.

Gruß Wolfgang

Chrissauter
vor 5 Jahre
Hallo Wolfgang

Danke für deinen Hinweis. Kannst Du mir das Coding in etwa angeben wie ich es gestalten sollte, bin leider noch nicht ganz Sattelfest.

Gruss Chris

wreichelt
vor 5 Jahre
Hallo Chris,

wenn die EKET gelesen wird müsste da noch ein Schlüssel für die Einteilung ETENR angegeben werden

Nur woher du den bekommst kann ich nicht sagen, habe gerade keinen Zugriff auf ein System.

Gruß Wolfgang

Chrissauter
vor 5 Jahre
Hallo Wolfgang

Das ist EKET-ETENR. Habe schon etliche Versuche damit gemacht, leider ohne Erfolge.

Gruss Chris

wreichelt
vor 5 Jahre
Hallo Chris,

stelle doch mal den Select Single auf einen Select OHNE. SINGLE um

dann wird ja auch die zweite Position gelesen (ist nur eine Position vorhanden

dann wird eben nur eine Position gelesen).

Gruß Wolfgang

Chrissauter
vor 5 Jahre
Hallo Wolfgang

Mein Coding sieht zur Zeit noch so aus:

select single eindt

from eket

into LDPOS

where ebeln = ekpo-ebeln

and ebelp = ekpo-ebelp.

if sy-subrc = 0.

select single eindt from EKET into EKET-EINDT

where EBELN = EKPO-EBELN

and EBELP = '000000'.

endif.

select single slfdt

from eket into stldat

where ebeln = ekpo-ebeln

and ebelp = ekpo-ebelp.

if sy-subrc = 0.

select single slfdt from eket into eket-slfdt

where ebeln = ekko-ebeln

and ebelp = '000000'.

endif.

select single etenr

from eket into zetenr

where slfdt = eket-slfdt.

if sy-subrc = 0.

select single etenr from eket into eket-etenr

where slfdt = eket-slfdt.

endif.

Muss ich bei der Einteilung die abfrage ändern? Wie gesagt, ich bin da noch nicht sehr gut.

Gruss Chris

wreichelt
vor 5 Jahre
Hallo Chris,

ich dachte da eher daran das SINGLE aus dem Select zu streichen ...

select eindt

from eket

into LDPOS

where ebeln = ekpo-ebeln

and ebelp = ekpo-ebelp.

select slfdt

from eket

into stldat

where ebeln = ekpo-ebeln

and ebelp = ekpo-ebelp.

Aber erläutere bitte mal was die Liste für eine Auswertung bringen soll, gibts da nichts im Standard. ME2x, ME80xx. ?

Gruß Wolfgang

Chrissauter
vor 5 Jahre
Hallo Wolfgang

Wir wollen hier eine Lieferantenauswertung machen, d. h. wir wolle die statistischen Lieferdaten mit den Wareneingangsbuchungen gegenüberstellen und auswerten. Wir machen es zur Zeit mit ME80FN. Nur müssen wir hier 2 Auswertungen machen und diese zusammenführen.

Hab dein Coding schon Versucht, leider das gleiche Ergebnis.

Gruss Chris

Chrissauter
vor 5 Jahre
Hallo

Jetzt habe ich mein Coding angepasst. Nun kommt in der Einteilung nur noch die letzte Position 2 mal.

select eindt

from eket into LDPOS

where ebeln = ekpo-ebeln

and ebelp = ekpo-ebelp.

endselect.

select slfdt

from eket into stldat

where ebeln = ekpo-ebeln

and ebelp = ekpo-ebelp.

endselect.

select etenr

from eket into ZETENR

where ebeln = ekpo-ebeln

and ebelp = ekpo-ebelp.

endselect.

Gruss Chris

wreichelt
vor 5 Jahre
Hallo Chris,

Hast du mal die TA ME80FN angesehen. Auch hier lassen sich nach umschalten auf "Einteilungen" die Daten neben einander setzen.

Das System Übernimmt standardmäßig das für die Disposition relevante Lieferdatum der Liefereinteilung als statistikrelevantes Lieferdatum.

Gruß Wolfgang

Chrissauter
vor 5 Jahre
Hallo Wolfgang

Ja, das haben wir bis jetzt gemacht. Nur bekommen wir zum statistischen Lieferdatum nur mit Aufwand das Buchungsdatum dazu.

Gruss Chris

Chrissauter
vor 5 Jahre
Hallo

Jetzt wird es langsam interessant. Wenn ich das Coding nehme kommt nur die Liefereinteilung 001 2x.

select eindt

from eket into LDPOS

where ebeln = ekpo-ebeln

and ebelp = ekpo-ebelp.

endselect.

select slfdt

from eket into stldat

where ebeln = ekpo-ebeln

and ebelp = ekpo-ebelp.

endselect.

select etenr

from eket into ZETENR

where ebeln = ekpo-ebeln

and ebelp = ekpo-ebelp.

endselect.

Nehm ich das Coding kommt nur die Liefereinteilung 002 2x.

select eindt

from eket into LDPOS

where ebeln = ekpo-ebeln

and ebelp = ekpo-ebelp.

endselect.

select slfdt

from eket into stldat

where ebeln = ekpo-ebeln

and ebelp = ekpo-ebelp.

endselect.

select etenr

from eket into ZETENR.

endselect.