Comparación de sistemas
Hola, estoy empezando a aprender SAP y me encomendaron averiguar si existe alguna transacción, programa u opción que permita comparar dos sistemas o mandates. ¿Alguien me puede ayudar? :confused:
|
|
Gracias por el código. Intente probarlo, pero al momento de activar el programa lanza errores de sintaxis XD.
Saludos |
El error es sobre el INCLUDE zialv ?
|
Ups :o fallo muy se olvidaban los includes.
Creo que son estos ************************************************************************ * * INCLUDE ZICONTADOR * * DESCRIPCIÓN: Este include tiene variables y performs utiles para * mostrar por pantalla un contador de tiempo durante la ejecución de * los programas * * MÓDULO AL QUE PERTENECE: BC * * AUTOR: Ignacio Arnaiz Piorno FECHA: 27-10-2004 * CONTACTA CONMIGO : * * ---------------------------------------------------------------------- * CONTROL DE MODIFICACIONES * AUTOR EMPRESA FECHA MOTIVO * .......... ....... DD/MM/AA ................................ * .......... ....... DD/MM/AA ................................ *----------------------------------------------------------------------- ************************************************************************ INCLUDE ZICONTADOR. ************************************************************************ * INCLUDES ************************************************************************ ************************************************************************ * Definición de variables ************************************************************************ DATA d_max TYPE i. " Nº Máximo de llamadas DATA d_tabix LIKE sy-tabix. " Nº de llamada actual DATA d_ant LIKE d_max " Porcentaje que se dibujó en la anterior . " llamada DATA d_texto_indicador(1000) TYPE c. ************************************************************************ * Definición de macros ************************************************************************ *-- Macro para iniciar un loop *-- &1 - Nombre de la tabla interna DEFINE loop_at. perform indicador_de_progreso_max tables &1. loop at &1. if not sy-tabix is initial and not sy-tabix = 1. d_tabix = sy-tabix. else. d_tabix = sy-index. endif. END-OF-DEFINITION. *-- Macro para finalizar un loop mostrando un indicador de progreso con * un texto (pueden ser hasta 5 textos que se concatenaran). *-- &1 - Texto 1 a mostrar *-- &2 - Texto 2 a mostrar *-- &3 - Texto 3 a mostrar *-- &4 - Texto 4 a mostrar *-- &5 - Texto 5 a mostrar DEFINE endloop_at. concatenate &1 &2 &3 &4 &5 into d_texto_indicador separated by space. perform indicador_de_progreso_de_loop using d_texto_indicador. endloop. END-OF-DEFINITION. *&--------------------------------------------------------------------* *& Form indicador_de_progreso *&--------------------------------------------------------------------* * Muestra el indicador de progreso del sapgui en el estado * P_PERCENT (Porcentaje del proceso) y con el texto P_TEXTO que * se elija. *---------------------------------------------------------------------* FORM indicador_de_progreso USING p_percent p_texto. IF sy-batch IS INITIAL. CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR' EXPORTING percentage = p_percent text = p_texto. ENDIF. ENDFORM. " indicador_de_progreso *&--------------------------------------------------------------------* *& Form indicador_de_progreso_de_loop *&--------------------------------------------------------------------* * Muestra el porcentaje que ocurrencias de una tabla interna que * ya se han procesado mediante un loop mostrando el texto P_TEXTO * Este form se utilizará mediante la macro ENDLOOP_AT para mostrar * un texto y el porcentaje de ocurrencias realizado al final de * un loop. *---------------------------------------------------------------------* FORM indicador_de_progreso_de_loop USING p_texto. DATA l_porcentaje TYPE i. DATA l_resto LIKE l_porcentaje. IF NOT d_max IS INITIAL. IF d_tabix <> 1. l_porcentaje = ( d_tabix * 100 ) / d_max. ENDIF. IF d_max < 1000. l_resto = l_porcentaje MOD 10. ENDIF. IF l_resto IS INITIAL AND NOT l_porcentaje = d_ant. PERFORM indicador_de_progreso USING l_porcentaje p_texto. d_ant = l_porcentaje. ENDIF. ENDIF. ENDFORM. " indicador_de_progreso_de_loop *&--------------------------------------------------------------------* *& Form indicador_de_progreso_max *&--------------------------------------------------------------------* * Lee la cantidad de entradas de una tabla y recoge el tamaño * máximo. Este perform se usa mediante la macro LOOP_AT para * posteriormente calcular el porcentaje que ocurrencias de una * tabla interna que ya se han procesado con un loop. *---------------------------------------------------------------------* * -->P_TABLE text *---------------------------------------------------------------------* FORM indicador_de_progreso_max TABLES p_table. DESCRIBE TABLE p_table LINES d_max. ENDFORM. " indicador_de_progreso_max |
y el otro es:
************************************************************************ * * INCLUDE ZIALV * * DESCRIPCIÓN: Tipos, variables, constantes y forms para trabajo * con ALV's * * INSTRUCCIONES: Sera obligatorio para un correcto funcionamiento de la * libreria añadir al codigo del report un form llamado USER_COMMAND * creado con la estructura del existente comentado al final de este * include. * * Además será obligatorio tambien añadir al codigo del report un form * llamado LAYOUT creado con la estructura del existente comentado al * final de este include. * * Si se cumple todo esto, simplemente habra que llamar al form * ALV_MOSTRAR_INFORME pasandole como parametros la tabla a mostrar y el * nombre de la estructura de dicha tabla, estructura que debera ser del * diccionario de datos, no definida en el codigo del listado, ademas se * le pasará una constante que podrá tener dos valores. * - C_TIPO_ALV <- Si queremos modo grid * - C_TIPO_LIST <- Si queremos modo listado * * Si se prefiere podrá crearse el catalogo de campos manualmente * rellenando la estructura GT_FIELDCAT aunque es la opción menos * recomendada, en este caso el parametro P_STRUCT de * ALV_MOSTRAR_INFORME se pasará en blanco. * * Permite añadir lineas a la cabecera mediante el uso del form * ALV_RELLENAR_CABECERA pasandole los textos y los tres modos de * texto en la cabecera, a saber: (SOLO FUNCIONA EN MODO GRID) * - C_TIPO_GRANDE * - C_TIPO_MEDIANO * - C_TIPO_PEQUEÑO * * Ademas es posible mostrar un logo por pantalla, para ello es * necesario usar el form ALV_ASIGNAR_LOGO pasandole el nombre del * logo que previamente se habrá creado siguiendo lo siguientes pasos: * (SOLO FUNCIONA EN MODO GRID) * PASOS PARA SUBIR LOGO: * * 1. Ir a la transcción OAER * * 2. En el nombre de clase, pon 'PICTURES' * * 3. El tipo de clase es 'OT' * * 4. En el "object key" introduce el nombre que le quieres dar al * logo. * * 5. Ejecuta * * 6. En la siguiente pantalla seleciona documento standard. Pincha * sobre el incono de pantalla y entonces te preguntará por el * nombre del fichero que vas a subir. * * La librería tambien permite añadir rutinas a los distintos eventos que * el programador desee asignandole al nombre del evento el nombre de una * form mediante la funcion ALV_EVENTS. * * EJEMPLO DE USO: * * END-OF-SELECTION. * ** Preparamos los eventos: * PERFORM alv_events. * ** Excluimos codigos para status * PERFORM alv_excluir_codigo USING 'CODE'. ** Con esta linea activaremos nuestro status personal, caso de no ** reellenar esta linea o rellenarla con el status en blanco mostraria ** el status standar * PERFORM alv_aniadir_status USING 'STANDARD_FULLSCREEN'.* ** Se pueden insertar tantas lineas como se deseen en el encabezado. * PERFORM alv_rellenar_cabecera USING 'TITULO 1' * 'TITULO 2' * c_tipo_grande. * ** Asignamos codigo a los eventos que queramos ejecutar (TOP-OF-PAGE) * PERFORM alv_rellenar_eventos * USING * 'USER_COMMAND' <-Nombre evento * 'USER_COMMAND'. <-Nombre form para evento * PERFORM alv_rellenar_eventos * USING * 'TOP-OF-PAGE' * c_form_cabecera. * PERFORM alv_asignar_logo * USING * 'ZLOGOSUBIDO'. * ** Mostramos el listado * PERFORM alv_mostrar_informe TABLES i_listado * USING 'ZSTR_LISTADO' * c_tipo_alv. * * AUTOR: Ignacio Arnaiz Piorno FECHA: 06-03-2005 * CONTACTO: * * ---------------------------------------------------------------------- * CONTROL DE MODIFICACIONES * AUTOR EMPRESA FECHA MOTIVO * .......... ....... DD/MM/AA ................................ * .......... ....... DD/MM/AA ................................ *----------------------------------------------------------------------- ************************************************************************ ************************************************************************ * Definición de tipos ************************************************************************ TYPE-POOLS: slis. ************************************************************************ * Definición de constantes ************************************************************************ CONSTANTS: c_click LIKE sy-ucomm VALUE '&IC1', " Codigo del doble click c_struct(50) TYPE c VALUE '', c_pf_status_set TYPE slis_formname VALUE 'ALV_SET_STATUS', c_user_command TYPE slis_formname VALUE 'USER_COMMAND', c_layout TYPE slis_formname VALUE 'LAYOUT', c_a(1) TYPE c VALUE 'A', c_xselp(5) TYPE c VALUE 'XSELP', c_marked TYPE c VALUE 'X', c_form_cabecera TYPE slis_formname VALUE 'ALV_CABECERA', c_tipo_grande TYPE c VALUE 'H', c_tipo_mediano TYPE c VALUE 'S', c_tipo_pequeno TYPE c VALUE 'A', c_tipo_alv TYPE c VALUE '1', c_tipo_list TYPE c VALUE '2'. ************************************************************************ * Definición de variables ************************************************************************ ************************************************************************ * Definición de estructuras ************************************************************************ DATA: x_structure LIKE dd02l-tabname. "SAP Table DATA: x_header LIKE dd02l-tabname. "SAP Table DATA: x_item LIKE dd02l-tabname. "SAP Table DATA: gt_layout TYPE slis_layout_alv. DATA: gt_variant LIKE disvariant. DATA: gt_list_top_of_page TYPE slis_t_listheader. DATA: gt_fieldcat TYPE slis_t_fieldcat_alv. DATA: gt_fieldcat_hd LIKE LINE OF gt_fieldcat. DATA: gt_events TYPE slis_t_event . DATA: gt_okcodes_a_excluir TYPE slis_extab OCCURS 0 WITH HEADER LINE. DATA: d_logo(1000) TYPE c. DATA: d_status LIKE c_pf_status_set. * Relacion entre los datos de cabecera y posicion DATA: gt_key TYPE slis_keyinfo_alv. DATA d_alv_status LIKE c_pf_status_set. ************************************************************************ * * FORMS ADICIONALES * ************************************************************************ *---------------------------------------------------------------------* * FORM alv_excluir_codigo * *---------------------------------------------------------------------* * Una vez que se lance el ALV con un STATUS cualquiera definido * por el usuario (o bien el standar) el codigo P_CODIGO será * omitido, y por tanto no se dibujará el botón asociado a él. *---------------------------------------------------------------------* FORM alv_excluir_codigo USING p_codigo. DATA lt_okcodes_a_excluir TYPE slis_extab. lt_okcodes_a_excluir-fcode = p_codigo. APPEND lt_okcodes_a_excluir TO gt_okcodes_a_excluir. SORT gt_okcodes_a_excluir. DELETE ADJACENT DUPLICATES FROM gt_okcodes_a_excluir. ENDFORM. *&---------------------------------------------------------------------* *& Form alv_mostrar_informe *&---------------------------------------------------------------------* * Se utilizará en el programa una vez que se haya rellenado todo * lo necesario para lanzar el listado de la tabla P_OUTPUT. * P_TIPO será igual a C_TIPO_ALV si se quiere lanzar el ALV en * modo GRID en caso de preferirlo en modo lista se pasará este * parametro igual a C_TIPO_LIST. * P_STRUCT será el nombre de una estructura del diccionario de * la que tomar la estructura de salida del listado. En caso de * pasarlo en blanco habrá que haber creado con anterioridad un * catalogo de campos bien con el perform ALV_CATALOGO o bien * añadiendo directamente los campos al catalogo gt_fieldcat[]. *----------------------------------------------------------------------* FORM alv_mostrar_informe TABLES p_output USING p_struct p_tipo. DATA l_struct LIKE c_struct. l_struct = p_struct. * Damos forma al informe PERFORM (c_layout) IN PROGRAM (sy-cprog). PERFORM alv_show_report TABLES p_output USING l_struct p_tipo. ENDFORM. " alv_mostrar_informe * *&--------------------------------------------------------------------* *& Form alv_mostrar_informe_jerarquico *&--------------------------------------------------------------------* * REDEFINIR CUANDO SE USE *---------------------------------------------------------------------* FORM alv_mostrar_informe_jerarquico TABLES i_header i_item USING p_header p_item1 p_key1 p_key2 p_key3 p_key4 p_key5. ENDFORM. " alv_mostrar_informe_jerarquico *&---------------------------------------------------------------------* *& Form alv_catalogo *&---------------------------------------------------------------------* * Inicializa el catalogo de campos gt_fieldcat[] añadiendole * todos los campos de la estructura del diccionario P_ESTRUCTURA *----------------------------------------------------------------------* * -->P_C_ESTRUCTURA_LISTADO text *----------------------------------------------------------------------* FORM alv_catalogo USING p_estructura. REFRESH gt_fieldcat. DATA l_estructura LIKE dd02l-tabname. l_estructura = p_estructura. CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE' EXPORTING i_structure_name = l_estructura i_client_never_display = 'X' CHANGING ct_fieldcat = gt_fieldcat[]. LOOP AT gt_fieldcat INTO gt_fieldcat_hd WHERE seltext_l IS initial AND seltext_m IS initial AND seltext_s IS initial. SELECT SINGLE ddtext INTO gt_fieldcat_hd-seltext_l FROM dd03t WHERE tabname = l_estructura AND ddlanguage = sy-langu AND fieldname = gt_fieldcat_hd-fieldname. gt_fieldcat_hd-seltext_m = gt_fieldcat_hd-seltext_l. gt_fieldcat_hd-seltext_s = gt_fieldcat_hd-seltext_l. MODIFY gt_fieldcat FROM gt_fieldcat_hd. ENDLOOP. ENDFORM. " alv_catalogo *&---------------------------------------------------------------------* *& Form alv_set_status *&---------------------------------------------------------------------* * Inicializa el status *----------------------------------------------------------------------* * -->P_C_ESTRUCTURA_LISTADO text *----------------------------------------------------------------------* FORM alv_set_status USING p_estructura. SET PF-STATUS d_alv_status EXCLUDING gt_okcodes_a_excluir. ENDFORM. " alv_set_status *&---------------------------------------------------------------------* *& Form alv_show_report *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM alv_show_report TABLES p_output USING p_struct LIKE c_struct p_tipo. * Define local data DATA: v_repid LIKE sy-repid. DATA l_form_cabecera LIKE c_form_cabecera. v_repid = sy-repid. x_structure = p_struct. * Check that our selection retrieves any result IF p_output[] IS INITIAL. MESSAGE i038(001) WITH 'No se mostrara la tabla porque esta vacia'. ELSE. IF NOT p_struct IS INITIAL. PERFORM alv_catalogo USING p_struct. ENDIF. IF NOT gt_layout-box_fieldname IS INITIAL. DELETE gt_fieldcat WHERE fieldname = gt_layout-box_fieldname. ENDIF. IF NOT d_alv_status IS INITIAL AND NOT gt_events[] IS INITIAL. PERFORM alv_rellenar_eventos USING 'PF_STATUS_SET' c_pf_status_set. ENDIF. IF gt_list_top_of_page[] IS INITIAL. CLEAR l_form_cabecera. ELSE. l_form_cabecera = c_form_cabecera. ENDIF. CASE p_tipo. WHEN c_tipo_alv. * Visualice the list with a standard function CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' EXPORTING i_callback_program = v_repid * i_callback_pf_status_set = d_alv_status * i_callback_user_command = c_user_command i_callback_top_of_page = l_form_cabecera * i_structure_name = x_structure is_layout = gt_layout i_save = c_a it_events = gt_events it_fieldcat = gt_fieldcat TABLES t_outtab = p_output. WHEN c_tipo_list. * Visualice the list with a standard function CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY' EXPORTING i_callback_program = v_repid * i_callback_pf_status_set = d_alv_status * i_callback_user_command = c_user_command * i_callback_top_of_page = l_form_cabecera * i_structure_name = x_structure is_layout = gt_layout i_save = c_a it_events = gt_events it_fieldcat = gt_fieldcat TABLES t_outtab = p_output. ENDCASE. ENDIF. ENDFORM. " alv_show_report *---------------------------------------------------------------------* * FORM ALV_ANIADIR_STATUS * *---------------------------------------------------------------------* * ........ * *---------------------------------------------------------------------* * --> P_STATUS * *---------------------------------------------------------------------* FORM alv_aniadir_status USING p_status. d_alv_status = p_status. ENDFORM. *&---------------------------------------------------------------------* *& Form alv_cabecera *&---------------------------------------------------------------------* * MUESTRA LA CABECERA *----------------------------------------------------------------------* FORM alv_cabecera. IF NOT gt_list_top_of_page IS INITIAL OR NOT d_logo IS INITIAL. CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE' EXPORTING it_list_commentary = gt_list_top_of_page i_logo = d_logo i_end_of_list_grid = ''. ENDIF. ENDFORM. " alv_cabecera *&---------------------------------------------------------------------* *& Form alv_rellenar_eventos *&---------------------------------------------------------------------* * ASIGNA UN FORM A UN EVENTO A EJECUTAR *----------------------------------------------------------------------* * --> NOMBRE DEL EVENTO * --> NOMBRE DEL FORM PARA DICHO EVENTO *----------------------------------------------------------------------* FORM alv_rellenar_eventos USING p_nombre_evento p_form_para_evento. DATA: ls_event TYPE slis_alv_event. * Rutina que controlará el status GUI READ TABLE gt_events WITH KEY name = p_nombre_evento INTO ls_event. IF sy-subrc = 0. MOVE p_form_para_evento TO ls_event-form. MODIFY gt_events FROM ls_event TRANSPORTING form WHERE name = p_nombre_evento. ELSE. MESSAGE e000(01) WITH 'Error en el form alv_rellenar_eventos.' 'No existe el evento' p_nombre_evento '.'. ENDIF. ENDFORM. " rellenar_eventos *&---------------------------------------------------------------------* *& Form ALV_RELLENAR_CABECERA *&---------------------------------------------------------------------* * Rellena una linea de la cabecera *----------------------------------------------------------------------* * -->P_GT_LIST_TOP_OF_PAGE text *----------------------------------------------------------------------* FORM alv_rellenar_cabecera USING p_texto_negrita p_texto_normal p_tipo. DATA: ls_line TYPE slis_listheader. CLEAR:ls_line. ls_line-key = p_texto_negrita. ls_line-typ = p_tipo. ls_line-info = p_texto_normal. APPEND ls_line TO gt_list_top_of_page. ENDFORM. " ALV_RELLENAR_CABECERA *---------------------------------------------------------------------* * FORM alv_asignar_logo * *---------------------------------------------------------------------* * Rellena el logo que queremos que se muestre por pantalla * *---------------------------------------------------------------------* * --> P_LOGO Logo a cargar * *---------------------------------------------------------------------* FORM alv_asignar_logo USING p_logo. d_logo = p_logo. ENDFORM. " alv_asignar_logo *&---------------------------------------------------------------------* *& Form alv_events *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* FORM alv_events. DATA: le_event TYPE slis_alv_event. REFRESH gt_events. CALL FUNCTION 'REUSE_ALV_EVENTS_GET' EXPORTING i_list_type = 0 IMPORTING et_events = gt_events. ENDFORM. " alv_alv_events |
Gracias por los includes, pero nuevamente hay problemas de sintaxis:
Program ZRCHKSPRO 248 Field "ICON_TREE" is unknown. It is neither in one of the specified tables nor defined by a "DATA" statement . . . . . . . . . . Saludos |
Vaya perdona, parece que falla más que una escopeta de feria :D , voy a cargarlo de nuevo en sap y te digo.
Saludos a todo el foro sap :) |
Hola GENTE!
por las dudas ... me permito recordarles que supuestamente este desarrollo esta testeado en SAP 5 Yo lo estuve probando (no a fondo todavia) en un SAP 4.6 y tuve problemas tambien ... pero tal vez sea por un tema de versiones ... Saludos! |
Estoy utilizando la versión 5. ¿No faltará algún include?
Saludos |
Husos Horarios son GMT. La hora en este momento es 17:29:04. |
www.mundosap.com 2006 - Spain
software crm, crm on demand, software call center, crm act, crm solutions, crm gratis, crm web