Sapforum.Biz

Инструменты => ABAP - Инструментальные средства => Тема начата: polkon от Март 04, 2013, 04:38:06 pm

Название: поле выбора файла для загрузки
Отправлено: polkon от Март 04, 2013, 04:38:06 pm
На селекционном экране есть кнопка Загрузка из файла.
По нажатию на кнопку требуется выводить дополнительный экран с полем выбора файла для загрузки. При выборе файла данные из файла должны выводиться на экран отчета alv.
Отдельно вызов дополнительного экрана по кнопке и вывод поля выбора для загрузки могу сделать. Объединить никак не получается, помогите.
Название: Re: поле выбора файла для загрузки
Отправлено: Uukrul от Март 04, 2013, 10:40:34 pm
You are not allowed to view links. Register or Login
Отдельно вызов дополнительного экрана по кнопке и вывод поля выбора для загрузки могу сделать. Объединить никак не получается, помогите.
Если честно проблема соединения не понятна. Точнее есть у меня мысль, что вы не правильно реализовали вывод диалога запроса имени файла, ну и соответственно далее не можете прочитать данные из файла, чтобы показать их в ALV-таблице. Если можно общими блоками структуру программы приведите.
Название: Re: поле выбора файла для загрузки
Отправлено: jacknk88 от Март 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.