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

Часовой пояс: 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 часа


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

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

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