Вы находитесь на странице: 1из 20

"esto siempre tenemos que ponerlo cuando creamos el ALV.

TYPE-POOLS: slis.

TYPES: BEGIN OF st_scarr,

carrid TYPE s_carr_id,

carrname TYPE s_carrname,

currcode TYPE s_currcode,

url TYPE s_carrurl,

END OF st_scarr.

DATA: it_scarr TYPE TABLE OF st_scarr,

"Esto se declara para el ALV

it_fieldcat TYPE slis_t_fieldcat_alv, "Tabla interna Catalogo de ALV

wa_fieldcat TYPE slis_fieldcat_alv, "Wa interna catalogo de ALV

wa_layout TYPE slis_layout_alv. "Wa para layout del ALV

SELECTION-SCREEN BEGIN OF BLOCK b0 WITH FRAME TITLE text-000.

PARAMETERS: p_carrid TYPE s_carr_id.

SELECTION-SCREEN END OF BLOCK b0.

START-OF-SELECTION.

PERFORM obtener_datos.

END-OF-SELECTION.

PERFORM mostrar_alv.

FORM obtener_datos.

"Se obtienen los datos de las aerolineas

"y se almacena en una tabla interna

SELECT carrid carrname currcode url


INTO TABLE it_scarr

FROM scarr

WHERE carrid EQ p_carrid.

ENDFORM. "obtener_datos

*&---------------------------------------------------------------------*

*& Form armar_layout

*&---------------------------------------------------------------------*

* text

*----------------------------------------------------------------------*

FORM armar_layout.

"Se arma el layout del ALV, osea como se veria nuestra salida.

wa_layout-zebra = 'X'. "muestra el grillado del ALV del estilo ZEBRA

wa_layout-expand_all = 'X'. "Se expande todas las columnas

wa_layout-colwidth_optimize = 'X'. "optimiza el ancho de las columnas

ENDFORM. "armar_layout

*&---------------------------------------------------------------------*

*& Form armar_fieldcat

*&---------------------------------------------------------------------*

* text

*----------------------------------------------------------------------*

FORM armar_fieldcat.

REFRESH it_fieldcat.
wa_fieldcat-fieldname = 'CARRID'. "se pone el nombre que se declaro en la estructura

wa_fieldcat-seltext_m = 'ID Aerolinea'. "el texto que va a mostrar la cabecera del ALV

wa_fieldcat-tabname = 'IT_SCARR'. "El nombre de la tabla interna donde estan los datos a
mostrar

wa_fieldcat-col_pos = 1. "posicion de la columna

APPEND wa_fieldcat TO it_fieldcat.

CLEAR wa_fieldcat.

*---> y asi se hace por cada columna que se quiera agregar, despues hay muchas opciones que se
pueden ver

*---> mas adelante, toda la info a mostrar en este tipo de ALV tiene que estar en la misma tabla
interna

wa_fieldcat-fieldname = 'CARRNAME'.

wa_fieldcat-seltext_m = 'Nombre Aerolinea'.

wa_fieldcat-tabname = 'IT_SCARR'.

wa_fieldcat-col_pos = 2.

APPEND wa_fieldcat TO it_fieldcat.

CLEAR wa_fieldcat.

wa_fieldcat-fieldname = 'CURRCODE'.

wa_fieldcat-seltext_m = 'Moneda'.

wa_fieldcat-tabname = 'IT_SCARR'.

wa_fieldcat-col_pos = 3.

APPEND wa_fieldcat TO it_fieldcat.

CLEAR wa_fieldcat.

wa_fieldcat-fieldname = 'URL'.
wa_fieldcat-seltext_m = 'Url Aerolinea'.

wa_fieldcat-tabname = 'IT_SCARR'.

wa_fieldcat-col_pos = 4.

APPEND wa_fieldcat TO it_fieldcat.

CLEAR wa_fieldcat.

ENDFORM. "armar_fieldcat

*&---------------------------------------------------------------------*

*& Form mostrar_alv

*&---------------------------------------------------------------------*

* text

*----------------------------------------------------------------------*

FORM mostrar_alv.

"llamamos a las rutinas donde declaramos la estructura y el estilo del ALV

PERFORM armar_layout.

PERFORM armar_fieldcat.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

* I_INTERFACE_CHECK =''

* I_BYPASSING_BUFFER =''

* I_BUFFER_ACTIVE =''

* I_CALLBACK_PROGRAM =''

* I_CALLBACK_PF_STATUS_SET =''

* I_CALLBACK_USER_COMMAND =''
* I_CALLBACK_TOP_OF_PAGE =''

* I_CALLBACK_HTML_TOP_OF_PAGE =''

* I_CALLBACK_HTML_END_OF_LIST =''

* I_STRUCTURE_NAME =

* I_BACKGROUND_ID =''

* I_GRID_TITLE =

* I_GRID_SETTINGS =

is_layout = wa_layout "descomentamos el layout y ponemos nuestra WA

it_fieldcat = it_fieldcat "descomentamos el fieldcat y ponermos nuestra IT

* IT_EXCLUDING =

* IT_SPECIAL_GROUPS =

* IT_SORT =

* IT_FILTER =

* IS_SEL_HIDE =

* I_DEFAULT = 'X'

* I_SAVE =''

* IS_VARIANT =

* IT_EVENTS =

* IT_EVENT_EXIT =

* IS_PRINT =

* IS_REPREP_ID =

* I_SCREEN_START_COLUMN =0

* I_SCREEN_START_LINE =0

* I_SCREEN_END_COLUMN =0

* I_SCREEN_END_LINE =0

* I_HTML_HEIGHT_TOP =0
* I_HTML_HEIGHT_END =0

* IT_ALV_GRAPHICS =

* IT_HYPERLINK =

* IT_ADD_FIELDCAT =

* IT_EXCEPT_QINFO =

* IR_SALV_FULLSCREEN_ADAPTER =

* IMPORTING

* E_EXIT_CAUSED_BY_CALLER =

* ES_EXIT_CAUSED_BY_USER =

TABLES

t_outtab = it_scarr[] "Ingresamos nuestra tabla interna con los datos

* EXCEPTIONS

* PROGRAM_ERROR =1

* OTHERS =2

IF sy-subrc <> 0.

* Implement suitable error handling here

ENDIF.

ENDFORM. "mostrar_alv

REPORT ZALV.

*DATA
TYPES: BEGIN OF ed,
check(1),
kunnr TYPE kna1-kunnr,
name1 TYPE kna1-name1,
desc TYPE string,
END OF ed.

DATA: itab TYPE TABLE OF ed WITH HEADER LINE,


line LIKE LINE OF itab.

*PARAMETROS DE SELECCION
DATA: cli TYPE kna1-kunnr.
SELECT-OPTIONS: clientes FOR cli.

********** DATA ALV


*************************************************************************
******

*Type Pool donde vienen definidas todas las estructuras y tablas


TYPE-POOLS: slis.

*Estructura de parmetros
DATA: LF_SP_GROUP TYPE SLIS_T_SP_GROUP_ALV,"Manejar grupos de campos
LF_LAYOUT TYPE SLIS_LAYOUT_ALV, "Manejar diseo de layout
IT_TOPHEADER TYPE SLIS_T_LISTHEADER, "Manejar cabecera del rep
WA_TOP LIKE LINE OF IT_TOPHEADER. "Lnea para cabecera

*Tablas. Catlogo de campos


DATA: alv_git_fieldcat TYPE slis_t_fieldcat_alv WITH HEADER LINE.
"manejar catlogo de parmetros

*Seleccion de datos
SELECT kunnr name1
INTO CORRESPONDING FIELDS OF TABLE itab
FROM kna1
WHERE kunnr IN clientes.

*Llamado al ALV

*ALV Report
PERFORM alv_report USING itab[].

*PERFORMS del ALV

FORM alv_report USING pp_itab LIKE itab[].

PERFORM sp_group_build USING lf_sp_group[].


PERFORM alv_ini_fieldcat.
PERFORM layout_build USING lf_layout.
PERFORM alv_listado USING pp_itab[].

ENDFORM. " ALV_REPORT

* FORM SP_GROUP_BUILD para crear los grupos de campos.


FORM SP_GROUP_BUILD USING U_LF_SP_GROUP TYPE SLIS_T_SP_GROUP_ALV.

DATA: LS_SP_GROUP TYPE SLIS_SP_GROUP_ALV.


CLEAR LS_SP_GROUP.
LS_SP_GROUP-SP_GROUP = 'A'.
LS_SP_GROUP-TEXT = TEXT-010.
APPEND LS_SP_GROUP TO U_LF_SP_GROUP.

ENDFORM. " SP_GROUP_BUILD3

*FORM ALV_INI_FIELDCAT para crear el catlogo de campos con sus


propiedades.
FORM ALV_INI_FIELDCAT .
*Check
CLEAR alv_git_fieldcat.
alv_git_fieldcat-fieldname = 'CHECK'.
alv_git_fieldcat-key = 'X'.
alv_git_fieldcat-seltext_m = ' '.
alv_git_fieldcat-seltext_l = ' '.
alv_git_fieldcat-col_pos = 0.
alv_git_fieldcat-sp_group = 'A'.
alv_git_fieldcat-outputlen = '3'.
APPEND alv_git_fieldcat TO alv_git_fieldcat.

*Cliente
CLEAR alv_git_fieldcat.
alv_git_fieldcat-fieldname = 'KUNNR'.
alv_git_fieldcat-key = 'X'.
alv_git_fieldcat-seltext_m = 'Cliente'.
alv_git_fieldcat-seltext_l = 'Cliente'.
alv_git_fieldcat-col_pos = 0.
alv_git_fieldcat-sp_group = 'A'.
alv_git_fieldcat-outputlen = '10'.
APPEND alv_git_fieldcat TO alv_git_fieldcat.

*Nombre
CLEAR alv_git_fieldcat.
alv_git_fieldcat-fieldname = 'NAME1'.
alv_git_fieldcat-seltext_m = 'Nombre'.
alv_git_fieldcat-seltext_l = 'Nombre'.
alv_git_fieldcat-col_pos = 0.
alv_git_fieldcat-sp_group = 'A'.
alv_git_fieldcat-outputlen = '20'.
APPEND alv_git_fieldcat TO alv_git_fieldcat.

*Descripcin
CLEAR alv_git_fieldcat.
alv_git_fieldcat-fieldname = 'DESC'.
alv_git_fieldcat-seltext_m = 'Descripcin'.
alv_git_fieldcat-seltext_l = 'Descripcin'.
alv_git_fieldcat-col_pos = 0.
alv_git_fieldcat-sp_group = 'A'.
alv_git_fieldcat-outputlen = '20'.
APPEND alv_git_fieldcat TO alv_git_fieldcat.

CLEAR alv_git_fieldcat.
alv_git_fieldcat-SP_GROUP = 'A'.
MODIFY alv_git_fieldcat FROM alv_git_fieldcat
TRANSPORTING SP_GROUP WHERE FIELDNAME = 'VBTYP'.

ENDFORM. " ALV_INI_FIELDCAT

* FORM LAYOUT_BUILD para disear el Layout de salida del ALV


FORM LAYOUT_BUILD USING U_LF_LAYOUT TYPE SLIS_LAYOUT_ALV.

U_LF_LAYOUT-BOX_FIELDNAME = 'CHECK'. " Checkbox


U_LF_LAYOUT-ZEBRA = 'X'. " Streifenmuster
U_LF_LAYOUT-GET_SELINFOS = 'X'.
U_LF_LAYOUT-F2CODE = 'BEAN' . " Doppelklickfunktion
U_LF_LAYOUT-CONFIRMATION_PROMPT = 'X'. "Sicherheitsabfrage
U_LF_LAYOUT-KEY_HOTSPOT = 'X'. "Schlssel als Hotspot
U_LF_LAYOUT-INFO_FIELDNAME = 'COL'. "Zeilenfarbe

ENDFORM. " LAYOUT_BUILD

*FORM ALV_LISTADO para invocar al ALV


FORM alv_listado USING ppp_itab LIKE itab[].

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'


EXPORTING
I_BUFFER_ACTIVE = 'X'
I_BACKGROUND_ID = 'ALV_BACKGROUND'
i_callback_top_of_page = 'TOP_OF_PAGE'
I_CALLBACK_PROGRAM = sy-repid
I_CALLBACK_PF_STATUS_SET = 'PF_STATUS'
I_CALLBACK_USER_COMMAND = 'USER_COMMAND'
IS_LAYOUT = LF_LAYOUT
IT_FIELDCAT = alv_git_fieldcat[]
IT_SPECIAL_GROUPS = LF_SP_GROUP
I_SAVE = 'X'
TABLES
T_OUTTAB = ppp_itab.

ENDFORM. " ALV_LISTADO

*EVENTOS

*El FORM TOP_OF_PAGE nos permite configurar la cabecera del reporte


FORM top_of_page.

REFRESH it_topheader.

* Ttulo del reporte


MOVE: 'H' TO wa_top-typ,
'Contratos de Ventas bloqueados por Gestin de Crdito.' TO
wa_top-info.
APPEND wa_top TO it_topheader.

* Clientes
MOVE: 'S' TO wa_top-typ,
clientes-low TO wa_top-info,
'Clientes:' TO wa_top-key.
APPEND wa_top TO it_topheader.

CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'


EXPORTING
it_list_commentary = it_topheader
i_logo = 'ZLOGO_LGT256'.

ENDFORM. "top_of_page

* EL FORM PF_STATUS nos permite asignar el Status GUI que queremos para
el reporte.

FORM pf_status USING rt_extab TYPE slis_t_extab.

SET PF-STATUS 'ZSTANDARD'.


ENDFORM.

* El FORM USER_COMMAND nos permite controlar los eventos dentro del


reporte

FORM USER_COMMAND USING R_UCOMM LIKE SY-UCOMM


RS_SELFIELD TYPE SLIS_SELFIELD.

rs_selfield-refresh = 'X'.
rs_selfield-col_stable = 'X'.
rs_selfield-row_stable = 'X'.

CASE R_UCOMM.
WHEN 'BEAN'.

*** CUANDO EL USUARIO DA CLIC EN UNA COLUMNA DEL REPORTE


READ TABLE itab INDEX RS_SELFIELD-TABINDEX.
itab-desc = 'Accin clic en REPORTE'.
MESSAGE i208(00) WITH 'Accin clic en REPORTE'.
MODIFY itab INDEX RS_SELFIELD-TABINDEX TRANSPORTING desc.

WHEN '&NFO'.

*** CUANDO EL USUARIO DA CLIC EN UN BOTON/PULSADOR CREADO POR NOSOTROS


LOOP AT itab INTO line WHERE check = 'X'.
line-desc = 'Accin clic en PULSADOR'.
MODIFY itab FROM line TRANSPORTING desc.
MESSAGE i208(00) WITH 'Accin clic en PULSADOR'.
ENDLOOP.

ENDCASE.
ENDFORM.
Reportes ALV
Existen funcionalidades avanzadas para el desarrollo de reportes, mucho ms
sencillos de construir que los reportes WRITE, y mucho ms elegantes y prcticos
que estos, ya que permiten cierto dinamismo, como agrupar, totalizar columnas
numricas, aadir y quitar columnas, guardar los cambios realizados, exportar a
Excel y otros formatos, etc.

Cuando se crea un reporte utilizando funciones ALV es necesario:

Incluir en el programa la librera SLIS, que tiene definidas todas las estructuras de
los parmetros de entrada y de salida de esta funcin.

Esta librera se importa con la


instruccin TYPE-SPOOLS: slis.

Definir correctamente el catlogo de campos.


Definir en el programa todas las subrutinas que implementarn el
comportamiento de ste ante la ejecucin de determinados eventos o ante la
interaccin del usuario.
Pasarle los datos que deben ser mostrados en el reporte a la funcin
utilizando tablas internas.

Utilizando las funciones ALV, ninguna sentencia WRITE aparecer en el programa.


Se informa a la correspondiente funcin de los datos que van a ser mostrados, la
definicin y caractersticas de cada uno de stos datos y de la apariencia y todo es
implementado por la funcin. En el momento que llamamos a una de las
funcionesALV para que imprima el reporte, perdemos el control del programa. Esto
es, cualquier evento del programa como NEW-PAGE, TOP-OF-PAGE, END-OF-
PAGE, etc.

Ser controlado e implementado por la funcin, a no ser que le indiquemos a la


funcin qu eventos queremos que sean implementadas en el programa.

Se llamar a la funcin, informndole obligatoriamente los siguientes parmetros:

I_CALLBACK_PROGRAM: Se informa a la funcin con el nombre del programa


que est llamando a dicha
funcin.

IT_FIELDCAT: Este parmetro ser una tabla interna que contiene la


definicin de los campos que aparecern en el listado.
T_OUTTAB: Nombre de la tabla interna que contiene toda la informacin recogida
por el programa y la cual debe ser impresa en el reporte.

Cada tipo de ALV cuenta con diferentes parmetros de entrada opcionales, pero
estos 3 son obligatorios en todos los casos.

Existen 3 tipos principales de reportes ALV, el uso de cada uno depender de lo se


requiera en un momento dado.

1. ALV List: permite simular el trazado de un reporte WRITE, pero con las
funcionalidades y bondades de un ALV.
2. ALV Grid: Permite generar una tabla grfica, totalmente editable desde su
presentacin (aadir y quitar columnas, agrupar y ordenar, totalizar valores, entre
otras).
3. ALV Jerrquico: Es un tipo de reporte que consta de 2 cabeceras, y
permite enlazar la informacin de ambas partes de una manera grficamente
legible.

Cada uno de ellos tiene su propio mdulo de funciones con sus respectivas
estructuras, veremos como se construye cada uno de estos de una manera
sencilla.

ALV LIST:

CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'

EXPORTING

i_callback_program = g_repid
i_structure_name = gc_structure

it_fieldcat = gt_fieldcat_list

i_save = gc_save

is_layout = gs_layout

is_variant = gs_variant

is_print = gs_print

TABLES

t_outtab = gt_output_value

EXCEPTIONS

program_error = 1

OTHERS = 2.

I_CALLBACK_PROGRAM: Recibe el nombre del programa que invoca a la


funcin.

I_STRUCTURE_NAME: Indica la Estructura de Datos del Diccionario que se


tomar como base en la construccin del reporte.

IT_FIELDCAT: Contiene lo que en ALV se conoce como el "Catlogo de Objetos";


esto es, la lista de campos (o columnas) que se van a listar en el reporte.

I_SAVE: En este parmetro se indicar que tipos de "layouts" se podrn "pre


cargar", (deben existir en el sistema); se le puede indicar a la funcin ALV tres
posibles opciones; que muestre aquellos layouts grabados como estndares ('X');
los layouts especficos de usuarios ('U'), o todos
los layouts disponibles ('A').

IS_LAYOUT: Se le puede indicar a la funcin que el diseo del reporte aparezca


con una serie de
ajustes; (con cabecera o sin ella, con colores en las filas o columnas, entre otras).

IS_VARIANT: Este parmetro contendr la variante de visualizacin (layout) que


el usuario haya seleccionado, de la lista de opciones para dicho reporte.
IS_PRINT: Esta tabla interna controla parametrizaciones de impresin, como no
mostrar la cabecera, asignar impresora, saltarse la ventana de dilogo que solicita
la impresora, entre otras.

T_OUTTAB: Esta ser la tabla interna que contendr la informacin que se


requiere desplegar en un reporte ALV.

La siguiente imagen es una muestra de los resultados que obtendremos para este
tipo de ALV.

ALV GRID:
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

i_callback_program = v_repid

i_BACKGROUND_ID = 'ALV_BACKGROUND'

i_callback_top_of_page = l_form_cabecera

i_save = 'A'

it_fieldcat = gt_fieldcat

is_variant = variante

TABLES

t_outtab = p_output.

I_CALLBACK_PROGRAM: Recibe el nombre del programa que invoca a la


funcin.
I_BACKGROUND_ID: Permitir asignarle una imagen de fondo al reporte.

I_CALLBACK_TOP_OF_PAGE: Permite indicarle a la funcin que controlaremos


la cabecera del reporte desde nuestro programa.

I_SAVE: En este parmetro se indicar que tipos de "layouts" se podrn "pre


cargar", (deben existir en el sistema); se le puede indicar a la funcin ALV tres
posibles opciones; que muestre aquellos layouts grabados como estndares ('X');
los layouts especficos de usuarios ('U'), o todos los layouts disponibles ('A').

IT_FIELDCAT: Contiene lo que en ALV se conoce como el "Catlogo de Objetos";


esto es, la lista de campos (o columnas) que se van a listar en el reporte.

IS_VARIANT: Este parmetro contendr la variante de visualizacin (layout) que


el usuario haya seleccionado, de la lista de opciones para dicho reporte.
T_OUTTAB: Esta ser la tabla interna que contendr la informacin que se
requiere desplegar en un reporte ALV.

Veamos que se obtiene con este tipo de ALV.


ALV JERRQUICO:
Este tipo de ALV consiste en anidar dos tablas (una con la estructura de cabecera y
otra con la estructura del detalle), que permite enlazar la informacin de ambas
tablas. Es muy til cuando se quiere un reporte que contenga doble cabecera; la
funcin necesitar recibir la informacin en dos
tablas separadas.
CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'

EXPORTING

i_callback_program = gv_repid

i_callback_pf_status_set = slis_ev_pf_status_set

i_callback_user_command = slis_ev_user_command

is_layout = gs_layout

it_fieldcat = gt_fieldcat

it_sort = gt_sortinfo

i_save = 'A'

is_variant = gs_variant

it_events = gt_event

i_tabname_header = 'IT_HEADER'

i_tabname_item = 'ITAB'

is_keyinfo = gs_keyinfo

is_print = gs_print

TABLES

t_outtab_header = IT_HEADER

t_outtab_item = ITAB
EXCEPTIONS

program_error = 1

OTHERS = 2.

I_CALLBACK_PROGRAM: Recibe el nombre del programa que invoca a la


funcin.

I_CALLBACK_PF_STATUS_SET: Permite indicarle a la funcin cual ser el Status


GUI (barra de pulsadores) que queremos desplegar con el reporte.

I_CALLBACK_USER_COMMAND: Permitir controlar los eventos que puedan


ocurrir en el reporte (pulsar un campo del listado y saltar a otra transaccin,
pulsar un botn aadido en la barra de pulsadores, entre otros).

IS_LAYOUT: Se le puede indicar a la funcin que el diseo del reporte aparezca


con una serie de ajustes; (con cabecera o sin ella, con colores en las filas o
columnas, entre otras).

IT_FIELDCAT: Contiene lo que en ALV se conoce como el "Catlogo de Objetos";


esto es, la lista de campos (o columnas) que se van a listar en el reporte.

IT_SORT: Con esta tabla se le indicar a la funcin cual ser el criterio de


ordenamiento con el cual se desplegar la informacin.

I_SAVE: En este parmetro se indicar que tipos de "layouts" se podrn "pre


cargar", (deben existir en el sistema); se le puede indicar a la funcin ALV tres
posibles opciones; que muestre aquellos layouts grabados como estndares ('X');
los layouts especficos de usuarios ('U'), o todos los layouts disponibles ('A').

IS_VARIANT: Este parmetro contendr la variante de visualizacin (layout) que


el usuario haya seleccionado, de la lista de opciones para dicho reporte.

IT_EVENTS: Se le indicar a la funcin cuales sern los eventos del sistema que
controlar.

I_TABNAME_HEADER: Contendr el nombre de la tabla de cabecera.

I_TABNAME_ITEM: Contendr el nombre de la tabla del detalle de posiciones.

IS_KEYINFO: Esta tabla contendr las conexiones de enlaces entre las dos
tablas, como se puede deducir, ambas tablas debern contener el mismo campo
con el mismo nombre, para poder servir de enlace entre ambas.
IS_PRINT: Esta tabla interna controla parametrizaciones de impresin, como no
mostrar la cabecera, asignar impresora, saltarse la ventana de dilogo que solicita
la impresora, entre otras.

T_OUTTAB_HEADER: Esta ser la tabla interna que contendr la informacin de


cabecera del reporte, ser la primera lnea de desglose en la doble cabecera.

T_OUTTAB_ITEM: Esta tabla contendr los datos a mostrarse, relativos al


detalle, o lo que es lo mismo, la informacin de la segunda tabla, con las
posiciones del reporte.

Veamos qu tipo de reportes logramos obtener con esta funcin.

La tabla T_OUTTAB_HEADER contiene las lneas de color naranja, mientras que la


tabla T_OUTTAB_ITEM contendr el desglose de lneas en fondo blanco, que
corresponden a la cabecera de color azul.

Si observamos en detalle, el desglose es el detalle de la lnea naranja respectiva;


dentro de la jerarqua indicada.

Por eso se les conoce como reportes jerrquicos.

Вам также может понравиться