Comparación de sistemas

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • ChaloZ
    Miembro Honorario
    • mar
    • 6

    #1

    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?
  • tracer
    Administrator
    • feb
    • 503

    #2
    Hola ChaloZ,

    Seguro que existe alguna transacción estandar con la que te pueden ayudar nuestros saperos . Yo te adjunto un programa muy útil que revisa la parametrización entre mandantes de sap para ver si coinciden.

    Te adjunto el código del programa y unos pantallazos.








    ATENCIÓN!!! EN ESTE LISTADO SE IDENTIFICA EL SISTEMA REMOTO CON EL MANDANTE 999.

    Modo de funcionamiento:
    1. Seleccionar los mandantes y tablas a comparar.
    2. Ejecutar
    3. En el listado, por cada tabla, muestra para cada mandante el numero de entradas de la tabla y con un icono si estas coinciden o no, pero el hecho de que coincidan no implica que los registros sean iguales uno a uno, solo que tienen el mismo número de registros en cada mandante.
    4. Al hacer doble click sobre el listado en el número de registros de un mandante muestra dichos registros, sin embargo, si se hace doble click sobre el nombre de la tabla o la descripción muestra todos los registros de todos los mandantes ordenados de forma que se vea a simple vista si existen diferencias entre ellos.
    5. Al hacer doble click sobre el icono de parametrización lleva al usuario a los menus de la SPRO en los que se utiliza la tabla en cuestión.
    Probado para R/3 5.0

    ************************************************** **********************
    *
    * REPORT ZRCHKSPRO --I arnaiz 09:15 2 feb, 2006 (PST)
    *
    * DESCRIPCIÓN: Revisa la parametrización entre mandantes para comprobar
    * si están iguales.
    *
    * Modo de funcionamiento:
    * a) Seleccionar los mandantes y tablas a comparar.
    * b) Ejecutar
    * c) En el listado, por cada tabla, muestra para cada mandante el
    * numero de entradas de la tabla y con un icono si estas coinciden
    * o no, pero el hecho de que coincidan no implica que los
    * registros sean iguales uno a uno, solo que tienen el mismo
    * número de registros en cada mandante.
    * d) Al hacer doble click sobre el listado en el número de registros
    * de un mandante muestra dichos registros, sin embargo, si se hace
    * doble click sobre el nombre de la tabla o la descripción muestra
    * todos los registros de todos los mandantes ordenados de forma
    * que se vea a simple vista si existen diferencias entre ellos.
    * e) Al hacer doble click sobre el icono de parametrización lleva al
    * usuario a los menus de la SPRO en los que se utiliza la tabla en
    * cuestión.
    *
    * Espero que os sea util
    *
    * MÓDULO AL QUE PERTENECE: BC
    *
    * AUTOR: Ignacio Arnaiz Piorno FECHA: 01-02-2006
    * CONTACTO: i_arnaiz@sanesteban.com
    *
    * ----------------------------------------------------------------------
    * CONTROL DE MODIFICACIONES
    * AUTOR EMPRESA FECHA MOTIVO
    * I.ARNAIZ ....... 07/02/2006 Se añade la posibilidad de
    * comparar contra un mandante
    * remoto(P.Ej: Test, Producción.)
    * .......... ....... DD/MM/AAAA ................................
    *---------------------------------------------------------------------
    ************************************************** **********************
    REPORT zrchkspro.

    ************************************************** **********************
    * INCLUDES
    ************************************************** **********************
    INCLUDE ZIALV.
    INCLUDE ZICONTADOR.
    ************************************************** **********************
    * Definición de tablas del sistema
    ************************************************** **********************
    TABLES dd02l.
    TABLES tmscsys.
    TABLES t000.
    ************************************************** **********************
    * Definición de constantes
    ************************************************** **********************

    ************************************************** **********************
    * Definición de variables
    ************************************************** **********************
    DATA: l_txt LIKE sy-title.
    DATA: l_msg1 LIKE sy-title,
    l_msg2 LIKE sy-title,
    * l_msg3 LIKE sy-title,
    l_msg4 LIKE sy-title,
    l_msg5 LIKE sy-title,
    l_msg6 LIKE sy-title,
    l_msg7 LIKE sy-title.

    DATA l_puntero TYPE REF TO data.
    ************************************************** **********************
    * Definición de estructuras
    ************************************************** **********************

    ************************************************** **********************
    * Definición de tablas internas
    ************************************************** **********************
    DATA: BEGIN OF i_listado OCCURS 0,
    tabname LIKE dd02l-tabname,
    cust LIKE abadrtrace_alv-icon_l2,
    ddtext LIKE dd02t-ddtext,
    index_m1 LIKE sy-index,
    index_m2 LIKE sy-index,
    index_m3 LIKE sy-index,
    index_m4 LIKE sy-index,
    index_m5 LIKE sy-index,
    index_m6 LIKE sy-index,
    index_m7 LIKE sy-index,
    index_m8 LIKE sy-index,
    index_m9 LIKE sy-index,
    indrfc LIKE sy-index,
    icon LIKE abadrtrace_alv-icon_l2,
    END OF i_listado.

    DATA i_t000 LIKE t000 OCCURS 0 WITH HEADER LINE.
    DATA i_tmscsys LIKE tmscsys OCCURS 0 WITH HEADER LINE.
    ************************************************** **********************
    * Definición de parámetros
    ************************************************** **********************

    ************************************************** **********************
    * Definición de rango de selección
    ************************************************** **********************

    ************************************************** **********************
    * Definición de la pantalla de selección
    ************************************************** **********************
    SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE l_msg3.
    SELECTION-SCREEN BEGIN OF LINE.
    SELECTION-SCREEN COMMENT 3(40) l_tname.
    SELECT-OPTIONS: s_tname FOR dd02l-tabname DEFAULT 'T001'.
    SELECTION-SCREEN END OF LINE.
    SELECTION-SCREEN BEGIN OF LINE.
    SELECTION-SCREEN COMMENT 3(40) l_mandt.
    SELECT-OPTIONS: s_mandt FOR t000-mandt.
    SELECTION-SCREEN END OF LINE.
    SELECTION-SCREEN BEGIN OF LINE.
    SELECTION-SCREEN COMMENT 3(40) l_syst.
    SELECT-OPTIONS: s_syst FOR tmscsys-sysnam
    DEFAULT sy-sysid NO INTERVALS NO-EXTENSION.
    SELECTION-SCREEN END OF LINE.
    SELECTION-SCREEN END OF BLOCK b1.
    ************************************************** **********************
    * Definición de FIELD-SYMBOLS
    ************************************************** **********************
    FIELD-SYMBOLS <fs_campo>.
    FIELD-SYMBOLS <fs_tabla> TYPE STANDARD TABLE.
    FIELD-SYMBOLS <fs_tabla_aux> TYPE STANDARD TABLE.
    FIELD-SYMBOLS <fs_tabla_hd>.
    ************************************************** **********************
    *
    * LÓGICA DEL PROGRAMA
    *
    ************************************************** **********************
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_syst-low.
    DATA gt_excluded_systems LIKE tmscsys OCCURS 0.

    CALL FUNCTION 'TMS_UI_F4_SYSTEMS'
    EXPORTING
    iv_plus_virtual = ' '
    iv_plus_external = ' '
    iv_only_active = 'X'
    iv_title = l_msg6
    TABLES
    tt_exclude = gt_excluded_systems
    CHANGING
    cv_system = s_syst-low
    EXCEPTIONS
    OTHERS = 1.


    ************************************************** **********************
    * Definición de inicializaciones
    ************************************************** **********************
    INITIALIZATION.
    l_mandt = 'Mandantes:'.
    l_syst = 'Sistemas:'.
    l_tname = 'Tablas'.
    l_msg1 = 'Seleccione un rango de no más de 9 mandantes.'.
    l_msg2 = 'Comprobando tabla'.
    l_msg3 = 'Comparativa de tablas entre mandantes'.
    l_msg4 = 'Mandante'.
    l_msg5 = 'Recuperando datos del mandante'.
    l_msg6 = 'Elija sistema'.
    l_msg7 = 'Sistema'.
    ************************************************** *********************
    * Proceso principal
    ************************************************** **********************
    START-OF-SELECTION.

    * Se seleccionan todos los sistemas en el rango
    SELECT *
    FROM tmscsys
    INTO TABLE i_tmscsys
    WHERE sysnam IN s_syst.

    * Se seleccionan todos los mandantes en el rango
    SELECT *
    FROM t000
    INTO TABLE i_t000
    WHERE mandt IN s_mandt.

    * Se excluyen los que pertenezcan a SAP
    DELETE i_t000 WHERE cccategory = 'S' " Referencia SAP
    OR cccategory = 'C'. " Customizing

    SORT i_t000.
    DESCRIBE TABLE i_t000 LINES sy-index.
    IF sy-index > 9.
    MESSAGE i000(01)
    WITH l_msg1.
    EXIT.
    ENDIF.

    * Se recuperan todas las tablas en el rango que sean de parametrización
    SELECT a~tabname
    b~ddtext
    FROM dd02l AS a
    INNER JOIN dd02t AS b
    ON a~tabname = b~tabname
    INTO CORRESPONDING FIELDS OF TABLE i_listado
    WHERE a~tabname IN s_tname
    AND NOT a~tabname = 'T000' "tabla de mandantes
    AND a~contflag = 'C' "Customizing
    AND b~ddlanguage = sy-langu.


    loop_at i_listado.
    * Comprobamos que sean especificas de mandante puesto que si no lo son
    * no tiene sentido compararlas
    SELECT SINGLE tabname
    FROM dd03l
    INTO i_listado-tabname
    WHERE tabname = i_listado-tabname
    AND fieldname = 'MANDT'.
    IF NOT sy-subrc IS INITIAL.
    DELETE i_listado.
    CONTINUE.
    ENDIF.

    i_listado-cust = icon_tree.
    i_listado-icon = icon_okay.

    * Para cada mandante
    LOOP AT i_t000.
    sy-tabix = sy-tabix + 3.
    * Se prepara el campo de la estructura al que corresponde el mandante
    ASSIGN COMPONENT sy-tabix
    OF STRUCTURE i_listado
    TO <fs_campo>.

    IF sy-subrc IS INITIAL.
    * Se cuentan las entradas de la tabla en dicho mandante
    SELECT COUNT( * )
    FROM (i_listado-tabname)
    CLIENT SPECIFIED
    INTO <fs_campo>
    WHERE mandt = i_t000-mandt.
    * Si no coinciden en numero de entradas con el del primer mandante se
    * muestra como erroneo (solo será correcto si tiene el mismo número de
    * entradas)
    IF <fs_campo> <> i_listado-index_m1.
    i_listado-icon = icon_cancel.
    ENDIF.
    ENDIF.
    ENDLOOP.

    LOOP AT i_tmscsys WHERE sysnam <> sy-sysid.

    CREATE DATA l_puntero TYPE TABLE OF (i_listado-tabname).
    ASSIGN l_puntero->* TO <fs_tabla>.

    PERFORM recuperar_tabla_rfc TABLES <fs_tabla>
    USING i_listado-tabname
    i_tmscsys-sysnam
    i_listado-indrfc.

    * Si no coinciden en numero de entradas con el del primer mandante se
    * muestra como erroneo (solo será correcto si tiene el mismo número de
    * entradas)
    IF i_listado-indrfc <> i_listado-index_m1.
    i_listado-icon = icon_cancel.
    ENDIF.
    ENDLOOP.

    MODIFY i_listado.

    endloop_at l_msg2
    i_listado-tabname
    '-'
    i_listado-ddtext
    .
    ************************************************** **********************
    * Acciones de final de proceso
    ************************************************** **********************
    END-OF-SELECTION.
    * Se recupera el catalogo de campos para la tabla interna.
    PERFORM alv_catalogo
    USING
    'I_LISTADO'.

    * Se modifica el catalogo para que muestre como cabecera de las columnas
    * el mandante al que van definidas, y ademas elimine las columnas que
    * sobran.
    DATA l_index LIKE sy-tabix.
    LOOP AT gt_fieldcat INTO gt_fieldcat_hd.
    IF gt_fieldcat_hd-fieldname = 'INDRFC'.
    LOOP AT i_tmscsys WHERE sysnam <> sy-sysid.
    gt_fieldcat_hd-seltext_l = i_tmscsys-sysnam.
    gt_fieldcat_hd-seltext_m = i_tmscsys-sysnam.
    gt_fieldcat_hd-seltext_s = i_tmscsys-sysnam.
    gt_fieldcat_hd-just = 'R'.
    MODIFY gt_fieldcat FROM gt_fieldcat_hd.
    EXIT.
    ENDLOOP.
    IF NOT sy-subrc IS INITIAL.
    DELETE gt_fieldcat INDEX l_index.
    ENDIF.
    ENDIF.
    CHECK gt_fieldcat_hd-fieldname(5) = 'INDEX'.
    sy-index = sy-tabix - 3.
    l_index = sy-tabix.
    READ TABLE i_t000 INDEX sy-index.
    IF sy-subrc IS INITIAL.
    gt_fieldcat_hd-seltext_l = i_t000-mandt.
    gt_fieldcat_hd-seltext_m = i_t000-mandt.
    gt_fieldcat_hd-seltext_s = i_t000-mandt.
    gt_fieldcat_hd-just = 'R'.
    MODIFY gt_fieldcat FROM gt_fieldcat_hd.
    ELSE.
    DELETE gt_fieldcat INDEX l_index.
    ENDIF.
    ENDLOOP.


    * Se rellenan el evento USER_COMMAND para el listado
    PERFORM alv_rellenar_eventos
    USING
    'USER_COMMAND'
    'USER_COMMAND'.

    * Se modifica la cabecera
    PERFORM alv_rellenar_cabecera
    USING

    l_msg3
    c_tipo_grande.

    LOOP AT i_t000.
    l_txt = sy-tabix.
    CONCATENATE l_msg4 l_txt INTO l_txt.
    PERFORM alv_rellenar_cabecera
    USING
    l_txt
    i_t000-mandt
    c_tipo_mediano.
    ENDLOOP.

    l_txt = 1.
    CONCATENATE l_msg7 l_txt INTO l_txt.
    PERFORM alv_rellenar_cabecera
    USING
    l_txt
    sy-sysid
    c_tipo_mediano.


    LOOP AT i_tmscsys WHERE NOT sysnam = sy-sysid.
    l_txt = sy-tabix + 1.
    CONCATENATE l_msg7 l_txt INTO l_txt.
    PERFORM alv_rellenar_cabecera
    USING
    l_txt
    i_tmscsys-sysnam
    c_tipo_mediano.
    ENDLOOP.

    * Se muestra finalmente el listado
    IF sy-batch IS INITIAL.
    PERFORM alv_mostrar_informe
    TABLES
    i_listado
    USING

    c_tipo_alv.
    ELSE.
    PERFORM alv_mostrar_informe
    TABLES
    i_listado
    USING

    c_tipo_list.
    ENDIF.
    ************************************************** **********************
    * Definición de cabeceras de listado
    ************************************************** **********************
    *TOP-OF-PAGE.

    ************************************************** **********************
    * Definición de líneas de pie del listado
    ************************************************** **********************
    *END-OF-PAGE.

    ************************************************** **********************
    * Definición de acciones a tomar en caso de selección con doble click
    ************************************************** **********************
    *AT LINE-SELECTION.

    ************************************************** **********************
    * Definición y control de acciones a tomar según entrada del usuario
    ************************************************** **********************
    *AT USER-COMMAND.

    ************************************************** **********************
    * Definición y control de acciones a tomar según la tecla de función
    ************************************************** **********************
    *AT PFM.

    ************************************************** **********************
    * Definición de las validaciones a realizar de los parámetros de entrada
    ************************************************** **********************
    *AT SELECTION-SCREEN.

    ************************************************** **********************
    *
    * FORMS ADICIONALES
    *
    ************************************************** **********************
    *&---------------------------------------------------------------------
    *& Form user_command
    *&---------------------------------------------------------------------
    *
    * ESTE FORM DEBE SER CREADO EN EL CODIGO DEL LISTADO CON UNA
    * ESTRUCTURA PARECIDA A ESTA:
    *----------------------------------------------------------------------
    *
    * --> p_UCOMM COMANDO
    * <-- p_CAMPO CAMPO EXACTO DONDE SE GENERO EL COMANDO
    *----------------------------------------------------------------------
    FORM user_command USING p_ucomm LIKE sy-ucomm
    p_campo TYPE slis_selfield.

    DATA l_puntero TYPE REF TO data.
    FIELD-SYMBOLS <fs_tabla> TYPE STANDARD TABLE.
    FIELD-SYMBOLS <fs_tabla_aux> TYPE STANDARD TABLE.
    FIELD-SYMBOLS <fs_tabla_hd>.

    * Leemos la linea en la que se lanzo el comando
    READ TABLE i_listado INDEX p_campo-tabindex.

    * Comprobamos cual es el codigo .
    CASE p_ucomm.
    * Si se hizo doble click
    WHEN c_click.
    * Dependiendo del campo, si es una columna de mandante se muestran
    * solamente los datos para ese mandante
    IF p_campo-fieldname(5) = 'INDEX'.

    sy-index = p_campo-fieldname+7(1).

    READ TABLE i_t000 INDEX sy-index.

    CREATE DATA l_puntero TYPE TABLE OF (i_listado-tabname).
    ASSIGN l_puntero->* TO <fs_tabla>.

    IF sy-subrc IS INITIAL.
    SELECT *
    FROM (i_listado-tabname)
    CLIENT SPECIFIED
    INTO TABLE <fs_tabla>
    WHERE mandt = i_t000-mandt.

    DATA l_title LIKE sy-title.

    CONCATENATE 'Tabla:' i_listado-ddtext
    '- Mandt:' i_t000-mandt
    '- Cant. reg.:' p_campo-value
    INTO l_title SEPARATED BY space.
    ENDIF.

    ELSEIF p_campo-fieldname = 'INDRFC'.

    CREATE DATA l_puntero TYPE TABLE OF (i_listado-tabname).
    ASSIGN l_puntero->* TO <fs_tabla>.

    IF sy-subrc IS INITIAL.

    PERFORM recuperar_tabla_rfc TABLES <fs_tabla>
    USING i_listado-tabname
    i_tmscsys-sysnam
    i_listado-indrfc.

    LOOP AT <fs_tabla> ASSIGNING <fs_tabla_hd>.
    ASSIGN COMPONENT 'MANDT'
    OF STRUCTURE <fs_tabla_hd> TO <fs_campo>.
    <fs_campo> = '999'.
    ENDLOOP.

    LOOP AT i_tmscsys WHERE NOT sysnam = sy-sysid.
    ENDLOOP.
    CONCATENATE 'Tabla:' i_listado-ddtext
    '- Sist:' i_tmscsys-sysnam
    '- Cant. reg.:' p_campo-value
    INTO l_title SEPARATED BY space.
    ENDIF.


    ELSEIF p_campo-fieldname = 'CUST'.

    CALL FUNCTION 'OBJECT_MAINTENANCE_CALL'
    EXPORTING
    * OBJECTNAME = ' '
    * OBJECTTYPE = ' '
    * SUBOBJNAME = ' '
    tabname = i_listado-tabname
    * LANGUAGE = SY-LANGU
    * IV_ENCLOSING_OBJECT = ' '
    * TABLES
    * SUBOBJ_LIST_FROM_T100O =
    EXCEPTIONS
    interface_not_correct = 1
    transaction_not_maintained = 2
    transaction_not_found = 3
    table_not_activ = 4
    table_not_found = 5
    subobject_not_found_in_project = 6
    subobject_not_found_in_guide = 7
    object_not_found_in_project = 8
    object_not_found_in_guide = 9
    table_has_no_object_in_project = 10
    table_has_no_object_in_guide = 11
    outline_not_found = 12
    call_transaction_recurring = 13
    system_failure = 14
    OTHERS = 15
    .
    IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
    WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
    ENDIF.


    ELSE.
    * Si es cualquier otro campo es muestran los datos para cualquier
    * mandante
    CREATE DATA l_puntero TYPE TABLE OF (i_listado-tabname).
    ASSIGN l_puntero->* TO <fs_tabla>.
    CREATE DATA l_puntero TYPE TABLE OF (i_listado-tabname).
    ASSIGN l_puntero->* TO <fs_tabla_aux>.

    * Se seleccionan los datos de todos los mandantes
    loop_at i_t000.
    SELECT *
    FROM (i_listado-tabname)
    CLIENT SPECIFIED
    INTO TABLE <fs_tabla_aux>
    WHERE mandt = i_t000-mandt.

    LOOP AT <fs_tabla_aux> ASSIGNING <fs_tabla_hd>.
    APPEND <fs_tabla_hd> TO <fs_tabla>.
    ENDLOOP.
    endloop_at l_msg5
    i_t000-mandt
    ' '
    ' '
    ' '.

    LOOP AT i_tmscsys WHERE NOT sysnam = sy-sysid.

    PERFORM recuperar_tabla_rfc TABLES <fs_tabla_aux>
    USING i_listado-tabname
    i_tmscsys-sysnam
    i_listado-indrfc.

    LOOP AT <fs_tabla_aux> ASSIGNING <fs_tabla_hd>.
    ASSIGN COMPONENT 'MANDT'
    OF STRUCTURE <fs_tabla_hd> TO <fs_campo>.
    <fs_campo> = '999'.
    APPEND <fs_tabla_hd> TO <fs_tabla>.
    ENDLOOP.

    ENDLOOP.
    l_title = 'Comparativa para todos los mandantes'.
    ENDIF.

    IF NOT p_campo-fieldname = 'CUST'.
    * Se muestra el listado con las características de visualización que
    * necesitamos
    gt_layout-zebra = 'X'.
    gt_layout-window_titlebar = l_title.

    PERFORM alv_catalogo
    USING
    i_listado-tabname.


    CLEAR gt_fieldcat_hd-tech.

    MODIFY gt_fieldcat
    FROM gt_fieldcat_hd
    TRANSPORTING tech
    WHERE NOT fieldname IS INITIAL.

    REFRESH gt_events.
    REFRESH gt_list_top_of_page.

    * Ordenamos por todos los campos menos el mandante, para de ese modo
    * localizar más facilmente en el ALV las diferencias.
    LOOP AT gt_fieldcat INTO gt_fieldcat_hd WHERE "key = 'X' AND
    NOT fieldname = 'MANDT'.

    DESCRIBE TABLE gt_sort LINES sy-index.
    sy-index = sy-index + 1.
    CLEAR gt_sort_hd.
    gt_sort_hd-spos = sy-index.
    gt_sort_hd-fieldname = gt_fieldcat_hd-fieldname.
    gt_sort_hd-tabname = gt_fieldcat_hd-tabname.
    gt_sort_hd-up = 'X'.
    * gt_sort_hd-down
    * gt_sort_hd-group
    * gt_sort_hd-subtot
    * gt_sort_hd-comp
    * gt_sort_hd-expa
    * gt_sort_hd-obligatory
    APPEND gt_sort_hd TO gt_sort.
    ENDLOOP.

    * Se muetsra el informe
    PERFORM alv_mostrar_informe
    TABLES
    <fs_tabla>
    USING

    c_tipo_alv.

    REFRESH gt_sort.
    REFRESH gt_filter.
    ENDIF.
    WHEN OTHERS.
    ENDCASE.



    ENDFORM. "USER_COMMAND

    *&---------------------------------------------------------------------*
    *& Form recuperar_tabla_rfc
    *&---------------------------------------------------------------------*
    * text
    *----------------------------------------------------------------------*
    * -->P_CONTENIDO text
    * -->P_TABNAME text
    * -->P_CANTIDAD text
    *----------------------------------------------------------------------*
    FORM recuperar_tabla_rfc TABLES p_contenido
    USING p_tabname
    p_destino
    p_cantidad.

    DATA: lt_data LIKE tab512 OCCURS 0 WITH HEADER LINE.

    REFRESH p_contenido.

    * Se cuentan las entradas de la tabla en dicho mandante/sistema
    CALL FUNCTION 'RFC_GET_TABLE_ENTRIES'
    DESTINATION p_destino
    EXPORTING
    * BYPASS_BUFFER = ' '
    * FROM_KEY = ' '
    * GEN_KEY = ' '
    * MAX_ENTRIES = 0
    table_name = p_tabname
    * TO_KEY = ' '
    IMPORTING
    number_of_entries = p_cantidad
    TABLES
    entries = p_contenido
    EXCEPTIONS
    internal_error = 1
    table_empty = 2
    table_not_found = 3
    OTHERS = 4
    .
    IF sy-subrc <> 0
    AND sy-subrc <> 2.
    * MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
    * WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
    ENDIF.

    ENDFORM. " recuperar_tabla_rfc


    Un saludo a todo el foro de sap .
    Si precisas una mano, recuerda que yo tengo dos.

    Comentario

    • ChaloZ
      Miembro Honorario
      • mar
      • 6

      #3
      Gracias por el c&#243;digo. Intente probarlo, pero al momento de activar el programa lanza errores de sintaxis XD.

      Saludos

      Comentario

      • aduro
        Senior Member
        • feb
        • 152

        #4
        El error es sobre el INCLUDE zialv ?

        Originalmente publicado por ChaloZ
        Gracias por el código. Intente probarlo, pero al momento de activar el programa lanza errores de sintaxis XD.

        Saludos
        Aprendiendo SAP en Consultoria-SAP
        A.Duro

        Comentario

        • tracer
          Administrator
          • feb
          • 503

          #5
          Ups 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 : i_arnaiz@sanesteban.com
          *
          * ----------------------------------------------------------------------
          * 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
          Si precisas una mano, recuerda que yo tengo dos.

          Comentario

          • tracer
            Administrator
            • feb
            • 503

            #6
            y el otro es:

            ************************************************** **********************
            *
            * INCLUDE ZIALV
            *
            * DESCRIPCI&#211;N: Tipos, variables, constantes y forms para trabajo
            * con ALV's
            *
            * INSTRUCCIONES: Sera obligatorio para un correcto funcionamiento de la
            * libreria a&#241;adir al codigo del report un form llamado USER_COMMAND
            * creado con la estructura del existente comentado al final de este
            * include.
            *
            * Adem&#225;s ser&#225; obligatorio tambien a&#241;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&#225; una constante que podr&#225; tener dos valores.
            * - C_TIPO_ALV <- Si queremos modo grid
            * - C_TIPO_LIST <- Si queremos modo listado
            *
            * Si se prefiere podr&#225; crearse el catalogo de campos manualmente
            * rellenando la estructura GT_FIELDCAT aunque es la opci&#243;n menos
            * recomendada, en este caso el parametro P_STRUCT de
            * ALV_MOSTRAR_INFORME se pasar&#225; en blanco.
            *
            * Permite a&#241;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&#209;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&#225; creado siguiendo lo siguientes pasos:
            * (SOLO FUNCIONA EN MODO GRID)
            * PASOS PARA SUBIR LOGO:
            *
            * 1. Ir a la transcci&#243;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&#225; por el
            * nombre del fichero que vas a subir.
            *
            * La librer&#237;a tambien permite a&#241;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: i_arnaiz@sanesteban.com
            *
            * ----------------------------------------------------------------------
            * CONTROL DE MODIFICACIONES
            * AUTOR EMPRESA FECHA MOTIVO
            * .......... ....... DD/MM/AA ................................
            * .......... ....... DD/MM/AA ................................
            *-----------------------------------------------------------------------
            ************************************************** **********************

            ************************************************** **********************
            * Definici&#243;n de tipos
            ************************************************** **********************
            TYPE-POOLS: slis.

            ************************************************** **********************
            * Definici&#243;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&#243;n de variables
            ************************************************** **********************

            ************************************************** **********************
            * Definici&#243;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&#225;
            * omitido, y por tanto no se dibujar&#225; el bot&#243;n asociado a &#233;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&#225; en el programa una vez que se haya rellenado todo
            * lo necesario para lanzar el listado de la tabla P_OUTPUT.
            * P_TIPO ser&#225; igual a C_TIPO_ALV si se quiere lanzar el ALV en
            * modo GRID en caso de preferirlo en modo lista se pasar&#225; este
            * parametro igual a C_TIPO_LIST.
            * P_STRUCT ser&#225; el nombre de una estructura del diccionario de
            * la que tomar la estructura de salida del listado. En caso de
            * pasarlo en blanco habr&#225; que haber creado con anterioridad un
            * catalogo de campos bien con el perform ALV_CATALOGO o bien
            * a&#241;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&#241;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&#225; 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
            Editado por última vez por tracer; 30/03/2006, 15:28:55.
            Si precisas una mano, recuerda que yo tengo dos.

            Comentario

            • ChaloZ
              Miembro Honorario
              • mar
              • 6

              #7
              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

              Comentario

              • tracer
                Administrator
                • feb
                • 503

                #8
                Vaya perdona, parece que falla más que una escopeta de feria , voy a cargarlo de nuevo en sap y te digo.

                Saludos a todo el foro sap
                Si precisas una mano, recuerda que yo tengo dos.

                Comentario

                • aduro
                  Senior Member
                  • feb
                  • 152

                  #9
                  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!

                  Originalmente publicado por tracer
                  Vaya perdona, parece que falla más que una escopeta de feria , voy a cargarlo de nuevo en sap y te digo.

                  Saludos a todo el foro sap
                  Aprendiendo SAP en Consultoria-SAP
                  A.Duro

                  Comentario

                  • ChaloZ
                    Miembro Honorario
                    • mar
                    • 6

                    #10
                    Estoy utilizando la versi&#243;n 5. &#191;No faltar&#225; alg&#250;n include?

                    Saludos

                    Comentario

                    • Toko
                      Junior Member
                      • abr
                      • 20

                      #11
                      Hola a todos..
                      Alguien logro que el programa funcionara... Estuve tratando pero me salen muchos errores, y necesito hacer una comparion de mandantes, habra alguna Tx o funcion que me ayude ?????

                      gracias.
                      atte
                      Toko

                      Comentario

                      • i_arnaiz
                        Junior Member
                        • sep
                        • 13

                        #12
                        Hola a todos,

                        Soy quien ha desarrollado el programita, para instalarlo teneis que crear todo según indica la dirección: http://sap4.com/wiki/index.php?title=ZRCHKSPRO

                        Los unicos includes que necesitais son estos:

                        INCLUDE ZIALV. <- http://sap4.com/wiki/index.php?title=ZIALV
                        INCLUDE ZICONTADOR. <- http://sap4.com/wiki/index.php?title=ZICONTADOR

                        Yo lo he probado en la versión 5.0 y aseguro que subiendo esto funciona perfectamente, además si quereis podeis consultarme cualquier cosa en i_arnaiz@sanesteban.com

                        La verdad es que me ha molestado un poquito lo de que falla más que una escopeta de feria, pero bueno... son cosas de internes...

                        Un saludo.

                        Nacho

                        Comentario

                        • asuarez
                          Member
                          • jun
                          • 63

                          #13
                          Comparaciones

                          Hola a todos, para comparar programas entre mandantes puedes usar la transacción SE39, por la SM30 puedes comparar los contenidos de las tablas de la siguiente forma:

                          SM30:

                          -Seleccionas la tabla
                          -Presionas visualizar
                          -En la barra de tareas seleccionas "Utilidades"
                          -Ahora seleccionas "Comparación"

                          Se abrira una ventana donde vas a seleccionar el mandante contra el cual puedes comparar.
                          Espero que sirva de algo.

                          Comentario

                          Trabajando...