|
#1
|
|||
|
|||
Hola, una vez q le hayas no es tan complicado ...
Mira, son varias cosas
1. La tabla interna q manejas en el ALV tiene que tene runa estructura parecida a esta: DATA: BEGIN OF it_report OCCURS 0, icono TYPE icon-id, "Semaforo lights, "Semaforo check(1), "Check box ... END OF it_report. Icono y lights es la q maneja los colores, check es donde le das 2. Hacer q se vea como un semaforo FORM fill_layout USING e05_ls_layout TYPE slis_layout_alv. ** e05_ls_layout-f2code = '&ETA'. e05_ls_layout-zebra = 'X'. e05_ls_layout-colwidth_optimize = 'X'. e05_ls_layout-no_min_linesize = 'X'. e05_ls_layout-cell_merge = ''. e05_ls_layout-box_fieldname = 'ICONO'. e05_ls_layout-no_input = ''. e05_ls_layout-no_vline = ''. e05_ls_layout-no_colhead = ''. e05_ls_layout-lights_fieldname = 'LIGHTS'. e05_ls_layout-lights_condense = 'X'. e05_ls_layout-totals_text = ''. e05_ls_layout-subtotals_text = ''. e05_ls_layout-totals_only = ''. e05_ls_layout-key_hotspot = ''. e05_ls_layout-detail_popup = 'X'. e05_ls_layout-group_change_edit = ''. e05_ls_layout-group_buttons = space. ENDFORM. " FILL_LAYOUT 3. Actualizar ALV, yo lo hago con reuse... FORM call_function. DATA : li_grid_setting TYPE lvc_s_glay. li_grid_setting-edt_cll_cb = 'X'. CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' EXPORTING i_callback_program = 'ZFI_CARGA_MERCANCIAS' is_layout = gs_layout it_fieldcat = ct_fieldcat i_save = g_save is_variant = g_variant it_events = gt_events[] i_callback_user_command = 'USER_COMMAND' it_sort = gt_sort[] i_callback_pf_status_set = 'ALV_STATUS' i_grid_settings = li_grid_setting IMPORTING e_exit_caused_by_caller = g_exit_caused_by_caller es_exit_caused_by_user = gs_exit_caused_by_user TABLES t_outtab = it_report EXCEPTIONS program_error = 1 OTHERS = 2. IF sy-subrc = 0. IF g_exit_caused_by_caller = 'X'. ELSE. IF gs_exit_caused_by_user-back = 'X'. "F3 ELSE. IF gs_exit_caused_by_user-exit = 'X'. "F15 ELSE. IF gs_exit_caused_by_user-cancel = 'X'. "F12 ELSE. ENDIF. ENDIF. ENDIF. ENDIF. ELSE. ENDIF. ENDFORM. " CALL_FUNCTION 4. Editar el check ... FORM modif_catalog. DATA: temp_fieldcat TYPE slis_fieldcat_alv OCCURS 0 WITH HEADER LINE. LOOP AT ct_fieldcat INTO temp_fieldcat. CASE temp_fieldcat-fieldname. WHEN 'ICONO'. temp_fieldcat-no_out = 'X'. WHEN 'CHECK'. temp_fieldcat-checkbox = 'X'. temp_fieldcat-edit = 'X'. temp_fieldcat-outputlen = 1. temp_fieldcat-col_pos = 2. WHEN 'BLDAT'. temp_fieldcat-no_out = 'X'. .... endcase y balblabla. endform modif... Para irlo manejando, usas esto: IF wa_fichero-indi = 'X'. wa_report-lights = '1'. ENDIF. IF wa_fichero-indi = 'Y'. wa_report-lights = '2'. ENDIF. IF wa_fichero-indi = space. wa_report-lights = '3'. indi, es una variable que yo cargo en base a unas validaciones q hago, el uno carga el color rojo, el 2 el amarillo y el 3 el verde...bueno igual y es 3 rojo pero no lo recuerdo bien ya... Lo q si es bartante relevante es q en tu user_comando tengas esto: FORM user_command USING r_ucomm LIKE sy-ucomm rs_selfield TYPE slis_selfield. DATA: w_answer TYPE c. rs_selfield-refresh = 'X'. "Esto es lo q le da vida a tu ALV CASE r_ucomm. WHEN 'EXEC'. ... LOOP AT it_report INTO wa_report WHERE check = 'X' AND lights = 3. "Aqui es donde puedo procesar las marcas y con semaforo verde mas choro.... enform Para hacer editable tu check pueba con poner ese campo como editable.......y si no pos haber se podemos hacer vale, saludos! Supongo yo q con solo darle edit a los dos check ya tendrias puerta abierta para tratarlo...en mi caso solo use un check... Nota: En OO se puede sin embargo no considero pertinente usar OO si la solucuon estructurada es factible y facil de implementar. Usaria OO para arboles o poner dos ALV en la misma pantalla, etc Usario OO para desarrollos q sean dificiles de visualizar con estructurado. Dos ALV en la misma pantalla no me imagino q lio te generarian en un codigo estructurado :s!
__________________
el tema esta en hacer la pregunta correcta... Úlima edición por vickxo fecha: 03/04/08 a las 09:26:12. |
Herramientas | Buscar en Tema |
Desplegado | |
|
|