Difference between revisions of "SAP SD BAPI DELIVERY"

From SapWiki
(Created page with " <nowiki>*&---------------------------------------------------------------------* *& Form borrar_item *&-----------------------------------------------------------------...")
 
 
Line 1: Line 1:
 +
==[[SAP_SD_DELIVERY_UPDATE_PICKING|DELIVERY UPDATE PICKING]]==
 +
==BAPI_OUTB_DELIVERY_CHANGE==
 
  <nowiki>*&---------------------------------------------------------------------*
 
  <nowiki>*&---------------------------------------------------------------------*
 
*&      Form  borrar_item
 
*&      Form  borrar_item

Latest revision as of 19:40, 24 June 2026

DELIVERY UPDATE PICKING

BAPI_OUTB_DELIVERY_CHANGE

*&---------------------------------------------------------------------*
*&      Form  borrar_item
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_VBELN    text
*      -->P_POSNR    text
*----------------------------------------------------------------------*
FORM borrar_item_entrega CHANGING e_data TYPE ty_data.
  DATA: ti_item_control TYPE TABLE OF bapiobdlvitemctrlchg WITH HEADER LINE,
        ti_return TYPE TABLE OF bapiret2 WITH HEADER LINE.
  DATA: wa_header_data TYPE bapiobdlvhdrchg,
        wa_header_control TYPE bapiobdlvhdrctrlchg.


  wa_header_data-deliv_numb    = e_data-vbeln.
  wa_header_control-deliv_numb = e_data-vbeln.

*  LOOP AT p_docs INTO wa_docs.
  ti_item_control-deliv_numb = e_data-vbeln.
  ti_item_control-deliv_item = e_data-posnr.
  ti_item_control-del_item = 'X'.
  APPEND ti_item_control.
*  ENDLOOP.

  CALL FUNCTION 'BAPI_OUTB_DELIVERY_CHANGE'
    EXPORTING
      header_data    = wa_header_data
      header_control = wa_header_control
      delivery       = wa_docs-vbeln
    TABLES
      item_control   = ti_item_control
      return         = ti_return
    EXCEPTIONS
      OTHERS         = 1.

  loop at ti_return TRANSPORTING NO FIELDS WHERE type = 'E'.
  ENDLOOP.
  if sy-subrc <> 0.
    e_data-stat = icon_green_light.
    add 1 to g_commit.
    if g_commit = c_commit.
      CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.
      clear g_commit.
    endif.
  else.
    e_data-stat = icon_red_light.
    loop at ti_return where type = 'E'.
      sy-msgty = 'E'.
      PERFORM ADD_MESSAGE
                  USING
                     e_data-VBELN
                    e_data-POSNR
                     ti_return-message.
    ENDLOOP.
  endif.
ENDFORM.                    "borrar_item



*&---------------------------------------------------------------------*
*&      Form  borrar_entrega
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_VBELN    text
*----------------------------------------------------------------------*
FORM borrar_entrega USING p_vbeln TYPE likp-vbeln
                    CHANGING e_data type ty_data.
  DATA: ti_return TYPE TABLE OF bapiret2 WITH HEADER LINE.
  DATA: wa_header_data TYPE bapiobdlvhdrchg,
        wa_header_control TYPE bapiobdlvhdrctrlchg.

  wa_header_data-deliv_numb    = p_vbeln.
  wa_header_control-deliv_numb = p_vbeln.
  wa_header_control-dlv_del    = 'X'.

  CALL FUNCTION 'BAPI_OUTB_DELIVERY_CHANGE'
    EXPORTING
      header_data    = wa_header_data
      header_control = wa_header_control
      delivery       = p_vbeln
    TABLES
      return         = ti_return
    EXCEPTIONS
      OTHERS         = 1.

  loop at ti_return TRANSPORTING NO FIELDS WHERE type = 'E'.
  ENDLOOP.
  IF sy-subrc <> 0.
    e_data-stat = icon_green_light.
    add 1 to g_commit.
    if g_commit = c_commit.
      CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.
      clear g_commit.
    endif.
  else.
    e_data-stat = icon_red_light.
    loop at ti_return where type = 'E'.
      sy-msgty = 'E'.
      PERFORM ADD_MESSAGE
                  USING
                     e_data-VBELN
                     e_data-POSNR
                     ti_return-message.
    ENDLOOP.
  ENDIF.
ENDFORM.                    "borrar_entrega


*&---------------------------------------------------------------------*
*&      Form  f_picking_2
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_LIPS     text
*----------------------------------------------------------------------*
FORM f_picking_2 CHANGING e_data type ty_data.

  types: begin of ty_lips,
 vbeln  type   lips-vbeln,
 posnr  type   lips-posnr,
 vbelv  type   lips-vbelv,
 posnv  type   lips-posnv,
 matnr  type   lips-matnr,
 charg  type   lips-charg,
 lfimg  type   lips-lfimg,
 end of ty_lips.

  data ti_lips type table of ty_lips .

  DATA ti_vbpok TYPE TABLE OF vbpok.
  DATA wa_vbkok TYPE vbkok.
  DATA wa_vbpok LIKE LINE OF ti_vbpok.
  DATA wa_lips TYPE ty_lips.


  select  vbeln
          posnr
          vbelv
          posnv
          matnr
          charg
          lfimg
  into CORRESPONDING FIELDS OF TABLE ti_lips from lips where vbeln = e_data-vbeln
                                                         and posnr = e_data-posnr.

  LOOP AT ti_lips INTO wa_lips.
    wa_vbkok-vbeln_vl = wa_lips-vbeln.
    wa_vbkok-vbeln    =  wa_lips-vbelv.

    wa_vbpok-vbeln_vl  = wa_lips-vbeln.
    wa_vbpok-posnr_vl  = wa_lips-posnr.
    wa_vbpok-vbeln     = wa_lips-vbelv.
    wa_vbpok-posnn     = wa_lips-posnv.
    wa_vbpok-matnr     = wa_lips-matnr.
    wa_vbpok-charg     = wa_lips-charg.
    wa_vbpok-lfimg     = wa_lips-lfimg.
    APPEND wa_vbpok TO ti_vbpok.
  ENDLOOP.

  CALL FUNCTION 'SD_DELIVERY_UPDATE_PICKING'
    EXPORTING
      vbkok_wa                     = wa_vbkok
*    SYNCHRON                     = 'X'
*     NO_MESSAGES_UPDATE           = ' '
     nicht_sperren                = 'X'
     aufrufer_t                   = 'X'
*     IF_ERROR_MESSAGES_SEND       = 'X'
    TABLES
      vbpok_tab                    = ti_vbpok
*     PROT                         =

       EXCEPTIONS
            error_message      = 99
            OTHERS             = 01.

* error occurred.
  IF sy-subrc <> 0.
*    MESSAGE e000(0K) with 'Entrega/posici n'
*                       p_lips-vbeln
*                       p_lips-posnr
*                       'error en picking'.
    e_data-stat = icon_red_light.
    sy-msgty = 'E'.
    PERFORM ADD_MESSAGE
                USING
                   e_data-VBELN
                   e_data-POSNR
                   space.
  ELSE.
    e_data-stat = icon_green_light.
    add 1 to g_commit.
    if g_commit = c_commit.
      CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.
      clear g_commit.
    endif.


  ENDIF.
ENDFORM.                    "f_picking