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.

Posted in ABAP, BTE. 5 Comments »

5 Responses to “BTE SAMPLE_PROCESS_00001120 – Substituir valores en doc. contable.”

  1. beazdp Says:

    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!

  2. raopnet Says:

    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.

    • raopnet Says:

      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.

  3. Rodrigo Giner de la Vega Says:

    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

  4. zarach Says:

    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 Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: