|
Código fuente -
Ejemplos ALV
|
|
Martes, 22 de Julio de 2003 17:39 |
REPORT zalv_simple.
* Por: Jorge Serra (Neo)
Esta dirección electrónica esta protegida contra spam bots. Necesita activar JavaScript para visualizarla
* Se trata de un pequeño ejemplo de listado ALV para aquellos que nunca * han creado uno. Por supuesto, a los que ya sepais algo de ALV, no * creo que os sirva de mucho
* Propósito: * --------- * Voy mostrar un listado de posiciones de pedidos de compras
* 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
*<-- § Paso 1. Definicion estructuras y tablas necesarias
* Type Pool donde vienen definidas todas las estructuras y tablas TYPE-POOLS: slis.
* Catálogo de campos: contiene la descripción de los campos de salida DATA: gt_fieldcat TYPE slis_t_fieldcat_alv WITH HEADER LINE,
* Especificaciones de la disposición de la lista: descripción de la
* estructura de salida gs_layout TYPE slis_layout_alv,
* Nombre del programa g_repid LIKE sy-repid.
*<-- § Paso 2. Definimos la tabla con los datos de salida
TYPES: BEGIN OF st_output. INCLUDE STRUCTURE ekpo. TYPES: END OF st_output.
DATA: gt_output TYPE STANDARD TABLE OF st_output WITH HEADER LINE.
INITIALIZATION.
g_repid = sy-repid.
START-OF-SELECTION.
*<-- § Paso 3. Toma de datos PERFORM toma_datos.
*<-- § Paso 4. Estructura y formato de salida PERFORM init_fieldcat. PERFORM init_layout.
*<-- § Paso 5. Mostrar listado PERFORM listado.
*&&-----------------------------------------------------------------&&* * SUBRUTINAS DEL PROGRAMA * *&&-----------------------------------------------------------------&&*
*---------------------------------------------------------------------* * FORM INIT_FIELDCAT * *---------------------------------------------------------------------*
FORM init_fieldcat.
* Mediante esta tabla vamos a definir los campos que queremos mostrar * en el listado de salida.
gt_fieldcat-fieldname = 'EBELN'. gt_fieldcat-ref_tabname = 'EKPO'. APPEND gt_fieldcat. CLEAR gt_fieldcat.
gt_fieldcat-fieldname = 'EBELP'. gt_fieldcat-ref_tabname = 'EKPO'. APPEND gt_fieldcat. CLEAR gt_fieldcat.
gt_fieldcat-fieldname = 'MATNR'. gt_fieldcat-ref_tabname = 'EKPO'. APPEND gt_fieldcat. CLEAR gt_fieldcat.
gt_fieldcat-fieldname = 'WERKS'. gt_fieldcat-ref_tabname = 'EKPO'. APPEND gt_fieldcat. CLEAR gt_fieldcat.
gt_fieldcat-fieldname = 'MENGE'. gt_fieldcat-ref_tabname = 'EKPO'. APPEND gt_fieldcat. CLEAR gt_fieldcat.
gt_fieldcat-fieldname = 'MEINS'. gt_fieldcat-ref_tabname = 'EKPO'. APPEND gt_fieldcat. CLEAR gt_fieldcat.
ENDFORM.
*---------------------------------------------------------------------* * FORM INIT_LAYOUT * *---------------------------------------------------------------------* FORM init_layout.
* Mediante esta estructura podemos definir el formato de salida gs_layout-zebra = 'X'. gs_layout-f2code = '&ETA'. gs_layout-detail_popup = 'X'.
ENDFORM.
*---------------------------------------------------------------------* * FORM TOMA_DATOS * *---------------------------------------------------------------------* FORM toma_datos.
* Los datos deben guardarse en la tabla interna de salida SELECT * FROM ekpo UP TO 100 ROWS INTO TABLE gt_output.
ENDFORM. " TOMA_DATOS
*---------------------------------------------------------------------* * FORM LISTADO * *---------------------------------------------------------------------* FORM listado.
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY' EXPORTING * I_INTERFACE_CHECK = ' ' * I_BYPASSING_BUFFER = * I_BUFFER_ACTIVE = ' ' i_callback_program = g_repid * I_CALLBACK_PF_STATUS_SET = ' ' * I_CALLBACK_USER_COMMAND = ' ' * I_STRUCTURE_NAME = is_layout = gs_layout it_fieldcat = gt_fieldcat[] * IT_EXCLUDING = * IT_SPECIAL_GROUPS = * IT_SORT = * IT_FILTER = * IS_SEL_HIDE = * I_DEFAULT = 'X' * I_SAVE = ' ' * IS_VARIANT = * IT_EVENTS = * IT_EVENT_EXIT = * IS_PRINT = * IS_REPREP_ID = * I_SCREEN_START_COLUMN = 0 * I_SCREEN_START_LINE = 0 * I_SCREEN_END_COLUMN = 0 * I_SCREEN_END_LINE = 0 * IMPORTING * E_EXIT_CAUSED_BY_CALLER = * ES_EXIT_CAUSED_BY_USER = TABLES t_outtab = gt_output 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. " LISTADO
|
|