#1
|
|||
|
|||
Problema con ALV
Hola familia!
Tengo un problemilla usando la funcion 'REUSE_ALV_GRID_DISPLAY'. El tema es que todo funciona correctamente, pero a la hora de imprimir o previsualizar, el ancho de las columnas se ajusta al mínimo, con lo que cliente se queja de que el listado ocupa menos del ancho del folio impreso . He intentado solucionarlo poniéndole un titulo de cada columna con el ancho que yo quiero que respete, pero la fuinción 'K_KKB_REPTEXT_OPTIMIZE' coge el modo corto del título (10 caracteres), y no sirve de nada. Al crear el ALV ya le he puesto el OUTPUTLEN pero pasa de el a la hora de imprimir. Alguna idea de como fijarle el ancho de columna? Se puede cambiar el mínimo del titulo de columna a más de 10 caracteres?? Eso sería una solución por ahora. Os paso como uso la función: FORM listado_grid TABLES itab_grid "Tabla con datos USING estructura_grid "Estructura a mostrar textogrid1 textogrid2 textogrid3 textogrid4 textogrid5 textogrid6 subr_user_command "Subrutina cuando se pinche variant. g_repid = sy-repid. * gs_layout-detail_popup = 'X'. g_save = 'A'. PERFORM eventtab_build USING gt_events[]. PERFORM comment_build USING gt_list_top_of_page[] textogrid1 textogrid2 textogrid3 textogrid4. PERFORM field_catalog_build TABLES it_fieldcat_lvc. 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 = g_status i_callback_user_command = subr_user_command * I_CALLBACK_TOP_OF_PAGE = * I_CALLBACK_HTML_TOP_OF_PAGE = ' ' * I_CALLBACK_HTML_END_OF_LIST = ' ' i_structure_name = estructura_grid * I_BACKGROUND_ID = ' ' i_grid_title = textogrid5 * I_GRID_SETTINGS = is_layout = layout2 it_fieldcat = it_fieldcat_lvc * IT_EXCLUDING = it_special_groups = it_special_groups_lvc it_sort = it_sort_lvc * IT_FILTER = * IS_SEL_HIDE = * I_DEFAULT = 'X' i_save = g_save is_variant = variant 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 * IT_ALV_GRAPHICS = * IT_ADD_FIELDCAT = * IT_HYPERLINK = * I_HTML_HEIGHT_TOP = * I_HTML_HEIGHT_END = * IT_EXCEPT_QINFO = IMPORTING e_exit_caused_by_caller = g_exit_caused_by_caller es_exit_caused_by_user = gs_exit_caused_by_user TABLES t_outtab = itab_grid EXCEPTIONS program_error = 1 OTHERS = 2 . ENDFORM. "listado_grid *&---------------------------------------------------------------------* *& Form eventtab_build *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * -->P_GT_EVENTS[] text *----------------------------------------------------------------------* FORM eventtab_build USING rt_events TYPE slis_t_event. *"Registration of events to happen during list display DATA: ls_event TYPE slis_alv_event. * CALL FUNCTION 'REUSE_ALV_EVENTS_GET' EXPORTING i_list_type = 0 IMPORTING et_events = rt_events. READ TABLE rt_events WITH KEY name = slis_ev_top_of_page INTO ls_event. IF sy-subrc = 0. MOVE g_top_of_page TO ls_event-form. APPEND ls_event TO rt_events. ENDIF. READ TABLE rt_events WITH KEY name = slis_ev_subtotal_text INTO ls_event. IF sy-subrc = 0. MOVE g_subtotal_text TO ls_event-form. APPEND ls_event TO rt_events. ENDIF. DELETE rt_events WHERE name = slis_ev_top_of_page AND form = ''. ENDFORM. "eventtab_build *&---------------------------------------------------------------------* *& Form comment_build *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * -->P_GT_LIST_TOP_OF_PAGE[] text *----------------------------------------------------------------------* FORM comment_build USING lt_top_of_page TYPE slis_t_listheader textogrid1 textogrid2 textogrid3 textogrid4. DATA: ls_line TYPE slis_listheader. DATA: fecha(10), hora(5). * REFRESH lt_top_of_page. * CLEAR ls_line. IF textogrid1 IS NOT INITIAL. ls_line-typ = 'S'. MOVE textogrid1 TO ls_line-info. APPEND ls_line TO lt_top_of_page. CLEAR ls_line. ENDIF. * IF textogrid2 IS NOT INITIAL. ls_line-typ = 'S'. MOVE textogrid2 TO ls_line-info. APPEND ls_line TO lt_top_of_page. CLEAR ls_line. ENDIF. * IF textogrid3 IS NOT INITIAL. ls_line-typ = 'S'. MOVE textogrid3 TO ls_line-info. APPEND ls_line TO lt_top_of_page. CLEAR ls_line. ENDIF. * IF textogrid4 IS NOT INITIAL. ls_line-typ = 'S'. MOVE textogrid4 TO ls_line-info. APPEND ls_line TO lt_top_of_page. CLEAR ls_line. ENDIF. * ENDFORM. "comment_build *---------------------------------------------------------------------* * FORM TOP_OF_PAGE * *---------------------------------------------------------------------* * ........ * *---------------------------------------------------------------------* FORM top_of_page. "#EC CALLED CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE' EXPORTING it_list_commentary = gt_list_top_of_page. ENDFORM. "top_of_page *&---------------------------------------------------------------------* *& Form field_catalog_build *&---------------------------------------------------------------------* FORM field_catalog_build TABLES p_fieldcat TYPE slis_t_fieldcat_alv. CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE' EXPORTING I_STRUCTURE_NAME = 'ZTRANSF' CHANGING ct_fieldcat = p_fieldcat[]. LOOP AT p_fieldcat. CASE p_fieldcat-fieldname. WHEN 'LIFNR_ACUM'. p_fieldcat-seltext_s = 'Proveedor'. p_fieldcat-seltext_m = 'Proveedor'. p_fieldcat-seltext_l = 'Proveedor'. WHEN 'STCD1'. p_fieldcat-seltext_s = 'NºId.Fis.1'. p_fieldcat-seltext_m = 'Nº Id. Fiscal 1'. p_fieldcat-seltext_l = 'Nº Id. Fiscal 1'. p_fieldcat-outputlen = 30. WHEN 'CCC'. p_fieldcat-seltext_s = 'C/C Proveedor'. p_fieldcat-seltext_m = 'C/C Proveedor'. p_fieldcat-seltext_l = 'C/C Proveedor'. p_fieldcat-outputlen = 30. WHEN 'NAME1'. p_fieldcat-seltext_s = 'Proveedor'. p_fieldcat-seltext_m = 'Proveedor'. p_fieldcat-seltext_l = 'Proveedor'. p_fieldcat-outputlen = 40. WHEN 'XBLNR'. p_fieldcat-seltext_s = 'Nº Fra.'. p_fieldcat-seltext_m = 'Nº Fra.'. p_fieldcat-seltext_l = 'Nº Fra.'. p_fieldcat-reptext_ddic = 'Nº Fra.'. p_fieldcat-outputlen = 20. WHEN 'LIFNR'. p_fieldcat-seltext_s = 'Proveedor'. p_fieldcat-seltext_m = 'Proveedor'. p_fieldcat-seltext_l = 'Proveedor'. WHEN 'WRBTR'. p_fieldcat-seltext_s = 'Importe'. p_fieldcat-seltext_m = 'Importe'. p_fieldcat-seltext_l = 'Importe'. p_fieldcat-outputlen = 13. WHEN 'WAERS'. p_fieldcat-seltext_s = 'Moneda'. p_fieldcat-seltext_m = 'Moneda'. p_fieldcat-seltext_l = 'Moneda'. p_fieldcat-outputlen = 6. WHEN 'GSBER'. p_fieldcat-seltext_s = 'Hotel'. p_fieldcat-seltext_m = 'Hotel'. p_fieldcat-seltext_l = 'Hotel'. p_fieldcat-outputlen = 40. ENDCASE. MODIFY p_fieldcat. ENDLOOP. ENDFORM. "field_catalog_build Muchas gracias!!!! |
#2
|
|||
|
|||
Hola buenas.
A mi me pasaba lo mismo. Yo lo solucioné de la siguiente manera: Al rellenar el FIELDCAT añadí lo siguiente a cada campo que quería que me sacase en el ALV: Entre las comillas va el texto que quieres meter GT_filedcat-seltext_l = ' ' GT_filedcat-seltext_m = ' ' GT_filedcat-seltext_s = ' ' GT_filedcat-reptext_ddcic = ' ' GT_filedcat-ddictxt = 'M' Después en el form donde pones el código para visualizar la ALV puse lo siguiente: gs_layout-colwidth_optimize = 'X' y luego haces la call function Espero que te sirva Un saludo |
Herramientas | Buscar en Tema |
Desplegado | |
|
|