Programa de lectura de una tabla por medio de Field-Symbols, Importante a la hora de reducir tiempo de ejecución en un programa, Normalmente usamos WORKAREA para leer tablas internas. Es importante descatar que con FIELD-SYMBOLS se reducen los tiempos en casi un 50%. Imagínate un programa de tres horas reducido a mas de la mitad.
*&---------------------------------------------------------------------*
*& Report Field_symbols
*&---------------------------------------------------------------------*
*&Programa sencillo que carga datos de la EKKO una tabla interna,
*&luego la lee e imprime los datos por pantalla.
*&todo esto usando FIELD_SYMBOLS
*&---------------------------------------------------------------------*
REPORT zfield_symbols.
*DECLARO TABLA INTERNA TIPO EKKO
DATA: it_tab TYPE TABLE OF ekko.
*DECLARO FIELD SYMBOLS PARA OPERAR LA TABLA
*&---------------------------------------------------------------------*
*& <fst> type ANY TABLE, FS PARA LA TABLA (OPTIONAL)
*& <fs2> like LINE OF ti_poheader. FS QUE SUPLANTA AL WA (MEJORA EL RENDIMIENTO)
*&---------------------------------------------------------------------*
FIELD-SYMBOLS: <fst> TYPE ANY TABLE,
<fs2> LIKE LINE OF it_tab.
START-OF-SELECTION.
*ASIGNO LA TABLA AL FS TIPO TABLA
ASSIGN it_tab TO <fst>.
*COMPRUEBO LA ASIGNACION DEL FS Y
*HAGO SELECT A LA TABLA EKKO ASIGNANDO
*EL RESULTADO A EL <FST>
IF <fst> IS ASSIGNED.
SELECT *
FROM ekko
INTO CORRESPONDING FIELDS OF TABLE <fst>.
ENDIF.
IF sy-subrc = 0 AND sy-dbcnt > 0.
*LEO LOS REGISTROS DE LA TABLA Y ASIGNO
*LOS VALORES A <FS2> QUE SUPLANTA A LA
*CONOCIDA WA.
LOOP AT <fst> ASSIGNING <fs2>.
*LISTO LOS REGISTROS EBELN DE LA TABLA EKKO
WRITE:/ <fs2>-ebeln.
ENDLOOP.
ELSE.
MESSAGE text-001 TYPE 'S'.
ENDIF.
END-OF-SELECTION.
*&---------------------------------------------------------------------*
*& Report Field_symbols
*&---------------------------------------------------------------------*
*&Programa sencillo que carga datos de la EKKO una tabla interna,
*&luego la lee e imprime los datos por pantalla.
*&todo esto usando FIELD_SYMBOLS
*&---------------------------------------------------------------------*
REPORT zfield_symbols.
*DECLARO TABLA INTERNA TIPO EKKO
DATA: it_tab TYPE TABLE OF ekko.
*DECLARO FIELD SYMBOLS PARA OPERAR LA TABLA
*&---------------------------------------------------------------------*
*& <fst> type ANY TABLE, FS PARA LA TABLA (OPTIONAL)
*& <fs2> like LINE OF ti_poheader. FS QUE SUPLANTA AL WA (MEJORA EL RENDIMIENTO)
*&---------------------------------------------------------------------*
FIELD-SYMBOLS: <fst> TYPE ANY TABLE,
<fs2> LIKE LINE OF it_tab.
START-OF-SELECTION.
*ASIGNO LA TABLA AL FS TIPO TABLA
ASSIGN it_tab TO <fst>.
*COMPRUEBO LA ASIGNACION DEL FS Y
*HAGO SELECT A LA TABLA EKKO ASIGNANDO
*EL RESULTADO A EL <FST>
IF <fst> IS ASSIGNED.
SELECT *
FROM ekko
INTO CORRESPONDING FIELDS OF TABLE <fst>.
ENDIF.
IF sy-subrc = 0 AND sy-dbcnt > 0.
*LEO LOS REGISTROS DE LA TABLA Y ASIGNO
*LOS VALORES A <FS2> QUE SUPLANTA A LA
*CONOCIDA WA.
LOOP AT <fst> ASSIGNING <fs2>.
*LISTO LOS REGISTROS EBELN DE LA TABLA EKKO
WRITE:/ <fs2>-ebeln.
ENDLOOP.
ELSE.
MESSAGE text-001 TYPE 'S'.
ENDIF.
END-OF-SELECTION.
No hay comentarios:
Publicar un comentario