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

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

Оффлайн N7

  • Newbie
  • *
  • Сообщений: 14
  • Репутация: +0/-0
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
Работа с файлами на 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 761
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • 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
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
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 761
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • 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 761
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • 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
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • 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
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 761
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • 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.