Modificación parametro clase Importing en BADI

Cuando se implementa una BADI puede ser necesario cambiar los datos de alguna de las tablas, si la tabla corresponde a un parámetro de clase IMPORTING no será posible modificarlo con alguno de los metodos convencionales (ej. MODIFY).

Para poder realizar la modificación a la tabla interna hay que recurrir al uso de FIELD-SYMBOL, esta instrucción nos permite manejar punteros.

Como dije antes F-S es un puntero que tiene como contenido la dirección de un objeto, esto quiere decir, que apunta a un objeto, y esto justamente es lo que se debe hacer, apuntar al objeto (tabla) que carga la tabla (parametro) que queremos modificar.

Para demostrarlo con un ejemplo se ha implementado la BADI WORKER_UPDATE y se ha realizado codigo en el METODO BEFORE_UPDATE para modificar la tabla IT_OPERATION, logicamente es de la clase IMPORTING.

FIELD-SYMBOLS: <fs_tabla> TYPE cobai_t_operation .
FIELD-SYMBOLS: <fs_contrato>  TYPE LINE OF cobai_t_operation.

ASSIGN (‘(SAPLCOBT)AFVG_BT[]‘) TO <fs_tabla>.
Quizas esta sea una de las instrucciones que mas atencion debemos prestar, el parametro ‘(SAPLCOBT)AFVG_BT[]‘ es el objeto al que debe apuntarse el F-S. Si uno realiza un debug podra comprobar que al hacer el llamado a la BADI se estará asignando la tabla AFVG_BT al parametro IT_OPERATION.

Luego ya sera posible modificar la tabla correspondiente.
LOOP AT <fs_tabla> ASSIGNING <fs_contrato>.

<fs_contrato>-fordn = <fs_contrato>-ebeln.
<fs_contrato>-fordp = <fs_contrato>-ebelp.
<fs_contrato>-konnr = ”.
<fs_contrato>-ktpnr = ”.
<fs_contrato>-ebeln = ”.
<fs_contrato>-ebelp = ”.

ENDLOOP.

Advertisement
Esta entrada fue publicada en Sin categoría y etiquetada , , , , , . Guarda el enlace permanente.

Deja un comentario

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

Logo de WordPress.com

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

Twitter picture

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

Facebook photo

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

Connecting to %s