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

Buscar

Traducir

Amazon

ALV_SALTO_LINEA PDF Imprimir E-mail
Usar puntuación: / 0
MaloBueno 
Código fuente - Ejemplos ALV
Martes, 22 de Julio de 2003 17:46
Ejemplo de un listado ALV con control de salto de línea
REPORT ZGLC_0001 .

  TYPE-POOLS: SLIS.

  TABLES: VBAK.

  DATA: D_VKORG LIKE VBAK-VKORG.

  SELECT-OPTIONS: S_VKORG FOR VBAK-VKORG,
                  S_VBELN FOR VBAK-VBELN.

* Nombre del form que controlará el evento ANTES DE escribir una linea
CONSTANTS: FORM_LINEA TYPE SLIS_FORMNAME VALUE 'ANTES_ESCRIBIR_LINEA'.

* Presentaremos la organización de ventas y el número de pedido.
* Al cambiar de VKORG, haremos un salto de página
DATA: BEGIN OF I1 OCCURS 0,
      VKORG LIKE VBAK-VKORG,
      VBELN LIKE VBAK-VBELN,
      END OF I1.

* Variantes de las ALV
DATA: FIELDTAB TYPE SLIS_T_FIELDCAT_ALV,
      LAYOUT   TYPE SLIS_LAYOUT_ALV,
      EVENTS   TYPE SLIS_T_EVENT,
      REPNAME  LIKE SY-REPID,
      F2CODE   LIKE SY-UCOMM VALUE  '&ETA'.

INITIALIZATION.
  REPNAME = SY-REPID.
  PERFORM INITIALIZE_FIELDCAT USING FIELDTAB[].
  PERFORM BUILD_EVENTTAB USING EVENTS[].
*  PERFORM build_comment USING heading[].
*  PERFORM initialize_variant.

START-OF-SELECTION.
  PERFORM OBTENER_VBAK.

END-OF-SELECTION.
  READ TABLE I1 INDEX 1.
  D_VKORG = I1-VKORG.
  PERFORM BUILD_LAYOUT USING LAYOUT.
  PERFORM WRITE_OUTPUT.

* Este es el importante
FORM ANTES_ESCRIBIR_LINEA USING P_C TYPE SLIS_LINEINFO.
* Comprobamos que lo que se ha escrito es un campo de la tabla interna
  CHECK P_C-TABNAME = 'I1'.
  READ TABLE I1 INDEX P_C-TABINDEX.
  CHECK SY-SUBRC EQ 0.
* Hemos leído la tabla interna para ver si la VKORG ha cambiado
  IF I1-VKORG <> D_VKORG AND P_C-TABINDEX NE 1.
    D_VKORG = I1-VKORG.
    NEW-PAGE.
  ENDIF.
ENDFORM.


FORM INITIALIZE_FIELDCAT USING    P_FIELDTAB[].
* en principio no ponemos nada, aunque aquí configuraríamos la tabla int
ENDFORM.                    " INITIALIZE_FIELDCAT

FORM BUILD_EVENTTAB USING P_EVENTS TYPE SLIS_T_EVENT.
  DATA: LS_EVENT TYPE SLIS_ALV_EVENT.
  CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
       EXPORTING
            I_LIST_TYPE = 0
       IMPORTING
            ET_EVENTS   = P_EVENTS.
* El type que controla el evento ANTES escribir una linea es
* slis_ev_before_line_output
  READ TABLE P_EVENTS WITH KEY NAME = SLIS_EV_BEFORE_LINE_OUTPUT
                           INTO LS_EVENT.
  IF SY-SUBRC = 0.
* Asignamos el nombre de nuestro form al nombre del evento
    MOVE FORM_LINEA TO LS_EVENT-FORM.
    APPEND LS_EVENT TO P_EVENTS.
  ENDIF.

ENDFORM.                    " BUILD_EVENTTAB
*
FORM OBTENER_VBAK.
  SELECT VBELN VKORG FROM VBAK
       INTO CORRESPONDING FIELDS OF TABLE I1
  WHERE VKORG IN S_VKORG
  AND  VBELN IN S_VBELN.
  SORT I1 BY VKORG VBELN.
ENDFORM.                    " OBTENER_VBAK

*&---------------------------------------------------------------------*
*&      Form  BUILD_LAYOUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_LAYOUT  text                                               *
*----------------------------------------------------------------------*
FORM BUILD_LAYOUT USING    P_LAYOUT TYPE SLIS_LAYOUT_ALV.
  P_LAYOUT-F2CODE       = F2CODE.
  P_LAYOUT-ZEBRA        = 'X'.
  P_LAYOUT-DETAIL_POPUP = 'X'.

ENDFORM.                    " BUILD_LAYOUT
*&---------------------------------------------------------------------*
*&      Form  WRITE_OUTPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM WRITE_OUTPUT.
  CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
       EXPORTING
            I_PROGRAM_NAME     = REPNAME
            I_INTERNAL_TABNAME = 'I1'
            I_INCLNAME         = REPNAME
       CHANGING
            CT_FIELDCAT        = FIELDTAB.
  IF SY-SUBRC <> 0.
    WRITE: 'SY-SUBRC: ', SY-SUBRC, 'REUSE_ALV_FIELDCATALOG_MERGE'.
  ENDIF.
  CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
       EXPORTING
            I_CALLBACK_PROGRAM = REPNAME
            I_STRUCTURE_NAME   = 'I1'
            IS_LAYOUT          = LAYOUT
            IT_FIELDCAT        = FIELDTAB
            I_DEFAULT          = 'A'
*           i_save             = g_save
*           is_variant         = g_variant
            IT_EVENTS          = EVENTS[]
       TABLES
            T_OUTTAB           = I1.
  IF SY-SUBRC <> 0.
    WRITE: 'SY-SUBRC: ', SY-SUBRC, 'REUSE_ALV_LIST_DISPLAY'.
  ENDIF.

ENDFORM.                    " WRITE_OUTPUT





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