martes, 28 de enero de 2014

Cómo crear un Smartform con una tabla y un código de barras

Objetivo:
  • Imprimir un Smartform en un Report.
  • La variable CARRID será un parámetro de entrada del Smartform.
  • Se mostrará el código de barras correspondiente al CARRID y toda la información relacionada con la tabla SFLIGHT
Diseño del Smartform:
Diseño del Smartform: Texto, código de barras y tabla
  1. Crear un código de barras en la transacción SE73 (ZBARCODE).
    • Seleccionar System Bar Codes y Change.
    • Crear el nuevo código de barras con Code128 y rotación normal.
    Transacción SE73 para crear un Código de Barras.

    Dar a nuevo y seleccionar las propiedades deseadas.
  2. Crear un estilo de Smartform en la transacción SMARTFORMS.
    • Crear un nodo de Paragraph Format (P0).
      • Márgenes por defecto y centrado
      • Helve 10pt
    • Crear otro nodo de Paragraph Format (P1).
      • Márgenes por defecto y centrado.
      • Helve 22pt y negrita.
    • Asignar a Header Format el formato P0.
    • Añadir un nodo Character Format (BC)
      • Asignar el Código de Barras creado anteriormente en la SE73.
    Crear un nuevo estilo en la transacción SMARTFORMS.

    Añadir un nodo en Paragrapgh Format.

    Indicar las propiedades a P0.

    Asignar el formato P0 a Header Format.

    Añadir un nodo a Character Format para el código de barras.

    Asignar el código de barras creado en la SE73.

  3. Crear el Smartform en la transacción SMARTFORMS.

    • Pulsar Form Painter para ver/ocultar el diseño del formulario.
    • Indicar el estilo creado anteriormente en la pestaña Output Options.
    • Añadir los parámetros necesarios en Form Interface:
      • Parámetro de entrada Carrid en la pestaña Import.
      • Tabla interna it_sflight en la pestaña Tables.
    • Añadir una estructura global SFLIGHT en Global Definitions (necesario para hacer un loop a la tabla it_sflight)
    • Crear las ventanas TITULO y BARCODE situándolas con sus tamaños y posiciones correspondientes.
    • Introducir un texto en las ventanas TITULO y BARCODE referenciando las variables necesarias pulsando Insert Field y las variables entre el símbolo & (ver imágenes). Además seleccionar el estilo en la pestaña Output Options.
    • Introducir una tabla en la ventana MAIN.
      • Crear dos tipos de linea en Table Details (Header y MAIN). Uno es para el encabezado de la tabla, y el otro para el contenido de la tabla. Se indicarán cinco columnas y su ancho.
      • Introducir la tabla interna it_sflight y la estructura st_sflight en la pestaña Data.
      • Seleccionar el estilo creado en la pestaña Output.
Crear el formulario en la transacción SMARTFORMS.

Asignar el estilo creado.

Añadir parámetro import CARRID.

Añadir la tabla it_sflight en la que se almacenará la información de la aerolínea.

Definir una estructura global necesaria para el loop de la tabla.

Crear las ventanas necesarias.

Renombrar las ventanas y posicionarlas correctamente.

Añadir texto a las ventanas TITULO y BARCODE.

Introducir el parámetro CARRID entre & (Escribir &carrid& en la ventana, no directamente en el texto).
Añadir una tabla a la ventana Main.

Añadir dos tipos de linea (HEADER y MAIN) e indicar la separación de las columnas.

Indicar la tabla interna it_sflight y la estrucutra st_sflight en la pestaña Data.

Selección del estilo Output de la tabla.

Añadir a cada celda su elemento de texto correspondiente. El nombre de la columna en HEADER, y el valor de la tabla en MAIN.

Ejemplo de introducir el valor de connid de la tabla en la línea MAIN.
  1. Crear un Report en la transacción SE38:
REPORT  zsmartform_prueba.

TABLES: sflight.

DATA: g_it_sflight TYPE TABLE OF sflight,
      g_st_sflight TYPE sflight.

PARAMETERS: p_carrid TYPE sflight-carrid.

START-OF-SELECTION.

  SELECT * FROM sflight INTO TABLE g_it_sflight WHERE carrid = p_carrid.

  PERFORM imprime_smartform.

*&---------------------------------------------------------------------*
*&      Form  IMPRIME_SMARTFORM
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM imprime_smartform .
  DATA: fm_name TYPE rs38l_fnam,
        l_st_control_parameters TYPE ssfctrlop,
        l_st_output_options TYPE ssfcompop.

  DATA: l_wa_pa_form LIKE ssfscreen-fname .

  l_st_output_options-tdnewid = 'X'.
  l_st_output_options-tdimmed = 'X'.
  l_st_output_options-tddelete = 'X'.
  l_st_control_parameters-no_dialog = ' '.

  CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
    EXPORTING
      formname           = 'ZSMARTFORM'
    IMPORTING
      fm_name            = fm_name
    EXCEPTIONS
      no_form            = 1
      no_function_module = 2
      OTHERS             = 3.

  CALL FUNCTION fm_name
    EXPORTING
      carrid     = p_carrid
    TABLES
      it_sflight = g_it_sflight.

ENDFORM.                    " IMPRIME_SMARTFORM

Introducción del parámetro CARRID.

Visualización del Smartform.

1 comentario :