Tabstrip – Solapas en reportes

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 textt00.
SELECTOPTIONS so_kunnr FOR kna1kunnr.
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 textt02.
SELECTOPTIONS so_lifnr FOR lfa1lifnr.
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 textt03.

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 syucomm = ‘UCOMM1’
   OR syucomm = ‘UCOMM2’
   OR syucomm = ‘UCOMM3’.
  CASE syucomm.
    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 = syrepid
          i_structure_name   = ‘KNA1’
          i_grid_title       = ‘Datos de Clientes’
        TABLES
          t_outtab           = ti_kna1
        EXCEPTIONS
          program_error      = 1
          OTHERS             = 2.
      IF sysubrc <> 0.
        MESSAGE ID symsgid TYPE symsgty NUMBER symsgno
                WITH symsgv1 symsgv2 symsgv3 symsgv4.
      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 = syrepid
          i_structure_name   = ‘LFA1’
          i_grid_title       = ‘Datos de Acreedores’
        TABLES
          t_outtab           = ti_lfa1
        EXCEPTIONS
          program_error      = 1
          OTHERS             = 2.
      IF sysubrc <> 0.
        MESSAGE ID symsgid TYPE symsgty NUMBER symsgno
                WITH symsgv1 symsgv2 symsgv3 symsgv4.
      ENDIF.
* Tercer Tab
    WHEN ‘3’.
      WRITE ‘Hola Mundo’.
  ENDCASE.

One Response to “Tabstrip – Solapas en reportes”

  1. Andri Says:

    Hola,

    En la parte de la declaración de las tablas internas me da un error.

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

    Me dice que los literales que toman mas de una linea no están permitidos. Un error de sintaxis.
    Literals that take up more than one line not permitted.
    No puedo correr el prog.


Leave a Reply

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

WordPress.com Logo

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

Twitter picture

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

Facebook photo

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

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: