2011年3月30日 星期三

[SD] Previous User Exits in Shipping

Use

In shipping processing, there are other user exits available to you in addition to the Business Add-Ins:
  • User exits in the form of includes
    These special includes are no longer conventionally delivered by SAP through upgrades or support packages, which means that your own changes to these includes will be kept. The includes contain empty FORM routines that are called at various points during shipping processing. You can fill the FORM routines with your own coding, in order to process your own additional data or to change data from the standard processing.
    Because you can usually access various application data within these user exits, and no defined interfaces are available, there is a high risk of effects on the standard range of function. For this reason, you must take particular care with implementation and a wide range of tests to ensure your functional enhancements are completely failsafe.
  • Customer exits (SAP enhancements)
    You can assign, and therefore activate, projects using transaction CMOD. For more information on each of the enhancements, see the documentation for the enhancements or its components. To do this, call up transaction SMOD and enter the name of the relevant enhancement.
The following gives you an overview of the existing delivery processing and shipping processing functions that you can influence using user exits.

Processing Delivery Data

You can use the following includes to process delivery data:
  • MV50AFZ1
    This include contains routines for processing delivery header and item data, as well as for changing the entrie delivery at central points during delivery processing. For more information on the exit, see note 415716.
    • FORM USEREXIT_DELETE_DOCUMENT.
      This userexit can be used to delete data in additional tables when a delivery is deleted.
      This form is called in dialog at the end of form BELEG_LOESCHEN just before form BELEG_SICHERN is performed to delete the datas on the database.
    • FORM USEREXIT_MOVE_FIELD_TO_LIKP.
      This userexit can be used to move some fields into the delivery header workaerea LIKP.
      This form is called, when a header is created, This form is called at the end of form LIKP_FUELLEN.
    • FORM USEREXIT_MOVE_FIELD_TO_LIPS.
      This userexit can be used to move some fields into the delivery item workaerea LIPS.
      This form is called, when an item is created.
      This form is called at the end of form LIPS_FUELLEN.
    • FORM USEREXIT_NUMBER_RANGE USING US_RANGE_INTERN.
      This userexit can be used to determine the numberranges for the internal document number.
      US_RANGE_INTERN - internal number range
      This form is called from form BELEG_SICHERN
    • FORM USEREXIT_READ_DOCUMENT.
      This userexit can be used to read data in additional tables when the program reads a delivery.
      This form is called at the end of form BELEG_LESEN.
    • FORM USEREXIT_SAVE_DOCUMENT.
      This userexit can be used to save data in additional tables when a document is saved.
      If field T180-TRTYP contents 'H', the document will be created, else it will be changed.
      This form is called at from form BELEG_SICHERN, before COMMIT
    • FORM USEREXIT_SAVE_DOCUMENT_PREPARE.
      This userexit can be used for changes or checks, before a document is saved.
      If field T180-TRTYP contents 'H', the document will be created, else it will be changed.
      This form is called at the beginning of form BELEG_SICHERN
    • FORM USEREXIT_REFRESH_DOCUMENT.
      It is always necessary to refresh user-specific data before the next document will be processed.
      This can be done in this userexit.
      This userexit can be used to refresh user-specific data when the processing of a delivery is finished
      • after the document is saved
      • when you leave the document processing with F3 or F15
      It may be necessary to refresh user-specific data before the next document will be processed.
      This form is called in dialog at the end of form BELEG_INITIALISIEREN
  • MV50AFZ2
    You can use this user exit to influence distribution of the delivery quantity to the batches found.
    • FORM USEREXIT_BATCH_QUAN_ALLOCATION.
      Userexit zur Verteilung der offnen Menge auf die selektierten Chargen.
      Zur Verfung stehen:
      interne Tabelle SEL_CHARGEN (Tabelle der selektierten Chargen)
      Feld SAVE_CLIPS-LGMNG (offene, keiner Charge zugeordnete Menge)
      Dieses Beispiel zeigt die Verteilung gem魠 Sortierung.
      Charge f Charge wird die gesamte verfbare Menge der Charge als Liefermenge gesetzt, bis keine Menge mehr zu verteilen ist.
  • MV50AFZ3
    You can use this user exit to control the confirmation requirement of an individual delivery item. You can only use this user exit for picking without Warehouse Management.
    • FORM USEREXIT_LIPS-KOQUI_DETERMINE.
      • --> INPUT: LIKP
      • --> INPUT: LIPS
      • <-- OUTPUT: LIPS-KOQUI
  • MV50AFZK
    You can use this user exit to control material determination (material listing, material exclusion, product selection), by changing the communication structures for accessing the condition tables.
    The userexits in this include can be used to fill the condition tables for material listing and material exclusion (KOMKG and KOMPG) and product selection (KOMKD and KOMPD) with own data. They supplement the userexits
    • USEREXIT_MOVE_FIELD_TO_KOMKD
    • USEREXIT_MOVE_FIELD_TO_KOMPD
    • USEREXIT_MOVE_FIELD_TO_KOMKG
    • USEREXIT_MOVE_FIELD_TO_KOMPG
    in program MV45AFZA which are called during sales order processing.
    These form routines can not be called during delivery processing since they refer to a different main program.
    • FORM USEREXIT_MOVE_FIELD_TO_KOMKD.
      This userexit can be used to move some fields into the communication workarea for product substitution.
      This form is called from form KOMKD_KOMPD_FUELLEN.
    • FORM USEREXIT_MOVE_FIELD_TO_KOMPD.
      This userexit can be used to move some fields into the communication workarea for product substitution.
      This form is called from form KOMKD_KOMPD_FUELLEN.
    • FORM USEREXIT_MOVE_FIELD_TO_KOMKG.
      This userexit can be used to move some fields into the communication workarea for product listing or exclusion.
      This form is called from form KOMKG_KOMPG_FUELLEN.
    • FORM USEREXIT_MOVE_FIELD_TO_KOMPG.
      This userexit can be used to move some fields into the communication workarea for product listing or exclusion.
      This form is called from form KOMKG_KOMPG_FUELLEN.
  • MV50AFZL
    This exit allows you to control the behavior of delivery creation for order-based deliveries in the case of incomplete delivery groups.
    • Form KZKOR_DETERMINE
      In delivery creation process for sales orders there is the possibility to restrict the delivery creation to some order items.
      If these order items are member of a delivery group, but not all items of this delivery group are includes in the restriction range of the order item nubers, you can specify in this routine what to do.
      This effects Delivery creation in Dialog (VL01, VL01N) and delivery change, function deliver sales order (VL02, VL02N, FCode RAUF).
      • <-- CF_KZKOR flag, how to handle incomplete delivery groups
      • cf_kzkor = ' '. "Deliver incomplete delivery groups as specified
      • cf_kzkor = '1'. "Add items of incomplete selected delivery groups
      • cf_kzkor = '2'. "do not deliver any item of incomplete del-groups
  • MV50AFZZ
    You can use this exit to influence batch determination for an individual delivery item.
    • FORM USEREXIT_BATCH_DETERMINATION.
      Userexit zur Ermittlung einer Charge in einer Lieferposition zur Verfung stehen:
      LIPS (die bis dahin aufgebaute Lieferposition)
      Dieses Beispiel zeigt die Selektion einer Charge anhand ihres Verfbarkteitsdatums und ihres Verfalldatums.
      Es wird die erste Charge ermittelt, die gem魠 Daten verfbar ist. Die Mengenverfbarkteit erfolgt zu einem sp酹eren Zeitpunkt. Dies bedeutet, da?eine zu diesem
      Zeitpunkt gefundene Charge aufgrund mangelnder Verfbarkeit nicht in die Lieferposition wandert.
    • FORM USEREXIT_LGORT_DETERMINATION.
      This userexit can be used to fill the field LIPS-LGORT, when a delivery is created
      This form is called in the form LIPS-LGORT_ERMITTELN in the Include FV50XFLP
      you can use LIKP, some fields of LIPS, MAAPV, ...

Status Updates

  • Include LV50PFZA enables you to determine your own delivery item status.
  • You can use the include RV45PFZA to determine your own header status. This exit is also used by other applications in Sales and Distribution (sales order, billing document).
  • You can use the customer exit in enhancement V50PSTAT if you want to influence determination of the picking status in the case of rounding problems.

Incompletion Control of Deliveries

You can use the include FV50UZXX to program individual incompletion checks for a delivery document. Note 158807 contains more information on this.

Dezentralized Warehouse Management System

You can use enhancement V50S0001 to control system behavior when you create deliveries in the decentralized Warehouse Management System:
  • Control of the input attributes of delivery fields for distributed deliveries
  • Control of number assignment for a delivery created in the decentralized WMS

Collective Processing of Deliveries

  • You can use the customer exits in enhancements V50R0002 and V50R0004 to calculate the stocks for displaying in the delivery due list.
  • You can use the FORM routines in the include MV50SFZ4 to control output of the delivery due list in the old transaction VL04.
  • You can use the include RVV50TOP to branch to user exits that you can use to influence the list output in transaction VL10. For more information see note 198137.

Stock Transfer Process

You can use enhancement V02V0001 , if you want to control sales area determination of stock transport orders in a different way to the standard system.

Determinations in the Delivery

You can use the following enhancements to control determination of the organizational units that control the picking or putaway process of deliveries:
Enhancement Function influenced
V02V0002:Storage location determination
V02V0003:Gate and staging zone determination (Header)
V02V0004:Staging zone determination (item)

Delivery Monitor

You can use the enhancement V50Q0001 to influence the data selection for outputting the list. For more information, see note 128150.

Constructing Wave Picks

You can control the construction of wave picks using the customer exits in enhancement V53W0001 .

Subsequent Outbound Delivery Split

You can use the FORM routines in the include LV53SFZ1 to enhance the functions of the subsequent delivery split. The includeLV53STZ1 enables you to enhance the type group that is used by the function modlues of the delivery split. For more information see note 416765.

Processing Delivery IDocs

You can use the following enhancements to influence processing of delivery IDocs:
Enhancement Function
V55K0001:Delivery (Inbound) : Copy data
V55K0002:Delivery (Inbound) : Prepare processing
V55K0003:Delivery (Inbound) : Evaluate result
V55K0004:Shipping notification (Inbound): Modification of IDoc control data
V55K0005:Purchase order (Inbound): Modification of IDoc control data
V55K0011:Shipping notification (Inbound): Copy data
V55K0012:Shipping notification (Inbound): Prepare processing
V55K0013:Shipping notification (Inbound): Evaluate result
V50B0001:User exit for BAPI replication/confirmation of deliveries