Sapforum.Biz

Инструменты => ABAP - Инструментальные средства => Тема начата: Y_Y от Октябрь 30, 2012, 09:10:51 am

Название: Проблема с разделением столбцов
Отправлено: Y_Y от Октябрь 30, 2012, 09:10:51 am
Загружаю файл с помощью GUI_UPLOAD:
 CALL FUNCTION 'GUI_UPLOAD'
    EXPORTING
      filename        = p_file
      filetype        = 'ASC'
      "HAS_FIELD_SEPARATOR = 'X'
     codepage = '1504'
    TABLES
      data_tab        = gt_datatab  "ITBL_IN_RECORD[]
    EXCEPTIONS
      file_open_error = 1
      OTHERS          = 2.

В итоге строка выглядит так:
30#КЕМЕРОВО#1#ФИЛИАЛ N 11 АКБ МОСОБЛБАНК ОАО##043207757#30101810000000000757

Пытаюсь разделить:
      SPLIT gs_string AT space INTO gs_uploadtxt-fielda "(2)
                                    gs_uploadtxt-ort01 "(35)
                                    gs_uploadtxt-fieldc "(1)
                                    gs_uploadtxt-banka "(60)
                                    gs_uploadtxt-fielde "(1)
                                    gs_uploadtxt-bankl "(15)
                                    gs_uploadtxt-brnch. "(40).
Но разделяется некорректно.  Экспериментировала с HAS_FIELD_SEPARATOR: там было и '   ' , и ' '  , и 'X', в последних двух случаех вообще разделять переставало. пыталась вместо спейс вставить стринговую переменную - та же ситуация.
Что делать чтобы всё корректно отработало?
Название: Re: Проблема с разделением столбцов
Отправлено: Y_Y от Октябрь 30, 2012, 09:35:37 am
п.с. он в данном случае разделяет по пробелу, а нужно чтобы по '#'
пыталась вместо space подставить и '#' и стринговую переменную со значением '#' - не разделяет
Название: Re: Проблема с разделением столбцов
Отправлено: Uukrul от Октябрь 30, 2012, 10:03:40 am
You are not allowed to view links. Register or Login
п.с. он в данном случае разделяет по пробелу, а нужно чтобы по '#'
пыталась вместо space подставить и '#' и стринговую переменную со значением '#' - не разделяет
Ну это вообще-то не '#' это скорее всего или табуляция или еще что-то, смотря какой был выбран разделитель формата, а вообще вы в целом не правильно используете этот модуль для загрузки данных.
Название: Re: Проблема с разделением столбцов
Отправлено: Y_Y от Октябрь 30, 2012, 10:05:52 am
а что именно неправильно?
и как мне указать разделение именно по табуляции?
Название: Re: Проблема с разделением столбцов
Отправлено: Y_Y от Октябрь 30, 2012, 10:09:46 am
фмник говорит что формат должен быть таков:
(HAS_FIELD_SEPARATOR) TYPE  CHAR01 DEFAULT SPACE
но по сути никакие символы типа ; Z и т.д. не подставляются
что делать если как раз по пробелу то мне разделять и не нужно?
Название: Re: Проблема с разделением столбцов
Отправлено: Uukrul от Октябрь 30, 2012, 10:20:38 am
Типа такая есть внутренняя таблица

Код: You are not allowed to view links. Register or Login
DATA: BEGIN OF gt_matnr OCCURS 1,
  numpos LIKE mseg-zeile,
  matnr LIKE mseg-matnr,
  erfmg LIKE mseg-erfmg,
  exbwr LIKE mseg-exbwr,
END OF gt_matnr.
Файл с разделителем табуляция, будет тогда загружен так. Раскладка по полям тоже будет автоматически, само собой поля в файле должны быть в той же последовательности, что они описаны во внутренней таблице.
Код: You are not allowed to view links. Register or Login
  DATA: l_filename TYPE string,
        l_filelength1 LIKE sy-tabix.

  l_filename = p_file_m.
  CALL FUNCTION 'GUI_UPLOAD'
    EXPORTING
      filename                = l_filename
      filetype                = 'ASC'
      has_field_separator     = cl_abap_char_utilities=>horizontal_tab
      dat_mode                = 'X'
    IMPORTING
      filelength              = l_filelength1
    TABLES
      data_tab                = gt_matnr
    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.
Название: Re: Проблема с разделением столбцов
Отправлено: Y_Y от Октябрь 30, 2012, 10:51:58 am
не работает, как в случаях со всеми другими подставленными в has_field_separator значениями:
в строке остается только значение первого столбца. всё
то есть если с разделителем по умолчанию ' ' или вообще без оного (закомменчен) строка выглядела так:

30#КЕМЕРОВО#1#ФИЛИАЛ N 11 АКБ МОСОБЛБАНК ОАО##043207757#30101810000000000757

сейчас она выглядит так:

30

Название: Re: Проблема с разделением столбцов
Отправлено: Y_Y от Октябрь 30, 2012, 04:47:34 pm
В общем путём долгих мытаний вставили cl_abap_char_utilities=>horizontal_tab
в сплит и всё заработало :)
Название: Re: Проблема с разделением столбцов
Отправлено: Uukrul от Октябрь 30, 2012, 05:41:38 pm
You are not allowed to view links. Register or Login
В общем путём долгих мытаний вставили cl_abap_char_utilities=>horizontal_tab
в сплит и всё заработало :)
А зачем? Если сразу можно принять в нужные поля?
Название: Re: Проблема с разделением столбцов
Отправлено: Dmitriy от Октябрь 31, 2012, 02:51:24 am
Системы под рукой пока нет, ибо в отпуске, поэтому, если ошибусь в названии, то главный подправит... Сейчас рекомендуют использовать методы класса CL_GUI_FRONTEND_SERVICES, т.е. указанная ф-ция GUI_UPLOAD там просто "обернута" методом. ;)
Название: Re: Проблема с разделением столбцов
Отправлено: Y_Y от Октябрь 31, 2012, 08:30:21 am
You are not allowed to view links. Register or Login
А зачем? Если сразу можно принять в нужные поля?
Первый раз общаюсь с этой функцией, так и не сообразить сразу
Название: Re: Проблема с разделением столбцов
Отправлено: Uukrul от Октябрь 31, 2012, 08:40:39 am
You are not allowed to view links. Register or Login
Первый раз общаюсь с этой функцией, так и не сообразить сразу
Ну чуть выше я привел пример как это сделать...