Автор Тема: Работа с файлами на Presentation Server  (Прочитано 12456 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн N7

  • Newbie
  • *
  • Сообщений: 14
  • Репутация: +0/-0
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
Работа с файлами на Presentation Server
« : Декабрь 05, 2008, 02:40:31 pm »
Для работы с файлами на Presentation Server используются методы класса CL_GUI_FRONTEND_SERVICES.
Через SE80 можно посмотреть все методы этого класса.
В качестве примера метод GUI_DOWNLOAD для выгрузки данных из внутренней таблицы в текстовый файл:
Код: You are not allowed to view links. Register or Login
CALL FUNCTION 'GUI_DOWNLOAD'
      EXPORTING
          codepage            = '1503'
          filename            = filename
          filetype            = 'DAT'
      IMPORTING
          filelength          = flength
      TABLES
          data_tab            = itab
      EXCEPTIONS
          file_open_error     = 1
          file_write_error    = 2
          invalid_filesize    = 3
          invalid_table_width = 4
          invalid_type        = 5.
/code

« Последнее редактирование: Декабрь 05, 2008, 03:41:09 pm от Uukrul »

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 809
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
Re: Работа с файлами на Presentation Server
« Ответ #1 : Декабрь 05, 2008, 04:02:56 pm »
Оно то конечно так... только вот к сожалению эта функция, которая кстати использует класс CL_GUI_FRONTEND_SERVICES из всего разнообразия форматов знает только два:
Код: You are not allowed to view links. Register or Login
* Filetype parameter valid ?
  CASE filetype.
    WHEN 'BIN' OR 'ASC'.
    WHEN OTHERS.
      RAISE INVALID_TYPE.
  ENDCASE.
Кстати формата DAT, типа разделитель табуляция она таки не знает и вываливает ошибку. Так что я по старой традиции и для 6.0 использую, объявленный старым функциональный модуль WS_DOWNLOAD у которого с форматами чуток по лучше.
Код: You are not allowed to view links. Register or Login
* filetype parameter gќltig ?
  CASE FILETYPE.
    WHEN 'BIN' OR 'DAT' OR 'ASC' OR 'VSS' OR 'IBM' OR 'WK1' OR 'DBF'
         OR 'HQX'.
    WHEN OTHERS.
      MESSAGE I132 RAISING INVALID_TYPE.
  ENDCASE.

Хотя конечно класс CL_GUI_FRONTEND_SERVICES использовать не только можно, но и нужно, так как имеет он много полезного +  методы классовые или как там правильно оно называется, но короче методы можно вызвать без создания экземппяра класса. Может чуток подробнее как нить распишу атрибуты и методы.

Оффлайн N7

  • Newbie
  • *
  • Сообщений: 14
  • Репутация: +0/-0
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
Re: Работа с файлами на Presentation Server
« Ответ #2 : Декабрь 18, 2008, 08:46:42 am »
"Кстати формата DAT, типа разделитель табуляция она таки не знает и вываливает ошибку"...
хм, а у меня не вываливает ошибку и нормально выгружает...
система SAP ECC 6.0.

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 809
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
Re: Работа с файлами на Presentation Server
« Ответ #3 : Декабрь 18, 2008, 03:50:52 pm »
You are not allowed to view links. Register or Login
"Кстати формата DAT, типа разделитель табуляция она таки не знает и вываливает ошибку"...
хм, а у меня не вываливает ошибку и нормально выгружает...
система SAP ECC 6.0.
OK, надо посмотреть.. в 4.6 точно нет... остальные гляну отдельно... но если уже выгружает, значит подчинили.

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 809
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
Re: Работа с файлами на Presentation Server
« Ответ #4 : Декабрь 18, 2008, 04:06:28 pm »
Ну как минимум в ECC 6.0 таки подправили эту функцию:
Код: You are not allowed to view links. Register or Login
* Filetype parameter valid ?
  case prc_filetype.
    when 'BIN' or 'ASC' or 'DAT' or 'DBF' or 'WK1' or 'VSS'. "--- New: VSS Format (JB/07-2006)
    when 'IBM'.
      prc_filetype = 'ASC'.
      prc_codepage = '1103'.
    when others.
      message id 'FES' type 'E' number '004' raising invalid_type.
  endcase.
К сожалению 4.7 и 5 под рукой нет, так что если кто является обладателем таких систем, посмотрите у себя на предмет наличия списка выгружаемых форматов у модуля GUI_DOWNLOAD.

Оффлайн Паганель

  • Я НЕ ЗАНИМАЮСЬ SAP
  • Administrator
  • Full Member
  • *****
  • Сообщений: 1 367
  • Репутация: +20/-0
  • Пол: Мужской
  • https://noteifyapp.com
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • MacPlus Software
Re: Работа с файлами на Presentation Server
« Ответ #5 : Декабрь 18, 2008, 11:05:57 pm »
У меня:
Цитировать
* Filetype parameter valid ?
  CASE prc_filetype.
    WHEN 'BIN' OR 'ASC' OR 'DAT' OR 'DBF' OR 'WK1' OR 'VSS'. "--- New: VSS Format (JB/07-2006)
    WHEN 'IBM'.
      prc_filetype = 'ASC'.
      prc_codepage = '1103'.
    WHEN OTHERS.
      MESSAGE ID 'FES' TYPE 'E' NUMBER '004' RAISING INVALID_TYPE.
  ENDCASE.

Только как точно определить какая у меня система?
You are not allowed to view links. Register or Login
You are not allowed to view links. Register or Login

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 809
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
FILE_READ_AND_CONVERT_SAP_DATA - В общем таки универсальная функция, которая позволяет читать файлы как с сервера так и апликейшен сервера, причем как говорится шампунь и кондиционер в одном наборе, что очень удобно... Пример использования типа такой:
Код: You are not allowed to view links. Register or Login
TYPE-POOLS: truxs.
CONSTANTS: c_application_server TYPE truxs_server VALUE 'APP',
           c_presentation_server TYPE truxs_server VALUE 'PRS',
           c_ole2_server TYPE truxs_server VALUE 'OLE2'.
DATA     : l_bin_filelength LIKE sy-tabix,
*          ASC  = Flat ASCII
*          CSV  = Comma Separated Values
*          TXT  = TXT Format (Notepad)
*          HTM  = Hypertext Markup Language
*          HTML = Hypertext Markup Language
           l_file_format TYPE truxs_fileformat VALUE 'ASC'.

DATA: BEGIN OF lt_sernr OCCURS 1,
  sernr LIKE equi-sernr,
END OF lt_sernr.

CALL FUNCTION 'FILE_READ_AND_CONVERT_SAP_DATA'
  EXPORTING
    i_filename                 = 'C:\Sermark.txt'
    i_servertyp                = c_presentation_server
    i_fileformat               = l_file_format
*   I_FIELD_SEPERATOR          =
*   I_LINE_HEADER              =
  IMPORTING
    e_bin_filelength           = l_bin_filelength
 TABLES
    i_tab_receiver             = lt_sernr
 EXCEPTIONS
   file_not_found             = 1
   close_failed               = 2
   authorization_failed       = 3
   open_failed                = 4
   conversion_failed          = 5
   OTHERS                     = 6.

IF sy-subrc <> 0.
* Тут типа ошибка чтения файла данных
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.

LOOP AT lt_sernr.
  WRITE: / lt_sernr-sernr.
ENDLOOP.
Формат файла был типа такой:
Код: You are not allowed to view links. Register or Login
350689203872413
350689203872414
350991204175661
350991204175745
350991204175844
Как видим варианты размещения файла могут быть такие:
APP - Апликейшен сервер, в общем для тех кто в танке, это иногда (если сервер совмещен), то это та система где стоит сам SAP  :D
PRS - Сервер презентаций, таки это ваша локальная станция, само собой обработка  может быть только в диалоге.
OLE2 - Где эта Оля 2, не знаю, не пробовал.

Форматы файла могут быть типа такие:
*          ASC  = Flat ASCII
*          CSV  = Comma Separated Values
*          TXT  = TXT Format (Notepad)
*          HTM  = Hypertext Markup Language
*          HTML = Hypertext Markup Language
Реально же есть еще два формата
*          BIN  = Двоичные данные
*          XML  = Данные в формате XML

При загрузке в диалоге с локальной станции, функция выводит индикатор обработки, плюс к этому умеет выполнять преобразование кодировки для читаемых данных, при этом стоит учесть что кусок выполняющий преобразование кодировки выглядит так:
Код: You are not allowed to view links. Register or Login
    IF i_fileformat <> c_file_type_binary AND
      i_fileformat <> c_file_type_xml.
      IF l_lan_cp <> l_sys_cp.
        data: ld_lan_cp type abap_encod.
        ld_lan_cp = l_lan_cp.
        CALL FUNCTION 'TRANSLATE_CODEPAGE_IN'
          EXPORTING
            CODEPAGE_FROM = ld_lan_cp
          TABLES
            T_DATA        = <fs_itab>
          EXCEPTIONS
            OTHERS        = 0.
      ENDIF.
    ENDIF.

Sapforum.Biz