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