Anuncio

Colapsar
No hay anuncio todavía.

Subir archivo separado por Comas

Colapsar
X
 
  • Filtrar
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes

  • Subir archivo separado por Comas

    Hola,

    Estoy creando un programa que me permita subir un archivo separado por comas, estoy utilizando esta función GUI_UPLOAD pero no funciona , solo sirve cuando el archivo esta separado por TAB, espero que puedan ayudarme.

    CALL FUNCTION 'GUI_UPLOAD'
    EXPORTING
    filename = l_filename
    filetype = 'ASC'
    has_field_separator = ' ' "Tambien utilizo ','.
    * HEADER_LENGTH = 0
    * READ_BY_LINE = 'X'
    * DAT_MODE = ' '
    * CODEPAGE = ' '
    * IGNORE_CERR = ABAP_TRUE
    * replacement = '#'
    * CHECK_BOM = ' '
    * VIRUS_SCAN_PROFILE =
    * NO_AUTH_CHECK = ' '
    * IMPORTING
    * FILELENGTH =
    * HEADER =
    TABLES
    data_tab = p_table
    EXCEPTIONS
    file_open_error = 1
    file_read_error = 2
    no_batch = 3
    gui_refuse_filetransfer = 4
    invalid_type = 5
    no_authority = 6
    unknown_error = 7
    bad_data_format = 8
    header_not_allowed = 9
    separator_not_allowed = 10
    header_too_long = 11
    unknown_dp_error = 12
    access_denied = 13
    dp_out_of_memory = 14
    disk_full = 15
    dp_timeout = 16
    OTHERS = 17
    .
    IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
    WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
    ENDIF.

    Gracias,

  • #2
    Funcion para formato

    Espero y ya hayas resuelto tu duda pero si aun no, bueno aqui esta la solucion..

    Efectivamente, la funcio GUI_UPLOAD solo funciona con TAB, pro lo que antes de mandar tu tablita a esta funcion para descargarlo en un archivo primero tienes que mandarla a la funcion 'SAP_CONVERT_TO_TEX_FORMAT' en la cual le especificas el tipo de separador ya sea coma (, que es la que tu necesitas), diagonal (/) u otro tipo de simbolo que sirva de separador (* + - .. etc...).. aqui te dejo un ejemplo.. espero y te sirva...

    CALL FUNCTION 'SAP_CONVERT_TO_TEX_FORMAT'
    EXPORTING
    i_field_seperator = ','
    * I_LINE_HEADER =
    * I_FILENAME =
    * I_APPL_KEEP = ' '
    TABLES
    i_tab_sap_data = p_table
    CHANGING
    i_tab_converted_data = p_table2
    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.

    CALL FUNCTION 'GUI_DOWNLOAD'
    EXPORTING
    filename = lv_file
    filetype = 'ASC'
    write_field_separator = 'X'
    TABLES
    data_tab = p_table2
    * fieldnames = header " tabal para los encabezados del reporte
    EXCEPTIONS
    file_write_error = 1
    no_batch = 2
    gui_refuse_filetransfer = 3
    invalid_type = 4
    no_authority = 5
    unknown_error = 6
    header_not_allowed = 7
    separator_not_allowed = 8
    filesize_not_allowed = 9
    header_too_long = 10
    dp_error_create = 11
    dp_error_send = 12
    dp_error_write = 13
    unknown_dp_error = 14
    access_denied = 15
    dp_out_of_memory = 16
    disk_full = 17
    dp_timeout = 18
    file_not_found = 19
    dataprovider_exception = 20
    control_flush_error = 21
    OTHERS = 22.

    IF sy-subrc <> 0.
    MESSAGE 'ERROR AL INTENTAR GUARDAR EL ARCHIVO' TYPE 'E'.
    ELSE.

    CONCATENATE lv_totalr 'REGISTROS GENERADOS EN EL ESCRITORIO' INTO vl_mensaje SEPARATED BY space.
    MESSAGE vl_mensaje TYPE 'S'.

    ENDIF.



    Como podras ver 'i_tab_sap_data' entra la tablita que deseas descargar (p_table)y en

    en " i_tab_converted_data" sale la tablita seperadas por el simbolo que tu le especificaste, esa misma tablita es la que le envias a la funcion "GUI_UPLOAD" (en el ejemplo es la p_table2)

    Comentario


    • #3
      Llego tarde, pero veo que aqui se mezclan churros con merinas... (Mmmm, churros!!)

      La solución de gaia86 es buena, pero es al revés, carga el fichero sin separador, esto te pondrá cada línea del fichero en una línea de la tabla interna. Luego lo que tienes que hacer es hacer un split con ese separador y montarlo en la tabla final.

      Saludos
      "Soy el señor Lobo, arreglo problemas"
      http://sapymas.blogspot.com/

      Comentario

      Trabajando...
      X