#1
|
|||
|
|||
Como se añaden botones al status de una alv??
He probado copiandome el status standard y modificandolo y añadiendo esto
, pero no me visualiza los nuevos botones que me creo en el status nuevo CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' EXPORTING * I_INTERFACE_CHECK = ' ' * I_BYPASSING_BUFFER = I_BUFFER_ACTIVE = 'X' I_CALLBACK_PROGRAM = g_repid I_CALLBACK_PF_STATUS_SET = 'SET_PF_STATUS' I_CALLBACK_USER_COMMAND = 'USER_COMMAND' * I_STRUCTURE_NAME = IS_LAYOUT = gs_layout IT_FIELDCAT = gt_fieldcat[] FORM user_command USING r_ucomm LIKE sy-ucomm rs_selfield TYPE slis_selfield. DATA: li_count TYPE I. IF r_ucomm EQ '%ADD'. * LOOP AT %g00 WHERE mark EQ 'X'. * ADD 1 TO li_count. * ENDLOOP. * IF li_count GT 0. * gc_delete_flag = 'X'. * r_ucomm = '&F03'. "Back arraow * ELSE. * MESSAGE W000 WITH 'Please highlight the rows to be deleted!'. * ENDIF. ENDIF. ENDFORM. "User_command ***************************************** FORM set_pf_status USING rt_extab TYPE slis_t_extab. SET PF-STATUS 'ZSTANDARD' excluding rt_extab. ENDFORM. "Set_pf_status |
#2
|
|||
|
|||
Buenas,
Te debería de ir si tienes el status creado,activo, etc y la llamada a la función alv tal como dices. De todas formas, te mando aquí un programa de prueba que tuve que hacer, y si que sale, ya me dices, * 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, * marca(1) type c. xmark(1) TYPE c. INCLUDE STRUCTURE /bic/pfm_munici. TYPES: END OF st_output. DATA: gt_slis_t_fieldcat_alv TYPE slis_t_fieldcat_alv. DATA: gt_line TYPE STANDARD TABLE OF st_output WITH HEADER LINE. DATA: BEGIN OF i_muni OCCURS 0. * mark type c. INCLUDE STRUCTURE /bic/pfm_munici. DATA: END OF i_muni. 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 * set pf-status 'ZNUEVO'. PERFORM listado. loop at gt_line. write: 'Actualizado'. write: /. endloop. *&&-----------------------------------------------------------------&&* * 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 = '/BIC/FM_MUNICI'. gt_fieldcat-ref_tabname = '/BIC/PFM_MUNICI'. APPEND gt_fieldcat. CLEAR gt_fieldcat. gt_fieldcat-fieldname = '/BIC/FM_COMARC'. gt_fieldcat-ref_tabname = '/BIC/PFM_MUNICI'. APPEND gt_fieldcat. CLEAR gt_fieldcat. gt_fieldcat-fieldname = 'COUNTRY'. gt_fieldcat-ref_tabname = '/BIC/PFM_MUNICI'. APPEND gt_fieldcat. CLEAR gt_fieldcat. gt_fieldcat-fieldname = 'REGION'. gt_fieldcat-ref_tabname = '/BIC/PFM_MUNICI'. 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. "init_fieldcat *---------------------------------------------------------------------* * FORM INIT_LAYOUT * *---------------------------------------------------------------------* FORM init_layout. * Mediante esta estructura podemos definir el formato de salida gs_layout-zebra = 'X'. * Queremos que aparezca con marcador, para poder seleccionar las líneas gs_layout-box_tabname = 'GT_LINE'. gs_layout-box_fieldname = 'XMARK'. gs_layout-f2code = '&ETA'. gs_layout-detail_popup = 'X'. ENDFORM. "init_layout *---------------------------------------------------------------------* * FORM TOMA_DATOS * *---------------------------------------------------------------------* FORM toma_datos. * Los datos deben guardarse en la tabla interna de salida SELECT * FROM /bic/pfm_munici UP TO 100 ROWS INTO CORRESPONDING FIELDS OF TABLE gt_line. ENDFORM. " TOMA_DATOS *---------------------------------------------------------------------* * FORM LISTADO * *---------------------------------------------------------------------* FORM listado. CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' EXPORTING * I_INTERFACE_CHECK = ' ' * I_BYPASSING_BUFFER = ' ' * I_BUFFER_ACTIVE = ' ' i_callback_program = g_repid i_callback_pf_status_set = 'STATUS_SET' i_callback_user_command = 'USER_COMMAND ' * I_CALLBACK_TOP_OF_PAGE = ' ' * I_CALLBACK_HTML_TOP_OF_PAGE = ' ' * I_CALLBACK_HTML_END_OF_LIST = ' ' * I_STRUCTURE_NAME = * I_BACKGROUND_ID = ' ' * I_GRID_TITLE = * I_GRID_SETTINGS = 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 * I_HTML_HEIGHT_TOP = 0 * I_HTML_HEIGHT_END = 0 * IT_ALV_GRAPHICS = * IT_HYPERLINK = * IT_ADD_FIELDCAT = * IT_EXCEPT_QINFO = * IR_SALV_FULLSCREEN_ADAPTER = * IMPORTING * E_EXIT_CAUSED_BY_CALLER = * ES_EXIT_CAUSED_BY_USER = TABLES t_outtab = gt_line 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 F_USER_COMMAND * *--------------------------------------------------------------------- * * Podemos controlar todos los user_command activados por el usuario * *--------------------------------------------------------------------- * * --> L_UCOMM * * --> L_SELFIELD * *--------------------------------------------------------------------- * FORM user_command USING l_ucomm LIKE sy-ucomm l_selfield TYPE slis_selfield. READ TABLE gt_line INDEX l_selfield-tabindex. CASE l_ucomm. WHEN 'TEST'. write: 'Municipio-----'. write: /. when 'LOG'. leave to list-processing. loop at gt_line. if gt_line-xmark ne space. write: 'Actualizado'. write: /. endif. endloop. * PERFORM listado. ENDCASE. . ENDFORM. "user_command *--------------------------------------------------------------------- * * FORM status_set * *--------------------------------------------------------------------- * * Podemos definir nuestro PF-STATUS. Incluso podemos aprovechar el * que nos da el ALV y añadir los que nos interese, o eliminar aquellos * del ALV que no nos interesen *--------------------------------------------------------------------- * * --> RT_EXTAB * *--------------------------------------------------------------------- * FORM status_set USING rt_extab TYPE slis_t_extab. DATA: l_status(20) TYPE c. SET PF-STATUS 'ZNUEVO'. ENDFORM. "status_set |
Herramientas | Buscar en Tema |
Desplegado | |
|
|