Code: Alles auswählen.
vbrp-prefe = 'X'.
Folgende Benutzer bedankten sich beim Autor wreichelt für den Beitrag:
Pinguincommander
Folgende Benutzer bedankten sich beim Autor wreichelt für den Beitrag:
Pinguincommander
Code: Alles auswählen.
FIELD-SYMBOLS: <ls_xvbrp> type VBRPVB,
<ls_xvbpa> type VBPAVB.
DATA: lw_zone TYPE gzolx,
lw_herkl type herkl,
lw_land1 type land1.
LOOP AT xvbrp ASSIGNING <ls_xvbrp>.
*Initialisieren der Daten.
<ls_xvbrp>-prefe = ' '.
CLEAR: lw_zone, lw_herkl, lw_land1.
*Bestimmen der Zone des Empfängers:
*Anhand des Herkunftsland aus dem Materialstamm
*und dem Land des Kunden,.
*Lesen des Herkunftslands
SELECT SINGLE herkl
FROM marc
INTO lw_herkl
WHERE werks = <ls_xvbrp>-werks
AND matnr = <ls_xvbrp>-matnr.
IF sy-subrc NE 0.
CONTINUE.
ENDIF.
*******************************************
*Lesen des Warenempfängers.
*Mit Position.
READ TABLE xvbpa WITH KEY vbeln = <ls_xvbrp>-vbeln
posnr = <ls_xvbrp>-posnr
parvw = 'WE'
ASSIGNING <ls_xvbpa>.
IF sy-subrc ne 0.
* Ohne Position falls nicht vorhanden
READ TABLE xvbpa WITH KEY vbeln = <ls_xvbrp>-vbeln
parvw = 'WE'
ASSIGNING <ls_xvbpa>.
IF sy-subrc ne 0.
CONTINUE.
ENDIF.
ENDIF.
*Lesen des Warenempfängerlandes.
SELECT SINGLE land1
FROM kna1
into lw_land1
WHERE kunnr = <ls_xvbpa>-kunnr.
IF sy-subrc NE 0.
CONTINUE.
ENDIF.
SELECT SINGLE gzolx
FROM T604S
INTO lw_zone
WHERE aland = lw_herkl
AND land1 = lw_land1.
IF sy-subrc NE 0.
CONTINUE.
ENDIF.
*Prüfen ob in Materialstamm für Zone ein eintrag existiert
*und eine gültige Lieferanterklärung vorliegt:
SELECT SINGLE COUNT( * )
FROM mape
WHERE matnr = <ls_xvbrp>-matnr "Material der aktuellen Position
AND werks = <ls_xvbrp>-werks "Werk abfragen.
AND gzolx = lw_zone "Für Präferenzzone der Lieferung.
AND prefe = 'E' "NUR für Präferenzzone manuell gesetzt OK.
AND prene = 'B' "Nur geprüft Lieferantenerklärungen mit Status OK.
AND preng >= sy-datum."Nur zum Fakturadatum gültige Lieferantenerklärungen.
*Wenn demenstprechender Satz existiert, setzen des Präferenz kennzeichens.
IF sy-subrc = 0.
<ls_xvbrp>-prefe = 'X'.
ENDIF.
ENDLOOP.