Agregar entradas a Infoprovider



Borrar registros de una carga es relativamente sencillo y bastante conocido. Sin embargo, en muchas ocasiones se requiere agregar registros a un infoprovider, porque se quiere a partir de los registros que se van cargando generar nuevas entradas, por ejemplo, con una moneda distinta.
Este es el tema que nos ocupa hoy, veremos los puntos a considerar para realizar esta acción.

Esta tarea se realiza en la rutina de inicio de las reglas de actualización.
Lo primero que debemos hacer entonces es ingresar a las reglas de actualización y allí pulsar el botón "Rutina Inicio".


Una vez dentro de la Rutina de Inicio, debemos modificar el código tal como se explica a a continuación:

1.- Definimos una nueva estructura para realizar la carga, en este caso la llamaremos "new_struc".
La línea donde dice: "* DATA: ..." la sustituímos por las siguientes:

DATA: BEGIN OF new_struc OCCURS 0.
INCLUDE STRUCTURE /BIC/CS8ZPC_C01.
DATA: RECNO LIKE sy-tabix.
DATA: END OF new_struc.
DATA: RECNO LIKE sy-tabix.
DATA: TABIX LIKE sy-tabix.

2.- Nos ubicamos en la parte del código donde dice:
*$*$ begin of routine - insert your code only below this line *-*
* fill the internal tables "MONITOR" and/or "MONITOR_RECNO",
* to make monitor entries
Posterior a estas líneas, incluímos lo siguiente:

REFRESH: new_struc.
CLEAR: RECNO, new_struc.
LOOP AT DATA_PACKAGE.
* Las siguientes 4 líneas copian el registro que viene en la carga tal cual, sin modificaciones
    ADD 1 TO RECNO.
    MOVE-CORRESPONDING DATA_PACKAGE TO new_struc.
    new_struc-RECNO = RECNO.
    APPEND new_struc.
* Las siguientes 4 líneas agregan un registro nuevo a la carga
* Crear las siguientes cuatro líneas tantas veces como entradas
* queramos agregar a partir de un mismo registro de carga
    ADD 1 TO RECNO.
* crear la sig. línea tantas veces como valores de infoobjetos queramos modificar
    new_struc-infoobjeto = valor.
    new_struc-RECNO = RECNO.
    APPEND new_struc.
ENDLOOP.

REFRESH DATA_PACKAGE.
DATA_PACKAGE[] = new_struc[].



1 comentario:

Constanza Salgado dijo...

En la versión BI 7.0 existe la posibilidad de realizar esta actividad en dos instancias dentro de las reglas de transformación:
Antes de transformación ( rutina de inicio) y después de transformación ( Rutina Final)