Ansicht
Dokumentation

BAPI_OUTB_DELIVERY_CREATE_SLS - Erzeuge Lieferung zum Kundenauftrag

BAPI_OUTB_DELIVERY_CREATE_SLS - Erzeuge Lieferung zum Kundenauftrag

CPI1466 during Backup   rdisp/max_wprun_time - Maximum work process run time  
Diese Dokumentation steht unter dem Copyright der SAP AG.
SAP E-Book

Funktionalität

Zu einem Kundenauftrag oder einzelnen Kundenauftragspositionen wird eine Lieferung erstellt. Durch einen Liefersplit kann es auch zur Anlage mehrerer Lieferungen kommen.

Mit Ausnahme der Kundenauftragsnummer in mindestens einem Eintrag des Parameters SALES_ORDER_ITEMS sind alle Parameter optional.

Schnittstelle

Parameter Opt.   Bedeutung
Import  
SHIP_POINT X   Versandstelle
DUE_DATE X   Lieferungserstelldatum
DEBUG_FLG X   Erzwingt Abbruch (ALE-Analyse)
Export  
DELIVERY X   Erste erzeugte Lieferung
NUM_DELIVERIES X   Anzahl erzeugter Lieferungen
Tabellen   Richtung
SALES_ORDER_ITEMS   Import Auftragspositionen/ Auftrag
SERIAL_NUMBERS X Import Serialnummern
EXTENSION_IN X Import Zusätzliche Eingabedaten
DELIVERIES X Export Erzeugte Lieferungen
CREATED_ITEMS X Export Erzeugte Lieferungspositionen
EXTENSION_OUT X Export Zusätzliche Ausgabedaten
RETURN X Export Fehlerprotokoll

Opt.: Optional
Richtung: Gibt bei Tabellenparametern die verwendete Richtung an.

Achtung:
Die exportierten Tabellenparameter werden vor der Verarbeitung initialisiert. Daten, die vor Aufruf des BAPIs in diesen Parametern enthalten waren, gehen damit verloren.

Importierte Parameter

Versandstelle (SHIP_POINT)
Wird die Versandstelle nicht vorgegeben, so wird die erste Versandstelle gewählt, die unter den referenzierten Auftragspositionen ermittelt werden kann. Im Falle eines Retouren-Kundenauftrags ist unter der Versandstelle die Warenannahmestelle der zurückgelieferten Ware zu verstehen.

Lieferungserstelldatum (DUE_DATE)
Als Lieferungserstelldatum wird der 31.12.9999 gewählt, wenn nicht anders vorgegeben.

DEBUG_FLG
Nur für den internen Gebrauch. Das DEBUG_FLG kann in der ALE-Eingangsverarbeitung genutzt werden, um einen Abbruch zu erzwingen und somit die Analyse der Verarbeitung erleichtern.

Auftrag (SALES_ORDER_ITEMS-REF_DOC)
Werden keine weiteren Angaben zu einem Auftrag gemacht, wird der gesamte Auftrag beliefert. Es müssen also nicht alle Auftragspositionen aufgelistet werden. Die Angabe nur der Auftragsnummer ist ausreichend.

Auftragsposition (SALES_ORDER_ITEMS-REF_ITEM)

Die Auftragsposition muss angegeben werden, wenn

  • nicht alle Auftragspositionen des Auftrags beliefert werden sollen oder
  • Liefermengen vorgegeben werden sollen oder
  • Auftragspositionen in verschiedenen Lieferungen (externe Nummernvergabe) beliefert werden sollen.
Achtung:

  • Eine Auftragsposition darf nicht mehrfach in SALES_ORDER_ITEMS vorkommen.
  • Eine Auftragsposition darf nicht vorkommen, wenn die Auftragsnummer bereits in einem anderen Eintrag als alleinige Angabe vorkommt.

Liefermengen (SALES_ORDER_ITEMS-LFIMG)
Werden keine Liefermengen vorgegeben, werden diese unter Berücksichtigung des Lieferungserstelldatums aus den Einteilungen ermittelt. Anderenfalls wird die Liefermenge aus der Vorgabe übernommen.

Bei Vorgabe der Liefermenge ist die Angabe der Verkaufsmengeneinheit erforderlich - entweder als SAP-Code (SALES_UNIT) oder ISO-Code (SALES_UNIT_ISO).

Liefermengen können nur für einzelne Auftragspositionen angegeben werden.

Externe Liefernummer (SALES_ORDER_ITEMS-DELIV_NUMB)
Die Liefernummer kann aus dem externen Nummernkreisintervall vorgegeben werden.

Serialnummern (SERIAL_NUMBERS)
Im Parameter SERIAL_NUMBERS können Serialnummern den Lieferpositionen zugeordnet werden, die die angebenen Auftragspositionen beliefern.

Zusätzliche Import-Daten (EXTENSION_IN)
Im Parameter EXTENSION_IN können zusätzliche Daten übergeben werden. Weitere Informationen hierzu finden Sie in der Dokumentation des BADIs BADI_DLV_CREATE_SLS_EXTIN.

Exportierte Parameter

Liefernummer (DELIVERY)
Erzeugte Lieferung (Schlüsselfeld im BOR-Objekttyp LIKP). Im Falle eines Liefersplits ist dies die erste erzeugte Lieferung.

Anzahl erzeugter Lieferungen (NUM_DELIVERIES)
Im Falles eines Liefersplits können mehr als eine Lieferung erzeugt werden.

Erzeugte Lieferungen (DELIVERIES)
Liste aller erzeugten Lieferungen (inkl. DELIVERY).

Erzeugte Lieferpositionen (CREATED_ITEMS)
Liste aller erzeugten Lieferpositionen.

Zusätzliche Export-Daten (EXTENSION_OUT)
Bei synchronem Aufruf können nach Lieferungserstellung noch weitere Daten an den Aufrufer im Parameter EXTENSION_OUT zurückgegeben werden. Siehe Dokumentation des BADIs BADI_DLV_CREATE_EXTOUT.

Fehlerprotokoll (RETURN)
Der Parameter RETURN enthält das Fehlerprotokoll.

Analog zu Transaktion VL10 können Lieferungen u.U. auch dann angelegt werden, wenn es während der Verarbeitung zu Fehlermeldungen kam. Da ein asynchroner Aufrufer des BAPIs (ALE) den Erfolg der Verarbeitung nur über den RETURN-Parameter erfährt, werden Fehlermeldungen zu Warnmeldungen konvertiert, wenn mindestens eine Lieferung angelegt werden konnte. Für eine erfolgreich angelegte Lieferung mit konvertierten Fehlermeldungen wird die Meldung VLBAPI061 (s.u.) ausgegeben.

Ferner enthält RETURN folgende wichtige Meldungen:

Nachricht Bedeutung
BAPI000 Eine Lieferung konnte angelegt werden
BAPI001 Eine Lieferung konnte nicht angelegt werden
VLBAPI061 Lieferung mit Fehlern angelegt (siehe Warnmeldungen)
VL311 Lieferung wurde gesichert

Im asynchronen Fall kann daher den Meldungen VL311 entnommen werden, welche Lieferungen angelegt werden konnten.

Transaktionales Verhalten

  • Kein COMMIT WORK.
  • ROLLBACK WORK, wenn keine Lieferung erstellt werden konnte.

Beispiel

Der folgende Report beliefert einen Kundenauftrag ohne Vorgabe der Versandstelle, des Lieferungserstellungsdatums und der Liefermengen.


report  zz_test_create_sls.

parameters: vbeln like vbak-vbeln OBLIGATORY memory id aun,
            logsys like tbdls-logsys default 'NONE'.

data: lf_vbeln type vbeln_vl,
      lf_num type vbnum,
      ls_deli type bapishpdelivnumb,
      lt_deli type table of bapishpdelivnumb,
      lt_order type table of bapidlvreftosalesorder,
      ls_order type bapidlvreftosalesorder,
      ls_itm type bapidlvitemcreated,
      lt_itm type table of bapidlvitemcreated,
      ls_ext type bapiparex,
      lt_extin type table of bapiparex,
      lt_extout type table of bapiparex,
      ls_ret type bapiret2,
      lt_return type table of bapiret2.

* SalesOrderItems (here: complete sales order)
ls_order-ref_doc = vbeln.
append ls_order to lt_order.

* ExtensionIn
ls_ext = 'My additional input'.
append ls_ext to lt_extin.

* Synchronous RFC
call function 'BAPI_OUTB_DELIVERY_CREATE_SLS'
   DESTINATION logsys
*   EXPORTING
*     SHIP_POINT              =
*     DUE_DATE                =
*     DEBUG_FLG               =
  importing
    delivery                = lf_vbeln
    num_deliveries          = lf_num
  tables
    sales_order_items       = lt_order
    extension_in            = lt_extin
    deliveries              = lt_deli
    created_items           = lt_itm
    extension_out           = lt_extout
    return                  = lt_return
          .

write: / 'Delivery:', lf_vbeln,
       / 'NumDeliveries:', lf_num,
       / 'Deliveries:'.
loop at lt_deli into ls_deli.
  write ls_deli-deliv_numb.
endloop.

if not lt_itm[] is initial.
  write: / 'CreatedItems:'.
  loop at lt_itm into ls_itm.
    write: / ls_itm-ref_doc,
             ls_itm-ref_item,
             ls_itm-deliv_numb,
            ls_itm-deliv_item,
             ls_itm-material,
             ls_itm-dlv_qty,
             ls_itm-sales_unit,
             ls_itm-sales_unit_iso.
  endloop.
endif.

if not lt_return[] is initial.
  write: / 'Return:'.
  loop at lt_return into ls_ret.
    write: / ls_ret-type, ls_ret-id, ls_ret-number,
             ls_ret-message,
           /.
  endloop.
endif.

if not lt_extout[] is initial.
  write: / 'ExtensionOut:'.
  loop at lt_extout into ls_ext.
    write: / ls_ext.
  endloop.
endif.

* COMMIT WORK
if not lf_vbeln is initial.
  commit work.
endif.

Hinweise

  • Das BAPI kann mehrere Aufträge gleichzeitig beliefern, ist jedoch nicht für eine Massenbelieferung ausgelegt.
  • Das BAPI kann nicht mehrfach in derselben Logical Unit of Work (LUW) aufgerufen werden. Nach einem erfolgreichen Aufruf ist ein COMMIT WORK des Aufrufer erforderlich bevor dieses oder ein anderes BAPI der Funktionsgruppe V50I gerufen werden kann.
  • Das BAPI kann keine Lieferpositionsnummern vorgeben.

Weiterführende Informationen

  • Dokumentation zum Parameter SALES_ORDER_ITEMS.
  • Dokumentation der BADIs
  • BADI_DLV_CREATE_SLS_EXTIN und

  • BADI_DLV_CREATE_EXTOUT.





Parameter

CREATED_ITEMS
DEBUG_FLG
DELIVERIES
DELIVERY
DUE_DATE
EXTENSION_IN
EXTENSION_OUT
NO_DEQUEUE
NUM_DELIVERIES
RETURN
SALES_ORDER_ITEMS
SERIAL_NUMBERS
SHIP_POINT

Ausnahmen

Funktionsgruppe

V50I

BAL Application Log Documentation   Addresses (Business Address Services)  
Diese Dokumentation steht unter dem Copyright der SAP AG.

Length: 17179 Date: 20240523 Time: 154203     sap01-206 ( 145 ms )