Cargar un archivo EXCEL

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • acha3318
    Senior Member
    • abr
    • 182

    #16
    Saludos, me podrias hacer el favor de mostrarme como definiste la tabla t_upload[] , me esta dando un error creo en la definición de la tabla.

    Este es el error:
    An exception occurred. This exception is dealt with in more detail below
    . The exception, which is assigned to the class 'CX_SY_MOVE_CAST_ERROR', was
    neither
    caught nor passed along using a RAISING clause, in the procedure
    "TEXT_CONVERT_XLS_TO_SAP" "(FUNCTION)"
    .
    Since the caller of the procedure could not have expected this exception
    to occur, the running program was terminated.
    The reason for the exception is:
    A 'CAST' operation ('?=' or 'MOVE ?TO') tried to assign an object or
    interface variable to a reference variable.
    However, the contents of the source variable do not fit in the target.
    Source type. "\CLASS=CL_ABAP_ELEMDESCR"
    Target type: "\CLASS=CL_ABAP_STRUCTDESCR"


    Originalmente publicado por josefon
    Que tal!! pues despues de 2 dias de busqueda pues por fin encontre una forma de subir un archivo en excel a una tabla interna.
    la funcion se llama TEXT_CONVERT_XLS_TO_SAP. aki el ejemplo.

    CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP'
    EXPORTING
    i_line_header = 'X' "Si dejan este campo te quita una linea de tu archivo como header
    i_tab_raw_data = it_raw " WORK TABLE
    i_filename = p_entra
    TABLES
    i_tab_converted_data = t_upload[] "ACTUAL DATA
    EXCEPTIONS
    conversion_failed = 1
    OTHERS = 2.

    lo malo es que si se tarda un poco.. por ejemplo con
    150 lineas se tardo 1.48 minutos y con 1350 se tardo 10.40 minutos

    se me habia ocurrido que si tu sabes cuantas lineas y columnas tiene tu EXCEL pues ocupar la funcion propuesta por MIKE pero si no sabes cuantas trae pues ocupar la TEXT_CONVERT_XLS_TO_SAP voy a invertigar si hay una forma de mejorar esta funcion para reducir el tiempo de carga..

    en fin ojala les funcione...

    saludos

    Comentario

    • ballan
      Senior Member
      • oct
      • 671

      #17
      Podrias probar a utilizar la funcion GUI_UPLOAD poniendo en el tipo DAT en lugar de ASC aver si funciona

      Comentario

      • jjsm
        Junior Member
        • feb
        • 17

        #18
        Estoy en se37 "Tes del modulo de funciones:Resultados"

        Estoy bien??

        (Nose de programacion, soy muy basico), me aparece datos similares..

        Que hago??

        O debo ir a otro lado? Llegue ahi por la biblioteca de funciones.
        Ahy me figura la tabla, pero para hacer funcionar esto, o para darle uso a donde me dirijo?

        ****************************
        Por lo visto no tengo autorizacion para modificar... nada que hacer?

        saludos
        Editado por última vez por jjsm; 17/02/2009, 13:08:59.

        Comentario

        • Ivan_Delfino
          Junior Member
          • ago
          • 3

          #19
          Funcion ALSM_EXCEL_TO_INTERNAL_TABLE

          Hola que tal le eh estado haciendo pruebas a la funcion ALSM_EXCEL_TO_INTERNAL_TABLE y solo lee las columnas que tengan valor los vacios no los lee, por lo tanto no es necesario saber exactamente el tamaño con dejar un tamaño grande solo tomara los que tengan valor.

          Saludos
          Las Dificultades Se Presentan, Se Consideran y Se Superan

          Comentario

          • sebasap2014
            Junior Member
            • oct
            • 1

            #20
            consulta sobre indicador de columnas en la funcion de subir excel

            Bueno queria preguntar, si uso una funcion en la cual tengo que indicar el comienzo y fin de las columnas y filas, como hago para el caso en el que por parametro de seleccion indique esto, pero en el caso de las columna lo hago haciendo referencia a las letras del EXCEl es decir columna A B C etc, manualemente asignar un valor a cada letra seria programar una biblia.

            Comentario

            • AnonymousPMP
              Junior Member
              • oct
              • 2

              #21
              El problema aqui en esta solucion es cuando la columna tiene mas de 50 caracteres en la tabla alsmex_tabline.


              DATA: lt_excel TYPE TABLE OF alsmex_tabline,






              Originalmente publicado por DavidXD_XD
              Hola ... yo cargo una tabla interna desde un excel con la funcion:
              ALSM_EXCEL_TO_INTERNAL_TABLE

              Código:
              [COLOR="Blue"]*&---------------------------------------------------------------------*
              *&      Form  upload_excel
              *&---------------------------------------------------------------------*
              *       Cargar archivo excel
              *----------------------------------------------------------------------*
              *      -->PT_DUA  : Tabla interna de estructura de archivo excel
              *      -->P_PATH  : Ruta de archivo excel
              *----------------------------------------------------------------------*[/COLOR]
              FORM upload_excel TABLES pt_dua LIKE ti_dua[]
                                 USING p_path.
              
              [COLOR="blue"]* Variables globales[/COLOR]
                DATA: lt_excel TYPE TABLE OF alsmex_tabline,
                      l_index  TYPE i.
              
                DATA: l_cont(2)   TYPE c,
                      l_cadena    TYPE string,
                      l_start_col TYPE i VALUE 1,
                      l_start_row TYPE i VALUE 5,
                      l_end_col   TYPE i VALUE 6,
                      l_end_row   TYPE i VALUE 65536.
              
                CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
                    EXPORTING
                        FILENAME                = p_path
                        I_BEGIN_COL             = l_start_col
                        I_BEGIN_ROW             = l_start_row
                        I_END_COL               = l_end_col
                        I_END_ROW               = l_end_row
                    TABLES
                        INTERN                  = lt_excel
                    EXCEPTIONS
                        INCONSISTENT_PARAMETERS = 1
                        UPLOAD_OLE              = 2
                        OTHERS                  = 3.
              
                IF sy-subrc <> 0.
                  MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
                        WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
                ENDIF.
              
                CHECK NOT lt_excel[] IS INITIAL.
              
                FIELD-SYMBOLS: <fs_excel> LIKE LINE OF lt_excel,
                               <fs>.
              
                LOOP AT lt_excel ASSIGNING <fs_excel>.
                  IF <fs_excel>-col = '0001'.
                    l_cont = strlen( <fs_excel>-value ).
                    IF l_cont NE '18'.
                      EXIT.
                    ENDIF.
                  ENDIF.
                  MOVE <fs_excel>-col TO l_index.
                  ASSIGN COMPONENT l_index OF STRUCTURE pt_dua TO <fs>.
                  MOVE <fs_excel>-value TO <fs>.
                  AT END OF row.
                    APPEND pt_dua.
                    CLEAR pt_dua.
                  ENDAT.
                ENDLOOP.
              
              ENDFORM.                    " upload_excel

              Comentario

              Trabajando...