PDA

Ver la Versión Completa : Ayuda Urgente Con Reporte


TIN_JD
02/04/08, 16:55:41
Hola Que Tal Compañeros.
Hoyvengo Pidiendo Su Ayuda Porqu El La Vdd Estoy Atorado En Algo, Estoy Haciendo Un Reporte Que Lee Una Tabla Creada En Sap Y Depues La Muestra En Un Avl, Mi Problema Comienza Aqui, La Intencion Es Que Ese Avl Tenga Los Campos Que Se Nececitan Y Aparte Tres De Ellos Son Especiales Dos Son Checks Y Uno Es De Tipo Icono, La Finalidad De Esto Es Que El Usuario Pueda Activar El Check Correspondiente Asu Area Cuando Den Por Pasado Ese Doc Y Asi Al Final El Siguiente Departamento Hara Los Mismo Por Eso El Echo De Que Aya Dos Check Y Eso Determinara El Estatus De El Documento Y Este Sera Reflejado Por Un Icono , Verde Si Estan Los Dos Seleccionados , Amarillo Sie Sta Solo Uno Seleccionado Y Rojo Si Ingno Est Aselccionado,
Y De Ahi S Eespera Que Esos Movimientos Sean Guardados En L Atabla De La Cual Se Sacaron Los Datos, Para Despues Generar Un Batch Input Con Esa Tabla Y Que Solo Carge Los Datos Con El Semaforo En Verde A La Trnsaccion En Donde Se Generan Las Facturas.
Hasta El Momento Ya Tengo La Primera Face Casi Completa A Esepcion De Que Me Acepte El Check Y Estoy Por Empesar La Segunda Face Que Seria El Batch Pero Esto Me Atora Y En Vdd Si Algien Tubiera Algun Tip O Alguna Idea Sera Bien Recibida.

DavidXD_XD
02/04/08, 17:03:26
Hola, lo que haria es trabajar primero con OO para poder utilizar los metodos mas facil ... utilizar el handle_data_changed para poder actualizar los semaforos cada vez q le insertan el check ... y lo que viene despues seria agregar una rutina para filtrar los registros que tienen el semaforo verde y realizar el batch ....

TIN_JD
02/04/08, 17:41:32
Hola, lo que haria es trabajar primero con OO para poder utilizar los metodos mas facil ... utilizar el handle_data_changed para poder actualizar los semaforos cada vez q le insertan el check ... y lo que viene despues seria agregar una rutina para filtrar los registros que tienen el semaforo verde y realizar el batch ....
OYE COMO QUE CON OO, DE LO DEMAS YA LO TENGO SOLUCIONADO SOLO ME FALLA QUE NO ME PERMITE UTILIZAREL CHECK , NO LO PUEDO SELECCIONAO O DESELECCIONAR DE CHO SOLO APARECE Y TODO PERO NO ME DEJA HACER OTRA COSA

DavidXD_XD
02/04/08, 18:59:15
uhm .... tal vez sea una respuesta tonta pero lo colocaste como campo editable y tipo checkbox el campo de check???

vickxo
03/04/08, 08:42:15
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!