Текущее время: Сб, июл 05 2025, 08:06

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 25 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: выгрузка в Excel в фоновом режиме
СообщениеДобавлено: Сб, сен 23 2006, 12:58 
Специалист
Специалист

Зарегистрирован:
Вт, авг 09 2005, 15:51
Сообщения: 149
Подскажите плиз, как это сделать?

По форуму пошарил, но нашел только выгрузку не в фоне...


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Сб, сен 23 2006, 13:10 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Вс, окт 17 2004, 14:20
Сообщения: 326
Откуда: Москва
В фоновом режиме возможна только выгрузка данных на сервер приложений. Например, в формате "с разделителем", который excel отлично понимает.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Сб, сен 23 2006, 13:23 
Специалист
Специалист

Зарегистрирован:
Вт, авг 09 2005, 15:51
Сообщения: 149
Мне, собственно, на сервер приложений и нужно... На серваке имеется определенная папка, куда раз в день должны автоматически скидываться какие-то данные в формате эксель. Происходит это обычно ночью и соответсвенно должно работать в фоновом режиме.

Пока мучаю Ws_download, он вроде умеет в фоне работать... Но никак не могу добиться того, чтобы в экселе колонки разделялись.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Сб, сен 23 2006, 13:30 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Вс, окт 17 2004, 14:20
Сообщения: 326
Откуда: Москва
ws_download не работает в фоне


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Сб, сен 23 2006, 13:33 
Специалист
Специалист

Зарегистрирован:
Вт, авг 09 2005, 15:51
Сообщения: 149
Аблом... Тогда как?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Сб, сен 23 2006, 13:51 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Вс, окт 17 2004, 14:20
Сообщения: 326
Откуда: Москва
Если формат с разделителем подходит, то могу в понедельник текст ФМ выложить. Либо, если срочно, сам покопайся в GUI_DOWNLOAD (более свежий аналого ws_download, также работает только в диалоговом процессе с файлом на сервере презентации); в GUI_DOWNLOAD см. подпрограмму put_char_linebuffer. Вообще, должно быть что-то стандартное для этого, но я в свое время не нашел :(


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Сб, сен 23 2006, 13:57 
Специалист
Специалист

Зарегистрирован:
Вт, авг 09 2005, 15:51
Сообщения: 149
Выложи, плиз... Должно подойти и вроде не очень срочно.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Сб, сен 23 2006, 14:11 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Вс, окт 17 2004, 14:20
Сообщения: 326
Откуда: Москва
Ок


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

Зарегистрирован:
Пт, окт 21 2005, 09:24
Сообщения: 832
Откуда: от верблюда...тоже:)
Пол: Мужской
ABC написал(а):
Если формат с разделителем подходит, то могу в понедельник текст ФМ выложить. Либо, если срочно, сам покопайся в GUI_DOWNLOAD (более свежий аналого ws_download, также работает только в диалоговом процессе с файлом на сервере презентации); в GUI_DOWNLOAD см. подпрограмму put_char_linebuffer. Вообще, должно быть что-то стандартное для этого, но я в свое время не нашел :(

На сервер выгрузить можно с помощью

OPEN DATASET
....бла-бла-бла....
TRANSFER <PARSING_STR>
....бла-бла-бла....
CLOSE DATASET.

В хелпе впринципе понятно...и примерчик есть :)
http://help.sap.com/saphelp_erp2005vp/helpdata/en/79/c554dcb3dc11d5993800508b6b8b11/frameset.htm

_________________
а подпись...а подписи не будет :)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вс, сен 24 2006, 10:37 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Вс, окт 17 2004, 14:20
Сообщения: 326
Откуда: Москва
Blizzard написал:
На сервер выгрузить можно с помощью

OPEN DATASET
....бла-бла-бла....
TRANSFER <PARSING_STR>
....бла-бла-бла....
CLOSE DATASET.


Snus как раз про "бла-бла-бла" вопрос и задавал :)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, сен 25 2006, 09:35 
Специалист
Специалист

Зарегистрирован:
Вт, авг 09 2005, 15:51
Сообщения: 149
Вот-вот... Пока просматриваю gui_download. Но почему его тестировать нельзя? при попытке запустить пишет, что не может создать текстовую рамку... это так и должно быть?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, сен 25 2006, 09:40 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Вс, окт 17 2004, 14:20
Сообщения: 326
Откуда: Москва
Функция чтения с сервера приложений файла в формате "с разделителем":
Code:
FUNCTION z_read_data_from_srvr.
*"----------------------------------------------------------------------
*"*"Локальный интерфейс:
*"  IMPORTING
*"     REFERENCE(IM_FILENAME) TYPE  STRING
*"     REFERENCE(IM_HAS_FIELD_SEPARATOR) TYPE  CHAR1 DEFAULT SPACE
*"     REFERENCE(IM_DAT_MODE) TYPE  CHAR1 DEFAULT SPACE
*"  EXPORTING
*"     REFERENCE(EX_IT_DATA) TYPE  STANDARD TABLE
*"  EXCEPTIONS
*"      FILE_NOT_OPENED
*"----------------------------------------------------------------------

  DATA
    : wa          TYPE string
    , strdecimal  TYPE c
    , npacked     TYPE p DECIMALS 2 VALUE 0
    , strtemp(10) TYPE c
    , strdatformat(10) TYPE c
    , ddate            TYPE d VALUE '11112233'
    , strfield(10)     TYPE c
    , noffset          TYPE i
  .

* Определяем десятичный разделитель
  CLEAR strtemp.
  WRITE npacked TO strtemp(10).
  SEARCH strtemp FOR ','.
  IF sy-subrc EQ 0.
    strdecimal = ','.
  ELSE.
    strdecimal = '.'.
  ENDIF.

* Определяем формат даты
  WRITE ddate TO strfield DD/MM/YYYY.
  IF strfield CS '33'.
  ENDIF.
  noffset = sy-fdpos.
  CASE noffset.
    WHEN 0.
      strdatformat = 'DD.MM.YYYY'.
    WHEN 3.
      strdatformat = 'MM/DD/YYYY'.
    WHEN 8.
      strdatformat = 'YYYY/MM/DD'.
  ENDCASE.

* Открываем файл
  OPEN DATASET im_filename FOR INPUT IN TEXT MODE ENCODING DEFAULT.
  IF sy-subrc <> 0.
    RAISE file_not_opened.
  ELSE.
    DO.
*     Читаем построчно
      READ DATASET im_filename INTO wa.

      IF sy-subrc = 0.
*       Раскладываем строку с разделителем (символ табуляции) по полям внутренней таблицы
        PERFORM write_line_to_data_tab(saplsfes)
          TABLES
            ex_it_data              "par_data_tab
          USING
            im_has_field_separator  "par_has_field_separator
            strdecimal              "par_Decimal
            strdatformat            "par_DatFormat
            im_dat_mode             "par_dat_mode
          CHANGING
            wa              "par_dest_buffer
        .
      ELSE.
        EXIT.
      ENDIF.
    ENDDO.
*   Закрываем файл
    CLOSE DATASET im_filename.
  ENDIF.
ENDFUNCTION.


Функция записи на сервер приложений файла в формате "с разделителем" (и не только):
Code:
FUNCTION z_write_data_to_srvr.
*"----------------------------------------------------------------------
*"*"Локальный интерфейс:
*"  IMPORTING
*"     REFERENCE(IM_FILENAME) TYPE  STRING
*"     REFERENCE(IM_IT_DATA) TYPE  STANDARD TABLE
*"     REFERENCE(IM_IGNORE_CERR) TYPE  CHAR1 DEFAULT 'X'
*"     REFERENCE(IM_REPLACEMENT_CHAR) TYPE  CHAR1 DEFAULT '#'
*"     REFERENCE(IM_WRITE_FIELD_SEPARATOR) TYPE  CHAR1 DEFAULT SPACE
*"     REFERENCE(IM_TRUNC_TRAILING_BLANKS) TYPE  CHAR1 DEFAULT SPACE
*"     REFERENCE(IM_COL_SELECT) TYPE  CHAR1 DEFAULT SPACE
*"     REFERENCE(IM_COL_SELECT_MASK) TYPE  CHAR255 DEFAULT SPACE
*"     REFERENCE(IM_WRITE_LF) TYPE  CHAR1 DEFAULT 'X'
*"     REFERENCE(IM_DAT_MODE) TYPE  CHAR1 DEFAULT SPACE
*"     REFERENCE(IM_TRUNC_TRAILING_BLANKS_EOL) TYPE  CHAR1 DEFAULT 'X'
*"  EXCEPTIONS
*"      FILE_NOT_CREATED
*"      UNKNOWN_ERROR
*"----------------------------------------------------------------------

  TYPE-POOLS
    : abap
  .

  FIELD-SYMBOLS
    : <wa_data> TYPE ANY
  .

  DATA
    : wa                 TYPE string
    , strdecimal         TYPE c
    , npacked            TYPE p DECIMALS 2 VALUE 0
    , strtemp(10)        TYPE c
    , strdatformat(10)   TYPE c
    , ddate              TYPE d VALUE '11112233'
    , strfield(10)       TYPE c
    , noffset            TYPE i
    , converter          TYPE REF TO cl_abap_conv_obj
    , codepage(4)        TYPE n
    , cp(4)              TYPE c
    , prc_miss           TYPE c
    , prc_broken         TYPE c
    , prc_encoded_crlf   TYPE xstring
    , prc_encoded_string TYPE xstring
  .

* Определяем десятичный разделитель
  CLEAR strtemp.
  WRITE npacked TO strtemp(10).
  SEARCH strtemp FOR ','.
  IF sy-subrc EQ 0.
    strdecimal = ','.
  ELSE.
    strdecimal = '.'.
  ENDIF.

* Определяем формат даты
  WRITE ddate TO strfield DD/MM/YYYY.
  IF strfield CS '33'.
  ENDIF.
  noffset = sy-fdpos.
  CASE noffset.
    WHEN 0.
      strdatformat = 'DD.MM.YYYY'.
    WHEN 3.
      strdatformat = 'MM/DD/YYYY'.
    WHEN 8.
      strdatformat = 'YYYY/MM/DD'.
  ENDCASE.

* Определяем кодовую страницу
  CALL 'CUR_LCL' ID 'GUICP' FIELD cp.
  codepage = cp.

  IF im_ignore_cerr = abap_true.
    prc_miss   = 'S'.
    prc_broken = 'M'.
  ELSE.
    prc_miss   = '.'.
    prc_broken = '.'.
  ENDIF.

*########################################################
* Convert par_replacement_char into ABAP character number
*########################################################

  DATA: prc_conv    TYPE REF TO cl_abap_conv_out_ce,
        prc_xstr_no TYPE xstring,
        prc_i_no    TYPE i,
        prc_sapno   TYPE cpcharno.

  TRY.
      CALL METHOD cl_abap_conv_out_ce=>create
        EXPORTING
          encoding = '4000'
        RECEIVING
          conv     = prc_conv.
    CATCH cx_parameter_invalid_range .
      MESSAGE ID 'FES' TYPE 'E' NUMBER '023' RAISING unknown_error.
    CATCH cx_sy_codepage_converter_init .
      MESSAGE ID 'FES' TYPE 'E' NUMBER '024' RAISING unknown_error.
  ENDTRY.

  TRY.
    CALL METHOD prc_conv->write
      EXPORTING
        data = im_replacement_char.

    CATCH cx_sy_codepage_converter_init.
      MESSAGE ID 'FES' TYPE 'E' NUMBER '024' RAISING unknown_error.
    CATCH cx_sy_conversion_codepage.
      MESSAGE ID 'FES' TYPE 'E' NUMBER '026' RAISING unknown_error.
    CATCH cx_parameter_invalid_type.
      MESSAGE ID 'FES' TYPE 'E' NUMBER '023' RAISING unknown_error.
    CATCH cx_parameter_invalid_range.
      MESSAGE ID 'FES' TYPE 'E' NUMBER '023' RAISING unknown_error.
  ENDTRY.

  TRY.
    CALL METHOD prc_conv->get_buffer
      RECEIVING
        buffer = prc_xstr_no.
  ENDTRY.

  prc_i_no  = prc_xstr_no.
  prc_sapno = prc_i_no.

* Создаем конвертер кодовой страницы
  CREATE OBJECT converter
    EXPORTING
      outcode  = codepage
      miss     = prc_miss
      broken   = prc_broken
      use_f1   = 'X'
      substc   = prc_sapno
    EXCEPTIONS
      invalid_codepage = 1
      internal_error   = 2.

  IF sy-subrc <> 0.
    CASE sy-subrc.
      WHEN 1.
        MESSAGE ID 'FES' TYPE 'E' NUMBER '023' RAISING unknown_error.
      WHEN 2.
        MESSAGE ID 'FES' TYPE 'E' NUMBER '024' RAISING unknown_error.
    ENDCASE.
  ENDIF.

  CALL METHOD converter->convert
    EXPORTING
      inbuff             = cl_abap_char_utilities=>cr_lf
      inbufflg           = 0
      outbufflg          = 0
    IMPORTING
      outbuff            = prc_encoded_crlf
*    INUSED             =
*      OUTUSED            = par_filesize
*    SUBSTED            =
*    INPUT_ENDS_IN_CHAR =
    EXCEPTIONS
      internal_error     = 1
      OTHERS             = 2.

  IF sy-subrc <> 0.
    CASE sy-subrc.
      WHEN 1.
        MESSAGE ID 'FES' TYPE 'E' NUMBER '024' RAISING unknown_error.
      WHEN 2.
        MESSAGE ID 'FES' TYPE 'E' NUMBER '024' RAISING unknown_error.
    ENDCASE.
  ENDIF.

* Открываем файл
  OPEN DATASET im_filename FOR OUTPUT IN BINARY MODE.
  IF sy-subrc <> 0.
    RAISE file_not_created.
  ELSE.

    LOOP AT im_it_data ASSIGNING <wa_data>.
      PERFORM put_char_linebuffer(saplsfes) USING <wa_data>
                                        im_write_field_separator
                                        im_trunc_trailing_blanks
                                        im_col_select
                                        im_col_select_mask
                                        im_write_lf
                                        strdecimal
                                        strdatformat
                                        im_dat_mode
                                        im_trunc_trailing_blanks_eol
                                  CHANGING converter
                                           prc_encoded_string.
      IF im_write_lf IS NOT INITIAL.
*       Add CR to line.
        CONCATENATE prc_encoded_string  prc_encoded_crlf
            INTO prc_encoded_string IN BYTE MODE.
      ENDIF.

    ENDLOOP.

*   Пишем в файл
    TRANSFER prc_encoded_string TO im_filename.

*   Закрываем файл
    CLOSE DATASET im_filename.
  ENDIF.
ENDFUNCTION.


В IM_WRITE_FIELD_SEPARATOR и в IM_DAT_MODE передай 'X'


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, сен 25 2006, 09:48 
Специалист
Специалист

Зарегистрирован:
Вт, авг 09 2005, 15:51
Сообщения: 149
Спасибо! Пошёл тестировать

P.S. Кстати, а в какой группе функций его создавать - всё равно?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, сен 25 2006, 11:01 
Специалист
Специалист

Зарегистрирован:
Вт, авг 09 2005, 15:51
Сообщения: 149
Почему-то не находит cl_abap_conv_obj... Нету такого, говорит...


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, сен 25 2006, 14:51 
Специалист
Специалист

Зарегистрирован:
Вс, мар 13 2005, 13:59
Сообщения: 201
Откуда: Moscau
Если в конторе используется 2003 офис - можно экспортировать в excel совместимый xml.
Я реализовал подобную штуку для отчетов и всё замечательно работает.
Вначале генерю xml файл в своем формате, а потом использую xlt-преобразование в excel совместимый формат и сохраняю его на сервере.


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

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


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

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


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

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