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[].