Funktionsbaustein GN DELIVERY CREATE

Aus SAP-Wiki
Zur Navigation springenZur Suche springen

Der Funktionsbaustein GN_DELIVERY_CREATE kann Anlieferungen und Auslieferungen anlegen.

Beispielcoding

      Data: ls_vbsk          TYPE vbsk,                      "Vertriebsbeleg Sammelgang Kopf

      INSERT INITIAL LINE INTO TABLE lt_komdlgn ASSIGNING FIELD-SYMBOL(<ls_komdlgn>).

      <ls_komdlgn> = VALUE #( lifnr     = mv_lifnr          "Lieferant
                              matnr     = ls_tab-matnr_sap  "Material
                              werks     = ls_tab-werks      "Werk
                              vgbel     = ls_tab-ebeln_sap  "Bestellung
                              vgpos     = ls_tab-ebelp      "Bestellposition
                              lgort     = ls_tab-lgort      "Lagerort
                              vgtyp     = 'V'               "Belegtyp Vorgänger = Bestellung
                              vstel     = '1010'            "Versandstelle 1010
                              lfdat     = sy-datlo          "Lieferdatum Heute
                              lfuhr     = sy-timlo          "Lieferuhrzeit Jetzt
                              lfimg     = ls_tab-menge      "Menge
                              meins     = ls_tab-meins      "Mengeneinheit
                              vrkme     = ls_tab-meins      "Verkaufsmengeneinheit
                              lfart     = 'PELS'            "Lieferart PELS  = Anl. bew. empf. TrB
                              pstyv     = 'ZELS'            "Positionstyp ZELS =
                              vwpos     = 'V'               "Verwendung der Position
                              bolnr     = lv_bolnr          "Frachtbrief
                              traid     = lv_traid          "Container
                              lifex     = lv_lifex          "Referenz
                              kzazu     = abap_true         "Auftragszusammenführung EXT_REBERSTE, 20.10.2021,
                               ).

*     Lösche führende Nullen aus der LIeferreferenz
      SHIFT <ls_komdlgn>-lifex LEFT DELETING LEADING '0'.

    DATA(ls_control) = VALUE leshp_delivery_proc_control_in(
       splitprot_requested = 'X' "Tabelle LT_SPLITPROT wird gefüllt für Splitursache Anlieferungen

*      Setzen Parameter 'SPE_MAX_NR_DELIVERIES = 1' beim Fkt. 'GN_DELIVERY_CREATE' bei Anlegen Anlieferung.
*      Dadurch wird nur 1 Anlieferung erzeugt (statt für jede Bestellreferenz 1 Anlieferung)
       spe_max_nr_deliveries = 1 "Dadurch wird nur 1 Anlieferung erzeugt (statt für jede Bestellreferenz 1 Anlieferng)
                                                            ).

    DATA: lt_vbadr     TYPE shp_sadrvb_t    ##NEEDED,
          lt_vbpa      TYPE shp_vl10_vbpa_t ##NEEDED,
          lv_no_commit TYPE xfeld.

*   Die Anlieferung wird nicht sofort physisch angelegt, um beim Debuggen noch abbrechen zu können nach Ausführung Fkt.
    lv_no_commit = abap_true.

*   Anlegen von Lieferungen mit Funktionsbaustein 'GN_DELIVERY_CREATE'
    CALL FUNCTION 'GN_DELIVERY_CREATE'
      EXPORTING
        vbsk_i           = ls_vbsk
        no_commit        = lv_no_commit
        is_control       = ls_control        "Kontrollstruktur: Anforderung Füllen Splitkriterien -> Protokoll in LT_sPLITPROT
        is_borgr_control = ls_borgr_control  "Aktuell nicht gefüllt (nötig?)
      IMPORTING
        vbsk_e           = ls_vbsk_e         "Tabelle VBSK
        et_splitprot     = lt_splitprot      "Ursachen für Splits Anlieferungen
        et_vbadr         = lt_vbadr
        et_vbpa          = lt_vbpa
      TABLES
        xkomdlgn         = lt_komdlgn        "Tabelle Positionen
        xvbfs            = lt_vbfs           "Fehlerprotokoll Sammelgang
        xvbls            = lt_vbls.          "Lieferscheine zum Sammelgang