Tabstrip – Solapas en reportes

22 08 2012

Una manera de organizar distintos grupos de parámetros de selección es escondiendo y mostrando los parámetros con un radio buton dinámico por ejemplo como se explica en la siguiente entrada.

Radio Buttons dinámicos – ocultar/mostrar grupos de parámetros de selección

Otra forma es dividir la pantalla de selección con TabStrip sin tener que usar Module Pool

image

En el ejemplo de abajo si corremos el reporte en la primer solapa mostrará 20 clientes, si se ejecuta en la segunda solapa mostrará 20 acreedores y si se ejecuta en la tercera mostrará un simple ‘Hola Mundo’.

REPORT  zreport_tab.

*———————————————————————*
*   Declaraciones                                                     *
*———————————————————————*
TABLES: kna1, lfa1.
DATA: ti_kna1 TYPE TABLE OF kna1 WITH HEADER LINE,
ti_lfa1 TYPE TABLE OF lfa1 WITH HEADER LINE,
g_tab(1) VALUE ’1′.

*———————————————————————*
*   selection screen                                                  *
*———————————————————————*
* Primer Tab
SELECTION-SCREEN BEGIN OF SCREEN 101 AS SUBSCREEN.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-t00.
SELECT-OPTIONS so_kunnr FOR kna1-kunnr.
SELECTION-SCREEN END OF BLOCK b1.
SELECTION-SCREEN END OF SCREEN 101.

* Segundo Tab
SELECTION-SCREEN BEGIN OF SCREEN 102 AS SUBSCREEN.
SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE text-t02.
SELECT-OPTIONS so_lifnr FOR lfa1-lifnr.
SELECTION-SCREEN END OF BLOCK b2.
SELECTION-SCREEN END OF SCREEN 102.

* Tercer Tab
SELECTION-SCREEN BEGIN OF SCREEN 103 AS SUBSCREEN.
SELECTION-SCREEN BEGIN OF BLOCK b3 WITH FRAME TITLE text-t03.

SELECTION-SCREEN END OF BLOCK b3.
SELECTION-SCREEN END OF SCREEN 103.

* Pantalla de Tabs
SELECTION-SCREEN BEGIN OF TABBED BLOCK t1 FOR 20 LINES.
SELECTION-SCREEN TAB (10) name1 USER-COMMAND ucomm1 DEFAULT SCREEN 101.
SELECTION-SCREEN TAB (20) name2 USER-COMMAND ucomm2 DEFAULT SCREEN 102.
SELECTION-SCREEN TAB (30) name3 USER-COMMAND ucomm3 DEFAULT SCREEN 103.
SELECTION-SCREEN END OF BLOCK t1.

INITIALIZATION.
* Nombre de los Tabs
name1 = ‘Primer Tab ‘.
name2 = ‘Segundo Tab’.
name3 = ‘Tercer Tab’.

AT SELECTION-SCREEN.
* Control de que tab fue elegido
CHECK sy-ucomm = ‘UCOMM1′
OR sy-ucomm = ‘UCOMM2′
OR sy-ucomm = ‘UCOMM3′.
CASE sy-ucomm.
WHEN ‘UCOMM1′.
g_tab = ’1′.
WHEN ‘UCOMM2′.
g_tab = ’2′.
WHEN ‘UCOMM3′.
g_tab = ’3′.
ENDCASE.

START-OF-SELECTION.
* Al ejecutar el reporte, dependiendo del tab seleccionado
* Correrá una lógica o la otra.
CASE g_tab.
* Primer Tab
WHEN ’1′.
SELECT * UP TO 20 ROWS FROM kna1 INTO TABLE ti_kna1.

CALL FUNCTION ‘REUSE_ALV_GRID_DISPLAY’
EXPORTING
i_callback_program = sy-repid
i_structure_name   = ‘KNA1′
i_grid_title       = ‘Datos de Clientes’
TABLES
t_outtab           = ti_kna1
EXCEPTIONS
program_error      = 1
OTHERS             = 2.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
* Segundo Tab
WHEN ’2′.
SELECT * UP TO 20 ROWS FROM lfa1 INTO TABLE ti_lfa1.

CALL FUNCTION ‘REUSE_ALV_GRID_DISPLAY’
EXPORTING
i_callback_program = sy-repid
i_structure_name   = ‘LFA1′
i_grid_title       = ‘Datos de Acreedores’
TABLES
t_outtab           = ti_lfa1
EXCEPTIONS
program_error      = 1
OTHERS             = 2.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
* Tercer Tab
WHEN ’3′.
WRITE ‘Hola Mundo’.
ENDCASE.


Acciones

Information

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s




A %d blogueros les gusta esto: