+ Sapforum.Biz » Инструменты » ABAP - Инструментальные средстваТема:
|-  поле выбора файла для загрузки




Автор Тема: поле выбора файла для загрузки  (Прочитано 2538 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн polkon

  • Newbie
  • *
  • Сообщений: 10
  • Reputation Power: 0
  • polkon has no influence.
  • YearsYearsYearsYearsYears
поле выбора файла для загрузки
« : Март 04, 2013, 04:38:06 pm »
На селекционном экране есть кнопка Загрузка из файла.
По нажатию на кнопку требуется выводить дополнительный экран с полем выбора файла для загрузки. При выборе файла данные из файла должны выводиться на экран отчета alv.
Отдельно вызов дополнительного экрана по кнопке и вывод поля выбора для загрузки могу сделать. Объединить никак не получается, помогите.

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 674
  • Reputation Power: 2
  • Uukrul barely matters.Uukrul barely matters.
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
Re: поле выбора файла для загрузки
« Ответ #1 : Март 04, 2013, 10:40:34 pm »
You are not allowed to view links. Register or Login
Отдельно вызов дополнительного экрана по кнопке и вывод поля выбора для загрузки могу сделать. Объединить никак не получается, помогите.
Если честно проблема соединения не понятна. Точнее есть у меня мысль, что вы не правильно реализовали вывод диалога запроса имени файла, ну и соответственно далее не можете прочитать данные из файла, чтобы показать их в ALV-таблице. Если можно общими блоками структуру программы приведите.

Оффлайн jacknk88

  • Newbie
  • *
  • Сообщений: 120
  • Reputation Power: 0
  • jacknk88 has no influence.
  • YearsYearsYearsYearsYearsYears
Re: поле выбора файла для загрузки
« Ответ #2 : Март 05, 2013, 08:47:27 am »
я думаю, Вы это имели ввиду

Код: You are not allowed to view links. Register or Login
PARAMETER p_file type string LOWER CASE OBLIGATORY. " путь к файлу

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
cl_salv_test_data=>select_file( IMPORTING filename = p_file ).

а в START-OF-SELECTION.
вызываете CALL FUNCTION 'GUI_UPLOAD'

если слова, значения и т.д. разделены TAB-ом или SPACE-ом (пробелом), то можно указать в поле
DATA_TAB свою табличку, а в HAS_FIELD_SEPARATOR   либо '', либо 'X' (читайте документацию к ФМ)
если слова, значения и т.д. разделены любым другим символом, то нужно сначало прочитать каждую строку файла в таблицу, которая состоит из одного текстового поля, а потом уже оператором SPLIT делить по столбикам
 
Код: You are not allowed to view links. Register or Login
data: gt_itab type string occurs 0 with header line.

CALL FUNCTION 'GUI_UPLOAD'
     EXPORTING
       FILENAME                      = p_file         " тот самый путь к файлу
*      FILETYPE                      = 'ASC'
*      HAS_FIELD_SEPARATOR           = ' '
*      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                      =     gt_itab                      " сюда свою табличку или табличку из строк
*    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.

« Последнее редактирование: Март 05, 2013, 08:59:57 am от jacknk88 »