Remote Function Call (RFC) sisään SAP ABAP opetusohjelma

⚡ Älykäs yhteenveto

Etäfunktiokutsu (RFC) on SAP viestintämekanismi, jonka avulla ABAP-ohjelma voi kutsua toisessa koneessa käynnissä olevaa funktiomoduulia SAP tai ulkoinen järjestelmä. Se abstracTarkistaa verkon putkiston, muuntaa tietomuodot ja näyttää virheet selkeästi takaisin soittajalle.

  • 📡 Ydinmekanismi: CALL FUNCTION…DESTINATION kutsuu funktiomoduulia, joka perustuu SM59:ssä määriteltyyn loogiseen kohteeseen.
  • 🔁 Neljä vaihtoehtoa: SyncKrooninen, asynkroninen, transaktionaalinen ja jonossa oleva RFC takaavat kukin erilaisen toimitustavan.tract.
  • 🌐 Yhteystyypit: SM59 tukee tyyppiä 3 (ABAP-to-ABAP), tyyppiä I (saman tietokannan vertaislaitteet) ja tyyppiä T (ulkoiset ohjelmat).
  • 🛠️ Rakennuspolku: Aseta funktiomoduuli SE37:ssä arvoon Remote-enabled, koodaa se ja määritä kohde soittajan SM59:ssä.
  • 🤖 Tekoälyn kulma: Tekoälyavustajat luovat ABAP RFC -tynkiä luonnollisen kielen määrityksistä ja jäsentävät SM58-virheet toimiviksi korjauksiksi.

RFC-liitännän toiminnot

Mikä on RFC? SAP?

RFC tarkoittaa EtäfunktiokutsuSe on mekanismi, jonka avulla liiketoimintasovellukset voivat kommunikoida ja vaihtaa tietoa – ennalta määritellyissä muodoissa – muiden järjestelmien kanssa. RFC on yleisin tapa SAP järjestelmä kommunikoi toisen kanssa, ja se on myös silta, joka yhdistää SAP järjestelmiin ei-SAP sovelluksissa.

RFC tarjoaa kaksi rajapintaa:

  1. Kutsuva käyttöliittymä ABAP-ohjelmat.
  2. Kutsuva käyttöliittymä muille kuinSAP ohjelmia.

Mikä tahansa ABAP-ohjelma voi käynnistää etäfunktion käyttämällä PUHELUTOIMINTO… KOHDE lausunto. The DESTINATION parametri kertoo SAP järjestelmä, jossa kutsuttu funktio suoritetaan eri järjestelmässä kuin kutsuja.

Syntaksi

CALL FUNCTION 'remotefunction'
  DESTINATION dest
  EXPORTING  f1 = ...
  IMPORTING  f2 = ...
  TABLES     t1 = ...
  EXCEPTIONS ...

Loogiset kohteet määritellään transaktion kautta SM59 ja tallennettu taulukkoon RFCDES.

RFC-liitännän toiminnot

RFC-liitännän toiminnot

RFC-ajonaikainen ympäristö vastaa kolmesta asiasta jokaisessa kutsussa:

  • Muuntaa kaikki parametritiedot etäjärjestelmän odottamaan esitystapaan.
  • Soittaminen viestintärutiineihin, joita tarvitaan etäjärjestelmän kanssa puhumiseen.
  • Viestintävirheiden käsittely ja niiden ilmoittaminen soittajalle EXCEPTIONS parametri CALL FUNCTION.

RFC-viestintä SAP järjestelmät

RFC on SAP protokolla, joka käsittelee järjestelmien välistä kommunikaatiota ja yksinkertaistaa siihen liittyvää ohjelmointia. Se on prosessi, jossa kutsutaan funktiomoduulia, joka sijaitsee eri koneella kuin kutsuva ohjelma. RFC:itä voidaan teknisesti käyttää funktiomoduulin kutsumiseen sama koneella, mutta niitä käytetään useimmiten silloin, kun kutsuva ja kutsuttu ohjelma suoritetaan eri koneilla. RFC-rajapintajärjestelmää käytetään RFC-yhteyksien muodostamiseen eri koneiden välille SAP järjestelmät, samoin kuin välillä SAP ja ulkoinen (ei-SAP) järjestelmät.

RFC:n pakolliset tiedot

  • SAP käyttää CPIC protokolla (Common Programming Interface for Communication) tiedonsiirtoon järjestelmien välillä. CPIC on SAP-kohtainen. RFC on CPI-C:n päälle rakennettu tietoliikennerajapinta, mutta siinä on enemmän toimintoja ja sovellusohjelmoijille käyttäjäystävällisempi käyttöliittymä.
  • RFC-kirjastotoiminnot tukevat C-ohjelmointikieli ja Visual Basic päällä Windows alustoille.
  • RFC-yhteydet toimivat koko järjestelmässä. Asiakasohjelmassa 000 määriteltyä RFC-yhteyttä voidaan käyttää myös asiakkaasta 100 ilman eroja.
  • RFC on protokolla erikoistuneiden aliohjelmien (funktiomoduulien) kutsumiseen verkon kautta. Funktiomoduulit ovat verrattavissa C-funktioihin tai Pascal-proseduureihin: ne tarjoavat määritellyn rajapinnan, jonka kautta tietoja, taulukoita ja paluukoodeja vaihdetaan. Funktiomoduuleja hallitaan... SAP järjestelmä omassa kirjastossaan, Funktioiden rakentaja.
  • Funktioiden rakentaja (tapahtuma SE37) tarjoaa sovellusohjelmoijille ympäristön kirjoittamiseen, dokumentointiin ja testaus funktiomoduuleja, joita voidaan kutsua sekä paikallisesti että etänä. Järjestelmä luo automaattisesti lisäkoodin ( RFC-tynkä) tarvitaan etäpuheluita varten.
  • RFC-yhteyksiä ylläpidetään transaktioiden avulla SM59. SAP lähettää myös RFC-SDK (Software Development Kit), joka käyttää laajoja C-kirjastoja, jotta ulkoiset ohjelmat voivat muodostaa yhteyden SAP järjestelmään.
  • Ainoa ero etäpuhelun ja paikallispuhelun välillä toiselle palvelimelle on DESTINATION parametri, joka määrittää kohdepalvelimen, jolla ohjelman tulisi suorittaa.

RFC:n edut

RFC vähentää ohjelmointityötä poistamalla tarpeen toteuttaa moduuleja ja metodeja uudelleen etäpäässä. RFC-kerros huolehtii seuraavista asioista:

  • Muunna data etäjärjestelmän (kohdejärjestelmän) ymmärtämään muotoon.
  • Etäjärjestelmän kanssa viestinnän muodostamiseen tarvittavien rutiinien kutsuminen.
  • Viestinnän aikana ilmenevien virheiden käsittely.
  • Tarjoaa luotettavaa transaktionaalista semantiikkaa, kun käytetään transaktionaalisia tai jonotettuja variantteja.

RFC-tyypit

RFC-tyypit

SAP tukee neljää RFC-muunnosta. Jokainen tarjoaa erilaisen kompromissin latenssin, luotettavuuden ja järjestystakuiden välillä.

1. Synckrooninen RFC (sRFC)

SyncKronous RFC edellyttää, että sekä asiakas että palvelin ovat käytettävissä kutsun aikaan. Se on yleisin tyyppi ja sitä käytetään aina, kun kutsuja tarvitsee tuloksen heti suorituksen jälkeen.

sRFC on järjestelmien välinen viestintätapa, jossa odotetaan kuittauksia. Lähdejärjestelmän resurssit odottavat kohdejärjestelmää ja varmistavat, että viesti saapuu perille kuittauksen kera. Vaihdetut tiedot ovat yhdenmukaisia ​​ja luotettavia.

Haittapuolena on, että jos kohdejärjestelmä ei ole käytettävissä, lähdejärjestelmän resurssit odottavat sen paluuta, mikä voi siirtää lähdejärjestelmän prosessit lepo-/RFC/CPIC-tilaan kohdejärjestelmässä ja estää resurssien käytön.

Käytetään:

  • Reaaliaikainen viestintä järjestelmien välillä.
  • Viestintä välillä SAP Web-sovelluspalvelin ja SAP GUI.

2. Asynkroninen RFC (aRFC)

Asynkroninen RFC on järjestelmien välistä viestintää, jossa ei vaadita kuittausta – verrattavissa järjestelmän katkaisemiseen.ping postikortti postitse. Molempien järjestelmien ei tarvitse olla käytettävissä suoritushetkellä, eikä tulosta palauteta välittömästi kutsuvalle järjestelmälle.

Lähdejärjestelmäresurssi ei odota kohdejärjestelmää; se toimittaa tiedot ja siirtyy eteenpäin. Tämä tekee aRFC:stä nopean, mutta ei yksinään luotettavan — tietoja voi kadota, jos kohdejärjestelmä ei ole käytettävissä.

Käytetään:

  • Järjestelmien välinen käynnistys- ja unohda-kommunikaatio.
  • Rinnakkainen käsittely eri järjestelmissä.

3. Transaktionaalinen RFC (tRFC)

Transaktionaalinen RFC on asynkronisen RFC:n erityinen muoto. Se varmistaa transaktionaalisen käsittelyn prosessointivaiheissa, jotka muuten olisivat autonomisia.

tRFC suorittaa kutsutun funktiomoduulin RFC-palvelimella tasan kerran, vaikka tiedot lähetettäisiin useita kertoja verkko-ongelmien vuoksi. Etäjärjestelmän ei tarvitse olla käytettävissä sillä hetkellä, kun RFC-asiakasohjelma suorittaa kutsun. tRFC-komponentti tallentaa kutsutun funktion ja sen tiedot RFC-palvelimelle. SAP tietokanta yksilöllisen tunnisteen alla Tapahtumatunnus (TID)Jos kohdejärjestelmä ei ole käytettävissä, tiedot kirjoitetaan RFC-taulukoihin (näkyvät tapahtumassa SM58) ja myöhemmin ajoitusraportin poimima RSARFCSE, joka toimii 60 sekunnin välein.

Käytetään:

  • Asynkronisen RFC:n laajentaminen enintään kerran toimitettavalla sisällöllä.
  • Luotettava kommunikaatio järjestelmien välillä, joissa täsmälleen kerran suoritettavalla toiminnalla on merkitystä.

4. Jonotettu RFC (qRFC)

Jonotettu RFC laajentaa tRFC:tä takaamalla, että yksittäiset vaiheet käsitellään kutsuvan sovelluksen määrittämässä järjestyksessä. Sen varmistamiseksi, että useat LUW:t (Logical Units of Work / transactions) käsitellään aiotussa järjestyksessä, tRFC voidaan sarjoittaa käyttämällä saapuvia ja lähteviä jonoja – mistä nimi "jonotettu RFC" tulee.

Käytetään:

  • Transaktionaalisen RFC:n laajentaminen tiukalla järjestyksellä.
  • Skenaariot, joissa määritelty käsittelyjärjestys on pakollinen.
  • Tapaukset, joissa useita tapahtumia on käsiteltävä ennalta määritellyssä järjestyksessä.

RFC-tyyppien vertailu

Tyyppi Soittaja odottaa? Luotettava? Tilattu? Best For
sRFC Kyllä Kyllä Ei sovellu (yksittäinen puhelu) Reaaliaikaiset haut
aRFC Ei Ei Ei Sytytä ja unohda -periaatteella tehtävä rinnakkainen työ
tRFC Ei Kyllä (tasan kerran) Ei Luotettavat asynkroniset päivitykset
qRFC Ei Kyllä (tasan kerran) Kyllä Tarkkaan järjestetyt päivitykset

RFC-yhteyksien tyypit

RFC-yhteyksien tyypit

SM59 tukee useita yhteystyyppejä. Kolme yleisintä on esitetty alla.

Tyyppi 3 — ABAP-ABAP

Tyypin 3 merkinnät määrittävät yhteyden seuraavien välillä: ABAP-järjestelmätIsäntänimi tai IP-osoite on pakollinen; kirjautumistiedot voidaan antaa valinnaisesti. Tyyppiä 3 voidaan käyttää sekä ABAP-järjestelmien välisissä RFC-viesteissä että ulkoisissa ABAP-järjestelmiin tulevissa puheluissa.

Tyyppi I — Saman tietokannan vertaiskäyttäjä

Tyypin I merkinnät määrittävät ABAP-järjestelmät, jotka jakavat saman tietokannan nykyisen järjestelmän kanssa. Nämä merkinnät ovat ennalta määritettyjä, eikä niitä voida muokata. Tyypillinen merkinnän nimi näyttää tältä ws0015_K18_24:

  • ws0015 — isäntänimi
  • K18 — järjestelmän (tietokannan) nimi
  • 24 — TCP-palvelun nimi

Tyyppi T — Ulkoinen ohjelma

Tyypin T kohteet muodostavat yhteyden ulkoisiin ohjelmiin, jotka käyttävät RFC-rajapintaa RFC:iden vastaanottamiseen. Aktivointityyppi voi olla jompikumpi seuraavista: Aloita or RekisteröintiJos se on Käynnistä, on annettava käynnistettävän ohjelman isäntänimi ja polku.

Miten Code RFC

RFC:n kokonaisvaltainen rakentaminen sisältää viisi vaihetta. Kolme ensimmäistä ovat mekaanisia klikkauksia SE37:ssä ja SM59:ssä; kaksi viimeistä liittyvät conin saamiseen.tracoikealla.

Vaihe 1: Transaktion funktiomoduulin määritteet-välilehdellä SE37, aseta käsittelytyypiksi Etäkäyttöinen moduuli merkitäksesi funktiomoduulin RFC-yhteensopivaksi.

SE37 Etäkäyttöinen moduuli

Vaihe 2: Kirjoita funktiomoduulin koodi lähdekoodieditoriin.

Funktiomoduulin lähdekoodi

Vaihe 3: Määritä RFC-palvelimen kohde RFC-asiakasjärjestelmässä, joka kutsuu etäfunktiota — tehdään transaktiossa SM59.

SM59-kohteen asetukset

Vaihe 4 — Parametrien määrittäminen: Kaikki etäfunktiomoduulin parametrikentät on määriteltävä viitekentiksi – eli ne on kirjoitettava ABAP-sanakirjan kenttiä vasten. Arvoparametreja ei sallita etäkäyttöisissä funktiomoduuleissa.

Vaihe 5 – Poikkeukset: Järjestelmä nostaa VIESTINTÄVIKA ja JÄRJESTELMÄVIRHE sisäisesti siirtotason virheiden perusteella. Sovellustason poikkeuksia voidaan aiheuttaa etäfunktion sisällä aivan kuten paikallisessakin funktiossa.

Etätoimintokutsujen virheenkorjaus

  • On virheenkorjaus ei ole mahdollista etäfunktiokutsu ei-ABAP-järjestelmään klassisella tavalla — vieras ajonaikainen ympäristö on läpinäkymätön.
  • ABAP-ABAP-RFC-kutsuissa ABAP-virheenkorjaajaa voidaan kuitenkin käyttää RFC-funktion suorituksen valvontaan etäjärjestelmässä.
  • Etäkutsuissa ABAP-virheenkorjausohjelma (käyttöliittymä mukaan lukien) toimii paikallisessa järjestelmässä. Etäfunktion data-arvot ja muut ajonaikaiset tiedot suoratoistetaan takaisin etäjärjestelmästä.

avain SAP RFC-tapahtumat

Päivittäinen RFC-työkalupakki tiivistyy muutamaan T-koodiin, jotka jokaisen ABAP-kehittäjän ja Basis-ylläpitäjän tulisi osata refleksinomaisesti.

T-koodi Tarkoitus
SM59 Ylläpidä RFC-kohteita — isäntä, kirjautuminen, tyyppi, suojaus.
SE37 Function Builder — luo tai muokkaa etäkäyttöisiä funktiomoduuleja.
SM58 Valvo epäonnistuneita transaktionaalisia RFC-pyyntöjä ja käsittele ne uudelleen.
SMQ1 / SMQ2 Valvo lähteviä (SMQ1) ja saapuvia (SMQ2) qRFC-jonoja.
LUOTTAMUS Ylläpidä HTTPS-suojattujen RFC-kohteiden käyttämiä SSL-varmenteita.
ST22 Tarkasta epäonnistuneiden etäpuheluiden aiheuttamat lyhyitä vedoksia.

Parhaat käytännöt SAP RFC

Hyvin suunniteltu RFC-kerros pitää integraatiot nopeina, havaittavina ja helposti kehitettävissä. Seuraavat tavat kannattaa ottaa huomioon jokaisessa projektissa.

  • Valitse oikea variantti huijaukselletract. Käytä sRFC:tä synkronisiin hakuihin, tRFC:tä enintään kerran tapahtuviin asynkronisiin päivityksiin ja qRFC:tä, kun järjestyksellä on merkitystä.
  • Käytä uudelleen yhtä kohdetta kohdejärjestelmää kohden sen sijaan, että isäntänimiä jaettaisiin useisiin kohteisiin, se tekee tunnistetietojen kierrätyksestä tracpöytä.
  • Älä koskaan koodaa tunnistetietoja kovakoodein ABAPissa. Käytä luotettavia järjestelmäyhteyksiä tai suojattuja kirjautumistikettejä aina kun mahdollista.
  • Seuraa SM58:aa ja SMQ2:ta säännöllisesti. Juuttuneet tRFC-merkinnät viivästyttävät liiketoimintaprosesseja hiljaisesti, kunnes ne käsitellään uudelleen.
  • Välitä vain viittaustyyppisiä parametreja. Arvoparametrit rikkovat etäkäyttöiset funktiomoduulit.
  • Käytä STRUSTia TLS-varmenteiden hallintaan HTTPS-kohteissa vanhentuneet varmenteet ovat yleisin syy salaperäisiin COMMUNICATION_FAILURE-vedoksiin.

UKK

RFC on matalan tason protokolla, joka kutsuu mitä tahansa etäkäyttöistä funktiomoduulia. BAPI on erityinen, SAP-sertifioitu funktiomoduuli, joka paljastaa vakaan liiketoimintaobjektimenetelmän — jokainen BAPI paljastetaan RFC:n kautta, mutta kaikki RFC-kutsut eivät osu BAPI:in.

Luotettu RFC on SM59-kohde, jossa kohdejärjestelmä luottaa soittajan todennukseen, joten salasanaa ei vaihdeta jokaisella puhelulla. Soittajan käyttäjäkonteksti välitetään eteenpäin. Se poistaa kovakoodatut tunnistetiedot tiukempien asetusten kustannuksella.

SM58 näyttää epäonnistuneet tai odottavat uudelleenkäsittelyä odottavat transaktionaaliset RFC-merkinnät. Jokaisella rivillä on transaktiotunnus, kutsuttu funktiomoduuli, kohde, virheteksti ja viimeisimmän uudelleenyrityksen aika.

Ei. RFC-liikenne on oletusarvoisesti salaamatonta. SNC (Secure Network Communications) tai TLS/HTTPS-kohteet on määritettävä salaamaan liikenne. SNC on tuotantoympäristöjen standardimekanismi.

tRFC takaa, että kutsu suoritetaan täsmälleen kerran, mutta ei säilytä järjestystä kutsujen välillä. qRFC perustuu tRFC:hen ja lisäksi sarjoittaa kutsut saapuvien tai lähtevien jonojen kautta, jotta kutsut suoritetaan täsmälleen sovelluksen määrittämässä järjestyksessä.

Kyllä. Ulkoiset ohjelmat voivat rekisteröityä SAP yhdyskäytävä RFC SDK:n avulla (JCo for Java, NCo for .NET tai C SDK). SAP kutsuu niitä sitten T-tyypin kohteen kautta aivan kuten mitä tahansa ABAP-funktiomoduulia.

Tekoälyavustajat luovat ABAP RFC -tynkiä luonnollisen kielen spesifikaatioista, ehdottavat skenaariolle oikeaa kohdetyyppiä ja kääntävät SM58-virhetekstin konkreettiseksi korjausluetteloksi – mikä nopeuttaa Basis- ja ABAP-tiimien päivittäistä integraatiotyötä.

Kyllä. Syötä tekoälyassistentille ST22-vedos tai SM58-virhe, niin se korreloi COMMUNICATION_FAILURE / SYSTEM_FAILURE -kuviot todennäköisimpiin syihin – vanhentunut varmenne, yhdyskäytävän kaatuminen, puuttuva valtuutus – ja ehdottaa asiaankuuluvaa T-koodia tarkastettavaksi.

Tiivistä tämä viesti seuraavasti: