FI_ITEMS_MASS_CHANGE modificar el artículo de línea del documento contable

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.

 

Supongo que te gusta

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