Текущее время: Ср, июл 16 2025, 00:23

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


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

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


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

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