SAP Jobsuche bei DV-Treff
Chrissauter
vor 6 Jahre
Hallo SAP Tüftler

Ich stecke mal wieder in meinem Query bei einer Abfrage fest und hoffe auf Eure hilfe.

Ich hab ein Query mit den Tabellen LIKP und LIPS. Die Auswertung Funktioniert sehr gut. Nun möchte ich mit einem Coding die Bestellnummer vom Kunden vom Verkaufsauftrag auslesen und da hapert es, es kommt nichts. Im Verkaufsauftrag ist es die Tabelle VBKD-BSTKD. Ich hab folgendes Coding gemacht:

*break-point.

clear bstkd.

select single bstkd from vbkd into bstkd

where vbeln = likp-vbeln

Wo liegt hier mein Denkfehler?

Danke für Euren Input.

Gruss, Christoph

wreichelt
vor 6 Jahre
Hallo,

LIKP-VBELN ist die Lieferscheinnummer und nicht die Auftrags Nummer. (LIKP-AUFNR ?)

Gruß Wolfgang

Chrissauter
vor 6 Jahre
Hallo Wolfgang

Ich hab es geändert in LIPS-AUFNR. nun kommt die Fehlermeldung Unbekannter Spaltenname "AUFNR".

select single bstkd from vbkd into bstkd

where aufnr = lips-aufnr.

Gruss Christoph

wreichelt
vor 6 Jahre
Hallo Christoph,

where vbeln = lips-aufnr.

Gruß Wolfgang

Chrissauter
vor 6 Jahre
Hallo Wolfgang

Die Meldung ist weg, das Feld bleibt trotzdem leer 😕

Beim Zusatzfeld habe ich die LIKE-Referenz: VBKD-BSTKD

Im Codingabschnitt habe ich "Tables:vbkd. drin

*break-point.

clear bstkd.

select single bstkd from vbkd into bstkd

where vbeln = lips-aufnr.

Gruss

Christoph

wreichelt
vor 6 Jahre
Hallo Christoph,

es gibt das Feld 'BSTNK' auch in der VBAK (allerdings wohl etwas verkürzt.

Warum der Select nicht funktioniert, kann ich nicht nachstellen ohne System.

allerdings könntest Du ja mit dem Break-point das in der Routine genauer nachsehen.

Gruß Wolfgang

Alpmann
vor 6 Jahre
Hallo Christoph,

wenn du dir die Tabelle in SE16 anschaust, dann wirst du selber auf die Lösung kommen.

Wenn im Kopf eines Auftrages eine Kundenbestellnummer steht, dann heisst dass noch lange nicht, dass in der Tabelle VBKD für jede Auftragsposition ein Datensatz vorhanden ist. Das ist uns im Zusammenhang mit Warenausgangsetiketten aufgefallen, wo Kunden auch ihre Kundenbestellnummer angedruckt haben wollten.

Die Lösung ist also folgendes:

" Kundenbestellnummer besorgen aus Positionsbereich bzw. Kopf des Kundenauftrags?

select single bstkd from VBKD into ( z_vbkd_bstkd ) where VBELN = z_lips-vgbel and POSNR = z_lips-vgpos.

if sy-subrc = 4. " nein, nicht im Positionsbereich. Also im Kopf gucken

select single bstkd from VBKD into ( z_vbkd_bstkd ) where VBELN = z_lips-vgbel and POSNR = '000000'.

endif.

Mit freundlichen Grüßen

Matthias Alpmann

Chrissauter
vor 6 Jahre
Hallo Alpmann

Danke für deinen Typ. Jetzt hat sich das Bild wieder ein wenig geändert. Es sind pro Verkaufsauftrag mehrere Positionen und da sollte ich von jeder Position die Kundenbestellnummer VBKD-BSTKD, Kundenbestellposition VBAP-POSEX und Bestellposition vom Warenempfänger VBKD-POSEX_E auslesen. Meine Tabellen sind nach wie vor LIKP und LIPS. Wenn ich die Tabellen VBKD und VBAP hinzufüge dann Findet mein Query keine Daten mehr.

Gruss, Christoph

wreichelt
vor 6 Jahre
Hallo Christoph,

über LIKP -> LIPS und LIPS-VBELV / LIPS-POSNV die Kundenauftrag Position oder den Kundenauftrag lesen und dann

eben VBKD .

https://www.berater-wiki.de/Access_Tabellenbeziehung_SD 

Gruß

Wolfgang

Alpmann
vor 6 Jahre
Hallo Christoph,

ich würde beim deinem Query nur die LIKP und LIPS nehmen. Einen Join zur VBKD und VBAK / VBAP brauchst du nicht.

Dein altes Coding

*break-point.

clear bstkd.

select single bstkd from vbkd into bstkd

where vbeln = likp-vbeln

musst du durch meins ersetzen.

Über diese beiden Felder bekommst du den Vorgänger-Beleg. Also Auftrag/Lieferplan und kannst dann ohne die VBAK / VBAP auskommen und direkt die VBKD lesen.

LIPS-VGBEL: Belegnummer des Vorlagebeleges

LIPS-VGPOS: Positionsnummer der Vorlage-Geschäftsposition

Mit freundlichen Grüßen

Matthias Alpmann

Chrissauter
vor 6 Jahre
Hallo Alpmann

Danke für deine Tipps, hab schon einen kleinen Erfolg erzielt. Nun stecke ich an einem neuen Problem fest. Ich brauch noch die Bestellposition vom Auftraggeber (VBAP-POSEX) und vom Warenempfänger (VBKD-POSEX_E). Zudem möchte ich noch den Verkaufsauftrag (VBAP-VBELN) und die Position (VBAP-POSNR).

Ich hoffe, Du oder Ihr könnt es mir gut und verständlich Erklären bzw. Aufzeigen.

Im voraus schon mal vielen Dank

Christoph

wreichelt
vor 6 Jahre
Hallo Christoph,

über LIPS-VBELV und LIPS-KDPOS kannst du ja den Kundenauftrag bzw. die VBAP Position lesen.

Gruß Wolfgang

Chrissauter
vor 6 Jahre
Hallo Wolfgang

Auch das hab ich hinbekommen. Jetzt fehlen mir "nur" noch die Angaben von der Bestellposition vom Auftraggeber (VBAP-POSEX) und vom Warenempfänger (VBKD-POSEX_E).

Ich hoffe, dass mir auch jemand Helfen kann.

Gruss

Christoph

wreichelt
vor 6 Jahre
Hallo Christoph,

wenn du bereits die TB: VBAP gelesen hast, dann steht ja auch das Feld VBAP-POSEX zu deiner Verfügung.

Die Bestellnummer vom Warenempfänger ???? die VBKD zeigt ja den Kundenauftrag an und kann über VBKD mit Positionsnummer '000000' gelesen werden.

Gruß Wolfgang

Chrissauter
vor 6 Jahre
Hallo Wolfgang

Danke für deinen Tipp, jetzt hab ich alle Daten wo ich benötige.

Gruss

Christoph