|
Código fuente -
Ejemplos ALV
|
|
Martes, 22 de Julio de 2003 17:44 |
Ejemplo de un listado ALV jerarquico
REPORT zalv_jerarquico.
* Por: Jorge Serra (Neo) mailto:
Esta dirección electrónica esta protegida contra spam bots. Necesita activar JavaScript para visualizarla
* Se trata de una ejemplo de listado ALV jerarquico.
* Propósito: * --------- * Voy mostrar un listado de pedidos de compras (datos de cabecera) * y sus posiciones (datos de posicion)
* Pasos esenciales (Buscar el simbolo '§') * ---------------- * 1. Definición estructuras y tablas necesarias * 2. Definimos las tablas 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,
* Relacion entre los datos de cabecera y posicion gs_key TYPE slis_keyinfo_alv,
* Nombre del programa g_repid LIKE sy-repid.
*<-- § Paso 2. Definimos las tablas con los datos de salida TYPES: BEGIN OF st_header. INCLUDE STRUCTURE ekko. TYPES: END OF st_header.
TYPES: BEGIN OF st_item. INCLUDE STRUCTURE ekpo. TYPES: END OF st_item.
DATA: gt_header TYPE STANDARD TABLE OF st_header WITH HEADER LINE, gt_item TYPE STANDARD TABLE OF st_item 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. PERFORM init_key.
*<-- § 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-tabname = 'GT_HEADER'. gt_fieldcat-ref_tabname = 'EKKO'. APPEND gt_fieldcat. CLEAR gt_fieldcat.
gt_fieldcat-fieldname = 'EBELN'. gt_fieldcat-tabname = 'GT_ITEM'. gt_fieldcat-ref_tabname = 'EKPO'. gt_fieldcat-no_out = 'X'. APPEND gt_fieldcat. CLEAR gt_fieldcat.
gt_fieldcat-fieldname = 'EBELP'. gt_fieldcat-tabname = 'GT_ITEM'. gt_fieldcat-ref_tabname = 'EKPO'. APPEND gt_fieldcat. CLEAR gt_fieldcat.
gt_fieldcat-fieldname = 'MATNR'. gt_fieldcat-tabname = 'GT_ITEM'. gt_fieldcat-ref_tabname = 'EKPO'. APPEND gt_fieldcat. CLEAR gt_fieldcat.
gt_fieldcat-fieldname = 'WERKS'. gt_fieldcat-tabname = 'GT_ITEM'. gt_fieldcat-ref_tabname = 'EKPO'. APPEND gt_fieldcat. CLEAR gt_fieldcat.
gt_fieldcat-fieldname = 'MENGE'. gt_fieldcat-tabname = 'GT_ITEM'. gt_fieldcat-ref_tabname = 'EKPO'. APPEND gt_fieldcat. CLEAR gt_fieldcat.
gt_fieldcat-fieldname = 'MEINS'. gt_fieldcat-tabname = 'GT_ITEM'. 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 ekko UP TO 100 ROWS INTO TABLE gt_header.
SELECT * FROM ekpo INTO TABLE gt_item FOR ALL ENTRIES IN gt_header WHERE ebeln = gt_header-ebeln.
ENDFORM. " TOMA_DATOS
*---------------------------------------------------------------------* * FORM LISTADO * *---------------------------------------------------------------------* FORM listado.
CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY' EXPORTING * I_INTERFACE_CHECK = ' ' i_callback_program = g_repid * I_CALLBACK_PF_STATUS_SET = ' ' * I_CALLBACK_USER_COMMAND = ' ' is_layout = gs_layout it_fieldcat = gt_fieldcat[] * IT_EXCLUDING = * 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 = ' ' * IS_VARIANT = * IT_EVENTS = * IT_EVENT_EXIT = i_tabname_header = 'GT_HEADER' i_tabname_item = 'GT_ITEM' * I_STRUCTURE_NAME_HEADER = * I_STRUCTURE_NAME_ITEM = is_keyinfo = gs_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 = gt_header[] t_outtab_item = gt_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. " LISTADO
*---------------------------------------------------------------------* * FORM INIT_KEY * *---------------------------------------------------------------------* FORM init_key.
* Relacion entre los campos de cabecera y los de posicion gs_key-header01 = 'EBELN'. gs_key-item01 = 'EBELN'.
ENDFORM. " INIT_KEY
|
|