Nota
FI_ITEMS_MASS_CHANGE es
llamar a la transacción 'FB02' usando bdcdata
modo bdcmode
actualizar 'A'
mensajes en msgtab.
Entonces, si actualiza varias filas de un comprobante en Loop, habrá un problema de bloqueo.
Solución: espere el bloqueo (de lo contrario, debería ser posible el desbloqueo manual)
data lt_seqg3 como tabla de seqg3 con línea de encabezado.
datos lv_garg como lt_seqg3-garg.
lv_garg = sy-mandt && ls_bseg-bukrs && ls_bseg-belnr && ls_bseg-gjahr.
hacer.
llamar a la función 'ENQUEUE_READ'
exportador
guname = sy-uname
mesas
enq = lt_seqg3.
leer la tabla lt_seqg3 con la clave gname = 'BKPF' garg = lv_garg.
si sy-subrc ne 0.
Salida.
terminara si.
enddo.
DEMO (un cupón a la vez, consulte lo anterior para conocer el problema del bloqueo)
función zfi_items_mass_change.
* "------------------------------------------------ ----------------------
* "*" Interfaz local:
* "IMPORTANDO
* "VALOR (BELNR) TIPO BELNR_D
* "VALOR (GJAHR) TIPO GJAHR
* "VALOR (BUKRS) TIPO BUKRS_D
* "VALOR (SGTXT) TIPO SGTXT
* "VALOR (ZFBDT) TIPO DZFBDT OPCIONAL
* "------------------------------------------------ ----------------------
datos: l_bseg tipo bseg.
datos: tabla estándar de tipo lt_buztab de tpit_buztab.
datos: ls_buztab tipo tpit_buztab.
datos: tabla estándar de tipo lt_fldtab de tpit_fname.
datos: ls_fldtab tipo tpit_fname.
datos: lt_bseg tipo tabla estándar de bseg.
datos: ls_bseg tipo bseg.
espere hasta 3 segundos.
actualizar lt_bseg.
Seleccione *
en los campos correspondientes de la tabla lt_bseg
de bseg
donde bukrs = bukrs y belnr = belnr y gjahr = gjahr y rebzg ne '' "El número de referencia de la factura no está vacío, es una línea recién generada para borrar
pedido por bukrs gjahr belnr.
* El valor a establecer
si sgtxt no es inicial.
l_bseg-sgtxt = sgtxt.
terminara si.
si zfbdt no es inicial.
l_bseg-zfbdt = zfbdt.
terminara si.
borrar lt_buztab [].
borrar lt_fldtab [].
bucle en lt_bseg en ls_bseg.
borrar ls_buztab.
move-correspondiente ls_bseg a ls_buztab.
agregue ls_buztab a lt_buztab.
borre ls_fldtab.
si sgtxt no es inicial.
ls_fldtab-fname = 'SGTXT'.
agregue ls_fldtab a lt_fldtab.
terminara si.
borre ls_fldtab.
si zfbdt no es inicial.
ls_fldtab-fname = 'ZFBDT'.
agregue ls_fldtab a lt_fldtab.
terminara si.
endloop.
llamar a la función 'FI_ITEMS_MASS_CHANGE'
exportador
s_bseg = l_bseg
mesas
it_buztab = lt_buztab
it_fldtab = lt_fldtab
excepciones
bdc_errors = 1
otros = 2.
si sy-subrc eq 0.
llamar a la función 'BAPI_TRANSACTION_COMMIT'.
demás.
ID de mensaje sy-msgid tipo 'S' número sy-msgno
con sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4 en datos (lv_msg).
terminara si.
* "Desbloquear documentos contables
* llamar a la función 'DEQUEUE_EFBKPF'
* exportando
* bukrs = i_bukrs
* belnr = i_belnr
* gjahr = i_gjahr.
función final.