Текущее время: Пн, июл 28 2025, 01:18

Часовой пояс: UTC + 3 часа


Правила форума


ВНИМАНИЕ!

Вопросы по SAP Query и Quick View - сюда



Начать новую тему Ответить на тему  [ Сообщений: 22 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: вопрос по WS_DOWNLOAD
СообщениеДобавлено: Ср, мар 21 2007, 11:30 
Начинающий
Начинающий

Зарегистрирован:
Чт, июн 01 2006, 15:56
Сообщения: 23
Откуда: Екатеринбург
Здравствуйте! :)
Подскажите, пожалуйста, как можно с помощью 'WS_DOWNLOAD' выгрузить данные в текстовый файл, но с разделителем ; а не с табуляцией ?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, мар 21 2007, 11:47 
Директор
Директор

Зарегистрирован:
Пт, окт 07 2005, 09:10
Сообщения: 752
Откуда: 4.6C
Пол: Мужской
Как вариант - заменить в получившемся файле TAB на ;
:D


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, мар 21 2007, 13:07 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Пн, авг 22 2005, 14:50
Сообщения: 1285
Откуда: с работы
Пол: Женский
GUI_DOWNLOAD нельзя ещё? Если можно, то лучше использовать ее - рекомендовано сапом, там как раз разделители точно есть.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, мар 21 2007, 13:54 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Ср, ноя 23 2005, 13:37
Сообщения: 1805
Откуда: ECC 6.0
Пол: Мужской
Наоборот, ф.м. WS_DOWNLOAD уже obsolete.
А вызов ф.м. GUI_DOWNLOAD как раз составляет 100% кода метода cl_gui_fronend_services=>gui_download.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, мар 21 2007, 13:59 
Менеджер
Менеджер

Зарегистрирован:
Вт, авг 17 2004, 13:14
Сообщения: 664
Откуда: Москва
Пол: Мужской
WS_DOWNLOAD устарела, но много мощнее новой GUI_DOWNLOAD
В постоянных значениях в домене FILEFORMAT есть несколько типов файлов, в которые WS_DOWNLOAD выгружает данные. Кажется один из типов как раз с разделителем ; Что-то такое уже приходилось делать. Точно уже не помню.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, мар 21 2007, 14:15 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Ср, ноя 23 2005, 13:37
Сообщения: 1805
Откуда: ECC 6.0
Пол: Мужской
Tim написал:
В постоянных значениях в домене FILEFORMAT есть несколько типов файлов, в которые WS_DOWNLOAD выгружает данные. Кажется один из типов как раз с разделителем ; Что-то такое уже приходилось делать. Точно уже не помню.


Глупости. У параметра FILETYPE ф.м. GUI_DOWNLOAD в домене ничего нет, но зато в документации всё написано. И длина у него 10 символов, а не 3. Видимо, хотели страшно увеличить количество форматов выгрузки, но пока с места не сдвинулись. :)

А, вообще, логика в этом есть, что выгружать в ASCII с разделителем tab можно, а с другими разделителями — нельзя. Это защита от дурака. ASCII-данные могут содержать символ ; и тогда уже кроме разделителей нужно использовать ограничители. Получается CSV-формат. Вот это и должно быть в GUI_DOWNLOAD. А пока, на радость конкурентам, можно сказать, что SAP не умеет выгружать в csv.

Кстати, это задача для школьников старших классов, написать алгоритм записи-чтения в csv формат с произвольными разделителями и ограничителями полей и разделителями строк. А потом выгрузить это в формате BIN.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, мар 21 2007, 14:24 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Пн, авг 22 2005, 14:50
Сообщения: 1285
Откуда: с работы
Пол: Женский
sibrin написал:
Наоборот, ф.м. WS_DOWNLOAD уже obsolete.
А вызов ф.м. GUI_DOWNLOAD как раз составляет 100% кода метода cl_gui_fronend_services=>gui_download.


я предпочитаю по старинке :lol:
чем вызывать функцию которая вызывает функцию которая вызывает функцию.

А в GUI_DOWNLOAD параметр WRITE_FIELD_SEPARATOR


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, мар 21 2007, 20:45 
Начинающий
Начинающий

Зарегистрирован:
Чт, июн 01 2006, 15:56
Сообщения: 23
Откуда: Екатеринбург
Спасибо! Вот только у нас старенькая версия, и такого ф.м GUI_DOWNLOAD нет! :) Но ничего, я уже с этим по-другому справилась! Пришлось объединить все поля таблицы в одну большую строку через ; :)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, янв 14 2008, 12:14 
Начинающий
Начинающий

Зарегистрирован:
Ср, окт 24 2007, 13:56
Сообщения: 22
Ещё вопросик. Можно ли с помощью WS_DOWNLOAD создать в excel-е шапку (скажем выделенну жирным шрифтом), а потом дополнять этот фаил данными? Или это только с помощью OLE делается?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, янв 14 2008, 12:44 
Ассистент
Ассистент

Зарегистрирован:
Пн, авг 06 2007, 16:13
Сообщения: 28
Sveta83 написал(а):
Спасибо! Вот только у нас старенькая версия, и такого ф.м GUI_DOWNLOAD нет! :) Но ничего, я уже с этим по-другому справилась! Пришлось объединить все поля таблицы в одну большую строку через ; :)



Всем привет.
В новой версии я тоже стандартного решения не нашел. Пришлось изобретать велосипед. На оригинальность не претендую, но может кому поможет:

Code:
table2file IMPORTING _name TYPE string
                          _table TYPE table.

METHOD table2file.
    CONSTANTS c_delim TYPE text1 VALUE ';'.
    DATA l_t TYPE TABLE OF text256.
    DATA pline TYPE REF TO text256.
    FIELD-SYMBOLS <fs> TYPE ANY.
    FIELD-SYMBOLS <fs1> TYPE ANY.

    DATA idx TYPE i.
    DATA len TYPE i.
    DATA str TYPE string.


    LOOP AT _table ASSIGNING <fs>.
      APPEND INITIAL LINE TO l_t REFERENCE INTO pline.
      DO.
        idx = sy-index.
        ASSIGN COMPONENT idx  OF STRUCTURE <fs> TO <fs1>.
        IF sy-subrc EQ 0.
          len = STRLEN( pline->* ).
          str = <fs1>.
          REPLACE  ALL OCCURRENCES OF c_delim  IN str  WITH '_'.
          CONCATENATE str c_delim INTO pline->*+len.
        ELSE.
          EXIT.
        ENDIF.
      ENDDO.

      CONDENSE pline->*.
*      break-point.
    ENDLOOP.

    CALL FUNCTION 'GUI_DOWNLOAD'
    EXPORTING
     filename                        = _name
     write_field_separator           = 'X'
     trunc_trailing_blanks           = 'X'
*      col_select                      = col_select
*      col_select_mask                 = col_select_mask
*     dat_mode  = 'X'
        TABLES
      data_tab                        = l_t
*     FIELDNAMES                      =
   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 .
  ENDMETHOD.                                                "table2file


PS
разделитель зашит константой c_delim. В принципе можно вынести в параметр.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, янв 14 2008, 13:35 
Начинающий
Начинающий

Зарегистрирован:
Чт, ноя 08 2007, 10:26
Сообщения: 14
zxz написал(а):
Ещё вопросик. Можно ли с помощью WS_DOWNLOAD создать в excel-е шапку (скажем выделенну жирным шрифтом), а потом дополнять этот фаил данными? Или это только с помощью OLE делается?


Только OLE2. Например: Download to Excel


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, сен 11 2008, 07:03 
Младший специалист
Младший специалист

Зарегистрирован:
Вт, сен 09 2008, 08:47
Сообщения: 60
Откуда: Алматы
Вопрос про GUI_DOWNLOAD, если у меня в таблице стоит значение 1, то при переносе в блокнот он мне пишет 000000000000001, т.е заполняет по всей длине поля.

Как этого избежать?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, сен 11 2008, 07:15 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, окт 06 2005, 16:44
Сообщения: 3080
Откуда: Москва
В определении поля таблицы вместо типа N использовать тип C

_________________
С уважением,
Удав.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, сен 11 2008, 07:21 
Младший специалист
Младший специалист

Зарегистрирован:
Вт, сен 09 2008, 08:47
Сообщения: 60
Откуда: Алматы
Удав написал(а):
В определении поля таблицы вместо типа N использовать тип C


А можно Чайнику с большой буквы объяснить, где определяется поле? :oops:

вот как я вызываю функцию
Code:
call function 'GUI_DOWNLOAD'
    exporting
      codepage       = '4110'
      filename       = ds
      TRUNC_TRAILING_BLANKS_EOL = space

    tables
      data_tab       = itabds.

_________________
Чайник, совсем чайник... =(


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, сен 11 2008, 07:38 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Чт, ноя 11 2004, 16:25
Сообщения: 3109
Пол: Мужской
shishulechek написал(а):
Удав написал(а):
В определении поля таблицы вместо типа N использовать тип C


А можно Чайнику с большой буквы объяснить, где определяется поле? :oops:

вот как я вызываю функцию
Code:
call function 'GUI_DOWNLOAD'
    exporting
      codepage       = '4110'
      filename       = ds
      TRUNC_TRAILING_BLANKS_EOL = space

    tables
      data_tab       = itabds.

В определении таблицы, в call function 'GUI_DOWNLOAD' ничего делать ненадо, ищите поле в Вашей таблице itabds и меняете его тип...


Принять этот ответ
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 22 ]  На страницу 1, 2  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot], Yandex [Bot]


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB