BTE SAMPLE_PROCESS_00001120 – Substituir valores en doc. contable.

Si necesitamos cambiar valores en el doc. contable podemos usar la BTE 1120.

En la FIBF en Opciones –> Módulos de proceso

Creamos la entrada

image

IMPORTANTE: NO PONER NADA EN EL CAMPO APLICACION, DEJARLO VACIO. SINO NO FUNCIONA

Si queres ver como se crea una BTE desde cero mira esta entrada que tiene el paso a paso.

CREACION BTE  PASO A PASO

Los campos que podemos sustituir son los campos que estén presentes en las estructuras BKPF_SUBST y BSEG_SUBST por lo cual si nuestro campo no está deberemos ampliarlo con un APPEND por ejemplo yo amplié la BSEG_SUBST para poder modificar los montos DMBTR y WRBTR.

image

El código fuente de la función es el siguiente, es a modo ejemplo.

ZSAMPLE_PROCESS_00001120

  DATA: l_cont TYPE i.
  IF sytcode = ‘MIRO’.
    LOOP AT t_bkpfsub.
      MOVE ‘PRUEBA BTE’ TO t_bkpfsubbktxt.
      MODIFY t_bkpfsub.
    ENDLOOP.

    LOOP AT t_bsegsub.
      l_cont = l_cont + 1.
      IF l_cont = 5.
        t_bsegsubdmbtr = t_bsegsubdmbtr 5000.
      ENDIF.
      IF l_cont = 6.
        t_bsegsubdmbtr = t_bsegsubdmbtr + 5000.
      ENDIF.
      MODIFY  t_bsegsub.
    ENDLOOP.
  ENDIF.

Si modificamos los montos DEBEMOS asegurarnos que el doc. cierre (o sea que el saldo sea 0) sinó nos aparecerá el mensaje de dump luego de la ejecución.

La BTE la podemos debuguear tranquilamente poniendo un break en la función creada.

8 thoughts on “BTE SAMPLE_PROCESS_00001120 – Substituir valores en doc. contable.

  1. Buenos días, siguiendo sus indicaciones soy capaz de cambiar el campo bseg-hkont, el problema es con Controlling. Las verificaciones de la tabla COKA son previas a la ejecución de la bte y entonces me dice que el valor que he puesto en hkont no coincide con la comprobación que hace en dicha tabla. Como puedo modificar la cuenta (hkont) previamente para que en las tablas de controlling (cosp, coka) me actualice correctamente. También he intentado añadiendo la sustitución en la contabilidad de costes pero no me hace nada. no cambia la cuenta. Saludos.

  2. Buenos días, excelente post, me ha ayudado a poder modificar la cuenta de contabilización de ingresos en función del material que estoy vendiendo, porque no quiero crear una nueva categoría de valoración. El problema viene con el modulo de costes, cuando cambio la cuenta me dice que no existe la entrada en la tabla COKA para esa cuenta y el ejercicio, y efectivamente no existe es la primera contabilización que hago, pero… ¿cuándo se crea esa entrada? ¿es previo al procesamiento de la bte? ¿algo de luz para solucionar esto? GRacias.

    1. Hola Felipe lo has conseguido de alguna forma para que no te de error de la tabla COKA ???? Estoy con el mismo problema y con BTE no se puede hacer y con una sustitución tampoco da el mismo error de la tabla COKA. La única solución que veo es hacer una sustitución por un lado y luego hacer lo mismo mediante un enhancement en la función que haga el tema de CO para que funcione. Muchas gracias y un saludo.

  3. Hola,
    estoy intentando hacer una bte para que solo se pueda compensar el mismo tipo de documento. Creo que debería hacerlos con ZSAMPLE_PROCESS_00000920
    ¿me podrías ayudar?
    Gracias!

  4. Rodrigo,
    Si quiero agregar posiciones al documento, podría hacerlo a través de esta BTE?
    Lo he intentado, pero no me resulta, a continuación mi código a ver si me puedes colaborar, de antemano gracias,
    ZSAMPLE_PROCESS_00001120:

    DATA: l_idx TYPE sy-tabix.
    DATA: t_bseg2 TYPE TABLE OF bseg WITH HEADER LINE.

    REFRESH: t_bseg2.
    CLEAR: l_idx.

    t_bseg2[] = t_bseg[].
    LOOP AT t_bseg2.
    l_idx = sy-tabix.
    IF t_bseg2-koart = ‘K’ AND t_bseg2-mwskz = ‘C0’.
    COLLECT t_bseg2 .
    ENDIF.
    ENDLOOP.

    LOOP AT t_bseg2 WHERE koart = ‘K’ AND mwskz = ‘C0′.
    l_idx = l_idx + 1.
    t_bsegsub-tabix = l_idx.
    t_bsegsub-zzbschl = ’40’.
    t_bsegsub-zzkoart = ‘S’.
    t_bsegsub-zzhkont = ‘0117100125’.
    t_bsegsub-zzdmbtr = t_bseg2-dmbtr * ‘1.15’.
    t_bsegsub-zzwrbtr = t_bseg2-wrbtr * ‘1.15’.
    t_bsegsub-zzwaers = t_bkpf-waers.
    APPEND t_bsegsub.
    * MODIFY t_bsegsub INDEX l_idx.

    l_idx = l_idx + 1.
    t_bsegsub-tabix = l_idx.
    t_bsegsub-zzbschl = ’40’.
    t_bsegsub-zzkoart = ‘S’.
    t_bsegsub-zzhkont = ‘0216800360’.
    t_bsegsub-zzdmbtr = t_bseg2-dmbtr * ‘1.15’.
    t_bsegsub-zzwrbtr = t_bseg2-wrbtr * ‘1.15’.
    t_bsegsub-zzwaers = t_bkpf-waers.
    APPEND t_bsegsub.
    * MODIFY t_bsegsub INDEX l_idx.
    ENDLOOP.

    1. Inicialmente la idea era agregar las posiciones a la t_bseg, pero como decías que no se podía por eso lo hice en la t_bsegsub.

      LOOP AT t_bseg2 WHERE koart = ‘K’ AND mwskz = ‘C0′.
      l_idx = l_idx + 1.
      t_bseg-buzei = l_idx.
      t_bseg-bschl = ’40’.
      t_bseg-koart = ‘S’.
      t_bseg-hkont = ‘0117100125’.
      t_bseg-dmbtr = t_bseg-dmbtr * ‘1.15’.
      t_bseg-wrbtr = t_bseg-wrbtr * ‘1.15’.
      APPEND t_bseg .
      INSERT into bseg values t_bseg.

      l_idx = l_idx + 1.
      t_bseg-buzei = l_idx.
      t_bseg-bschl = ’50’.
      t_bseg-koart = ‘S’.
      t_bseg-hkont = ‘0216800360’.
      t_bseg-dmbtr = t_bseg-dmbtr * ‘1.15’.
      t_bseg-wrbtr = t_bseg-wrbtr * ‘1.15’.
      APPEND t_bseg.
      INSERT into bseg values t_bseg.
      ENDLOOP.

  5. Le creas una estructura APPEND Z a la estructura BSEG_SUBST.

    Esto es porque en la BTE en la tabla BSEG vas a tener todos los datos de dicha tabla pero no podes modificarlos. Vos podes modificar tan solo la BSEG_SUBST y en dicha tabla van a aparecer disponibles todos los campos que tenga dicha estructura, por lo cual si vos necesitas modificar un dato que no está en la BSEG_SUBST tenes que agregarlo y entonces ya vas a tenerlo disponible en la tabla dentro de la BTE.

    Saludos

  6. hola, solo añades el append a la estructura? no la añades a la tabla?
    o sea solo modificas las estructura BSEG_SUBST?
    no la tabla BSEG_SUBST?

Leave a comment