|
Código fuente -
Ejemplos ALV
|
|
Escrito por Administrator
|
|
Jueves, 10 de Marzo de 2005 10:07 |
Otra plantilla ALV Grid
*----------------------------------------------------------------------* * - Programa.......: YREPORTE * * - Creador........: XXXXXXXXXXXXXXXXXXXXX * * - Transacción....: XXXXXX * * - Creación.......: XX.XXXXXXX.2004 * * - Proposito......: Carga Inicial XXXXXXXXXXXXXXX * * * *----------------------------------------------------------------------* * Modificador Fecha MARCA Motivo * * ----------- -------- ----- ----------------------------------------- * * XXXXXXXX DD.MM.AA @01 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx * * * *----------------------------------------------------------------------* REPORT ZPRUEBA50 MESSAGE-ID z0 NO STANDARD PAGE HEADING LINE-SIZE 132 LINE-COUNT 65. *&---------------------------------------------------------------------* *& Tablas *&---------------------------------------------------------------------* TABLES: T001. "Sociedades *----------------------------------------------------------------------* * Declaración de Estructuras *----------------------------------------------------------------------* * Tabla Archivo de Entrada DATA: BEGIN OF T_OUTTAB OCCURS 0, BOX TYPE C. INCLUDE STRUCTURE T001. DATA: WRBTR LIKE BSEG-WRBTR. "Importe en la moneda del documento DATA: END OF T_OUTTAB.
*&---------------------------------------------------------------------* *& Variables Glovales *&---------------------------------------------------------------------* DATA: W_USRID LIKE PA0105-USRID, W_POSI(2) TYPE n, W_SETT01(56) TYPE C, W_TIPBUS TYPE C.
DATA: W_progname TYPE sy-repid, W_dynnum TYPE sy-dynnr, dynpro_values TYPE TABLE OF dynpread, field_value LIKE LINE OF dynpro_values.
*&---------------------------------------------------------------------* *& DEFINICION DE TABLAS Y ESTRUCTURAS NECESARIAS ALV *&---------------------------------------------------------------------* * 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, gt_sort type slis_t_sortinfo_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, gt_list_top_of_page TYPE slis_t_listheader, gt_events TYPE slis_t_event, * gt_sort type slis_t_sortinfo_alv, ls_vari TYPE disvariant, * g_repid LIKE sy-repid.
* Tabla de excluir funciones DATA: GT_EXCLUDE TYPE SLIS_T_EXTAB WITH HEADER LINE.
*&---------------------------------------------------------------------* *& INCLUDE *&---------------------------------------------------------------------* *&---------------------------------------------------------------------* *& Parámetros de Selección *&---------------------------------------------------------------------* * Parámetros SELECTION-SCREEN BEGIN OF BLOCK BLOCK01 WITH FRAME TITLE TEXT-S01. SELECT-OPTIONS: S_BUKRS FOR T001-BUKRS "Sociedad DEFAULT 'CASA'. SELECTION-SCREEN SKIP 1. SELECTION-SCREEN END OF BLOCK BLOCK01. *&---------------------------------------------------------------------* *& Validaciones de Pantalla *&---------------------------------------------------------------------* AT SELECTION-SCREEN.
*&---------------------------------------------------------------------* *& INITIALIZATION *&---------------------------------------------------------------------* INITIALIZATION.
*&---------------------------------------------------------------------* *& START-OF-SELECTION *&---------------------------------------------------------------------* START-OF-SELECTION. PERFORM CARGA_DATOS. PERFORM CARGAR_ALV. END-OF-SELECTION.
*&---------------------------------------------------------------------* *& Form CARGA_CAB_GASTOS *&---------------------------------------------------------------------* * Carga de Datos *----------------------------------------------------------------------* FORM CARGA_DATOS.
REFRESH: T_OUTTAB.
* Sociedades SELECT * INTO CORRESPONDING FIELDS OF TABLE T_OUTTAB FROM T001 WHERE BUKRS IN S_BUKRS.
ENDFORM. " CARGA_DATOS *&---------------------------------------------------------------------* *& Form CARGAR_ALV *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* FORM CARGAR_ALV. * Carga de Campos para ALV PERFORM init_fieldcat. * Atributos de ALV PERFORM init_layout. * Ordenar ALV PERFORM INIT_SORT. * Excluir Botones PERFORM EXCLUDE. * Carga de Eventos Perform eventtab_build_01 changing gt_events. * Cabecera de ALV Perform comment_build_01 using gt_list_top_of_page. * ALV PERFORM MOSTRAR_ALV_01. ENDFORM. " CARGAR_ALV *&---------------------------------------------------------------------* *& Form init_fieldcat *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* FORM init_fieldcat.
REFRESH: GT_FIELDCAT. CLEAR W_POSI.
* nombre del Programa g_repid = sy-repid.
* Mediante esta tabla vamos a definir los campos que queremos mostrar * en el listado de salida. * Sociedad W_POSI = W_POSI + 1. gt_fieldcat-tabname = 'T_OUTTAB'. gt_fieldcat-fieldname = 'BUKRS'. gt_fieldcat-ddictxt = 'L'. gt_fieldcat-seltext_l = TEXT-C01. gt_fieldcat-col_pos = W_POSI. gt_fieldcat-ref_tabname = 'T001'. "Tabla de Referencia gt_fieldcat-ref_fieldname = 'BUKRS'. "Campo Referencia en Tabla gt_fieldcat-key = 'X'. "Tratarlo como Clave * gt_fieldcat-down = 'X'. "Orden Descendente gt_fieldcat-hotspot = 'X'. "Navegar al Doble Click APPEND gt_fieldcat. CLEAR gt_fieldcat.
* Descripción de Sociedad W_POSI = W_POSI + 1. gt_fieldcat-tabname = 'T_OUTTAB'. gt_fieldcat-fieldname = 'BUTXT'. gt_fieldcat-ddictxt = 'L'. gt_fieldcat-seltext_l = TEXT-C02. gt_fieldcat-col_pos = W_POSI. gt_fieldcat-ref_tabname = 'T001'. "Tabla de Referencia gt_fieldcat-ref_fieldname = 'BUTXT'. "Campo Referencia en Tabla * gt_fieldcat-key = 'X'. "Tratarlo como Clave * gt_fieldcat-down = 'X'. "Orden Descendente * gt_fieldcat-outputlen = 10. "Fijar Long de Salida * gt_fieldcat-do_sum = 'X'. "Sumarizar (campo numerico) * gt_fieldcat-no_out = 'X'. "No Mostrar * gt_fieldcat-hotspot = 'X'. "Navegar al Doble Click APPEND gt_fieldcat. CLEAR gt_fieldcat.
* Población W_POSI = W_POSI + 1. gt_fieldcat-tabname = 'T_OUTTAB'. gt_fieldcat-fieldname = 'ORT01'. gt_fieldcat-ddictxt = 'L'. gt_fieldcat-seltext_l = TEXT-C03. gt_fieldcat-col_pos = W_POSI. gt_fieldcat-ref_tabname = 'T001'. "Tabla de Referencia gt_fieldcat-ref_fieldname = 'ORT01'. "Campo Referencia en Tabla APPEND gt_fieldcat. CLEAR gt_fieldcat.
* País W_POSI = W_POSI + 1. gt_fieldcat-tabname = 'T_OUTTAB'. gt_fieldcat-fieldname = 'LAND1'. gt_fieldcat-ddictxt = 'L'. gt_fieldcat-seltext_l = TEXT-C04. gt_fieldcat-col_pos = W_POSI. gt_fieldcat-ref_tabname = 'T001'. "Tabla de Referencia gt_fieldcat-ref_fieldname = 'LAND1'. "Campo Referencia en Tabla gt_fieldcat-no_out = 'X'. "No Mostrar APPEND gt_fieldcat. CLEAR gt_fieldcat.
* Desviación W_POSI = W_POSI + 1. gt_fieldcat-tabname = 'T_OUTTAB'. gt_fieldcat-fieldname = 'WAABW'. gt_fieldcat-ddictxt = 'L'. gt_fieldcat-seltext_l = TEXT-C05. gt_fieldcat-col_pos = W_POSI. gt_fieldcat-ref_tabname = 'T001'. "Tabla de Referencia gt_fieldcat-ref_fieldname = 'WAABW'. "Campo Referencia en Tabla gt_fieldcat-do_sum = 'X'. "Sumarizar (campo numerico) APPEND gt_fieldcat. CLEAR gt_fieldcat.
* Importe en la moneda del documento W_POSI = W_POSI + 1. gt_fieldcat-tabname = 'T_OUTTAB'. gt_fieldcat-fieldname = 'WRBTR'. gt_fieldcat-ddictxt = 'L'. gt_fieldcat-seltext_l = TEXT-C06. gt_fieldcat-col_pos = W_POSI. gt_fieldcat-ref_tabname = 'BSEG'. "Tabla de Referencia gt_fieldcat-ref_fieldname = 'WRBTR'. "Campo Referencia en Tabla gt_fieldcat-do_sum = 'X'. "Sumarizar (campo numerico) APPEND gt_fieldcat. CLEAR gt_fieldcat.
ENDFORM. " init_fieldcat *&---------------------------------------------------------------------* *& Form init_layout *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* FORM init_layout. gs_layout-colwidth_optimize = 'X'. gs_layout-zebra = 'X'. * gs_layout-detail_popup = 'X'. * gs_layout-info_fieldname = 'COLOR'. * gs_layout-f2code = '&ETA'. gs_layout-no_input = ' '. gs_layout-box_fieldname = 'BOX'. ENDFORM. " init_layout *&---------------------------------------------------------------------* *& Form MOSTRAR_ALV_01 *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* FORM MOSTRAR_ALV_01.
* Inicialización de Variante de Trabajo ls_vari-report = sy-repid. ls_vari-handle = space. ls_vari-log_group = space. ls_vari-username = space. ls_vari-variant = space. ls_vari-text = space. ls_vari-dependvars = space.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' EXPORTING i_callback_program = g_repid i_callback_user_command = 'USER_COMMAND_01' * i_callback_pf_status_set = 'SET_PF_STATUS_01' i_structure_name = 'T_OUTTAB' is_layout = gs_layout it_fieldcat = gt_fieldcat[] IT_SORT = GT_SORT[] IT_EXCLUDING = GT_EXCLUDE[] * I_DEFAULT = 'X' I_SAVE = ' ' "Grabar Variante IS_VARIANT = ls_vari IT_EVENTS = GT_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 = T_OUTTAB 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. " MOSTRAR_ALV_01 *---------------------------------------------------------------------* * FORM USER_COMMAND_01 Process Call Back Events (Begin) * *---------------------------------------------------------------------* form user_command_01 using ucomm like sy-ucomm selfield type slis_selfield. *FIELD-SYMBOLS: .
read table T_OUTTAB index selfield-tabindex. check sy-subrc = 0.
case ucomm. * Doble Click when '&IC1'. CASE SELFIELD-FIELDNAME. * N° de Viaje WHEN 'BUKRS'. SET PARAMETER ID 'BUK' FIELD T_OUTTAB-BUKRS. "Sociedad CALL TRANSACTION 'FB01'. WHEN OTHERS. ENDCASE. * Refrescar WHEN 'REFRESH'. * PERFORM CARGA_CAB_GASTOS. * Perform comment_build_01 using gt_list_top_of_page. * PERFORM MOSTRAR_ALV_01. * LEAVE PROGRAM. WHEN 'ANTICIPO'. *SET PARAMETER ID 'PER' FIELD T_OUTTAB-PERNR. "Número personal *SET PARAMETER ID 'ZRW_REINR' FIELD T_OUTTAB-REINR. "Número de viaje * CALL TRANSACTION 'ZFI055' AND SKIP FIRST SCREEN. * Cambiar N° Personal endcase. endform. *&---------------------------------------------------------------------* *& Form INIT_SORT *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* FORM INIT_SORT. REFRESH: gt_sort.CLEAR gt_sort. CLEAR W_POSI.
* Sortear por Código de Sociedad W_POSI = W_POSI + 1. gt_sort-spos = W_POSI. gt_sort-tabname = 'T_OUTTAB'. gt_sort-fieldname = 'BUKRS'. gt_sort-down = 'X'. "Orden Descendente APPEND gt_sort. CLEAR gt_sort.
ENDFORM. " INIT_SORT *---------------------------------------------------------------------* * FORM eventtab_build_01 * *---------------------------------------------------------------------* FORM eventtab_build_01 CHANGING PGT_EVENTS type slis_t_event.
CONSTANTS: gc_formname_top_of_page type slis_formname value 'TOP_OF_PAGE_01'.
DATA: ls_event type slis_alv_event.
call function 'REUSE_ALV_EVENTS_GET' EXPORTING i_list_type = 0 IMPORTING et_events = PGT_EVENTS.
read table PGT_EVENTS with key name = SLIS_EV_TOP_OF_PAGE into ls_event.
if sy-subrc = 0. move gc_formname_top_of_page to ls_event-form. append ls_event to PGT_EVENTS. endif.
ENDFORM. " eventtab_build_01 *---------------------------------------------------------------------* * FORM COMMENT_BUILD_01 * *---------------------------------------------------------------------* FORM COMMENT_BUILD_01 USING LT_TOP_OF_PAGE TYPE SLIS_T_LISTHEADER.
DATA: LS_LINE TYPE SLIS_LISTHEADER.
REFRESH: LT_TOP_OF_PAGE.
* Title * LIST HEADING LINE: TYPE H CLEAR LS_LINE. LS_LINE-TYP = 'H'. LS_LINE-KEY = 'El Titulo'. LS_LINE-INFO = 'TITULO'. APPEND LS_LINE TO LT_TOP_OF_PAGE.
CLEAR LS_LINE. LS_LINE-TYP = 'S'. LS_LINE-KEY = 'Nº persona :'. Concatenate '007' 'Espia Ingles' into LS_LINE-INFO separated by space. APPEND LS_LINE TO LT_TOP_OF_PAGE.
CLEAR LS_LINE. LS_LINE-TYP = 'S'. APPEND LS_LINE TO LT_TOP_OF_PAGE.
ENDFORM.
*---------------------------------------------------------------------* * FORM TOP_OF_PAGE_01 * *---------------------------------------------------------------------* FORM TOP_OF_PAGE_01. CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE' EXPORTING IT_LIST_COMMENTARY = GT_LIST_TOP_OF_PAGE. ENDFORM. *&---------------------------------------------------------------------* * FORM SET_PF_STATUS_01 *&---------------------------------------------------------------------* FORM set_pf_status_01 USING lt_cua_exclude TYPE slis_t_extab. DATA: lf_gui_status TYPE gui_status.
* Permiso para Cambio de Usuario * IF W_CAMBIO eq '1'. * lf_gui_status = 'PAN02'. * SET PF-STATUS lf_gui_status. * ELSE. * lf_gui_status = 'PAN02'. * SET PF-STATUS lf_gui_status excluding 'CHGPER'. * ENDIF.
ENDFORM. *&---------------------------------------------------------------------* *& Form EXCLUDE *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* FORM EXCLUDE. * REFRESH GT_EXCLUDE. * GT_EXCLUDE-FCODE = '&EB9'. * APPEND GT_EXCLUDE. CLEAR GT_EXCLUDE. ENDFORM. " EXCLUDE
|
|
Actualizado ( Lunes, 07 de Julio de 2008 06:25 )
|