Foro -Documentación -Código fuente -Contacto -Empleo

Buscar

Traducir

Amazon

ZIALV PDF Imprimir E-mail
Usar puntuación: / 0
MaloBueno 
Código fuente - Includes
Miércoles, 18 de Mayo de 2005 06:39
Tipos, variables, constantes y forms para trabajo con ALVs
                                                                                                                                                                                                                                                               
************************************************************************
*
*  INCLUDE ZIALV
*
*  DESCRIPCIÓN: Tipos, variables, constantes y forms para trabajo
*  con ALV's
*
*  INSTRUCCIONES: Sera obligatorio para un correcto funcionamiento de la
*  libreria añadir al codigo del report un form llamado USER_COMMAND
*  creado con la estructura del existente comentado al final de este
*  include.
*
*  Además será obligatorio tambien añadir al codigo del report un form
*  llamado LAYOUT creado con la estructura del existente comentado al
*  final de este include.
*
*  Si se cumple todo esto, simplemente habra que llamar al form
*  ALV_MOSTRAR_INFORME pasandole como parametros la tabla a mostrar y el
*  nombre de la estructura de dicha tabla, estructura que debera ser del
*  diccionario de datos, no definida en el codigo del listado, ademas se
*  le pasará una constante que podrá tener dos valores.
*                    - C_TIPO_ALV   <-  Si queremos modo grid
*                    - C_TIPO_LIST  <-  Si queremos modo listado
*
*  Si se prefiere podrá crearse el catalogo de campos manualmente
*  rellenando la estructura GT_FIELDCAT aunque es la opción menos
*  recomendada, en este caso el parametro P_STRUCT de
*  ALV_MOSTRAR_INFORME se pasará en blanco.
*
*  Permite añadir lineas a la cabecera mediante el uso del form
*  ALV_RELLENAR_CABECERA pasandole los textos y los tres modos de
*  texto en la cabecera, a saber: (SOLO FUNCIONA EN MODO GRID)
*                    - C_TIPO_GRANDE
*                    - C_TIPO_MEDIANO
*                    - C_TIPO_PEQUEÑO
*
*  Ademas es posible mostrar un logo por pantalla, para ello es
*  necesario usar el form ALV_ASIGNAR_LOGO pasandole el nombre del
*  logo que previamente se habrá creado siguiendo lo siguientes pasos:
*  (SOLO FUNCIONA EN MODO GRID)
*  PASOS PARA SUBIR LOGO:
*
*      1. Ir a la transcción OAER
*
*      2. En el nombre de clase, pon 'PICTURES'
*
*      3. El tipo de clase es 'OT'
*
*      4. En el "object key" introduce el nombre que le quieres dar al
*         logo.
*
*      5. Ejecuta
*
*      6. En la siguiente pantalla seleciona documento standard. Pincha
*         sobre el incono de pantalla y entonces te preguntará por el
*         nombre del fichero que vas a subir.
*
* La librería tambien permite añadir rutinas a los distintos eventos que
* el programador desee asignandole al nombre del evento el nombre de una
* form mediante la funcion ALV_EVENTS.
*
*  EJEMPLO DE USO:
*
*  END-OF-SELECTION.
*
**  Preparamos los eventos:
*  PERFORM alv_events.
*
** Excluimos codigos para status
*   PERFORM alv_excluir_codigo USING 'CODE'.
** Con esta linea activaremos nuestro status personal, caso de no
** reellenar esta linea o rellenarla con el status en blanco mostraria
** el status standar
*  PERFORM alv_aniadir_status USING 'STANDARD_FULLSCREEN'.*
** Se pueden insertar tantas lineas como se deseen en el encabezado.
*  PERFORM alv_rellenar_cabecera USING 'TITULO 1'
*                                      'TITULO 2'
*                                      c_tipo_grande.
*
** Asignamos codigo a los eventos que queramos ejecutar (TOP-OF-PAGE)
*  PERFORM alv_rellenar_eventos
*              USING
*                 'USER_COMMAND'   <-Nombre evento
*                 'USER_COMMAND'.  <-Nombre form para evento
*  PERFORM alv_rellenar_eventos
*              USING
*                 'TOP-OF-PAGE'
*                 c_form_cabecera.
*  PERFORM alv_asignar_logo
*              USING
*                 'ZLOGOSUBIDO'.
*
** Mostramos el listado
*  PERFORM alv_mostrar_informe TABLES i_listado
*                               USING 'ZSTR_LISTADO'
*                                     c_tipo_alv.
*
*  AUTOR: Ignacio Arnaiz Piorno                       FECHA: 06-03-2005
*  CONTACTO: 
 Esta dirección electrónica esta protegida contra spam bots. Necesita activar JavaScript para visualizarla
 
*
* ----------------------------------------------------------------------
* CONTROL DE MODIFICACIONES
*   AUTOR         EMPRESA     FECHA       MOTIVO
* ..........      .......   DD/MM/AA  ................................
* ..........      .......   DD/MM/AA  ................................
*-----------------------------------------------------------------------
************************************************************************

************************************************************************
* Definición de tipos
************************************************************************
TYPE-POOLS: slis.
************************************************************************
* Definición de tablas del sistema
************************************************************************

************************************************************************
* Definición de constantes
************************************************************************
CONSTANTS:
           c_click LIKE sy-ucomm VALUE '&IC1', " Codigo del doble click
           c_struct(50)    TYPE c VALUE '',
           c_pf_status_set    TYPE slis_formname VALUE 'ALV_SET_STATUS',
           c_user_command     TYPE slis_formname VALUE 'USER_COMMAND',
           c_layout           TYPE slis_formname VALUE 'LAYOUT',
           c_a(1)             TYPE c               VALUE 'A',
           c_xselp(5)         TYPE c VALUE 'XSELP',
           c_marked           TYPE c VALUE 'X',
           c_form_cabecera    TYPE slis_formname VALUE 'ALV_CABECERA',
           c_tipo_grande TYPE c VALUE 'H',
           c_tipo_mediano TYPE c VALUE 'S',
           c_tipo_pequeno TYPE c VALUE 'A',
           c_tipo_alv TYPE c VALUE '1',
           c_tipo_list TYPE c VALUE '2'.

************************************************************************
* Definición de variables
************************************************************************

************************************************************************
* Definición de estructuras
************************************************************************
DATA: x_structure LIKE dd02l-tabname.  "SAP Table
DATA: x_header LIKE dd02l-tabname.     "SAP Table
DATA: x_item LIKE dd02l-tabname.       "SAP Table
DATA: gt_layout    TYPE slis_layout_alv.
DATA: gt_variant   LIKE disvariant.
DATA: gt_list_top_of_page TYPE slis_t_listheader.
DATA: gt_fieldcat TYPE slis_t_fieldcat_alv.
DATA: gt_fieldcat_hd LIKE LINE OF gt_fieldcat.
DATA: gt_events TYPE slis_t_event  .
DATA: gt_okcodes_a_excluir TYPE slis_extab OCCURS 0 WITH HEADER LINE.
DATA: d_logo(1000) TYPE c.
DATA: d_status LIKE c_pf_status_set.
* Relacion entre los datos de cabecera y posicion
DATA: gt_key TYPE slis_keyinfo_alv.

DATA d_alv_status LIKE c_pf_status_set.

************************************************************************
* Definición de tablas internas
************************************************************************

************************************************************************
* Definición de parámetros
************************************************************************

************************************************************************
* Definición de rango de selección
************************************************************************

************************************************************************
* Definición de la pantalla de selección
************************************************************************

************************************************************************
* Definición de FIELD-SYMBOLS
************************************************************************

************************************************************************
*
*                  FORMS ADICIONALES
*
************************************************************************
*---------------------------------------------------------------------*
*       FORM alv_excluir_codigo                                       *
*---------------------------------------------------------------------*
*      Una vez que se lance el ALV con un STATUS cualquiera definido
*	por el usuario (o bien el standar) el codigo P_CODIGO será
*	omitido, y por tanto no se dibujará el botón asociado a él.
*---------------------------------------------------------------------*
FORM alv_excluir_codigo USING p_codigo.

  DATA lt_okcodes_a_excluir TYPE slis_extab.

  lt_okcodes_a_excluir-fcode = p_codigo.
  APPEND lt_okcodes_a_excluir TO gt_okcodes_a_excluir.

  SORT gt_okcodes_a_excluir.
  DELETE ADJACENT DUPLICATES FROM gt_okcodes_a_excluir.

ENDFORM.

*&---------------------------------------------------------------------*
*&      Form  alv_mostrar_informe
*&---------------------------------------------------------------------*
*      Se utilizará en el programa una vez que se haya rellenado todo
*	lo necesario para lanzar el listado de la tabla P_OUTPUT.
* 	P_TIPO será igual a C_TIPO_ALV si se quiere lanzar el ALV en
*      modo GRID en caso de preferirlo en modo lista se pasará este
*      parametro igual a C_TIPO_LIST.
*	P_STRUCT será el nombre de una estructura del diccionario de
*	la que tomar la estructura de salida del listado. En caso de
*	pasarlo en blanco habrá que haber creado con anterioridad un
*	catalogo de campos bien con el perform ALV_CATALOGO o bien
*	añadiendo directamente los campos al catalogo gt_fieldcat[].
*----------------------------------------------------------------------*
FORM alv_mostrar_informe TABLES p_output
                     USING p_struct
                           p_tipo.

  DATA l_struct LIKE c_struct.

  l_struct = p_struct.

* Damos forma al informe
  PERFORM (c_layout) IN PROGRAM (sy-cprog).

  PERFORM alv_show_report TABLES p_output
                           USING l_struct
                                 p_tipo.

ENDFORM.                    " alv_mostrar_informe
*

*&--------------------------------------------------------------------*
*&      Form  alv_mostrar_informe_jerarquico
*&--------------------------------------------------------------------*
*       REDEFINIR CUANDO SE USE
*---------------------------------------------------------------------*
FORM alv_mostrar_informe_jerarquico TABLES i_header
                                       i_item
                                 USING p_header
                                       p_item1
                                       p_key1
                                       p_key2
                                       p_key3
                                       p_key4
                                       p_key5.

** Define local data
*  DATA: v_repid LIKE sy-repid.
*  v_repid = sy-repid.
*  x_header = p_header.
*  x_item = p_item.
*
** Damos forma al informe
**  PERFORM (c_layout) IN PROGRAM (sy-cprog).
*
** Relacion entre los campos de cabecera y los de posicion
*  gt_key-header01 = p_key1.
*  gt_key-item01 = p_key1.
*  gt_key-header02 = p_key2.
*  gt_key-item02 = p_key2.
*  gt_key-header03 = p_key3.
*  gt_key-item03 = p_key3.
*  gt_key-header04 = p_key4.
*  gt_key-item04 = p_key4.
*  gt_key-header05 = p_key5.
*  gt_key-item05 = p_key5.
*
*  CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
*    EXPORTING
**  I_INTERFACE_CHECK =
*      i_callback_program             = v_repid
**      i_callback_pf_status_set       = d_status
**      i_callback_user_command        = c_user_command
*      is_layout                      = gt_layout
**      it_fieldcat                    = gt_fieldcat[]
*      it_excluding                   = gt_okcodes_a_excluir[]
** IT_SPECIAL_GROUPS =
** IT_SORT =
** IT_FILTER =
** IS_SEL_HIDE =
** I_SCREEN_START_COLUMN = 0
** I_SCREEN_START_LINE = 0
** I_SCREEN_END_COLUMN = 0
** I_SCREEN_END_LINE = 0
** I_DEFAULT = 'X'
*      i_save = c_a
** IS_VARIANT =
*      it_events = gt_events
** IT_EVENT_EXIT =
*      i_tabname_header               = 'I_CAB'
*      i_tabname_item                 = 'I_POS'
*      i_structure_name_header        = x_header
*      i_structure_name_item          = x_item
*      is_keyinfo                     = gt_key
** IS_PRINT =
** IS_REPREP_ID =
** I_BUFFER_ACTIVE =
** I_BYPASSING_BUFFER =
** IMPORTING
** E_EXIT_CAUSED_BY_CALLER =
** ES_EXIT_CAUSED_BY_USER =
*    TABLES
*      t_outtab_header                = i_header
*      t_outtab_item                  = i_item
*    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.
ENDFORM.                    " alv_mostrar_informe_jerarquico

*&---------------------------------------------------------------------*
*&      Form  alv_catalogo
*&---------------------------------------------------------------------*
*       Inicializa el catalogo de campos gt_fieldcat[] añadiendole
*	todos los campos de la estructura del diccionario P_ESTRUCTURA
*----------------------------------------------------------------------*
*      -->P_C_ESTRUCTURA_LISTADO  text
*----------------------------------------------------------------------*
FORM alv_catalogo USING    p_estructura.

  REFRESH gt_fieldcat.

  DATA l_estructura LIKE  dd02l-tabname.

  l_estructura = p_estructura.

  CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
       EXPORTING
            i_structure_name       = l_estructura
            i_client_never_display = 'X'
       CHANGING
            ct_fieldcat            = gt_fieldcat[].

  LOOP AT gt_fieldcat INTO gt_fieldcat_hd
    WHERE seltext_l IS initial
      AND seltext_m IS initial
      AND seltext_s IS initial.

    SELECT SINGLE ddtext
             INTO gt_fieldcat_hd-seltext_l
             FROM dd03t
            WHERE tabname = l_estructura
              AND ddlanguage = sy-langu
              AND fieldname = gt_fieldcat_hd-fieldname.

    gt_fieldcat_hd-seltext_m = gt_fieldcat_hd-seltext_l.
    gt_fieldcat_hd-seltext_s = gt_fieldcat_hd-seltext_l.

    MODIFY gt_fieldcat FROM gt_fieldcat_hd.
  ENDLOOP.

ENDFORM.                    " alv_catalogo

*&---------------------------------------------------------------------*
*&      Form  alv_set_status
*&---------------------------------------------------------------------*
*       Inicializa el status
*----------------------------------------------------------------------*
*      -->P_C_ESTRUCTURA_LISTADO  text
*----------------------------------------------------------------------*
FORM alv_set_status USING    p_estructura.

  SET PF-STATUS d_alv_status EXCLUDING gt_okcodes_a_excluir.

ENDFORM.                    " alv_set_status

*&---------------------------------------------------------------------*
*&      Form  alv_show_report
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM alv_show_report TABLES p_output
                 USING p_struct LIKE c_struct
                       p_tipo.

* Define local data
  DATA: v_repid LIKE sy-repid.
  DATA l_form_cabecera LIKE c_form_cabecera.
  v_repid = sy-repid.
  x_structure = p_struct.

* Check that our selection retrieves any result
  IF p_output[] IS INITIAL.
    MESSAGE i038(001) WITH 'No se mostrara la tabla porque esta vacia'.
  ELSE.

    IF NOT p_struct IS INITIAL.
      PERFORM alv_catalogo USING p_struct.
    ENDIF.

    IF NOT gt_layout-box_fieldname IS INITIAL.
      DELETE gt_fieldcat WHERE fieldname = gt_layout-box_fieldname.
    ENDIF.

    IF NOT d_alv_status IS INITIAL
   AND NOT gt_events[] IS INITIAL.
      PERFORM alv_rellenar_eventos
                  USING
                     'PF_STATUS_SET'
                     c_pf_status_set.
    ENDIF.

    IF gt_list_top_of_page[] IS INITIAL.
      CLEAR l_form_cabecera.
    ELSE.
      l_form_cabecera = c_form_cabecera.
    ENDIF.

    CASE p_tipo.
      WHEN c_tipo_alv.
* Visualice the list with  a standard function
        CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
             EXPORTING
                  i_callback_program       = v_repid
*              i_callback_pf_status_set = d_alv_status
*              i_callback_user_command  = c_user_command
               i_callback_top_of_page   = l_form_cabecera
*              i_structure_name         = x_structure
                  is_layout                = gt_layout
                  i_save                   = c_a
                  it_events                = gt_events
                  it_fieldcat              = gt_fieldcat
             TABLES
                  t_outtab                 = p_output.
      WHEN c_tipo_list.
* Visualice the list with  a standard function
        CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
             EXPORTING
                  i_callback_program       = v_repid
*              i_callback_pf_status_set = d_alv_status
*              i_callback_user_command  = c_user_command
*               i_callback_top_of_page   = l_form_cabecera
*              i_structure_name         = x_structure
                  is_layout                = gt_layout
                  i_save                   = c_a
                  it_events                = gt_events
                  it_fieldcat              = gt_fieldcat
             TABLES
                  t_outtab                 = p_output.
    ENDCASE.

  ENDIF.
ENDFORM.                    " alv_show_report


*---------------------------------------------------------------------*
*       FORM ALV_ANIADIR_STATUS                                        *
*---------------------------------------------------------------------*
*       ........                                                      *
*---------------------------------------------------------------------*
*  -->  P_STATUS                                                      *
*---------------------------------------------------------------------*
FORM alv_aniadir_status USING p_status.

  d_alv_status = p_status.

ENDFORM.

*&---------------------------------------------------------------------*
*&      Form  alv_cabecera
*&---------------------------------------------------------------------*
*       MUESTRA LA CABECERA
*----------------------------------------------------------------------*
FORM alv_cabecera.
  IF NOT gt_list_top_of_page IS INITIAL
  OR NOT d_logo IS INITIAL.
    CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
         EXPORTING
              it_list_commentary = gt_list_top_of_page
              i_logo             = d_logo
              i_end_of_list_grid = ''.
  ENDIF.
ENDFORM.                    " alv_cabecera

*&---------------------------------------------------------------------*
*&      Form  alv_rellenar_eventos
*&---------------------------------------------------------------------*
*       ASIGNA UN FORM A UN EVENTO A EJECUTAR
*----------------------------------------------------------------------*
*  -->  NOMBRE DEL EVENTO
*  -->  NOMBRE DEL FORM PARA DICHO EVENTO
*----------------------------------------------------------------------*
FORM alv_rellenar_eventos USING p_nombre_evento
                            p_form_para_evento.

  DATA: ls_event TYPE slis_alv_event.

* Rutina que controlará el status GUI
  READ TABLE gt_events WITH KEY name = p_nombre_evento
                       INTO ls_event.
  IF sy-subrc = 0.
    MOVE p_form_para_evento TO ls_event-form.
    MODIFY gt_events FROM ls_event TRANSPORTING form
                                   WHERE name = p_nombre_evento.
  ELSE.
    MESSAGE e000(01) WITH 'Error en el form alv_rellenar_eventos.'
                                'No existe el evento'
                                p_nombre_evento
                                '.'.
  ENDIF.

ENDFORM.                    " rellenar_eventos

*&---------------------------------------------------------------------*
*&      Form  ALV_RELLENAR_CABECERA
*&---------------------------------------------------------------------*
*       Rellena una linea de la cabecera
*----------------------------------------------------------------------*
*      -->P_GT_LIST_TOP_OF_PAGE  text
*----------------------------------------------------------------------*
FORM alv_rellenar_cabecera USING p_texto_negrita
                             p_texto_normal
                             p_tipo.

  DATA: ls_line TYPE slis_listheader.

  CLEAR:ls_line.

  ls_line-key = p_texto_negrita.
  ls_line-typ = p_tipo.
  ls_line-info = p_texto_normal.

  APPEND ls_line TO gt_list_top_of_page.

ENDFORM.                    " ALV_RELLENAR_CABECERA


*---------------------------------------------------------------------*
*       FORM alv_asignar_logo                                         *
*---------------------------------------------------------------------*
*       Rellena el logo que queremos que se muestre por pantalla      *
*---------------------------------------------------------------------*
*  -->  P_LOGO   Logo a cargar                                        *
*---------------------------------------------------------------------*
FORM alv_asignar_logo USING p_logo.

  d_logo = p_logo.

ENDFORM.                    " alv_asignar_logo

*&---------------------------------------------------------------------*
*&      Form  alv_events
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM alv_events.

  DATA: le_event TYPE slis_alv_event.
  REFRESH gt_events.
  CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
       EXPORTING
            i_list_type = 0
       IMPORTING
            et_events   = gt_events.

ENDFORM.                    " alv_alv_events

**&---------------------------------------------------------------------
**
**&      Form  layout
**&---------------------------------------------------------------------
**
**       ESTE FORM DEBE SER CREADO EN EL CODIGO DEL LISTADO CON UNA
**       ESTRUCTURA PARECIDA A ESTA:
**----------------------------------------------------------------------
**
**  -->  p1        text
**  <--  p2        text
**----------------------------------------------------------------------
**
*FORM layout.
*  CLEAR gt_layout.

*  gt_layout-no_colhead = c_marked.  " Sin cabecera de columnas
*  gt_layout-no_hotspot = c_marked   " Las cabeceras no son
*                                 .  " seleccionables
*  gt_layout-zebra      = c_marked.  " Dibuja cada linea de un color
*  gt_layout-no_vline   = c_marked.  " Las columnas mediante un espacio
*  gt_layout-cell_merge = c_marked.  " No suprimir la réplica del campo
*  gt_layout-edit       = c_marked.  " Editable (solo modo grid)
*  gt_layout-edit_mode  = '¿?'.  	  " Modo de edición (solo modo grid)
*  gt_layout-numc_sum   = c_marked   " Permitir totalización en
*                                 .  " campos NUMC
*  gt_layout-no_input   = c_marked.  " No permitir entrada
*  gt_layout-f2code     = '¿?'.      " ¿?
*  gt_layout-reprep     = c_marked.  " report report interface active
*  gt_layout-no_keyfix  = c_marked.  " No rellenar columnas clave
*  gt_layout-expand_all = c_marked.  " Expandir todas las posiciones
*  gt_layout-no_author  = c_marked.  " No standard authority check
*  gt_layout-def_status = '20 char'. " Texto para el boton ITEM
** Opciones de visualización
*  gt_layout-colwidth_optimize = c_marked. " Optimizar ancho-columna
*  gt_layout-no_min_linesize  = c_marked.  " linesize = ancho de lista
*  gt_layout-min_linesize = 80.            " Tamaño minimo de listado
*  gt_layout-max_linesize = 250.           " Tamaño máximo de listado
*  gt_layout-window_titlebar = sy-title.   " Titulo en la barra de
*titulo
*  gt_layout-no_uline_hs  = c_marked.      " No subrayar la cabecera
** Excepciones
*  gt_layout-lights_fieldname = 'Nombrecampo'  " Nombre de campo para
*                                            . " excepcion
*  gt_layout-lights_tabname = 'Nombretabla'    " Nombre de tabla para
*                                            . " excepcion
*  gt_layout-lights_rollname = 'Elementodatos' " Nombre de elemento de
*                                            . " datos para excepción
*  gt_layout-lights_condense = c_marked.       " ¿¿??
** Totales
*  gt_layout-no_sumchoice = c_marked.       " No permitir volver a sumar
*  gt_layout-no_totalline = c_marked.       " Sin linea de totalización
*  gt_layout-no_subchoice = c_marked        " No permitir volvera a
*                                        .  " subtotalizar
*  gt_layout-no_subtotals = c_marked.       " No permitir subtotales
*  gt_layout-no_unit_splitting = c_marked   " No separar totalizaciones
*                                        .  " para monedas diferentes
*  gt_layout-totals_before_items = c_marked " Mostrar totales tras las
*                                          ." posiciones
*  gt_layout-totals_only = c_marked.        " Solo mostrar totales
*  gt_layout-totals_text = '60 char'.       " Texto para linea de
*totales
*  gt_layout-subtotals_text = '60 char'     " Texto para linea de
*                                      .    " subtotales
** Interacción
*  gt_layout-box_fieldname = 'Nombrecampo'    " Nombre de campo para
*                                         .   " checkbox
*  gt_layout-box_tabname = 'Nombretabla'      " Nombre de tabla para
*                                         .   " checkbox
*  gt_layout-box_rollname = 'Elementodatos'   " Nombre de elemento de
*                                         .   " datos para checkbox
*  gt_layout-expand_fieldname = 'Nombrecampo' " Nombre de campo para
*                                         .   " flag expand
*  gt_layout-hotspot_fieldname = 'Nombrecampo'" Nombre de campo para
*                                         .   " click
*  gt_layout-confirmation_prompt = c_marked   " Pedir confirmación al
*                                          .  " salir
*  gt_layout-key_hotspot = c_marked.          " Campos clave para click
*  gt_layout-flexible_key = c_marked          " Permitir mover campos
*                                    .        " clave
*  gt_layout-group_buttons = c_marked.        " Botones para COL1 - COL5
*  gt_layout-get_selinfos = c_marked.         " Leer selection screen
*  gt_layout-group_change_edit = c_marked     " Opciones por usuario
*                                          .  " para nuevo grupo
*  gt_layout-no_scrolling = c_marked.         " no scrolling
** Pantalla de detalle de linea
*  gt_layout-detail_popup = c_marked          " Pantalla detalles en
*                                   .         " popup
*  gt_layout-detail_initial_lines = c_marked  " Mostrar tambien lineas
*                                           . " en blanco
*  gt_layout-detail_titlebar = sy-title       " Titlebar para pantalla
*                                       .     " detalles
** Mostrar variantes
*  gt_layout-header_text = '20 Char'          " Texto para el botón de
*                                   .         " cabecera
*  gt_layout-default_item = c_marked.         " Posiciones por defecto
** Color
*  gt_layout-info_fieldname = 'Nombrecampo'.  " Información de campo
*  gt_layout-coltab_fieldname = 'Nombrecampo'." para salida con colores
** Otros
*  gt_layout-list_append = c_marked.          " No hacer call screen
*  gt_layout-xifunckey = 'Nombre query'       " Query SAP (S): Nombre de
*                                      .      " una función
*  gt_layout-xidirect = c_marked              " eXtended
*                               .             " interaction(sapquery)
*  gt_layout-dtc_layout = ''                  " Layout para configurar
*                                             " pestañas (estructura de
*                          .                  " tipo dtc_s_layo)

*ENDFORM.                    " layout

**&---------------------------------------------------------------------
**
**&      Form  user_command
**&---------------------------------------------------------------------
**
**       ESTE FORM DEBE SER CREADO EN EL CODIGO DEL LISTADO CON UNA
**       ESTRUCTURA PARECIDA A ESTA:
**----------------------------------------------------------------------
**
**  -->  p_UCOMM        COMANDO
**  <--  p_CAMPO        CAMPO EXACTO DONDE SE GENERO EL COMANDO
**----------------------------------------------------------------------
**
* FORM user_command USING p_ucomm LIKE sy-ucomm
*                         p_campo TYPE slis_selfield.
*
** Leemos la linea en la que se lanzo el comando
** MODIFICAR LA TABLA I_OUTPUT POR EL NOMBRE DE LA TABLA A MOSTRAR
*   READ TABLE i_output INDEX p_campo-tabindex.
** Comprobamos cual es el codigo .
*   CASE p_ucomm.
** Si se hizo doble click
*     WHEN c_click.
**Dependiendo de la
*       CASE p_campo-fieldname.
*         WHEN  'NOMBRE_CAMPO1' .
** Codigo para el campo 1
*         WHEN  'NOMBRE_CAMPO2'.
** Codigo para el campo 2
** AÑADIR TODOS LOS CAMPOS PARA LOS QUE SE QUIERA HACER ALGO
*         WHEN OTHERS.
*       ENDCASE.
** AÑADIR TODOS LOS CASOS DE COMMAND QUE EXISTA
*     WHEN OTHERS.
*   ENDCASE.
*
* En caso de que queramos ver reflejadas las modificaciones en de la
* tabla p_campo-refresh = 'X'.
* En caso de que queramos finalizar el ALV
* tabla p_campo-exit = 'X'.
* ENDFORM.                    "USER_COMMAND




Comentarios
Buscar
¡Sólo los usuarios registrados pueden escribir comentarios!

3.26 Copyright (C) 2008 Compojoom.com / Copyright (C) 2007 Alain Georgette / Copyright (C) 2006 Frantisek Hliva. All rights reserved."

 
home search