Главная страница
Навигация по странице:

  • • Вызов удаленной функции • Использование асинхронных вызовов 298 Глава 27

  • Вызовы удаленных функций 299

  • в системе начиная

  • Механизм RFC помогает вызывать внешние программы , написанные на языке С.

  • Вызовы удаленных функций 301 Рис. 27.2 Подробное описание адресата FLORIDA

  • А с и н х р о н н ы й в ы з о в

  • Вызовы удаленных функций 303

  • АВАР/4

  • Использование сервера OLE в программах АВАР/4

  • Р. Кречмер, В. Вейс - Разработка приложений SAP R3 на языке АВАР4. Р. Кречмер, В. Вейс - Разработка приложений SAP R3 на языке АВАР. Разработкаприложений sap r3Рюдигер Кречмерна языкеВольфганг Вейс


    Скачать 28.36 Mb.
    НазваниеРазработкаприложений sap r3Рюдигер Кречмерна языкеВольфганг Вейс
    АнкорР. Кречмер, В. Вейс - Разработка приложений SAP R3 на языке АВАР4.pdf
    Дата21.12.2017
    Размер28.36 Mb.
    Формат файлаpdf
    Имя файлаР. Кречмер, В. Вейс - Разработка приложений SAP R3 на языке АВАР.pdf
    ТипКнига
    #12433
    страница21 из 24
    1   ...   16   17   18   19   20   21   22   23   24
    Глава 27
    Вызовы удаленных
    функций
    Коммуникационные протоколы
    • Вызов удаленной функции
    • Использование асинхронных вызовов

    298 Глава 27
    В данной главе подробно рассматривается механизм вызова удаленных функций — Remote Function
    Call (RFC), обеспечивающий простой способ связи между прикладными программами с помощью вызовов функций АВАР/4. Использование RFC позволяет разработчику не думать о совместимости протоколов,
    аппаратных платформ и операционных систем. Механизм RFC работает аналогично механизму удален- ного вызова процедур (Remote Procedure Call, RPC), реализованному в других программных средах.
    Особенно эффективно RFC применяется в информационных системах компаний, имеющих несколь- ко филиалов, в которых установлены собственные системы. Чтобы сотрудники головного офиса могли получать оперативную информацию, рекомендуется использовать вызов удаленных функций, которые будут извлекать данные из соответствующих локальных баз данных. Механизм RFC обеспечивает два вида вызовов: синхронный (с ожиданием ответа) и асинхронный (при котором выполнение вызывающей программы продолжается, а ответ приходит позднее).
    Связь между программами
    Связь людей друг с другом поддерживается за счет определенных правил. Если звонит телефон, мы поднимаем трубку, говорим: "Алло", - и ждем ответа, а заканчивая разговор, прощаемся и не кладем трубку до тех пор, пока собеседник тоже скажет нам: "До свидания". Это и есть часть "протокола"
    телефонного разговора на естественном языке. При передаче файлов тоже можно использовать про- стые правила связи между двумя программами. Обычно набор правил для установки такой связи вклю- чает в себя, во-первых, правила начала передачи программой данных в общий файл, во-вторых, условия,
    когда другой программе разрешено записывать данные в этот файл, и, наконец, определение програм- мы, которая должна закрыть файл. Правила, регулирующие такого рода связь, называются протоколом.
    Очевидно, что создать такой протокол непросто, так как в нем должно быть предусмотрено множество ситуаций, в том числе и ошибочных. Кроме того, у разных компьютеров разное внутреннее представ- ление чисел, и в протоколе должна быть отражена эта специфика. Компьютеры могут иметь различные кодовые страницы, т.е. отображаемые символы по-разному интерпретируются на разных машинах, на- пример, один ПК использует английский язык, а другой — немецкий. При разработке протокола следует учитывать все особенности гетерогенной среды.
    В сетевых средах поддерживается множество подобных протоколов, однако наиболее популярным,
    пожалуй, можно считать TCP/IP, используемый в Internet. По сути, это набор протоколов, организую- щий трафик данных между компьютерами сети. Есть протоколы и более высокого уровня, например
    CPI-C, который когда-то использовался компанией IBM для связи программ. Изначально он был основой межпрограммной связи в языке АВАР/4; разработчик может применять его и сегодня. Хотя создание собственного протокола очень заманчивая идея, реализовать ее чрезвычайно сложно, а обеспечить пос- ледующее сопровождение таких программ еще труднее.
    Механизм RFC языка АВАР/4 предоставляет удобный способ программной связи приложений с по- мощью вызова функций АВАР/4, освобождая разработчика от необходимости исследовать особенности протоколов.
    Вызов удаленной функции
    Под локальным вызовом функции понимается запуск функции в той же системе и на том же компью- тере, где исполняется вызывающая ее программа. Удаленным вызовом называется исполнение вызванной функции в другой системе на другом компьютере сети. Для пользователя никакой разницы между ними нет. Единственное отличие заключается в том, что при вызове функции разработчик должен указать в вызывающей программе дополнительный параметр — destination (пункт назначения или адресат).
    Предположим, у туристического агентства появилось множество филиалов и в них используются собственные программы. Тогда каждый вечер из программы, работающей в главном офисе, можно за- пускать удаленный вызов функции, чтобы обновить информацию в центральной базе данных и создать какие-то отчеты. Ниже приведен пример такого вызова удаленной функции:

    Вызовы удаленных функций 299
    Спецификация параметра destination указывает исполнительной системе, что вызов функции ло- кальный, а выполняется в другой системе — FLORIDA. Параметры экспорта from_date и опре- деляют период времени, данные за который должны быть получены. Функция возвращает название агентства в параметре импорта agency и список регистрированных заказов в указанный период во внут- ренней таблице local_bookings.
    Процесс исполнения RFC
    Во время исполнения удаленного вызова (см. пример в предыдущем разделе) происходит следующее.
    Во-первых, система определяет, что означает имя FLORIDA в параметре целевого объекта destination.
    Это имя может относиться к какой-нибудь одной из систем R/3, установленных на разных рах, к системе R/2, к разным приложениям сервера внутри одной системы или к внешнему при- ложению, например к программе, написанной на языке С. Описания всех целевых объектов хранятся в базе данных в таблице rfcdes. Здесь же содержится информация, необходимая для идентификации адресата сети с логическим именем FLORIDA. Способы отображения и работы с элементами системной таблицы rfcdes рассматриваются в разделе "Сопровождение адресатов".
    В процессе вызова исполнительная система преобразует данные в машинно-независимый формат представления и передает их по каналу связи адресату, автоматически обрабатывая возможные рассо- гласования, например разные кодовые страницы или внутреннее представление данных. В системе ад- ресата инициируется функция выполняются необходимые действия и информация передается вызывающей программе. В системе адресата функция должна быть объявлена в описании интерфейса как удаленно вызываемая (remotely callable), так как исполнительный механизм АВАР/4 Development Workbench автоматически создает набор кодов, выпол- няющий функции процедуры ввода (stub), которая обслуживает поступающие вызовы. Процедура stub получает входные данные и направляет их нужной функции. После выполнения функции результаты передаются обратно в вызывающую программу.
    Поскольку в сетевых программах не поддерживается передача параметров по ссылке, параметры удаленной функции должны передаваться только по значению (т.е. копироваться). Для повышения ско- рости выполнения удаленного вызова исполнительная система копирует содержимое всей таблицы при передаче по сети только при первом вызове. При всех последующих вызовах по сети пересылаются лишь возможные изменения в содержимом таблицы.
    В системе при удаленном вызове функции создается новая сессия для конечного пользователя, ко- торая продолжается до момента завершения вызывающей программы. Поэтому при повторном вызове функции по тому же адресу исполнительная система использует уже установленную связь между систе- мами. Кроме того, если вызывается новая функция, относящаяся к той же группе, что и предыдущая,
    содержимое глобальных переменных группы функций остается таким же, как в случае предыдущего вызова функции этой группы. Данное свойство обеспечивает высокую эффективность работы вызван- ных функций при извлечении больших объемов многократно используемой информации.
    Расширенные возможности
    В простейшем случае функция, вызванная как удаленная, считывает информацию из базы данных и возвращает ее вызывающей программе. Используя технологию, описанную в части VI, удаленный адре- сат может передавать диалоговые экраны. Эта возможность реализуется также при создании прикладной диалоговой программы, предназначенной для работы в распределенной сетевой среде.
    Функции передачи экранов из удаленной системы поддерживаются в системе
    начиная
    с версии З.ОС.
    Если для выполнения удаленной функции необходима дополнительная информация, содержащаяся в вызывающей программе, которую невозможно передать с помощью интерфейсных параметров, вос- пользуйтесь фиксированной обратной адресацией
    Если для вызываемой удаленной функции такой адресат указан, она сама вызывает любую необходимую функцию в контексте вызывающей про- граммы, не устанавливая новую связь. Для рассмотренного выше туристического агентства этот прием можно использовать, если его филиал регистрирует рейсы местных авиалиний. Допустим, вызываемая удаленно функция запрашивает вызывающую программу, нужно ли передавать информацию о местных транспортных компаниях.
    При разработке удаленно вызываемой функции для эксплуатации в разных производственных сис- темах рекомендуется тестировать ее в разрабатываемой системе, используя имя адресата NONE. В этом

    300 Глава 27
    случае имитируется работа удаленной функции в удаленной системе, например устанавливается новая пользовательская сессия.
    Механизм RFC помогает вызывать внешние программы, написанные на языке С.
    Допускается и обратное: вызов функций АВАР/4 из внешнего приложения.
    Сопровождение адресатов
    Для работы со списком адресатов и добавления в него новых укажите на экране Function Admini- stration (администрирование функции) элемент меню Utilities (утилиты) > RFC Interface (интерфейс
    RFC)
    RFC Target Machine (компьютер адресата RFC). После этого раскроется следующий экран для просмотра всех адресатов RFC (рис. 27.1).
    Рис. 27.1
    Представление на экране всех адресатов RFC
    Каждый адресат RFC классифицируется по типу связи (connection type): связь с системой R/2, R/S
    или внешней системой. Для создания нового адресата укажите кнопку Create, для изменения параметров существующего адресата дважды щелкните на его имени. В обоих случаях раскрывается экран, на ко- тором можно создавать новый адресат или изменять параметры существующего (рис. 27.2).
    Для создания нового адресата в поле ввода RFC destination задайте его имя и укажите параметры
    (например, тип связи, имя сети компьютера-адресата). Можно задать и способ использования ресурсов —
    Load Ьаlаnсе (баланс загрузки), что обеспечивает подключение вызова к серверу удаленной системы
    R/3 с минимальной загрузкой. Таким образом, всегда есть возможность получить доступ к компьютеру,
    имеющему максимально свободные ресурсы. В средней части экрана сопровождения задайте краткое описание. В нижней части экрана введите информацию для доступа к системе, в которой исполняется вызов удаленной функции. Для сохранения параметров адресата нажмите кнопку Save.
    Обеспечивается также тестирование связи с адресатом, Для этого укажите элемент линейки меню
    Test. При успешном соединении удаленная система выведет на экран свою системную информацию, в противном случае - сообщение об ошибке. Поскольку на экране указываются параметры доступа к сис- теме, разработчик, нажав кнопку Remote logon (вход в удаленную систему), может подключиться к сис- теме напрямую. После этого на экране появляется отображение экрана удаленной системы и пользователь получает возможность в ней работать.
    Обработка ошибок связи
    Безусловно, при связи с удаленной системой возникает множество ошибок. Например, вызывающая программа должна отслеживать, что система адресата недоступна или произошло нарушение связи.
    Кроме того, при исполнении удаленного вызова могут выявиться ошибки исполнения. Для локализации

    Вызовы удаленных функций 301
    Рис. 27.2
    Подробное описание
    адресата FLORIDA
    подобных ситуаций предназначены специальные системные исключения (exceptions). В частности, ис- ключение указывает вызывающей программе, что при выполнении вызова про- изошло нарушение линии связи. Дополнение message позволит получить в поле, указанном после этого параметра, подробное описание ошибки. Ошибки исполнения передаются в систему через исключение к которому тоже можно добавить параметр message, чтобы получить поясняющий ошибку текст. Если функция, вызываемая удаленно, не существует или не описана как предназначенная для удаленного вызова, ситуация определяется как исключение и соответствующий текст со- общения передается в поле, следующее за параметром message. Для предупреждения рассмотренных выше ситуаций текст примера должен выглядеть так:
    parameters: date_l type d,
    date_2 type d.
    data: l_agency(20),
    sys_msg (80),
    comm_msg like sys_msg,
    l_bookings like bookings occurs 50 with header line.
    call function 'GET_LOCAL_BOOKINGS'
    destination 'FLORIDA'
    exporting from_date = date_1
    to_date = date_2
    importing agency = l_agency tables local_bookings = l_bookings exceptions syatem_failure = 1 message sys_msg communication_fallure = 2 message comm_msg.
    case sy-subrc.
    when 1.
    write: / ' system error', sys_msg.
    exit.

    302 Глава 27
    Программа отладки АВАР/4 Debugger также поддерживает отладку таких удаленных вызовов, что позволяет выявлять ошибки исполнения, такие, например, как отсутствие вызываемого модуля функции в системе.
    А с и н х р о н н ы й в ы з о в
    При вызове удаленной функции вызвавшая программа не будет исполняться до тех пор, пока вызов не будет завершен. Ситуации ожидания можно избежать, если использовать асинхронный вызов. Очень часто для продолжения работы вызвавшей программы результаты исполнения вызванной программы (в частности, при передаче сообщений по электронной почте) не требуются. Вызов будет асинхронным,
    если использовать дополнение starting new task оператора call function, за которым следует имя задания:
    В этом примере ANSWER — имя подпрограммы в вызывавшей системе, исполняемой при заверше- нии вызванной функции в удаленной системе. Если добавить параметр performing on end of task, линия связи будет сохраняться между двумя абонентами до тех пор, пока не завершится вызванная функция и результаты не вернутся в форму ANSWER. В вызывающей программе необходимо объявить такую форму:
    В этом асинхронном вызове вызывающая программа посылает удаленному абоненту только ры from_date и to_date, но не требует немедленно переслать обратно таблицу bookings. Таким образом,
    вызывающая программа может продолжать свою работу, не дожидаясь, когда результаты вызова вернут- ся назад. В удаленной системе функция будет исполняться в рамках отдельной сессии пользователя под названием
    Асинхронный вызов можно использовать также, если данные этого вызова понадобятся сразу, а чуть позже. Например, у туристического агентства есть несколько отделений разных штатах, а данные о заказах билетов требуется получать только раз в день. Эти отделения можно вызывать асинхронно,
    и все адресаты будут передавать данные о заказах билетов только после получения их из своих баз данных. Это может оказаться самым оперативным решением проблемы сбора распределенных данных.
    Однако, если вызвавшей программе необходима информация о завершении удаленной функции, она должна периодически запрашивать у СУБД, посланы ли данные. С помощью добавления параметра per- forming on end of task можно "заказать" автоматическое оповещение и получение удаленных данных:

    Вызовы удаленных функций 303
    Когда удаленная функция завершит свою работу и данные будут посланы обратно, вызвавшая система примет сообщение от удаленного абонента и передаст управление форме ANSWER. По команде receive форма импортирует присланные данные и сообщит вызвавшей программе об ошибках. Команда receive results from function используется для приема данных асинхронного вызова функции.
    Резюме
    • Удаленный вызов функции (Remote Function Call, RFC) — наиболее простой способ связи между двумя программами, принадлежащими R/3, R/2 или внешней системе.
    • При использовании синхронного удаленного вызова (RFC) вызвавшая программа ожидает ответ- ной пересылки результатов.
    • При использовании асинхронного RFC вызвавшая программа не ждет завершения вызванной про- граммы, а продолжает работать. В этом случае при получении результата управление передается специальной подпрограмме, которая принимает результаты и сообщения об ошибке.
    В следующей главе рассматривается использование OLE-объектов в программах АВАР/4 для вызова
    приложений, исполняемых на персональных компьютерах.

    Глава 28
    Автоматическая
    обработка объектов OLE
    • Использование серверов OLE из программ АВАР/4
    • Построение объекта и задание его свойств
    • Инициализация методов

    306 Глава 28
    Технология OLE (Object Linking and Embedding), разработанная компанией Microsoft, используется для включения в приложение объекта другого приложения. В какой-то мере технологию OLE можно рассматривать как интерфейс вызова, который помогает строить ссылки на объекты приложения, осу- ществлять их вызовы, а также получать или задавать свойства объектов.
    Использование сервера OLE
    в программах АВАР/4
    Технология автоматической обработки OLE поддерживается в языке АВАР/4 за счет средств откры- того интерфейса объектов (Open Object Interface), позволяющего интегрировать приложения персо- нальных компьютеров в систему R/3. С программной точки зрения автоматическая обработка объектов
    OLE основана на использовании RFC. При вызове из программы АВАР/4 система R/3 исполняет роль клиента OLE, а внешнее приложение - сервера OLE.
    Как уже следует из названия Open Object Interface, этот открытый интерфейс объектов не ограни- чивается работой с объектами только OLE. С его помощью можно вызывать объекты других техноло- гий, например CORBA, которую предполагается поддерживать в будущих версиях R/3.
    Создание объекта
    Прежде чем работать с объектами зарегистрируйте этот сервер в системе
    Для этого используется следующая последовательность элементов меню на основном экране АВАР/4
    Development Workbench: Development (разработка)
    Programming Environment (программный интер- фейс)
    > OLE2 Setup (задание
    OLE). На раскрывшемся экране приводятся все уже зарегистрированные в системе приложения OLE-сервера; здесь же разрешается добавление
    Для получения информации о допустимых типах приложений OLE-сервера и загрузки их в систему воспользуйтесь меню: Development
    Programming Environment
    Typeinfo (информация о типах объектов OLE). В этом случае есть гарантия, что созданная для работы с объектами OLE про- грамма будет независимой от языка программирования. После этого выведите на экран список всех доступных зарегистрированных серверных приложений и описание поддерживаемых ими объектов:
    Development
    Programming Environment
    OLE2 Object Browser. Для обработки такого объ- екта средствами АВАР/4 нужно в первую очередь создать воспользовавшись оператором create:
    Оператор create возвращает дескриптор объекта, определенный в программе как переменная appli- cation типа после которой следует имя объекта. В приведенном примере создается прило- жение для Excel, поэтому имя связанного с ним объекта — excel.application. Допускается написание имен объектов на естественном языке страны пользователя. В этом случае после поля, содержащего имя объекта, укажите дополнение language (по умолчанию в системе установлены символы английского языка). В системном коде возврата содержится информация о возможной ошибке, описание которой передается в системное поле
    1   ...   16   17   18   19   20   21   22   23   24


    написать администратору сайта