Fichero excel a tabla interna

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • yerotos
    Member
    • nov
    • 39

    #1

    Fichero excel a tabla interna

    Como se puede cargar los datos de un fichero excel en una tabla interna?

    Gracias
  • ballan
    Senior Member
    • oct
    • 671

    #2
    Text_convert_xls_to_sap

    Comentario

    • yerotos
      Member
      • nov
      • 39

      #3
      Podrias explicarme un poquito mas? Donde pongo el nombre de mi tabla interna?

      Comentario

      • ballan
        Senior Member
        • oct
        • 671

        #4
        Aqui en el foro de programacion esta resuelta muchas veces esta pregunta, si buscas un poco seguro que encontraras otros posts donde te lo explican con pelos y señales, yo por ejemplo casi sin buscar he encontrado este

        Comentario

        • yerotos
          Member
          • nov
          • 39

          #5
          Muchas gracias Ballan, siento mucho las molestias.

          He utilizado esta función:

          CALL FUNCTION 'KCD_EXCEL_OLE_TO_INT_CONVERT'
          EXPORTING
          FILENAME = Ruta_Archivo
          I_BEGIN_COL = 1
          I_BEGIN_ROW = 1
          I_END_COL = 4
          I_END_ROW = 2350
          TABLES
          INTERN = Tabla_Excel
          EXCEPTIONS
          INCONSISTENT_PARAMETERS = 1
          UPLOAD_OLE = 2.

          Me llena la tabla pero de una forma muy rara, me explico:

          Yo en mi archivo.xls tengo 2350 registros con 4 campos cada uno o sea:
          1 JAVIER SOTO 26/09/1979
          esto sería un registro.
          El tema es que tras utilizar esta función, me rellena la I_Tab pero lo hace de una forma un poco "rara", me crea una tabla en el que cada registro del archivo excel, ocupa 4 registros en mi I_Tab, 1 registro por campo, o sea:
          FILA COLUMNA VALOR
          1 1 1
          1 2 Javier
          1 3 SOTO
          1 4 26/09/1979

          y asi con todos registros del excel.

          Como podría hacer para rellenar mi tabla interna y dejarla como en excel, con un registro con 4 campos?

          Gracias de nuevo y siento las molestias.

          Comentario

          • larmadovr
            Member
            • ene
            • 77

            #6
            Prueba con lo siguiente:

            Lee un archivo excel delimitado por comas o tabuladores.

            Primero lo pasa a una tabla que contiene solo un registro, y despues lo reparte en los campos que sean necesario con el SPLIT dentro de un loop.


            DATA: BEGIN OF I_REG OCCURS 0,
            FIELD(200) TYPE C.
            DATA: END OF I_REG.

            DATA: BEGIN OF TI_DATOS OCCURS 0,
            HAUS like BDCDATA-FVAL,
            REGIOGROUP like BDCDATA-FVAL,
            STR_SUPPL2 like BDCDATA-FVAL,
            STREET like BDCDATA-FVAL,
            HOUSE_NUM1 like BDCDATA-FVAL,
            HOUSE_NUM2 like BDCDATA-FVAL,
            REGPOLIT like BDCDATA-FVAL,
            REGIOGROUP2 like BDCDATA-FVAL.
            DATA: END OF TI_DATOS.


            FORM F_CARGA_ARCHIVO.
            CALL FUNCTION 'UPLOAD'
            EXPORTING
            FILETYPE = 'ASC'
            IMPORTING
            CANCEL = V_CANCEL
            TABLES
            DATA_TAB = I_REG
            EXCEPTIONS
            CONVERSION_ERROR = 1
            INVALID_TABLE_WIDTH = 2
            INVALID_TYPE = 3
            NO_BATCH = 4
            UNKNOWN_ERROR = 5
            GUI_REFUSE_FILETRANSFER = 6
            OTHERS = 7.
            IF SY-SUBRC NE 0.

            LOOP AT I_REG.
            SPLIT I_REG AT ',' INTO TI_DATOS-HAUS
            TI_DATOS-REGIOGROUP
            TI_DATOS-STR_SUPPL2
            TI_DATOS-STREET
            TI_DATOS-HOUSE_NUM1
            TI_DATOS-HOUSE_NUM2
            TI_DATOS-REGPOLIT
            TI_DATOS-REGIOGROUP2.
            IF NOT TI_DATOS-HAUS IS INITIAL.
            APPEND TI_DATOS.
            ENDIF.
            ENDLOOP.
            ENDFORM. " F_CARGA_ARCHIVO


            Espero te haya servido.
            I.S.C.T. Luis Armando Valdez Rodríguez
            Consultor ABAP
            correo: larmandovr@hotmail.com
            cel: (045) 5537406023

            "La vida premia la acción"

            Comentario

            • ballan
              Senior Member
              • oct
              • 671

              #7
              Luego tendrias que ir recorriendo la tabla e ir agregando los campos a tu estructura, por eso es mas practica la funcion text_convert_xls_to_sap porque ella lo hace directamente, solo que tarda mas

              Comentario

              • larmadovr
                Member
                • ene
                • 77

                #8
                Estimado Ballan.

                La solución anterior propuesta, resuelve la pregunta de como cargarlos a una tabla interna. He visto que haces una aportación respecto a después tener que cargarlos a una "estructura" pero no ví en la pregunta que dijera que desea cargarlo a una estructura, sino a una tabla interna.

                Y en lo que te refieres a más práctico, puede ser que para el programador, pero regularmente me baso en que un programa tenga buen performance, aunque yo me tarde 5 minutos más en el código. Pero bueno, gracias por tus aportaciones, esta critica es constructiva, cuando ayudes hazlo bien por favor y no a medias.

                Ten en cuenta que hay personas que van empezando, y necesitan apoyo, no regaños.

                Saludos.
                I.S.C.T. Luis Armando Valdez Rodríguez
                Consultor ABAP
                correo: larmandovr@hotmail.com
                cel: (045) 5537406023

                "La vida premia la acción"

                Comentario

                • ballan
                  Senior Member
                  • oct
                  • 671

                  #9
                  Pues si te preocupa tanto la performance deberias dejar de usar la funcion UPLOAD ya que esta obsoleta desde hace mucho tiempo, para que la ayuda sea completa y no se quede a medias te cuento que la funcion que se utiliza ahora es la GUI_UPLOAD

                  Asi bien?

                  Comentario

                  • larmadovr
                    Member
                    • ene
                    • 77

                    #10
                    Ok, señor soberbia.

                    En cuanto a obsoleto, depende la versión que uses. Yo estoy en ABAP/4 y a la mano esta UPLOAD, también he utilizado la 6.0, y la idea era que el vea la lógica de como bajar su información.

                    Gracias por tu aporte, es usted muy amable.
                    I.S.C.T. Luis Armando Valdez Rodríguez
                    Consultor ABAP
                    correo: larmandovr@hotmail.com
                    cel: (045) 5537406023

                    "La vida premia la acción"

                    Comentario

                    • mcarrasco
                      Member
                      • jul
                      • 71

                      #11
                      Si todavia no tas claro

                      Cualquier cosa tengo un programa que hace eso.. es cortico! cualquier cosa enviame correo a bc.marcos03@gmail.com

                      Atte. Marcos Carrasco...

                      Comentario

                      • yerotos
                        Member
                        • nov
                        • 39

                        #12
                        Gracias a todos por vuestra ayuda, al final ya consegui hacerlo.

                        Un saludo

                        Comentario

                        Trabajando...