Liefersplit in der VL10C nach Material und Menge

In der Datenübernahmeroutine beim Anlegen von Lieferungen zu Kundenaufträgen kann der Liefersplit nach verschiedenen Kriterien durchgeführt werden. Es ist jedoch nicht möglich, einen Split nach Menge zu realisieren, d.h. das ein Material nur mit einer bestimmten oder maximalen Menge in eine Lieferung darf.

Um diese Anforderung zu realisieren, muss man zu einem früheren Zeitpunkt der Lieferungserstellung eingreifen.

Szenario

In einem Kundenauftrag werden mehrere Positionen erfasst. Ein bestimmtes Material muss jedoch immer separat beliefert werden. Eine Lieferung dieses Materials darf auch weiterhin nur eine maximale Menge von 2 Stück enthalten.

Diese Anforderung ist nicht unüblich, wenn z.B. bestimmte als Gefahrgut deklarierte Materialien per Luftfracht verschickt werden.

Beispiel: Das Gefahrgut wird mit Menge = 9 ST erfasst. Es muss in 4 Lieferungen a 2 ST und eine Lieferung a 1 ST gesplittet werden.

Umsetzen der Anforderung

In der VL10C werden zur Lieferung fällige Kundenaufträge zu sogenannten Päckchen zusammengefasst. Jedes Päckchen ist eine Gruppierung von Auftragspositionen bzw. -einteilungen, die theoretisch zu einer Lieferung zusammengefasst werden können. Jedes Päckchen durchläuft anschließend die Datenübernahmeroutine Auftrag -> Lieferung, wo dann für das Päckchen der eigentliche Liefersplit durchgeführt wird. Aus einem Päckchen können also 1 … n Lieferungen entstehen.

Auf dem Reiter „Benutzerrolle“ des Selektionsbildes der VL10C gibt es den Parameter „PackageType“. Dieser Parameter legt fest, nach welcher Logik die Päckchen zusammengestellt werden. Wenn hier der Wert „9 = Userexit“ eingetragen wird, kann man sich die Päckchen nach einer eigenen Logik zusammenstellen und eigene Splitkriterien zum Liefersplit nach Material und Menge durchzuführen.

Die Vorbelegung des Selektionsbildes mit PackageType = 9 erfolgt in TRX VL10CUC.

Mit Setzen des Parameters „PackageType = 9“ wir der Userexit USEREXIT_PREPARE_PACKAGES_CR im Programm LV50R_VIEWG09 angesprungen.

Dort wird dann die Tabelle ct_key_try gefüllt und die Tabelle it_postab ggfs. manipuliert.

Das Feld ct_key-PANUM steuert, welche Positionen in eine Lieferung fließen.

Im Feld it_postab-kumng kann die Liefermenge mitgegeben werden.

Coding 

*----------------------------------------------------------------------*
***INCLUDE LV50R_VIEWF62 .
*----------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Form USEREXIT_PACKAGES_CHANGE
*&---------------------------------------------------------------------*
FORM userexit_prepare_packages_chan
 USING ix_list_profil TYPE shp_vl10_list_profil
 it_postab TYPE shp_vl10_postab_t
 CHANGING ct_packages TYPE shp_vl10_package_t
 ct_vorgabe_daten TYPE shp_vorgabe_daten_t
 ct_komdlgn TYPE shp_komdlgn_t.

* Deklarationen
 DATA: ls_postab LIKE LINE OF it_postab,
 ls_vorgabe LIKE LINE OF ct_vorgabe_daten,
 ls_pack LIKE LINE OF ct_packages.

 "PACKAGES
 LOOP AT ct_packages INTO ls_pack.
 IF sy-tabix = 4.
 ls_pack-panum = '2'.
 MODIFY ct_packages FROM ls_pack.
 ENDIF.
 ENDLOOP.
 ls_pack-panum = '3'.
 ls_pack-tabix = 5.
 ls_pack-id = '5'.
 APPEND ls_pack TO ct_packages.

 "POSTAB
 LOOP AT it_postab INTO ls_postab.
 READ TABLE ct_packages INTO ls_pack WITH KEY tabix = ls_postab-master_tabix.

 IF ls_pack-tabix = 4.
 ls_postab-kumng = 4.
 ENDIF.

 MODIFY it_postab FROM ls_postab.
 ENDLOOP.

 ls_postab-kumng = 6.
 APPEND ls_postab TO it_postab.

 "VORGABE
 LOOP AT ct_vorgabe_daten INTO ls_vorgabe.
 READ TABLE ct_packages INTO ls_pack WITH KEY tabix = ls_vorgabe-postab_tabix.

 IF ls_pack-tabix = 4.
 ls_vorgabe-lfimg = 4.
 ls_vorgabe-lgmng = 4.
 ls_vorgabe-lfimg_flo = 4.
 ls_vorgabe-lgmng_flo = 4.
 ls_vorgabe-panum = 2.
 ENDIF.

 MODIFY ct_vorgabe_daten FROM ls_vorgabe.
 ENDLOOP.

 ls_vorgabe-lfimg = 6.
 ls_vorgabe-lfimg_flo = 6.
 ls_vorgabe-lgmng_flo = 6.
 ls_vorgabe-panum = '3'.
 ls_vorgabe-id = '5'.
 APPEND ls_vorgabe TO ct_vorgabe_daten.

ENDFORM. " USEREXIT_PACKAGES_CREATE
.

Ergebnis

Der Kundenauftrag wurde in 6 Lieferungen gesplittet.

  • Lieferung 1: die 3 Normalpositionen (kein Gefahrgut)
  • Lieferung 2-5: eine Position Gefahrgut a 2 ST
  • Lieferung 6: eine Position Gefahrgut a 1 ST

Weitere Informationen

Spezialthemen zu SAP Formularen

SAP Formulare zum Festpreis

SAP Formularentwicklung