De excel a tabla

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • Heran
    Junior Member
    • may
    • 21

    #1

    De excel a tabla

    Hola,

    Me han pedido hacer un programa que me cargue los datos de un excel en una tabla de sap. Pero, la cuestion es: No sabemos como va a ser el excel y la tabla de destino tb es desconocida.
    Conoceis algun codigo que haga algo parecido?
    Algun vinculo donde pueda encontrarlo?

    Muchas gracias.
    - Heran -
  • ballan
    Senior Member
    • oct
    • 671

    #2
    Yo me crearia la estructura de la tabla en tiempo de ejecucion y luego cargaria esa tabla con la funcion TEXT_CONVERT_XLS_TO_SAP

    Comentario

    • Heran
      Junior Member
      • may
      • 21

      #3
      Tengo problema con los campos tipo fecha... me dice: Indique una fecha valida (ejemplo 01.01.2006)

      Esto es una linea de mi excel.
      20000000 01.01.2007 01.01.2006 DDDD EEEEEEEEEEEEEEEE 20 15
      Tb he probado con las fechas 01012007, 20070101 2007.01.01...


      DATA: it_raw TYPE truxs_t_text_data.
      FIELD-SYMBOLS: <dyn_table> TYPE STANDARD TABLE.


      CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP'
      EXPORTING
      * I_FIELD_SEPERATOR =
      i_line_header = 'X'
      i_tab_raw_data = it_raw " WORK TABLE
      i_filename = p_file
      TABLES
      i_tab_converted_data = <dyn_table>[] "ACTUAL DATA
      EXCEPTIONS
      conversion_failed = 1
      OTHERS = 2.

      IF sy-subrc <> 0.
      MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
      WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
      ENDIF.

      ¿¿que puedo hacer??
      Editado por última vez por Heran; 11/02/2008, 07:54:53.
      - Heran -

      Comentario

      • ballan
        Senior Member
        • oct
        • 671

        #4
        Las fechas en excel se almacenan como un numero en coma flotante asi que te estara dando algun error de formato, pon las fechas como texto y luego las tratas en tu programa en R3

        quicir en lugar de 02.12.2008 pon 02122008, que te lo lleve a r3 como texto y tu ahi haces con ello lo que sea

        Comentario

        • Heran
          Junior Member
          • may
          • 21

          #5
          Nada que no lo consigo hacer... no se que mas puedo probar... Y solo me falla cuando la tabla DB tiene tipos dats. El resto los coge sin problemas.

          Resumo los pasos...

          Creo 2 parametros, uno para indicar la Tabla DB y otro para el fichero excel.

          Creo dinamicamente la Tabla interna de tipo Tabla DB.

          Cargo los datos del excel en la Tabla interna dinamica.(Me da fallo fecha)

          Por ultimo visualizo los registros insertados en la Tabla interna.

          Alguna idea brillante??

          Gracias por todo.
          - Heran -

          Comentario

          • ballan
            Senior Member
            • oct
            • 671

            #6
            Heran creo que el problema es que en sap un tipo de dato fecha se almacena como un string de 8 y en excel los datos de tipo fecha son un numero en coma flotante por lo que da error de tipo y peta, prueba a colocar en tu excel de carga la fecha como si fuera un texto, para introducir un literal en una celda de excel tienes que poner la comilla simple delante ' algo asi:

            '01012008 asi te introduce el literal 01012008 en la celda y lo toma como texto y no como fecha o numero entero

            Comentario

            • Heran
              Junior Member
              • may
              • 21

              #7
              Gracias Ballan, pero sigue sin funcionarme...

              Voy a ha cargar los datos deste un TXT. A ver cuando me libere de carga resuelvo lo de la fecha...

              Nuevamente muchas gracias.
              - Heran -

              Comentario

              • ballan
                Senior Member
                • oct
                • 671

                #8
                Esa seria la solucion mas rapida, cuando tengas tiempo puedes investigar otras dos vias de trabajo:

                OPCION 1
                La funcion ALSM_EXCEL_TO_INTERNAL_TABLE le das una ruta de fichero y una fila y columna inicial y fila y columna final y te devuelve una tabla con las celdas, por ejemplo

                call function ALSM_EXCEL_TO_INTERNAL_TABLE
                ruta del fichero
                begin_row = 1
                begin_col = 1
                end_row = 25
                end_col = 25
                tables
                t_celdas

                Te devolveria una tabla (t_celdas) con los siguientes valores

                Fila Columna Valor
                1 1 Valor celda 1,1
                1 2 Valor celda 1,2
                ...

                Podrias mirar si esos valores te los recupera correctamente y luego con los valores de la tabla los vas insertando en tu tabla con field-symbols


                OPCION 2

                Acceder al excel por medio de objetos, para no hacer un post kilometrico te dejo un enlace para que veas ejemplos

                la idea seria si asi te recupera correctamente los campos de fecha y los pasas a tu tabla por medio de field-symbols

                Suerte!

                Comentario

                Trabajando...