6.2.11

SAP Note 21975 - Deliveries are not split properly

Symptom:

The unloading point is not copied into the header data of the delivery (Transport screen), although it was entered in the customer master and also appears in the order.
Furthermore, when you change the unloading point on the partner detail screen, the delivery header is not changed either.
In addition, the unloading point was ignored as a split criterion when creating deliveries.
In transaction VL04 (collective delivery run), different deliveries are generated for the same ship-to party, despite the same combination criteria, when the ship-to party has deliveries with different partner data.

Cause and prerequisites

Program error

Solution
1. Program FV50C001 (up to 2.2D):

FORM DATEN_KOPIEREN_001.
.....

LOOP AT XVBPA WHERE VBELN = LIKP-VBELN AND PARVW = 'WE'. "< New
EXIT. "< New
ENDLOOP. "< New
IF SY-SUBRC = 0. "< New
LIKP-ABLAD = XVBPA-ABLAD. "< New
ENDIF. "< New

ENDFORM.


2. MV50AF0F (up to 2.2D):

At the end of the FORM routine

FORM FCODE_KPAR.

....... "< New
IF RV02P-WEUPD NE SPACE. "< New
LOOP AT XVBPA WHERE VBELN = LIKP-VBELN AND "< New
PARVW = 'WE' AND "< New
UPDKZ NE 'D'. "< New
EXIT. "< New
ENDLOOP. "< New
IF SY-SUBRC = 0. "< New
LIKP-ABLAD = XVBPA-ABLAD. "< New
ENDIF. "< New
ENDIF. "< New
ENDFORM. "< New


3. FV50CF0P (up to 2.2E):

FORM PARTNER_KOPIEREN.

...
...

* GGF. Setzen Partner in Lieferkopf
CASE XVBPA-PARVW.
WHEN 'WE'.
LIKP-KUNNR = XVBPA-KUNNR.
LIKP-ABLAD = XVBPA-ABLAD. "<-- new line
WHEN 'AG'.
LIKP-KUNAG = XVBPA-KUNNR.
ENDCASE.


4. FV50CF0P (up to 2.2E):

FORM PARTNER_KOPIEREN_PRUEFEN USING PK_SUBRC
PK_VBELN.

DATA: CVBPAKEY1(21),
VV_EXIT(1).

PK_SUBRC = 0. "<-- new line
CVBPAKEY1+00(03) = CVBAP-MANDT.
CVBPAKEY1+03(10) = CVBAP-VBELN.
....
....

IF SY-SUBRC EQ 0.
* Korrektur 080393
IF ( XVBPA-KUNNR NE CVBPA-KUNNR AND XVBPA-NRART = 'KU' ) OR
( XVBPA-LIFNR NE CVBPA-LIFNR AND XVBPA-NRART = 'LI' ) OR
( XVBPA-PARNR NE CVBPA-PARNR AND XVBPA-NRART = 'AP' ) OR
( XVBPA-PERNR NE CVBPA-PERNR AND XVBPA-NRART = 'PE' ) OR

( XVBPA-PARVW EQ 'WE' AND "<-- new line
NOT XVBPA-ABLAD IS INITIAL AND "<-- new line
NOT CVBPA-ABLAD IS INITIAL AND "<-- new line
XVBPA-ABLAD NE CVBPA-ABLAD ) "<-- new line

OR ( XVBPA-ADRNR NE CVBPA-ADRNR ).

* Korrektur 080393
* IF XVBPA-KUNNR NE CVBPA-KUNNR.
VV_EXIT = CHARX.
EXIT.
ENDIF.
ENDIF.
ENDLOOP.
....

CAUTION: The query to be changed in this module appears twice in Release 2.1*, and must be changed in both places.


5. Include LV50SF0P Form PARTNER_KOPIEREN_PRUEFEN 2.1 only:

FORM PARTNER_KOPIEREN_PRUEFEN USING PKP_VBELN
PKP_SUBRC.

DATA: CVBPAKEY1(21).

...

* Partner gefunden, weicht er ab?
IF SY-SUBRC EQ 0.
CASE XVBPA-NRART.
WHEN 'KU'. CVBPA-KUNNR = CVBPA-KUNNR.
WHEN 'LI'. CVBPA-KUNNR = CVBPA-LIFNR.
WHEN 'PE'. CVBPA-KUNNR = CVBPA-PERNR.
WHEN 'AP'. CVBPA-KUNNR = CVBPA-PARNR.
ENDCASE.
IF XVBPA-KUNNR NE CVBPA-KUNNR OR
( XVBPA-PARVW EQ 'WE' AND "<-- new line
NOT XVBPA-ABLAD IS INITIAL AND "<-- new line
NOT CVBPA-ABLAD IS INITIAL AND "<-- new line
XVBPA-ABLAD NE CVBPA-ABLAD ) OR "<-- new line
XVBPA-ADRNR NE CVBPA-ADRNR.
PKP_SUBRC = 4.
EXIT.
ENDIF.
ENDIF.
ENDLOOP.

...


6. Include LV50SF0S FORM STEUERUNG_ZENTRAL

FORM STEUERUNG_ZENTRAL.

* 6. feststellen, ob neue Lieferung
* 6.1 wenn keine Zusammenführung erlaubt ist
* 6.2 wenn kein passender gefunden wird
KOPF_GEFUNDEN = SPACE.
ABBRECHEN = SPACE.


DATA: GEFUNDEN_VBELN LIKE LIKP-VBELN. "<-- new
CLEAR GEFUNDEN_VBELN. "<-- new
LOOP AT ZLIKP. "<-- new
IF ZLIKP = LIKP. "<-- new
TEMP_VBELN(1) = '$'. "<-- new
TEMP_VBELN+1 = SY-TABIX. "<-- new
PERFORM PARTNER_KOPIEREN_PRUEFEN_PRE(SAPFV50C) USING "<-- new
DC_SUBRC TEMP_VBELN. "<-- new
IF DC_SUBRC = 0. GEFUNDEN_VBELN = TEMP_VBELN. ENDIF. "<-- new
ENDIF. "<-- new
ENDLOOP. "<-- new


LOOP AT ZLIKP.
TEMP_VBELN(1) = '$'. "<-- new
TEMP_VBELN+1 = SY-TABIX. "<-- new
IF GEFUNDEN_VBELN NE SPACE. "<-- new
CHECK TEMP_VBELN = GEFUNDEN_VBELN. "<-- new
ENDIF. "<-- new
IF ZLIKP = LIKP.
* falls keine Zusammenführung gestattet ist, gilt dies jedoch
* nicht für Positionen desselben Auftrags
IF LIKP-KZAZU EQ SPACE.

7.Include FV50CF0P; add the following new FORM routine:

FORM PARTNER_KOPIEREN_PRUEFEN_PRE USING PK_SUBRC
PK_VBELN.

DATA: CVBPAKEY1(21),
VV_EXIT(1).

CVBPAKEY1+00(03) = CVBAP-MANDT.
CVBPAKEY1+03(10) = CVBAP-VBELN.
PK_SUBRC = 0.
LOOP AT XVBPA WHERE VBELN = PK_VBELN.
CVBPAKEY1+13(06) = CVBAP-POSNR.
CVBPAKEY1+19(02) = XVBPA-PARVW.
READ TABLE CVBPA WITH KEY CVBPAKEY1 BINARY SEARCH.
* Abweichender Partner auf Auftragspositionsebene
IF SY-SUBRC NE 0.
CVBPAKEY1+13(06) = POSNR_LOW.
READ TABLE CVBPA WITH KEY CVBPAKEY1 BINARY SEARCH.
ENDIF.

IF SY-SUBRC EQ 0.
IF ( XVBPA-KUNNR NE CVBPA-KUNNR AND XVBPA-NRART = 'KU' ) OR
( XVBPA-LIFNR NE CVBPA-LIFNR AND XVBPA-NRART = 'LI' ) OR
( XVBPA-PARNR NE CVBPA-PARNR AND XVBPA-NRART = 'AP' ) OR
( XVBPA-PERNR NE CVBPA-PERNR AND XVBPA-NRART = 'PE' ) OR
( XVBPA-PARVW EQ 'WE' AND
NOT XVBPA-ABLAD IS INITIAL AND
NOT CVBPA-ABLAD IS INITIAL AND
XVBPA-ABLAD NE CVBPA-ABLAD ) OR
( XVBPA-ADRNR NE CVBPA-ADRNR ).
PK_SUBRC = 4.
VV_EXIT = CHARX.
EXIT.
ENDIF.
ENDIF.
ENDLOOP.

ENDFORM.

No comments:

Post a Comment