Contabilización de nota de entrega: BAPI_OUTB_DELIVERY_CONFIRM_DEC, WS_DELIVERY_UPDATE

 

WS_DELIVERY_UPDATE 

Puede completar la fecha de publicación, etc.

 

BAPI_OUTB_DELIVERY_CONFIRM_DEC

La fecha de publicación no se puede transferir y el campo debe actualizarse para anularlo. Existen métodos de mejora específicos detrás

 

Tome el comprobante de material publicado

    seleccione max (vbeln)

             en @data (lv_vbeln)

             de vbfa

             donde vbelv = @uv_vbeln

               y vbtyp_n = 'R'

               y rfmng> 0.

 

DEMO1

formulario frm_dn_post usando uv_vbeln.

  datos:

       ls_vbkok_wa tipo vbkok.

 

  datos:

    lv_er_any type c,

    lv_er_itm tipo c,

    lv_er_upd tipo c,

    lv_er_inf tipo c,

    lv_er_gss tipo c,

    lv_er_fch tipo c,

    lv_er_par tipo c,

    lv_er_ser tipo c,

    ls_return como bapireturn1.

  datos:

    lv_wadat_ist como likp-wadat_ist, "fecha de publicación

    lt_prot como tabla de prott con línea de encabezado,

    lt_vbpok_tab como tabla de vbpok con línea de encabezado,

    lv_msg (255).

 

**una examinacion

* seleccione lcnum único

* en @data (lv_lcnum)

* de likp

* donde vbeln = @uv_vbeln.

* si lv_lcnum es inicial.

* gt_out2-message = 'El número de documento financiero del albarán de entrega no puede estar vacío'.

* gt_out2-rtype = 'E'.

* demás.

* seleccionar sencillo *

* en @data (ls_akkp)

* de akkp

* donde lcnum = @lv_lcnum y aidat <= @ gt_out2-wadat_istc y axdat> = @ gt_out2-wadat_istc.

* si sy-subrc ne 0.

* gt_out2-message = 'La fecha de publicación no está dentro del período de validez del crédito'.

* gt_out2-rtype = 'E'.

* terminara si.

* terminara si.

 

  si gt_out2-rtype = 'E' o uv_vbeln es inicial.

    regreso.

  terminara si.

 

  borrar ls_vbkok_wa.

  ls_vbkok_wa-vbeln_vl = uv_vbeln.

  ls_vbkok_wa-wadat_ist = gt_out2-wadat_ist.

  ls_vbkok_wa-wabuc = 'X'.

 

  llamar a la función 'WS_DELIVERY_UPDATE' "Iniciar publicación

    exportador

      vbkok_wa = ls_vbkok_wa

      sincron = 'X'

      update_picking = 'X'

      cometer = 'X'

      delivery = uv_vbeln

      not_lock = 'X'

      if_error_messages_send_0 = 'X'

    importador

      ef_error_any_0 = lv_er_any

      ef_error_in_item_deletion_0 = lv_er_itm

      ef_error_in_pod_update_0 = lv_er_upd

      ef_error_in_interface_0 = lv_er_inf

      ef_error_in_goods_issue_0 = lv_er_gss

      ef_error_in_final_check_0 = lv_er_fch

      ef_error_partner_update = lv_er_par

      ef_error_sernr_update = lv_er_ser

    mesas

      prot = lt_prot

    excepciones

      error_message = 1

      otros = 2.

 

  si lt_prot [] no es inicial o lv_er_any = 'X' "过 账 失败

                           o lv_er_itm = 'X'

                           o lv_er_upd = 'X'

                           o lv_er_inf = 'X'

                           o lv_er_gss = 'X'

                           o lv_er_fch = 'X'

                           o sy-subrc ne 0.

 

    llamar a la función 'BAPI_TRANSACTION_ROLLBACK'.

 

    gt_out2-rtype = 'E'.

    gt_out2-message = gt_out2-message && 'Error al publicar DN:' && lv_msg.

    bucle en lt_prot donde msgty eq 'E' o msgty eq 'A'.

      ID de mensaje lt_prot-msgid tipo lt_prot-msgty número lt_prot-msgno

            con lt_prot-msgv1 lt_prot-msgv2 lt_prot-msgv3 lt_prot-msgv4

            en lv_msg.

      gt_out2-message = gt_out2-message && ',' && lv_msg.

      desplazar gt_out2-message a la izquierda 1 lugar.

    endloop.

 

  demás.

    llamar a la función 'BAPI_TRANSACTION_COMMIT'

      exportador

        esperar = 'X'.

    gt_out2-rtype = 'S'.

* importar cv_mblnr desde la identificación de memoria 'BORGR_MATDOC'.

  terminara si.

 

 

 

endform.

 

DEMO2

FUNCIÓN ZMM004_POST_DN.

* "------------------------------------------------ ----------------------

* "*" Interfaz local:

* "IMPORTANDO

* "REFERENCIA (I_VBELN) TIPO LIKP-VBELN

* "EXPORTANDO

* "REFERENCIA (E_VBELN) TIPO VBFA-VBELN

*" MESAS

* "LT_RETURN ESTRUCTURA BAPIRET2

* "------------------------------------------------ ----------------------

 

* Declaraciones de datos globales

 

DATOS:

LS_HEADER_DATA COMO BAPIOBDLVHDRCON,

LS_HEADER_CONTROL COMO BAPIOBDLVHDRCTRLCON.

DATA LT_ITEM COMO TABLA DE BAPIOBDLVITEMCON CON LÍNEA DE ENCABEZADO. "Artículo de pedido de entrega

 

LS_HEADER_DATA-DELIV_NUMB = I_VBELN. "Número de nota de entrega

 

LS_HEADER_CONTROL-DELIV_NUMB = I_VBELN. "Número de nota de entrega

LS_HEADER_CONTROL-POST_GI_FLG = 'X'. "Contabilizar automáticamente el movimiento de mercancías

LS_HEADER_CONTROL-VOLUME_FLG = 'X'. "Confirmación de volumen

LS_HEADER_CONTROL-DELIV_DATE_FLG = 'X'. "Confirmar fecha de entrega

 

FUNCIÓN DE LLAMADA 'BAPI_OUTB_DELIVERY_CONFIRM_DEC'

EXPORTADOR

HEADER_DATA = LS_HEADER_DATA

HEADER_CONTROL = LS_HEADER_CONTROL

ENTREGA = I_VBELN

MESAS

RETORNO = LT_RETURN.

 

LEA LA TABLA LT_RETURN CON TIPO DE CLAVE = 'E'.

SI SY-SUBRC = 0.

LLAME A LA FUNCIÓN 'BAPI_TRANSACTION_ROLLBACK'.

DEMÁS.

FUNCIÓN DE LLAMADA 'BAPI_TRANSACTION_COMMIT'

EXPORTADOR

ESPERAR = 'X'.

 

* La reversión necesita actualizar la tabla estándar

ACTUALIZAR LIKP SET VLSTK = '' ANZPK = '0' DONDE VBELN = I_VBELN.

COMPROMETE EL TRABAJO Y ESPERE.

 

* Devolver el bono de material

SELECCIONE UN SOLO VBELN

EN E_VBELN

DE VBFA

DONDE VBELV = I_VBELN Y VBTYP_N = 'R' Y BWART NE '' Y RFMNG NE 0 "R Movimiento de mercancías (contabilización del comprobante de material)

Y NO EXISTE

( SELECCIONE *

FROM M_MBMPS "La vista tiene más condiciones que MSEG

DONDE SMBLN = VBFA ~ VBELN O MBLNR = VBFA ~ VBELN). "Sin desplazamiento y desplazamiento

 

TERMINARA SI.

 

FINFUNCIÓN.

 

Nota:

Otra forma de solucionar la reversión del albarán publicado por bapi

 

 

 

Supongo que te gusta

Origin blog.csdn.net/cylcylcylcylwo/article/details/114014928
Recomendado
Clasificación