Отдалечено извикване на функция (RFC) в ръководството за SAP

Съдържание:

Anonim

Какво е RFC?

RFC е механизъм, който позволява на бизнес приложенията да обменят и обменят информация (в предварително определени формати) с други системи. RFC означава „Remote Function Call“

RFC се състои от два интерфейса:

  1. Интерфейс за повикване за програми ABAP
  2. Интерфейс за повикване за програми, които не са SAP.

Всяка програма ABAP може да извика отдалечена функция с помощта на оператора CALL FUNCTION ... DESTINATION . Параметърът DESTINATION казва на SAP системата, че извиканата функция се изпълнява в система, различна от повикващите.Синтаксис-

ФУНКЦИЯ НА ПОКЛИКАНЕДЕСТИНАЦИЯ дестИЗНОС f1 =ВНОС f2 =ТАБЛИЦИ t1 =ИЗКЛЮЧЕНИЯ

Логическите дестинации се дефинират чрез транзакция SM59 и се съхраняват в Таблица RFCDES
Функции на RFC интерфейса

  • Преобразуване на всички данни за параметри в представяне, необходимо в отдалечената система
  • Извикване на комуникационните процедури, необходими за разговор с отдалечената система.
  • Обработка на комуникационни грешки и уведомяване на повикващия, ако е необходимо (използвайки параметъра EXCEPTIONS на функцията CALL FUNCTION).


RFC е SAP протокол за обработка на комуникации между системи за опростяване на свързаното програмиране. Това е процесът на извикване на функционален модул, който се намира на различна машина от програмата за повикване. RFC могат да се използват и за извикване на различна програма на същата машина, но обикновено се използва, когато функционалните модули / програми „извикване“ и „извикване“ се изпълняват на отделни машини.


В SAP системата RFC Interface се използва за настройка на RFC връзки между различни SAP системи, а също и между SAP и външна (не-SAP) система.

Трябва да знаете подробности за RFC

  • SAP използва CPIC (общ интерфейс за програмиране за комуникация) протокол за прехвърляне на данни между системи. Това е SAP специфичен протокол. Remote Function Call (RFC) е комуникационен интерфейс, базиран на CPI-C, но с повече функции и по-лесен за използване от програмистите на приложения
  • Функциите на RFC библиотеката поддържат езика за програмиране C и Visual Basic (на платформи на Windows)
  • RFC връзките винаги могат да се използват в цялата система. Това означава, че RFC връзка, която сте дефинирали в клиент 000, може да се използва и от клиент 100 (без никаква разлика).
  • RFC е протоколът за извикване на специални подпрограми (функционални модули) по мрежата. Функционалните модули са сравними с C функции или процедури PASCAL. Те имат дефиниран интерфейс, чрез който могат да се обменят данни, таблици и кодове за връщане. Функционалните модули се управляват в системата R / 3 в собствената им библиотека с функции, наречена Function Builder.
  • Създателят на функции (транзакция SE37) предоставя на програмистите на приложения полезна среда за програмиране, документиране и тестване на функционални модули, които могат да бъдат извиквани както локално, така и дистанционно. Системата R / 3 автоматично генерира допълнителния код (RFC заглушител), необходим за отдалечени разговори.
  • Поддържате параметрите за RFC връзки, като използвате транзакция SM59. Системата R / 3 също се доставя с RFC-SDK (комплект за разработване на софтуер), който използва обширни C библиотеки, за да позволи на външни програми да бъдат свързани към системата R / 3.
  • Единствената разлика между отдалечено повикване на функционален модул към друг сървър и локално повикване е специален параметър (дестинация), който определя целевия сървър, на който програмата трябва да бъде изпълнена.

Предимствата на RFC:

RFC помага за намаляване на усилията на програмистите, като им позволява да избягват повторното разработване на модули и методи в отдалечени системи. Той е достатъчно способен да:

  • Преобразувайте данните във формат, разбираем за отдалечената (целевата) система.
  • Преобразувайте данните във формат, разбираем за отдалечената (целевата) система.
  • Извикайте определени процедури, които са необходими за започване на комуникация с отдалечената система.
  • Обработвайте грешки, които могат да възникнат в процеса на комуникация.

Видове RFC:


Синхронно

Изисква двете системи (клиент и сървър) да са достъпни по време на комуникацията или прехвърлянето на данни. Това е най-често срещаният тип и се изисква, когато резултатът се изисква веднага след изпълнението на sRFC.
sRFC е средство за комуникация между системи, където се изискват потвърждения. Ресурсите на системата източник изчакват на целевата система и гарантират, че те доставят съобщението / данните с ACKD. Данните са последователни и надеждни за комуникация.
Проблемът е, че целевата система не е налична, ресурсите на изходната система изчакват, докато целевата система стане налична. Това може да доведе до процесите на системата източник да преминат в режим на заспиване / RFC / CPIC в целевите системи и по този начин да блокира тези ресурси.
Използвани за

  • За комуникация между системи
  • За комуникация между SAP Web Application Server и SAP GUI

Асинхронен

Това е комуникация между системи, при които не се изискват потвърждения (подобно е на доставката на пощенска картичка). Не се изисква и двете системи да са налични по време на изпълнението и резултатът не се изисква незабавно да бъде изпратен обратно на повикващата система .

Ресурсът Изходна система не чака целевата система, тъй като те доставят съобщението / данните, без да изчакат потвърждение. Не е надежден за комуникация, тъй като данните могат да бъдат загубени, ако целевата система не е налична. Използвани за -

  • За комуникация между системи
  • За паралелна обработка

Транзакционна

Това е специална форма на aRFC. Транзакционният RFC осигурява подобна на транзакцията обработка на стъпки за обработка, които първоначално са били автономни.

Транзакционният RFC е асинхронен комуникационен метод, който изпълнява извикания функционален модул в RFC сървъра само веднъж, дори ако данните се изпращат няколко пъти поради някакъв мрежов проблем. Отдалечената система не трябва да е налична по времето, когато клиентската програма RFC изпълнява tRFC. Компонентът tRFC съхранява извиканата RFC функция, заедно със съответните данни, в базата данни на SAP под уникален идентификатор на транзакция (TID). tRFC е подобен на aRFC, тъй като не чака в целевата система (Подобно на регистрирана поща). Ако системата не е налична, тя ще запише данните в aRFC таблици с идентификатор на транзакция (SM58), който се избира от RSARFCSE на планиращия (който се изпълнява на всеки 60 секунди). Използвани за-

  • Разширение на асинхронния RFC
  • За сигурна комуникация между системите

На опашка

RFC на опашка е продължение на tRFC. Той също така гарантира, че отделните стъпки се обработват последователно.

За да се гарантира, че множество LUW (логическа единица работа / транзакция) се обработват в реда, посочен от приложението. tRFC може да се сериализира с помощта на опашки (входящи и изходящи опашки). Оттук и името на опашката RFC (qRFC). Използвани за-

  • Удължаване на транзакционния RFC
  • За определена последователност на обработка
  • Внедряването на qRFC се препоръчва, ако искате да гарантирате, че няколко транзакции се обработват в предварително зададен ред.

Видове RFC връзки


Тип 3 - записите определят връзката между системите ABAP. Тук трябва да посочим името на хоста / IP адреса. Можете обаче да посочите информация за влизане, ако желаете. Това е приложимо и за двата типа RFC, между ABAP системите и външните повиквания към ABAP системиТип I - записите посочват ABAP системи, свързани към същата база данни като текущата система. Тези записи са предварително дефинирани и не могат да бъдат модифицирани. Примерно име на запис: ws0015_K18_24

  • ws0015 = име на хост
  • K18 = име на системата (име на база данни)
  • 24 = Име на TCP-услуга

Тип T - дестинациите са връзки с външни програми, които използват RFC API за получаване на RFC. Типът на активиране може да бъде или Старт или Регистрация. Ако е "Старт", трябва да посочите името на хоста и името на пътя на програмата, която ще се стартира.

Как да кодирам RFC?

1. В раздела атрибути на функционалния модул (код на транзакцията SE37), задайте типа обработка като модул с дистанционно управление, за да създадете отдалечен функционален модул.


2. Напишете кода за функционалния модул.


3. Дефинирайте дестинацията на RFC сървъра в клиентската система RFC, която извиква отдалечената функция (чрез транзакция SM59).


4. Деклариране на параметри : Всички полета с параметри за отдалечен функционален модул трябва да бъдат дефинирани като референтни полета, тоест като полетата на ABAP Dictionary.5. Изключения: Системата вътрешно повишава COMMUNICATION_FAILURE и SYSTEM_FAILURE. Можете да създадете изключения в отдалечена функция, точно както бихте направили в локално наречена функция.

Отстраняване на грешки при отдалечени функции

  • Не е възможно да отстраните грешки при отдалечено извикване на функция към друга система.
  • Въпреки това, когато тествате ABAP към ABAP RFC повиквания, можете да използвате ABAP дебъгер, за да наблюдавате изпълнението на RFC функцията в отдалечената система.
  • При отдалечени повиквания дебъгерът на ABAP (включително интерфейса за отстраняване на грешки) работи в локалната система. Стойностите на данните и друга информация за изпълнението за отдалечената функция се предават от отдалечената система.