You are on page 1of 6

EJEMPLO DE ALV GRID

*&-----------------------------------------------------------*
*& Report ZALV_GRID
*&-----------------------------------------------------------*

* PASOS ESENCIALES (Buscar el simbolo ’ §’ )


* 1. Definición estructuras y tablas necesarias
* 2. Definimos la tabla con los datos de salida
* 3. Toma de datos
* 4. Definición estructura y formato de salida
* 5. Mostrar listado

REPORT ZALV_GRID.

INCLUDE ZALV_GRIDALV . " Variable globalesALV


INCLUDE ZALV_GRIDTOP . " Variable globales
INCLUDE ZALV_GRIDSSC . " Pantalla principal
INCLUDE ZALV_GRIDMAI . " Proceso principal
INCLUDE ZALV_GRIDFOR . " Rutinas

*&---------------------------------------------------------------------*
*& Include ZALV_GRIDALV *
*&---------------------------------------------------------------------*

* Definicion estructuras y tablas necesarias -------------------- § Paso 1

*----------------------------------------------------------------------*
* Global Types
*----------------------------------------------------------------------*
* Type Pool donde vienen definidas todas las estructuras y tablas

TYPE-POOLS: SLIS.

*----------------------------------------------------------------------*
* Global Internal Tables
*----------------------------------------------------------------------*

DATA:
I_FIELDCAT_ALV TYPE SLIS_T_FIELDCAT_ALV,
I_EVENTS TYPE SLIS_T_EVENT,
I_SORT TYPE SLIS_T_SORTINFO_ALV,
I_EVENT_EXIT TYPE SLIS_T_EVENT_EXIT,
I_LIST_COMMENTS TYPE SLIS_T_LISTHEADER,
I_EXCLUDING TYPE SLIS_T_EXTAB.

*----------------------------------------------------------------------*
* Global Variables
*----------------------------------------------------------------------*
DATA:
W_VARIANT LIKE DISVARIANT,
WX_VARIANT LIKE DISVARIANT,
W_VARIANT_SAVE(1) TYPE C,
W_EXIT(1) TYPE C,
W_REPID LIKE SY-REPID,
W_USER_SPECIFIC(1) TYPE C,
W_CALLBACK_UCOMM TYPE SLIS_FORMNAME,
W_PRINT TYPE SLIS_PRINT_ALV,
W_LAYOUT TYPE SLIS_LAYOUT_ALV,
W_HTML_TOP_OF_PAGE TYPE SLIS_FORMNAME,
W_FIELDCAT_ALV LIKE LINE OF I_FIELDCAT_ALV,
W_EXCLUDING LIKE LINE OF I_EXCLUDING,
W_SORT LIKE LINE OF I_SORT,
W_EVENTS LIKE LINE OF I_EVENTS,
W_EVENT_EXIT LIKE LINE OF I_EVENT_EXIT,
W_LIST_COMMENTS LIKE LINE OF I_LIST_COMMENTS,
ONCE TYPE C.

DATA:
V_STRUCTURE_NAME TYPE DD02L-TABNAME,
V_IT_TABNAME TYPE SLIS_TABNAME.

* tablas para ALV


DATA: GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,
GT_EVENTS TYPE SLIS_T_EVENT,
GT_SORT TYPE SLIS_T_SORTINFO_ALV,
GT_LHEADER TYPE SLIS_T_LISTHEADER.

*----------------------------------------------------------------------*
* Variables Globales
*----------------------------------------------------------------------*
DATA: GS_LAYOUT TYPE SLIS_LAYOUT_ALV,
G_SAVE(1) TYPE C,
G_EXIT(1) TYPE C,
GX_VARIANT LIKE DISVARIANT,
G_VARIANT LIKE DISVARIANT,
G_REPID LIKE SY-REPID.

*----------------------------------------------------------------------*
* Constantes
*----------------------------------------------------------------------*
CONSTANTS: C_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE 'TOP_OF_PAGE',
C_USER_COMMAND TYPE SLIS_FORMNAME VALUE 'USER_COMMAND',
C_CALLER_EXIT TYPE SLIS_FORMNAME VALUE 'CALLER_EXIT'.

*&---------------------------------------------------------------------*
*& Include ZALV_GRIDTOP *
*&---------------------------------------------------------------------*
* Definimos la tabla con los datos de salida -------------------- § Paso 2

TABLES: LFA1. " Proveedores


* tabla internaa para los proveedores.
DATA: BEGIN OF IT_LFA1 OCCURS 10,
LIFNR LIKE LFA1-LIFNR,
LAND1 LIKE LFA1-LAND1,
NAME1 LIKE LFA1-NAME1,
ORT01 LIKE LFA1-ORT01,
STRAS LIKE LFA1-STRAS,
ADRNR LIKE LFA1-ADRNR,
LOEVM LIKE LFA1-LOEVM,
STKZU LIKE LFA1-STKZU.
DATA: END OF IT_LFA1.

*&---------------------------------------------------------------------*
*& Include ZALV_GRIDSSC *
*&---------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK 1 .
SELECT-OPTIONS: S_LIFNR FOR LFA1-LIFNR . " Proveedor
PARAMETER: P_LOEVML AS CHECKBOX DEFAULT 'X'. " Proveedor activo?.
SELECTION-SCREEN END OF BLOCK 1.
SELECTION-SCREEN SKIP.

* Variante de ALV
SELECTION-SCREEN BEGIN OF BLOCK 2 WITH FRAME TITLE TEXT-001.
PARAMETERS:
P_VARI LIKE DISVARIANT-VARIANT.
SELECTION-SCREEN END OF BLOCK 2.

*&---------------------------------------------------------------------*
*& Include ZALV_GRIDMAI *
*&---------------------------------------------------------------------*
INITIALIZATION.
G_REPID = SY-REPID.
G_SAVE = 'A'.
PERFORM VARIANT_INIT.
* Get default variant
GX_VARIANT = G_VARIANT.
CALL FUNCTION 'REUSE_ALV_VARIANT_DEFAULT_GET'
EXPORTING
I_SAVE = G_SAVE
CHANGING
CS_VARIANT = GX_VARIANT
EXCEPTIONS
NOT_FOUND = 2.
IF SY-SUBRC = 0.
P_VARI = GX_VARIANT-VARIANT.
ENDIF.

START-OF-SELECTION.
* Toma de datos <------------------------------- § Paso 3
PERFORM GET_PROVEEDORES. " Trae proveedores
PERFORM PRINT_DATA. " Imprime la información ALV
END-OF-SELECTION.

*&---------------------------------------------------------------------*
*& Include ZALV_GRIDFOR *
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Form print_data
*&---------------------------------------------------------------------*
FORM PRINT_DATA .
* Call ABAP/4 List Viewer
PERFORM LAYOUT_BUILD USING GS_LAYOUT.
*Estructura y formato de salida <------------------------------- § Paso 4
PERFORM FIELDCAT_INIT USING GT_FIELDCAT[].
PERFORM SORT_BUILD USING GT_SORT[].
*Mostrar listado <------------------------------- § Paso 5
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_BACKGROUND_ID = 'ALV_BACKGROUND'
I_CALLBACK_PROGRAM = G_REPID
IS_LAYOUT = GS_LAYOUT
IT_FIELDCAT = GT_FIELDCAT[]
IT_SORT = GT_SORT[]
I_SAVE = G_SAVE
IS_VARIANT = G_VARIANT
IT_EVENTS = GT_EVENTS[]
TABLES
T_OUTTAB = IT_LFA1.
ENDFORM. " print_data

*&---------------------------------------------------------------------*
*& Form LAYOUT_BUILD
*&---------------------------------------------------------------------*
* -->P_GS_LAYOUT text
*----------------------------------------------------------------------*
FORM LAYOUT_BUILD USING LS_LAYOUT TYPE SLIS_LAYOUT_ALV.
LS_LAYOUT-ZEBRA = 'X'.
LS_LAYOUT-COLWIDTH_OPTIMIZE = 'X'.
LS_LAYOUT-TOTALS_ONLY = 'X'.
ENDFORM. " LAYOUT_BUILD

*&---------------------------------------------------------------------*
*& Form FIELDCAT_INIT
*&---------------------------------------------------------------------*
* -->P_GT_FIELDCAT[] text
*----------------------------------------------------------------------*
FORM FIELDCAT_INIT USING LT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV.
DATA: LS_FIELDCAT TYPE SLIS_FIELDCAT_ALV,
L_POS TYPE I.
FREE LT_FIELDCAT.
* Proveedor
L_POS = L_POS + 1.
CLEAR LS_FIELDCAT.
LS_FIELDCAT-COL_POS = L_POS.
LS_FIELDCAT-TABNAME = 'IT_LFA1'.
LS_FIELDCAT-FIELDNAME = 'LIFNR'.
LS_FIELDCAT-REF_TABNAME = 'LFA1'.
LS_FIELDCAT-REF_FIELDNAME = 'LIFNR'.
LS_FIELDCAT-KEY = 'X'.
LS_FIELDCAT-OUTPUTLEN = '10'.
APPEND LS_FIELDCAT TO LT_FIELDCAT.
* Idioma
L_POS = L_POS + 1.
CLEAR LS_FIELDCAT.
LS_FIELDCAT-COL_POS = L_POS.
LS_FIELDCAT-TABNAME = 'IT_LFA1'.
LS_FIELDCAT-FIELDNAME = 'LAND1'.
LS_FIELDCAT-REF_TABNAME = 'LFA1'.
LS_FIELDCAT-REF_FIELDNAME = 'LAND1'.
LS_FIELDCAT-OUTPUTLEN = '16'.
APPEND LS_FIELDCAT TO LT_FIELDCAT.
* Nombre 1
L_POS = L_POS + 1.
CLEAR LS_FIELDCAT.
LS_FIELDCAT-COL_POS = L_POS.
LS_FIELDCAT-TABNAME = 'IT_LFA1'.
LS_FIELDCAT-FIELDNAME = 'NAME1'.
LS_FIELDCAT-REF_TABNAME = 'LFA1'.
LS_FIELDCAT-REF_FIELDNAME = 'NAME1'.
LS_FIELDCAT-OUTPUTLEN = '16'.
APPEND LS_FIELDCAT TO LT_FIELDCAT.
* Población
L_POS = L_POS + 1.
CLEAR LS_FIELDCAT.
LS_FIELDCAT-COL_POS = L_POS.
LS_FIELDCAT-TABNAME = 'IT_LFA1'.
LS_FIELDCAT-FIELDNAME = 'ORT01'.
LS_FIELDCAT-REF_TABNAME = 'LFA1'.
LS_FIELDCAT-REF_FIELDNAME = 'ORT01'.
LS_FIELDCAT-OUTPUTLEN = '4'.
APPEND LS_FIELDCAT TO LT_FIELDCAT.
* Calle y nº
L_POS = L_POS + 1.
CLEAR LS_FIELDCAT.
LS_FIELDCAT-COL_POS = L_POS.
LS_FIELDCAT-TABNAME = 'IT_LFA1'.
LS_FIELDCAT-FIELDNAME = 'STRAS'.
LS_FIELDCAT-REF_TABNAME = 'LFA1'.
LS_FIELDCAT-REF_FIELDNAME = 'STRAS'.
LS_FIELDCAT-OUTPUTLEN = '17'.
APPEND LS_FIELDCAT TO LT_FIELDCAT.
* Dirección
L_POS = L_POS + 1.
CLEAR LS_FIELDCAT.
LS_FIELDCAT-COL_POS = L_POS.
LS_FIELDCAT-TABNAME = 'IT_LFA1'.
LS_FIELDCAT-FIELDNAME = 'ADRNR'.
LS_FIELDCAT-REF_TABNAME = 'LFA1'.
LS_FIELDCAT-REF_FIELDNAME = 'ADRNR'.
LS_FIELDCAT-OUTPUTLEN = '17'.
APPEND LS_FIELDCAT TO LT_FIELDCAT.
* Petición borrado central p.registro maestro
L_POS = L_POS + 1.
CLEAR LS_FIELDCAT.
LS_FIELDCAT-COL_POS = L_POS.
LS_FIELDCAT-TABNAME = 'IT_LFA1'.
LS_FIELDCAT-FIELDNAME = 'LOEVM'.
LS_FIELDCAT-REF_TABNAME = 'LFA1'.
LS_FIELDCAT-REF_FIELDNAME = 'LOEVM'.
LS_FIELDCAT-OUTPUTLEN = '17'.
APPEND LS_FIELDCAT TO LT_FIELDCAT.
* Sujeto a IVA
L_POS = L_POS + 1.
CLEAR LS_FIELDCAT.
LS_FIELDCAT-COL_POS = L_POS.
LS_FIELDCAT-TABNAME = 'IT_LFA1'.
LS_FIELDCAT-FIELDNAME = 'STKZU'.
LS_FIELDCAT-REF_TABNAME = 'LFA1'.
LS_FIELDCAT-REF_FIELDNAME = 'STKZU'.
LS_FIELDCAT-OUTPUTLEN = '17'.
APPEND LS_FIELDCAT TO LT_FIELDCAT.
ENDFORM. " FIELDCAT_INIT

*&---------------------------------------------------------------------*
*& Form SORT_BUILD
*&---------------------------------------------------------------------*
* -->P_GT_SORT[] text
*----------------------------------------------------------------------*
FORM SORT_BUILD USING LT_SORT TYPE SLIS_T_SORTINFO_ALV.
DATA: LS_SORT TYPE SLIS_SORTINFO_ALV,
L_POS TYPE I.
L_POS = L_POS + 1.
LS_SORT-FIELDNAME = 'LIFNR'.
LS_SORT-SPOS = L_POS.
LS_SORT-UP = 'X'.
APPEND LS_SORT TO LT_SORT.
ENDFORM. " SORT_BUILD

*&---------------------------------------------------------------------*
*& Form VARIANT_INIT
*&---------------------------------------------------------------------*
FORM VARIANT_INIT.
* Variante
CLEAR G_VARIANT.
G_VARIANT-REPORT = G_REPID.
ENDFORM. " VARIANT_INIT

*&---------------------------------------------------------------------*
*& Form get_proveedores
*&---------------------------------------------------------------------*
FORM GET_PROVEEDORES.
SELECT *
INTO CORRESPONDING FIELDS OF TABLE IT_LFA1
FROM LFA1
WHERE LIFNR IN S_LIFNR. " Proveedor
IF P_LOEVML EQ ' '.
DELETE IT_LFA1 WHERE LOEVM EQ 'X'.
ENDIF.
ENDFORM. " get_proveedores

You might also like