Está en la página 1de 11

ALV'S DINAMICOS

* DEFINICION DE TABLAS QUE VA LLEGAR A USAR EL PROGRAMA Tables: EBAN, --> ejemplo de tablas LFA1. TYPE-POOLS: SLIS, SSCR. * Definicin el layout DATA: LAYOUT TYPE SLIS_LAYOUT_ALV. * DEFINICION DE TABLA INTERNA DONDE SACAMOS LOS DATOS DATA: BEGIN OF IT_DATOSLOTES OCCURS 0, --> tabla que contiene datos del ALV T_PROV(10) TYPE C, ....., END OF IT_DATOSLOTES. * DEFINICION E LA VARIABLE QUE VA A CONTENER EL NUMERO DE COLUMNAS VARIABLES DEL ALV DATA: NUM_LOT TYPE I. --> Nombre ejemplo * DEFINICION DE LA PANTALLA DE SELECCION DE DATOS PRINCIPAL SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001. SELECT-OPTIONS: S_SOLPED FOR ZMMDPOSADJ-ID_PROPUESTA NO INTERVALS NO-EXTENSION. * PARAMETERS: S_SOLPED LIKE ZMMDPOSADJ-ID_PROPUESTA. SELECTION-SCREEN END OF BLOCK B1. * Creacion del puntero para la asignacion dinamica FIELD-SYMBOLS :<newtab> TYPE table, <l_line> TYPE ANY, <l_field> TYPE ANY.. * Creacion del puntero que usaremos para la asignacion field-symbols: <fs_data> type ref to data. data: lt_data type ref to data. * Definicion de variables donde vamos a llevar los datos data: data: data: data: wa_fieldcat TYPE slis_fieldcat_alv. i_fieldcat TYPE slis_t_fieldcat_alv. lt_fieldcatalog type lvc_t_fcat. ls_fieldcatalog type lvc_s_fcat.

* Creacion de una nueva linea de la tabla a mostrar data: new_line TYPE REF TO data. data: i_event TYPE slis_t_event, wa_event TYPE slis_alv_event. * Creacion de variable para ordenacion de listado data: it_sortcat type slis_sortinfo_alv occurs 1, wa_sort like line of it_sortcat. data: numd LIKE ZMMDPOSADJ-IMPORTE_UNI. data: intr type C. DATA: gt_events TYPE slis_t_event WITH HEADER LINE.

* INICIAMOS LA SELECCION DE DATOS


START-OF-SELECTION. * La seleccin de datos puede variar dependiendo del report, estas condiciones dependen de los chequeos que necesitemos para implementar nuestro caso. ************ EJEMPLO * HACEMOS UN LLAMAMIENTO A FORM QUE REALIZA LA BUSQUEDA PERFORM comprobar_datos USING S_SOLPED. IF INTR EQ 'X'. MESSAGE I154(ZCSPMM) WITH 'Introduce una solicitud de pedido'. ELSE. PERFORM BUSQUEDA_SOL. ENDIF. ************ EJEMPLO *&------------------------------------------------- Form comprobar_datos FORM comprobar_datos USING P_S_SOLPED.

******* Chequeo previo, codigo variante ENDFORM. " comprobar_datos

*&------------------------------------------------- Form BUSQUEDA_SOL FORM BUSQUEDA_SOL. * BORRAMOS LA CABECERA DE DATOS PARA QUE NO SE DUPLIQUEN CLEAR IT_DATOSLOTES. REFRESH IT_DATOSLOTES. ---> refrescamos la tabla * RELLENAMOS LA TABLA INTERNA --> este caso puede valer de ejemplo * Insertariamos la select que nos hiciera falta para coger los datos para el report. SELECT * FROM ....... ............ ENDSELECT. * ORDENAMOS NUESTRA TABLA INTERNA * INICIALIZAMOS LA VARIABLE A '0' QUE CUENTA CUENTA LAS COLUMNAS VARIABLES * Actualizamos la variable que cuenta el numero de columnas variables que va a tener el ALV, bien recorriendo la tabla, etc... * Codigo ejempo LOOP AT IT_DATOSLOTES. IF IT_DATOSLOTES-T_LOTE GT NUM_LOT. NUM_LOT = IT_DATOSLOTES-T_LOTE. ENDIF. ENDLOOP. * codigo Ejemplo * Llamamos al form que se encarga de crear el catalogo de campos del listado ALv PERFORM carga_fieldcat USING IT_DATOSLOTES. ENDFORM. " BUSQUEDA_SOL

*&-------------------------------------------------- Form carga_fieldcat FORM carga_fieldcat USING REFRESH i_fieldcat . CLEAR wa_fieldcat. * Definicin de los campos, en el caso de las columnas fijas se definen como siempre Columna 1 . ls_fieldcatalog-fieldname = 'T_PROV'. append ls_fieldcatalog to lt_fieldcatalog. CLEAR ls_fieldcatalog. wa_fieldcat-tabname = 'IT_DATOSLOTES'. wa_fieldcat-fieldname = 'T_PROV'. wa_fieldcat-key = space. wa_fieldcat-ddictxt = 'L'. wa_fieldcat-seltext_s = wa_fieldcat-seltext_m = wa_fieldcat-seltext_l = TEXT-005. APPEND wa_fieldcat TO i_fieldcat. CLEAR wa_fieldcat. Columna 2 Columna 3 ....... *Ahora vamos a definir las columnas que son variables, nos podemos encontrar que tengamos 0, 1, 5, etc, este numero lo tenemos definidos en la variable creada en la cabecera data: i type c. --> Creamos el contador para la asignacin ordenada de campos data: NOMBRECAMPO TYPE C LENGTH 15. --> creamos la variable que contenga el nombre del campo i = '1'. --> actualizamos el contador a 1 * Creamos tantos campos como numero de variables haya, este proceso lo realizaremos a traves de DO....ENDO do NUM_LOT times. * TEXT-003 --> definido en simbolo de texto como LOTE en este caso * Concatena en nombrecampo el lote correspondiente, ejemplo: LOTE1,....LOTEN ****************************************************************************** ***** Definicin del catalogo de la tabla concatenate TEXT-003 i into NOMBRECAMPO. ls_fieldcatalog-fieldname = nombrecampo. ls_fieldcatalog-DATATYPE = 'CURR'. ls_fieldcatalog-DO_SUM = 'X'. * Aadimos el lote al catalogo de la tabla append ls_fieldcatalog to lt_fieldcatalog. ****************************************************************************** ***** Definicin del catalogo del ALV wa_fieldcat-fieldname = ls_fieldcatalog-fieldname. CONCATENATE TEXT-003 I INTO wa_fieldcat-SELTEXT_S. * Descripcion del tipo del campo, en este caso es de tipo moneda para hacer la suma WA_fieldcat-DATATYPE = 'CURR'. * Opcin del ALV, que nos realiza la suma de todas las columnas de forma automatica WA_FIELDCAT-DO_SUM = 'X'. * Aadimos el lote al catalogo del alv append wa_fieldcat to i_fieldcat. ****************************************************************************** P_IT_DATOSLOTES.

* Incrementamos el contador en 1. I = I + 1. * Limpiamos las variables para no contener datos de asignaciones anteriores. CLEAR wa_fieldcat. CLEAR ls_fieldcatalog. enddo. assign lt_data to <fs_data>. * CREAMOS LA TABLA CON LA ESTRUCTURA DINMICA call method cl_alv_table_create=>create_dynamic_table EXPORTING it_fieldcatalog = lt_fieldcatalog IMPORTING ep_table = <fs_data> EXCEPTIONS generate_subpool_dir_full = 1 others = 2. if sy-subrc <> 0. endif. * EN <NEWTAB> TENEMOS NUESTRA ESTRUCTURA DE LA TABLA QUE QUEREMOS assign <fs_data>->* to <newtab>. CREATE DATA new_line LIKE LINE OF <newtab>. ASSIGN new_line->* TO <l_line>. * HEMOS CREADO UNA LNEA DE ESA TABLA PARA IR RECORRIENDO LOS CAMPOS E IR RELLENANDO CON INFORMACIN DATA: NUMCAMPOS TYPE I. NUMCAMPOS = NUM_LOT + 2. DATA: AUX_IT_DATOSLOTES LIKE LINE OF IT_DATOSLOTES, AUX_IT_DATOSLOTES2 LIKE LINE OF IT_DATOSLOTES. * RECORREMOS LA TABLA IMPORTES QUE TENEMOS RELLENADA CON LA INFORMACIN NECESARIA. * POR CADA CENTRO LOGSTICO VAMOS RELLENANDO SUS DIFERENTES LOTES. LOOP AT IT_DATOSLOTES INTO AUX_IT_DATOSLOTES. IF AUX_IT_DATOSLOTES-T_PROV EQ AUX_IT_DATOSLOTES2-T_PROV. CONTINUE. ENDIF. * * LO HACEMOS DOS VECES PORQUE SON 2 COLUMNAS: CENTRO Y NOMBRE DE CENTRO LOG. DO 2 TIMES. * "BAJAMOS" HASTA EL CAMPO QUE SE VA A RELLENAR ASSIGN COMPONENT SY-INDEX OF STRUCTURE <l_line> TO <l_field>. * SI ESTAMOS EN LA PRIMERA COLUMNA -> WERKS IF SY-INDEX EQ 1. <L_FIELD> = AUX_IT_DATOSLOTES-T_PROV. * SI ESTAMOS EN LA SEGUNDA COLUMNA -> NOMBRE DE WERKS ELSEIF SY-INDEX EQ 2. <L_FIELD> = AUX_IT_DATOSLOTES-N_PROV. ENDIF. ENDDO. * RECORREMOS LA TABLA IMPORTES DE ESE CENTRO * Y VAMOS RELLENANDO LOS LOTES DE ESE CENTRO. LOOP AT IT_DATOSLOTES INTO AUX_IT_DATOSLOTES2 WHERE T_PROV EQ AUX_IT_DATOSLOTES-T_PROV. NUMCAMPOS = AUX_IT_DATOSLOTES2-T_LOTE + 2. ASSIGN COMPONENT NUMCAMPOS OF STRUCTURE <L_LINE> TO <L_FIELD>. <L_FIELD> = AUX_IT_DATOSLOTES2-T_IMPORTE. ENDLOOP. * AADIMOS LA LNEA A LA TABLA append <l_line> to <newtab>. CLEAR <L_LINE>. ENDLOOP.

****************EVENTS USED IN ALV * EVENTOS DEL ALV (ORDENACIN, ETC...) CALL FUNCTION 'REUSE_ALV_EVENTS_GET' EXPORTING i_list_type = 0 " 0-simple list, 1-hierarchial list. IMPORTING et_events = i_event. SORT i_event. READ TABLE i_event WITH KEY name = slis_ev_top_of_page "TOP_OF_PAGE event INTO wa_event. * Definimos el layout que va a tener el listado ALV PERFORM carga_layout. * LLAMAMOS AL ALV CON EL TTULO, EL CATLOGO DE CAMPOS Y LA TABLA DINMICA. CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' EXPORTING i_callback_program = 'ZPRMM_INF_PROVLOT' I_GRID_TITLE = TEXT-004 i_callback_user_command = 'USER_COMMAND' * Cargamos el status gui del programa i_callback_pf_status_set = 'PF_STATUS_SET' * Cargamos a la cabecera del alv I_CALLBACK_TOP_OF_PAGE = 'TOP-OF-PAGE' * Cargamos el formato del alv IS_LAYOUT = LAYOUT it_events = i_event IT_FIELDCAT = i_fieldcat * it_sort = it_sortcat * Tabla con el contenido asignado anteriormente TABLES t_outtab = <newtab>. ENDFORM. " carga_fieldcat *&------------------------------------------------ Form carga_layout FORM carga_layout . layout-zebra = 'X'. layout-colwidth_optimize = 'X'. ENDFORM. " carga_layout *-------------------------------------------------------------------------* *&--------------------------------------------------FORM TOP-OF-PAGE

FORM TOP-OF-PAGE. DATA: HEADER TYPE SLIS_T_LISTHEADER, WA TYPE SLIS_LISTHEADER. WA-TYP = 'H'. CONCATENATE TEXT-006 SY-UNAME INTO WA-INFO SEPARATED BY SPACE. APPEND WA TO HEADER. WA-TYP = 'S'. WA-KEY = 'FECHA'. CONCATENATE SY-DATUM+6(2) '/' SY-DATUM+4(2) '/' SY-DATUM(4) INTO WA-INFO. APPEND WA TO HEADER. CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE' EXPORTING IT_LIST_COMMENTARY = HEADER. * I_LOGO = 'ENJOYSAP_LOGO'.

* I_END_OF_LIST_GRID = ENDFORM.

EJEMPLO: * DEFINICION DE TABLAS QUE VA LLEGAR A USAR EL PROGRAMA Tables: ZMMDPOSADJ, ZMMDCABSOL, EBAN, LFA1. TYPE-POOLS: SLIS, SSCR. * Definicin el layout DATA: LAYOUT TYPE SLIS_LAYOUT_ALV. * DEFINICION DE TABLA INTERNA DONDE SACAMOS LOS DATOS DATA: BEGIN OF IT_DATOSLOTES OCCURS 0, T_PROV(10) TYPE C, N_PROV(35) TYPE C, T_LOTE(3) TYPE C, T_IMPORTE LIKE ZMMDPOSADJ-IMPORTE_UNI, END OF IT_DATOSLOTES. * DEFINICION E LA VARIABLE QUE VA A CONTENER EL NUMERO DE COLUMNAS VARIABLES DEL ALV DATA: NUM_LOT TYPE I. * DEFINICION DE LA PANTALLA DE SELECCION DE DATOS PRINCIPAL SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001. SELECT-OPTIONS: S_SOLPED FOR ZMMDPOSADJ-ID_PROPUESTA NO INTERVALS NO-EXTENSION. * PARAMETERS: S_SOLPED LIKE ZMMDPOSADJ-ID_PROPUESTA. SELECTION-SCREEN END OF BLOCK B1. * Creacion del puntero para la asignacion dinamica FIELD-SYMBOLS :<newtab> TYPE table, <l_line> TYPE ANY, <l_field> TYPE ANY.. * Creacion del puntero que usaremos para la asignacion field-symbols: <fs_data> type ref to data. data: lt_data type ref to data. * Definicion de variables donde vamos a llevar los datos data: wa_fieldcat TYPE slis_fieldcat_alv. data: i_fieldcat TYPE slis_t_fieldcat_alv. data: lt_fieldcatalog type lvc_t_fcat. data: ls_fieldcatalog type lvc_s_fcat. * Creacion de una nueva linea de la tabla a mostrar data: new_line TYPE REF TO data.

data: i_event TYPE slis_t_event, wa_event TYPE slis_alv_event. * Creacion de variable para ordenacion de listado data: it_sortcat type slis_sortinfo_alv occurs 1, wa_sort like line of it_sortcat. data: numd LIKE ZMMDPOSADJ-IMPORTE_UNI. data: intr type C. DATA: gt_events TYPE slis_t_event WITH HEADER LINE. * INICIAMOS LA SELECCION DE DATOS START-OF-SELECTION. * HACEMOS UN LLAMAMIENTO A FORM QUE REALIZA LA BUSQUEDA PERFORM comprobar_datos USING S_SOLPED. IF INTR EQ 'X'. MESSAGE I154(ZCSPMM) WITH 'Introduce una solicitud de pedido'. ELSE. PERFORM BUSQUEDA_SOL. ENDIF. *&------------------------------------------------- Form comprobar_datos FORM comprobar_datos USING P_S_SOLPED. clear intr. if P_S_SOLPED EQ ''. intr = 'X'. endif. ENDFORM. " comprobar_datos *&------------------------------------------------- Form BUSQUEDA_SOL FORM BUSQUEDA_SOL. * BORRAMOS LA CABECERA DE DATOS PARA QUE NO SE DUPLIQUEN CLEAR IT_DATOSLOTES. REFRESH IT_DATOSLOTES. ---> refrescamos la tabla * RELLENAMOS LA TABLA INTERNA --> este caso puede valer de ejemplo SELECT * FROM ZMMDPOSADJ WHERE ID_PROPUESTA IN S_SOLPED. IF SY-SUBRC EQ 0. IF ZMMDPOSADJ-PROVEEDOR_SELECC NE ''. MOVE: ZMMDPOSADJ-PROVEEDOR_SELECC TO IT_DATOSLOTES-T_PROV, ZMMDPOSADJ-IMPORTE_UNI TO IT_DATOSLOTES-T_IMPORTE. SELECT SINGLE NAME1 INTO IT_DATOSLOTES-N_PROV FROM LFA1 WHERE LIFNR EQ IT_DATOSLOTES-T_PROV. SELECT SINGLE Z_NLOTE INTO IT_DATOSLOTES-T_LOTE FROM EBAN WHERE BANFN EQ ZMMDPOSADJ-ID_PROPUESTA AND BNFPO EQ ZMMDPOSADJ-BNFPO. COLLECT IT_DATOSLOTES. ENDIF. * hacemos la insercion de los datos, pero sumandolos los proveedores y lotes ENDIF. ENDSELECT.

* ORDENAMOS NUESTRA TABLA INTERNA SORT IT_DATOSLOTES BY T_LOTE. * INICIALIZAMOS EL NUMERO DE LOTES. NUM_LOT = 0. * Actualizamos la variable que cuenta el numero de columnas variables que va a tener el ALV LOOP AT IT_DATOSLOTES. IF IT_DATOSLOTES-T_LOTE GT NUM_LOT. NUM_LOT = IT_DATOSLOTES-T_LOTE. ENDIF. ENDLOOP. * Llamamos al form que se encarga de crear el catalogo de campos del listado ALv PERFORM carga_fieldcat USING IT_DATOSLOTES. ENDFORM. " BUSQUEDA_SOL

*&-------------------------------------------------- Form carga_fieldcat FORM carga_fieldcat USING REFRESH i_fieldcat . CLEAR wa_fieldcat. * Definicin de los campos, en el caso de las columnas fijas se definen como siempre Columna 1 . ls_fieldcatalog-fieldname = 'T_PROV'. append ls_fieldcatalog to lt_fieldcatalog. CLEAR ls_fieldcatalog. wa_fieldcat-tabname = 'IT_DATOSLOTES'. wa_fieldcat-fieldname = 'T_PROV'. wa_fieldcat-key = space. wa_fieldcat-ddictxt = 'L'. wa_fieldcat-seltext_s = wa_fieldcat-seltext_m = wa_fieldcat-seltext_l = TEXT-005. APPEND wa_fieldcat TO i_fieldcat. CLEAR wa_fieldcat. Columna 2 Columna 3 ....... *Ahora vamos a definir las columnas que son variables, nos podemos encontrar que tengamos 0, 1, 5, etc, este numero lo tenemos definidos en la variable creada en la cabecera data: i type c. --> Creamos el contador para la asignacin ordenada de campos data: NOMBRECAMPO TYPE C LENGTH 15. --> creamos la variable que contenga el nombre del campo i = '1'. --> actualizamos el contador a 1 * Creamos tantos campos como numero de variables haya, este proceso lo realizaremos a traves de DO....ENDO do NUM_LOT times. P_IT_DATOSLOTES.

* TEXT-003 --> definido en simbolo de texto como LOTE en este caso * Concatena en nombrecampo el lote correspondiente, ejemplo: LOTE1, LOTE2....LOTEN ********************************************************************************* ***** Definicin del catalogo de la tabla concatenate TEXT-003 i into NOMBRECAMPO. ls_fieldcatalog-fieldname = nombrecampo. ls_fieldcatalog-DATATYPE = 'CURR'. ls_fieldcatalog-DO_SUM = 'X'. * Aadimos el lote al catalogo de la tabla append ls_fieldcatalog to lt_fieldcatalog. ********************************************************************************* ***** Definicin del catalogo del ALV wa_fieldcat-fieldname = ls_fieldcatalog-fieldname. CONCATENATE TEXT-003 I INTO wa_fieldcat-SELTEXT_S. * Descripcion del tipo del campo, en este caso es de tipo moneda para hacer la suma WA_fieldcat-DATATYPE = 'CURR'. * Opcin del ALV, que nos realiza la suma de todas las columnas de forma automatica WA_FIELDCAT-DO_SUM = 'X'. * Aadimos el lote al catalogo del alv append wa_fieldcat to i_fieldcat. ********************************************************************************** * Incrementamos el contador en 1. I = I + 1. * Limpiamos las variables para que no contenga datos de asignaciones anteriores. CLEAR wa_fieldcat. CLEAR ls_fieldcatalog. enddo. * assign lt_data to <fs_data>. * CREAMOS LA TABLA CON LA ESTRUCTURA DINMICA call method cl_alv_table_create=>create_dynamic_table EXPORTING it_fieldcatalog = lt_fieldcatalog IMPORTING ep_table = <fs_data> EXCEPTIONS generate_subpool_dir_full = 1 others = 2. if sy-subrc <> 0. endif. * EN <NEWTAB> TENEMOS NUESTRA ESTRUCTURA DE LA TABLA QUE QUEREMOS assign <fs_data>->* to <newtab>. CREATE DATA new_line LIKE LINE OF <newtab>. ASSIGN new_line->* TO <l_line>. * HEMOS CREADO UNA LNEA DE ESA TABLA PARA IR RECORRIENDO LOS CAMPOS E IR RELLENANDO * CON INFORMACIN DATA: NUMCAMPOS TYPE I.

NUMCAMPOS = NUM_LOT + 2. DATA: AUX_IT_DATOSLOTES LIKE LINE OF IT_DATOSLOTES, AUX_IT_DATOSLOTES2 LIKE LINE OF IT_DATOSLOTES. * RECORREMOS LA TABLA IMPORTES QUE TENEMOS RELLENADA CON LA INFORMACIN NECESARIA. * POR CADA CENTRO LOGSTICO VAMOS RELLENANDO SUS DIFERENTES LOTES. LOOP AT IT_DATOSLOTES INTO AUX_IT_DATOSLOTES. IF AUX_IT_DATOSLOTES-T_PROV EQ AUX_IT_DATOSLOTES2-T_PROV. CONTINUE. ENDIF. * * LO HACEMOS DOS VECES PORQUE SON 2 COLUMNAS: CENTRO Y NOMBRE DE CENTRO LOG. DO 2 TIMES. * "BAJAMOS" HASTA EL CAMPO QUE SE VA A RELLENAR ASSIGN COMPONENT SY-INDEX OF STRUCTURE <l_line> TO <l_field>. * SI ESTAMOS EN LA PRIMERA COLUMNA -> WERKS IF SY-INDEX EQ 1. <L_FIELD> = AUX_IT_DATOSLOTES-T_PROV. * SI ESTAMOS EN LA SEGUNDA COLUMNA -> NOMBRE DE WERKS ELSEIF SY-INDEX EQ 2. <L_FIELD> = AUX_IT_DATOSLOTES-N_PROV. ENDIF. ENDDO. * RECORREMOS LA TABLA IMPORTES DE ESE CENTRO * Y VAMOS RELLENANDO LOS LOTES DE ESE CENTRO. LOOP AT IT_DATOSLOTES INTO AUX_IT_DATOSLOTES2 WHERE T_PROV EQ AUX_IT_DATOSLOTES-T_PROV. NUMCAMPOS = AUX_IT_DATOSLOTES2-T_LOTE + 2. ASSIGN COMPONENT NUMCAMPOS OF STRUCTURE <L_LINE> TO <L_FIELD>. <L_FIELD> = AUX_IT_DATOSLOTES2-T_IMPORTE. ENDLOOP. * AADIMOS LA LNEA A LA TABLA append <l_line> to <newtab>. CLEAR <L_LINE>. ENDLOOP. ****************EVENTS USED IN ALV * EVENTOS DEL ALV (ORDENACIN, ETC...) CALL FUNCTION 'REUSE_ALV_EVENTS_GET' EXPORTING i_list_type = 0 " 0-simple list, 1-hierarchial list. IMPORTING et_events = i_event. SORT i_event. READ TABLE i_event WITH KEY name = slis_ev_top_of_page "TOP_OF_PAGE event INTO wa_event. * Definimos el layout que va a tener el listado ALV PERFORM carga_layout. * LLAMAMOS AL ALV CON EL TTULO, EL CATLOGO DE CAMPOS Y LA TABLA DINMICA. CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' EXPORTING i_callback_program = 'ZPRMM_INF_PROVLOT' I_GRID_TITLE = TEXT-004 i_callback_user_command = 'USER_COMMAND' * Cargamos el status gui del programa

i_callback_pf_status_set = 'PF_STATUS_SET' * Cargamos a la cabecera del alv I_CALLBACK_TOP_OF_PAGE = 'TOP-OF-PAGE' * Cargamos el formato del alv IS_LAYOUT = LAYOUT it_events = i_event IT_FIELDCAT = i_fieldcat * it_sort = it_sortcat * Tabla con el contenido asignado anteriormente TABLES t_outtab = <newtab>. ENDFORM. " carga_fieldcat

*&------------------------------------------------ Form carga_layout FORM carga_layout . layout-zebra = 'X'. layout-colwidth_optimize = 'X'. ENDFORM. " carga_layout *-------------------------------------------------------------------------* *&--------------------------------------------------- FORM TOP-OF-PAGE FORM TOP-OF-PAGE. DATA: HEADER TYPE SLIS_T_LISTHEADER, WA TYPE SLIS_LISTHEADER. WA-TYP = 'H'. CONCATENATE TEXT-006 SY-UNAME INTO WA-INFO SEPARATED BY SPACE. APPEND WA TO HEADER. WA-TYP = 'S'. WA-KEY = 'FECHA'. CONCATENATE SY-DATUM+6(2) '/' SY-DATUM+4(2) '/' SY-DATUM(4) INTO WA-INFO. APPEND WA TO HEADER. CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE' EXPORTING IT_LIST_COMMENTARY = HEADER. * I_LOGO = 'ENJOYSAP_LOGO'. * I_END_OF_LIST_GRID = ENDFORM.

También podría gustarte