Remote Function Call (RFC) in SAP уроци

Какво е RFC?

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

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

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

който и да е ABAP програма може да извика отдалечена функция с помощта на ФУНКЦИЯ ЗА ПОВЕДЕНИЕ…ДЕСТИНАЦИЯ изявление. The ДЕСТИНАЦИЯ параметърът казва на SAP Система, която извиканата функция изпълнява в система, различна от извикващите.

Синтаксис-

CALL FUNCTION 'remotefunction'

DESTINATION dest

EXPORTING f1 =

IMPORTING f2 =

TABLES t1 =

EXCEPTIONS

Логическите дестинации се определят чрез транзакция SM59 и се съхранява в табл RFCDES

Функции на RFC интерфейса

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

Функции на RFC интерфейса

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

Функции на RFC интерфейса

In SAP, RFC интерфейсната система се използва за настройка на RFC връзки между различни SAP системи, а също и между a 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.
  • Function Builder (транзакция SE37) предоставя на приложните програмисти полезна среда за програмиране, документиране и Тестване функционални модули, които могат да бъдат извикани както локално, така и дистанционно. Системата R/3 автоматично генерира допълнителния код (RFC stub), необходим за отдалечени повиквания.
  • Вие поддържате параметрите за RFC връзки, като използвате транзакция SM59. Системата R/3 също се доставя с RFC-SDK (Комплект за разработка на софтуер), който използва обширни C библиотеки, за да позволи свързването на външни програми към системата R/3.
  • Единствената разлика между отдалечено извикване на функционален модул към друг сървър и локално извикване е специален параметър (дестинация), който указва целевия сървър, на който трябва да се изпълни програмата.

RFC предимства

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

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

Видове RFC

Видове RFC

Syncхроничен

Изисква и двете системи (клиент и сървър) да са достъпни по време на комуникация или трансфер на данни. Това е най-често срещаният тип и се изисква, когато резултатът се изисква веднага след изпълнението на sRFC.

sRFC е средство за комуникация между системи, където се изискват потвърждения. Ресурсите на системата източник изчакват целевата система и гарантират, че доставят съобщението/данните с ACKD. Данните са последователни и надеждни за комуникация.

Проблемът е, че ако целевата система не е налична, ресурсите на изходната система изчакват, докато целевата система е налична. Това може да доведе до преминаване на процесите на изходната система в режим Sleep/RFC/CPIC на целевите системи и по този начин да блокира тези ресурси.

Използва се за

  • За комуникация между системите
  • За комуникация между SAP Сървър за уеб приложения към SAP GUI

Asynchronous

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

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

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

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

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

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

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

На опашка

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

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

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

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

Въведете 3 – записите уточняват връзката между ABAP системи. Тук трябва да посочим името на хоста / IP адреса. Можете обаче да посочите информация за влизане, ако желаете. Това е приложимо и за двата вида RFC, между ABAP системи и външни повиквания към ABAP системи

Тип I – записите указват ABAP системи, свързани към същата база данни като текущата система. Тези записи са предварително дефинирани и не могат да бъдат променяни. Примерно име на запис: ws0015_K18_24

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

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

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

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

Как да кодирате RFC

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

Как да кодирате RFC

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

Как да кодирате RFC

4) Деклариране на параметри: Всички полета с параметри за отдалечен функционален модул трябва да бъдат дефинирани като референтни полета, т.е. като полетата на ABAP речника.

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

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

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