Az SAP ECC 7.51 webszolgáltatás-összekötő sablonjának létrehozása az ECMA2Host-hoz
Ez az útmutató bemutatja, hogyan hozhat létre sablont a Web Service Bővíthetőségi kapcsolatkezelési ügynök (ECMA) összekötőjéhez az SAP ECC-felhasználók kezeléséhez.
Korlátozások és feltételezések
Ez a sablon bemutatja, hogyan kezelheti a felhasználókat. Az egyéb objektumtípusokra, például a helyi tevékenységcsoportokra, szerepkörökre és profilokra ez az útmutató nem vonatkozik, mivel az ECMA2Host jelenleg nem támogatja a többértékű hivatkozásokat. A jelszóműveletek nem tartoznak ennek az útmutatónak a hatókörébe.
Ez az útmutató nem ismerteti a közzétett BAPI-függvények meghívására használt szolgáltatásfiók létrehozását az SAP-ban. Feltételezi, hogy egy előre létrehozott demófiókot, a Fejlesztői használnak, egy olyan profillal, amely RFC_ALL jogosultságokat ad a cikkben említett BAPI-khoz.
A webszolgáltatás-konfigurációs eszköz alapértelmezés szerint nem támogatja az SAP-ban közzétett alábbi funkciókat: WSP-szabályzatok és végpontonként több kötés. Olyan WSDL-t vár, amely csak SOAP 1.1-et tartalmaz, és minden az egyben, szabályzatok nélküli dokumentumstílusú kötése van.
A sablonban használt SAP ECC BAPI-függvények:
- BAPI_USER_GETLIST – lekérheti a rendszerhez csatlakoztatott összes felhasználó listáját.
- BAPI_USER_GETDETAIL – adott felhasználó adatainak lekérése.
- BAPI_USER_CREATE1 – létrehoz egy felhasználót.
- BAPI_USER_DELETE – töröl egy felhasználót.
- BAPI_USER_CHANGE – frissíti a felhasználót.
Az útmutatóban szereplő ÖSSZES SAP-felhasználói tulajdonság egyetlen értékű tulajdonságként lesz kezelve.
A használt programozási nyelv a Visual Basic.
Webszolgáltatás-végpont definiálása és séma létrehozása
Mielőtt megtervezheti az importálási és exportálási munkafolyamatokat, létre kell hoznia egy sablont, és meg kell határoznia egy végpontot az SAP BAPI-függvényekkel egy SOAP-felületen keresztül. Ezután hozzon létre egy sémát az ECMA2-objektumokról, és azok tulajdonságai elérhetők ebben a sablonban.
- A "C:\Program Files\Microsoft ECMA2Host\Web Service Configuration Tool" mappából indítsa el a webszolgáltatás-konfigurációs eszközt wsconfigTool.exe
- A File-New menüben válassza az Új SOAP-projekt létrehozása lehetőséget
- Válassza a SOAP Project lehetőséget, és válassza az Új webszolgáltatás hozzáadása lehetőséget.
- Nevezze el a webszolgáltatást AZ SAPECC-nek, adjon meg egy URL-címet a közzétett WSDL letöltéséhez, írja be az SAPECC-t névtérként. A webszolgáltatás neve segít megkülönböztetni ezt a webszolgáltatást a sablonban másoktól. A névtér az osztályok létrehozásához használt Microsoft .NET-névtér nevét határozza meg. Válassza az Alapszintű hitelesítési módot, hacsak az SAP-rendszergazda másként nem utasítja. Válassza a Tovább gombot.
- Adjon meg hitelesítő adatokat az SAP ECC-végponthoz való csatlakozáshoz. Válassza a Tovább gombot.
- A végpontok és műveletek lapon győződjön meg arról, hogy a BAPI-k megjelennek, és válassza a Befejezés lehetőséget
Megjegyzés
ha egynél több végpontot lát, akkor a SOAP 1.2 és a SOAP 1.1 kötés egyaránt engedélyezve van. Ez az összekötő meghibásodását okozza. Módosítsa a kötésdefiníciót a SOAMANAGERben, és csak egyet tartson meg. Ezután vegyen fel újra egy webszolgáltatást.
- Mentse a projektet a C:\Program Files\Microsoft ECMA2Host\Service\ECMA mappába.
- Válassza ki az Objektumtípusok lapon, és válassza a Felhasználói objektumtípus hozzáadását. Válassza az OK gombot.
- Bontsa ki az Objektumtípusok lapot, és válassza a Felhasználótípus-definíció lehetőséget.
- Adja hozzá a következő attribútumokat a sémához, és válassza a userName elemet horgonyként.
- Mentse a projektet.
Név | Típus | Horgony |
---|---|---|
Város | szál | |
vállalat | húr | |
osztály | húr | |
karakterlánc | ||
lejárati idő | karakterlánc | |
keresztnév | húr | |
lastName | húr | |
középső név | húr | |
telefonszám | karakterlánc/fonal/húr | |
munkakör | húr | |
Felhasználónév | szál | ellenőrizve |
Teljes importálási munkafolyamat létrehozása
Az importálási munkafolyamat, bár opcionális az ECMA2Host esetében, lehetővé teszi a meglévő SAP-felhasználók importálását az ECMA2Host memóriabeli gyorsítótárába, és elkerülhetővé teszi, hogy a kiépítési folyamat során duplikált felhasználók jöjjenek létre.
Ha nem hoz létre importálási munkafolyamatot, akkor az összekötő csak exportálási módban működik, és az ECMA2Host mindig végrehajtja a felhasználói műveletek létrehozását, még a meglévő felhasználók esetében is. Ez hibákhoz vagy duplikációkhoz vezethet a szabványos SAP BAPI-k használatakor, kivéve, ha az exportálási munkafolyamat nem kezeli az ismétlődéseket.
Az SAP ECC nem kínál beépített mechanizmust az utolsó olvasás óta végrehajtott módosítások olvasásához.
Ezért csak a teljes importálási munkafolyamatot implementáljuk. Ha teljesítménybeli okokból szeretné implementálni a Delta Importot, forduljon az SAP rendszergazdájához a BAPI-k listájáért, és tegye közzé őket SOAP-webszolgáltatásként. Ezután implementálja a Delta Import munkafolyamatot az alábbi megközelítéssel a leírtak szerint, valamint egy customData tulajdonságot, amely az előző sikeres futtatás időbélyegét tartalmazza.
Az SAP ECC számos BAPI-függvényt kínál a tulajdonságokat tartalmazó felhasználók listájának lekéréséhez:
- BAPI_USER_GETLIST – lekérheti a rendszerhez csatlakoztatott összes felhasználó listáját.
- BAPI_USER_GETDETAIL – adott felhasználó adatainak lekérése.
Ebben a sablonban csak ez a két BAPI használja a meglévő felhasználók lekérését az SAP ECC-ből.
- Navigáljon az Objektumtípusok –> Felhasználó –> Importálás –> Teljes importálás munkafolyamatához, és a jobb oldali eszközkészletből húzza a Szekvencia tevékenységet a munkafolyamat-tervező panelre.
- A bal alsó sarokban keresse meg a Változók gombot, és jelölje ki az ebben a sorrendben definiált változók listájának kibontásához.
- Adja hozzá a következő változókat. Az SAP WSDL-ben generált változótípus kiválasztásához válassza a Típusok tallózása opciót, majd bontsa ki a által létrehozott-et, és bontsa ki az SAPECC névteret is.
Név | Változó típusa | Hatókör | Alapértelmezett |
---|---|---|---|
selRangeTable | SAPECC. TABLE_OF_BAPIUSSRGE | Szekvencia | új TABLE_OF_BAPIUSSRGE {.item = új BAPIUSSRGE(){új BAPIUSSRGE}} |
getListRetTable | SAPECC. TABLE_OF_BAPIRET2 | Szekvencia | új TABLE_OF_BAPIRET2 |
oldalméret | Int32 | Szekvencia | 200 |
visszaadottMéret | Int32 | Sequence | |
felhasználókTáblázat | SAPECC. TABLE_OF_BAPIUSNAME | Szekvencia | új TABLE_OF_BAPIUSNAME() |
- Az eszközkészletből húzza az egérrel négy Hozzárendelési tevékenységet a sorozat tevékenységbe, és állítsa be az alábbi értékeket:
selRangeTable.item(0).PARAMETER = "USERNAME"
selRangeTable.item(0).SIGN = "I" selRangeTable.item(0).OPTION = "GT" selRangeTable.item(0).LOW = ""
Ezek a paraméterek a BAPI_USER_GETLIST függvény meghívására és a lapozás implementálására szolgálnak.
- A lapozás implementálásához húzza az eszközkészletből a DoWhile-tevékenységet a sorozattevékenységbe az utolsó Hozzárendelés művelet után.
- A jobb oldali panelen váltson a Tulajdonságok lapra, és adja meg a DoWhile feltételét
- ciklus:
returnedSize = pageSize
- Válassza ki a Változók lehetőséget, és adja hozzá az int32 típusú CurrentPageNumber tulajdonságot a DoWhile cikluson belül az alapértelmezett 0 értékkel.
- Nem kötelező lépés: ha a Delta Import munkafolyamat implementálását tervezi, akkor az Eszközkészletből húzza be az Assign tevékenységet a Sorozattevékenységbe a DoWhile ciklus után. Állítsa be ezt az értéket:
-
customData(schemaType.Name + "_lastImportTime") = DateTimeOffset.UtcNow.Ticks.ToString()
Ez menti az utolsó teljes importálási futtatás dátumát és időpontját, és ez az időbélyeg később használható a Delta Import munkafolyamatban.
- Az eszközkészletből húzza az egérrel a Sorrend tevékenységet a DoWhile-tevékenységen belül. Húzza a WebServiceCall-tevékenységet a sorozattevékenységbe, és válassza az SAPECC szolgáltatás nevét, a ZSAPCONNECTORWS végpontot és BAPI_USER_GETLIST műveletet.
- Kattintson a(z) Argumentumok gombra, hogy a webszolgáltatás-hívás paramétereit az alábbiak szerint határozza meg.
Név | Irány | Típus | Érték |
---|---|---|---|
MAX_ROWS | In | Int32 | oldalméret |
MAX_ROWSSpecified | In | Logikai | Igaz |
VISSZATÉRÉS | Be- és kifelé | TABLE_OF_BAPIRET2 | getListRetTable |
SELECTION_EXP | Be- és kifelé | TABLE_OF_BAPIUSSEXP | |
KIVÁLASZTÁSI_TARTOMÁNY | Be- és kifelé | tábla_BAPIUSSRGE | selRangeTable |
Felhasználói lista | Be- és kifelé | TÁBLÁZAT_BAPIUSNAME | felhasználókTáblázata |
WITH_USERNAME | In | Sztring | |
SOROK | Ki | Int32 | visszatérített méret |
- Válassza az OK gombot. A figyelmeztető jel eltűnik. A usersTable változóban tárolt felhasználók listája. Mivel az SAP egyetlen válaszban nem ad vissza teljes listát a felhasználókról, lapozást kell implementálnunk, és ezt a függvényt többször is meg kell hívnunk lapváltás közben. Ezután minden importált felhasználónak külön hívással kell lekérnie a felhasználó adatait. Ez azt jelenti, hogy az 1000 felhasználót tartalmazó tájolás és a 200 oldalméret esetén a Web Service-összekötő 5 hívást indít a felhasználók listájának lekéréséhez, és 1000 egyéni hívást a felhasználók adatainak lekéréséhez. A teljesítmény javítása érdekében kérje meg az SAP-csapatot, hogy dolgozzon ki egy egyéni BAPI-programot, amely felsorolja az összes felhasználást a tulajdonságaikkal együtt. Ez elkerüli az 1000 egyéni hívás szükségességét, és azt, hogy a BAPI-függvényt közzé kelljen tenni egy SOAP WS-végponton.
- Az Eszközkészletből húzza az IF tevékenységet a DoWhile-tevékenységbe a WebServiceCall-tevékenység után. Adja meg ezt a feltételt a nem üres válasz és a hibák hiányának ellenőrzéséhez:
IsNothing(getListRetTable.item) OrElse getListRetTable.item.Count(Function(errItem) errItem.TYPE.Equals("E") = True) = 0
- Az eszközkészletből húzza át a Throw tevékenységet az IF tevékenység Más ágába, hogy hibát jelezzen a sikertelen importáláskor. Váltson a Tulajdonságok lapra, és írja be ezt a kifejezést a Throw tevékenység Kivétel tulajdonságához:
New Exception(getListRetTable.item.First(Function(retItem) retItem.TYPE.Equals("E")).MESSAGE)
- Az importált felhasználók listájának feldolgozásához húzza a ForEachWithBodyFactory tevékenységet az eszközkészletből a IF tevékenység Then ágába. Váltson a Tulajdonságok lapra, és válassza az SAPECC.BAPIUSNAME-t TypeArgumentként. Válassza ki a... gombot, és írja be ezt a kifejezést az Értékek tulajdonsághoz:
if(usersTable.item,Enumerable.Empty(of BAPIUSNAME)())
- Az Eszközkészletből húzza be a Szekvencia tevékenységet a ForEach-tevékenységbe. Ha aktív a Sorozattevékenység ablak, válassza a Változók gombra, és definiálja az alábbi változókat:
Név | Változó típusa | Hatókör | Alapértelmezett |
---|---|---|---|
vállalat | SAPECC.BAPIUSCOMP | Sequence | új BAPIUSCOMP() |
cím | SAPECC. BAPIADDR3 | Sorozat | új BAPIADDR3() |
alapértelmezés | SAPECC. BAPIDEFAUL | Szekvencia | új BAPIDEFAUL() |
logondata | SAPECC.BAPILOGOND | Szekvencia | új BAPILOGOND() |
getDetailRetTable | SAPECC. TABLE_OF_BAPIRET2 | Szekvencia | új TABLE_OF_BAPIRET2() |
Az IF tevékenységed így néz ki:
- Húzza és ejtse be a CreateCSEntryChangeScope tevékenységet a Sequence tevékenységbe. A DN tulajdonságban adja meg schemaType.Name & elemet. FELHASZNÁLÓNÉV. A CreateAnchorAttribute AnchorValue mezőben adja meg az item.username értéket.
- Az egyes felhasználók adatainak lekéréséhez az Eszközkészletből húzza a WebServiceCall-tevékenységet a Sequence tevékenységen belül közvetlenül a CreateAnchorAttribute tevékenység előtt. Válassza az SAPECC szolgáltatás nevét, a ZSAPCONNECTORWS végpontot és BAPI_USER_GET_DETAIL műveletet. Kattintson a(z) Argumentumok gombra, hogy a webszolgáltatás-hívás paramétereit az alábbiak szerint határozza meg.
Név | Irány | Típus | Érték |
---|---|---|---|
VISSZATÉRÉS | Be- és kifelé | TABLE_OF_BAPIRET2 | getDetailRetTable |
FELHASZNÁLÓNÉV | In | Sztring | item.felhasználónév |
CÍM | Ki | BAPIADDR3 | cím |
VÁLLALAT | Ki | BAPIUSCOMP | vállalat |
ALAPÉRTELMEZETT | Ki | BAPIUSDEFAUL | alapértelmezések |
bejelentkezési adatok | Ki | BAPILOGOND | bejelentkezési adatok |
FELHASZNÁLÓ_NÉVVEL | In | Sztring | |
SOROK | Ki | Int32 | returnedSize |
- Válassza az OK gombot. A figyelmeztető jel eltűnik. A felhasználó adatait a fenti változók tárolják. A HA tevékenységed így néz ki:
- A BAPI_USER_GET_DETAIL művelet eredményeinek ellenőrzéséhez húzza az IF tevékenységet az eszközkészletből, és helyezze azt a WebServiceCall és a CreateAnchorAttribute tevékenységek közé a Sequence tevékenységen belül. Adja meg ezt a feltételt:
IsNothing(getDetailRetTable.item) OrElse getDetailRetTable.item.Count(Function(errItem) errItem.TYPE.Equals("E") = True) = 0
Mivel a hiányzó felhasználói adatokat nem kell katasztrofális eseményként kezelni, szeretnénk jelezni ezt a hibát, és folytatni a többi felhasználó feldolgozását. Húzza be a Sorrend tevékenységet a HA tevékenység Egyéb ágába. Adjon hozzá naplótevékenységet az új sorozattevékenységhez. Váltson a Tulajdonságok lapra, és módosítsa a Szint tulajdonságot Magasra, a Címkét Nyomkövetésre. Írja be a következőt a LogText tulajdonságba: string.Join("\n", getDetailRetTable.item.Select (Function(item) item.MESSAGE ))
- Húzza a Sorszámozási tevékenységet a HA tevékenység Then ágába. Húzza a meglévő CreateAnchorAttribute tevékenységet a Sequence tevékenységre a IF tevékenység Then ágán belül. A ForEach-tevékenység így néz ki:
- Egy felhasználó minden tulajdonságához, mint például a város, a vállalat, a részleg és az e-mail cím, adjon hozzá egy IF (HA) tevékenységet a CreateAnchorAttribute tevékenység után. Ezután ellenőrizze, hogy a feltételek, mint például
Not string.IsNullOrEmpty(address.city)
, nem üres értékeket tartalmaznak, és adjon hozzá CreateAttributeChange tevékenységeket az IF tevékenység Then ágához.
Például: Adjon hozzá CreateAttributeChange tevékenységeket az összes felhasználói tulajdonsághoz a következő hozzárendelési táblázat használatával:
ECMA Felhasználói tulajdonság | SAP-jellemző |
---|---|
Város | cím.város |
osztály | cím.osztály |
vállalat | vállalat.vállalat |
address.e_mail | |
keresztnév | cím.keresztNév |
lastName | cím.vezetéknév |
második keresztnév | address.középsőNév |
munkakör | cím.funkció |
lejárati idő | logonData.GLTGB |
telefonszám | cím. TEL1_NUMBR |
- Végül adja hozzá a SetImportStatusCode-tevékenységet az utolsó CreateAttributeChange tevékenység után. Állítsa az ErrorCode-ot Sikerre a 'Then' ágban. Adjon hozzá még egy SetImportStatus-kódtevékenységet az Else ághoz, és állítsa be az ErrorCode-ot importErrorCustomContinueRun értékre.
- A ForEach-tevékenységen belül összecsukhatja a sorozattevékenységet, így a DoWhile-ciklus így néz ki:
- A felhasználók következő oldalának lekéréséhez frissítse
selRangeTable.item(0).LOW
a tulajdonságot. Húzza a HA tevékenységet a DoWhile-n belüli sorszámozási tevékenységbe. Helyezze a meglévő HA-tevékenység után. Adja meg a returnedSize>0 értéket feltételként. Add hozzá az Újfeladat nevű tevékenységet az IF tevékenység Akkor ágához, és állítsa be aselRangeTable.item(0).LOW
elemet ausersTable.item(returnedSize-1).username
elemre.
Elvégezte a teljes importálási munkafolyamat definícióját.
Exportálási hozzáadási munkafolyamat létrehozása
Ha egy felhasználót szeretne létrehozni az SAP ECC-ben, meghívhatja BAPI_USER_CREATE1 programot, és megadhatja az összes paramétert, beleértve a fióknevet és a kezdeti jelszót. Ha az SAP oldalán létre kell hoznia egy fióknevet, forduljon az SAP-rendszergazdához, és használjon egy egyéni BAPI-függvényt, amely egy újonnan létrehozott felhasználói fiók UserName tulajdonságát adja vissza.
Ez az útmutató nem mutatja be a licencek, helyi vagy globális tevékenységcsoportok, rendszerek vagy profilok hozzárendelését. Forduljon az SAP-rendszergazdához, és ennek megfelelően módosítsa ezt a munkafolyamatot.
Az exportálási munkafolyamatokban nincs szükség lapszámozás implementálására. A munkafolyamat-környezeten belül csak egy objectToExport objektum érhető el.
- Navigáljon az objektumtípusokhoz –> Felhasználó – Exportálás –>> Munkafolyamat hozzáadása és a jobb oldali eszközkészletből húzza a Sorrendtevékenység elemet a munkafolyamat-tervező panelre.
- A bal alsó sarokban keresse meg a Változók gombot, és jelölje ki az ebben a sorrendben definiált változók listájának kibontásához.
- Adja hozzá a következő változókat. Az SAP WSDL-ben generált változótípus kiválasztásához válassza a Típusok tallózása opciót, majd bontsa ki a által létrehozott-et, és bontsa ki az SAPECC névteret is. Ez inicializálja BAPI_USER_CREATE1 program által használt adatstruktúrákat.
Név | Változó típusa | Hatókör | Alapértelmezett |
---|---|---|---|
cím | SAPECC. BAPIADDR3 | Szekvencia | új BAPIADDR3() |
Felhasználónév | Sztring | Szekvencia | |
jelszó | SAPECC.BAPIPWD | Szekvencia | új BAPIPWD() |
cég | SAPECC. BAPIUSCOMP | Sequence | új BAPIUSCOMP() |
alapértelmezések | SAPECC. BAPIDEFAUL | Sequence | új BAPIDEFAUL() |
bejelentkezési adatok | SAPECC.BAPILOGOND | Sequence | új BAPILOGOND() |
bapiret2Table | SAPECC. TABLE_OF_BAPIRET2 | Szekvencia | új TABLE_OF_BAPIRET2() |
- Mivel a userName tulajdonságot nem módosítható azonosítóként, horgonyként definiáltuk, ki kell nyernünk a userName értéket az exportálási objektum horgonyainak gyűjteményéből. Húzza a ForEachWithBodyFactory tevékenységet az eszköztárból a Sequence tevékenységbe. Cserélje le az elem változó nevét horgony-ra, válassza a tulajdonságokhoz, és válassza a
Microsoft.MetadirectoryServices.AnchorAttribute
TypeArgumentet. Az Érték mezőbe írja be aobjectToExport.AnchorAttributes
.
- A userName horgony sztringértékének kinyeréséhez húzza a Switch tevékenységet a ForEach tevékenységbe. Az előugró ablakban válassza
Microsoft.IdentityManagement.MA.WebServices.Activities.Extensions.AnchorAttributeNameWrapper
kapcsoló típusát. Adja meg a következő kifejezés értékét: New AnchorAttributeNameWrapper(anchor.Name). - Válassza a Kapcsoló tevékenység új esetterületének hozzáadása lehetőséget. Írja be a userName-t a Case Value mezőbe. Húzza az "Assign activity" elemet a userName esettörzsébe, és rendelje hozzá az anchor.Value.ToString() értékét a userName változóhoz.
- Most, hogy kinyertük a userName értéket az exportált objektumhorgony tulajdonságból, más struktúrákat kell feltöltenünk, például a vállalatot, az alapértelmezett értékeket, a címet, a bejelentkezési adatokat, amelyek más SAP-felhasználói adatokat tartalmaznak. Ezt úgy hajtjuk végre, hogy az attribútumváltozások gyűjteményén keresztül lépegetünk.
- Csukja össze a ForEach-tevékenységet, és húzzon egy másik ForEachWithBothFactory-tevékenységet a Sequence tevékenységbe a meglévő ForEach-tevékenység után. Cserélje le az elemváltozó nevét az attributeChange értékre, váltson a tulajdonságokra, és válassza a TypeArgument of
Microsoft.MetadirectoryServices.AttributeChange
. Az Érték mezőbe írja be aobjectToExport.AttributeChanges
.
- Húzza a Váltás tevékenységet a ForEach-tevékenység törzsébe.
- Az előugró menüben válassza a
Microsoft.IdentityManagement.MA.WebServices.Activities.Extensions.AttributeNameWrapper
, majd az Ok gombot. - Írja be a következő kifejezést: New AttributeNameWrapper(attributeChange.Name). A Switch tevékenység jobb felső sarkában megjelenik egy figyelmeztető ikon, amely a sémában definiált, de semmilyen tulajdonsághoz nem rendelt, kezeltlen attribútumokra figyelmeztet.
- Válassza a Kiváltó tevékenységnél az Új eset hozzáadása lehetőséget, és írja be a városértéket.
- Húzza a "Tevékenység hozzárendelése" elemet az eset törzsébe. Rendelje hozzá
attributeChange.ValueChanges(0).Value.ToString()
az address.city-hez.
- Adjon hozzá más hiányzó eseteket és hozzárendeléseket. Használja ezt a leképezési táblázatot útmutatóként:
Eset | Hozzárendelés |
---|---|
Város | address.city = attributeChange.ValueChanges(0)Value.ToString() |
vállalat | company.company = attributeChange.ValueChanges(0)Value.ToString() |
osztály | address.department = attributeChange.ValueChanges(0)Value.ToString() |
address.e_mail = attributeChange.ValueChanges(0)Value.ToString() | |
lejárati idő | logOnData.GLTGB = attributeChange.ValueChanges(0)Value.ToString() |
utónév | address.firstname = attributeChange.ValueChanges(0)Value.ToString() |
lastName | address.lastname = attributeChange.ValueChanges(0)Value.ToString() |
középső név | address.middlename = attributeChange.ValueChanges(0)Value.ToString() |
telefonszám | cím. TEL1_Numbr = attributeChange.ValueChanges(0)Value.ToString() |
munkakör | address.function = attributeChange.ValueChanges(0)Value.ToString() |
jelszó_exportálás | password.BAPIPWD1 = attributeChange.ValueChanges(0)Value.ToString() |
Itt export_password egy speciális virtuális attribútum, amely mindig a sémában van definiálva, és a létrehozott felhasználó kezdeti jelszavának átadására használható.
- Csukja össze a ForEach-tevékenységet, és húzza az IF tevékenységet a Sorrend tevékenységbe a második ForEach-tevékenység után a felhasználói tulajdonságok érvényesítéséhez, mielőtt benyújtaná a felhasználói kérést. Legalább 3 nem üres értékre van szükségünk: felhasználónév, vezetéknév, kezdeti jelszó. Adja meg ezt a feltételt:
(String.IsNullOrEmpty(address.lastname) = False ) AND (String.IsNullOrEmpty(userName) = False) AND (String.IsNullOrEmpty(password.BAPIPWD1) = False)
- A HA tevékenység Else ágában adjon hozzá még egy HA tevékenységet, mivel attól függően, hogy mi hiányzik, különböző hibákat szeretnénk megjeleníteni. Adja meg a feltétel értékét: String.IsNullOrEmpty(userName). Húzza a
CreateCSEntryChangeResult
tevékenységeket a második IF tevékenység mindkét ágába, és állítsa be aExportErrorMissingAnchorComponent
ésExportErrorMissingProvisioningAttribute
hibakódot.
- Húzza a Szekvencia tevékenységet az első HA tevékenység üres Akkor ágában. Húzza a WebSeviceCall tevékenységet a Sequence tevékenységbe. Válassza az SAPECC szolgáltatás nevét, a ZSAPCONNECTORWS végpontot és a BAPI_USER_CREATE1 műveletet. Kattintson a(z) Argumentumok gombra, hogy a webszolgáltatás-hívás paramétereit az alábbiak szerint határozza meg.
Név | Irány | Típus | Érték |
---|---|---|---|
CÍM | In | BAPIADDR3 | cím |
VÁLLALAT | In | BAPIUSCOMP | vállalat |
ALAPÉRTELMEZETT | In | BAPIDEFAUL | alapértelmezések |
LOGONDATA | In | BAPILOGOND | bejelentkezési adatok |
JELSZÓ | In | BAPIPWD | jelszó |
VISSZATÉRÉS | In-Out | TABLE_OF_BAPIRET2 | bapiret2Table |
ÖNREGISZTRÁCIÓ | In | Sztring | "X" |
FELHASZNÁLÓNÉV | In | Sztring | Felhasználónév |
- Válassza az OK gombot. A figyelmeztető jel eltűnik.
- A felhasználói kérések eredményeinek feldolgozásához húzza be az IF tevékenységet a Sequence tevékenységbe, a WebServiceCall tevékenység utánra. Adja meg a következő feltételt:
IsNothing (bapiret2Table.item) OrElse bapiret2Table.item.Count(Function(errItem) errItem.TYPE.Equals("E") = True) <> 0
- Ha nem kapunk hibát, feltételezzük, hogy az exportálási művelet sikeresen befejeződött, és a CSEntryChangeResult sikeres állapotú CSEntryChangeResult létrehozásával szeretnénk jelezni az objektum sikeres exportálását. Húzza a CreateCSEntryChangeResult tevékenységet a HA tevékenység másik ágába (Else ágába), és válassza a Sikeres eredménykódot.
- Nem kötelező: Ha a webszolgáltatás hívása egy felhasználó létrehozott fióknevét adja vissza, frissíteni kell az exportált objektum horgonyértékét. Ehhez húzza a
CreateAttrubuteChange
tevékenységet aCreateCSEntryChangeResult
tevékenységbe, és válassza a UserName hozzáadása lehetőséget. Ezután húzza aCreateValueChange
tevékenységet aCreateAttributeChange
tevékenységbe, és adja meg azt a változónevet, amelyet a webszolgáltatás hívási tevékenysége töltött ki. Ebben az útmutatóban azt a userName változót használja, amely nem frissül az exportálás során.
- Az Exportálás hozzáadása munkafolyamat utolsó lépése az exportálási hibák kezelése és naplózása. Húzza a Szekvencia tevékenységet az IF tevékenység üres Akkor ágába.
- Húzza a naplótevékenységet a Sequence tevékenységbe. Váltson a Tulajdonságok lapra, és adja meg a következő LogText értékét:
bapiret2Table.item.First(Function(retItem) retItem.TYPE.Equals("E"))
. ÜZENET. Tartsa meg a magas naplózási szintet és a nyomkövetési címkét. Ez naplóz egy hibaüzenetet az ConnectorsLogban vagy az ECMA2Host eseménynaplóban, ha a részletes nyomkövetés engedélyezve van. - Húzza a Kapcsoló tevékenységet a Szekvencia tevékenységen belülre a Napló tevékenység után. Az előugró ablakban válassza a kapcsoló értékének sztringtípusát. Adja meg a következő kifejezést:
bapiret2Table.item.First(Function(retItem) retItem.TYPE.Equals("E")).NUMBER
- Válassza az Alapértelmezett esetet, és húzza a CreateCSEntryChangeResult tevékenységet az eset keretébe. Válassza az ExportErrorInvalidProvisioningAttributeValue hibakódot.
- Válassza az Új ügy hozzáadása területet, és írjon be egy 224-es esetértéket. Húzza be a
CreateCSEntryChangeResult
tevékenységet ennek az esetnek a fő részébe. Válassza kiExportErrorCustomContinueRun
a hibakódot.
Befejezte az Export hozzáadás munkafolyamat definícióját.
Exportálási-törlési munkafolyamat létrehozása
Ha törölni szeretne egy felhasználót az SAP ECC-ben, meghívhatja BAPI_USER_DELETE programot, és megadhat egy fióknevet, amely törölhető a csatlakoztatott rendszerben. Forduljon az SAP-rendszergazdához, és állapítsa meg, hogy ez a forgatókönyv kötelező-e. A legtöbbször az SAP ECC-fiókokat nem törlik, hanem lejárati dátummal állítják be, hogy megőrizzék az előzményeket.
Ez az útmutató nem foglalkozik az SAP Common User Administration rendszerrel, a felhasználók csatlakoztatott rendszerekből való kivonásával, a licencek visszavonásával stb. kapcsolatos forgatókönyvekkel.
Az exportálási munkafolyamatokban nincs szükség lapszámozás implementálására. A munkafolyamat-környezeten belül csak egy objectToExport objektum érhető el.
- Navigáljon az objektumtípusokhoz –> Felhasználó – Exportálás –>> Munkafolyamat törlése és a jobb oldali eszközkészletből húzza a Folyamatütemezési tevékenységet a munkafolyamat-tervező panelre.
- A bal alsó sarokban keresse meg a Változók gombot, és jelölje ki az ebben a sorrendben definiált változók listájának kibontásához.
- Adja hozzá a következő változókat. Az SAP WSDL-ben generált változótípus kiválasztásához válassza a Típusok tallózása opciót, majd bontsa ki a által létrehozott-et, és bontsa ki az SAPECC névteret is. Ez inicializálja BAPI_USER_DELETE program által használt adatstruktúrákat.
Név | Változó típusa | Hatókör | Alapértelmezett |
---|---|---|---|
Felhasználónév | Sztring | Sequence | |
bapiret2Table | SAPECC. TABLE_OF_BAPIRET2 | Szekvencia | új TABLE_OF_BAPIRET2() |
- Mivel a userName tulajdonságot nem módosítható azonosítóként, horgonyként definiáltuk, ki kell nyernünk a userName értéket az exportálási objektum horgonyainak gyűjteményéből. Húzza a ForEachWithBodyFactory tevékenységet az Eszköztárból a Sequence tevékenységbe. Cserélje le az item változó nevét anchor-ra, kapcsoljon át a tulajdonságokra, és válassza ki a
Microsoft.MetadirectoryServices.AnchorAttribute
típusargumentumot. Az Érték mezőbe írja be aobjectToExport.AnchorAttributes
.
- A userName horgony sztringértékének kinyeréséhez húzza és ejtse a Kapcsoló tevékenységet a ForEach tevékenységbe. Az előugró ablakban válassza
Microsoft.IdentityManagement.MA.WebServices.Activities.Extensions.AnchorAttributeNameWrapper
kapcsoló típusát. Adja meg az újAnchorAttributeNameWrapper(anchor.Name)
kifejezés értékét. Válassza a Kapcsoló tevékenység új esetterületének hozzáadása lehetőséget. Adja meg a userName-t mint Esetérték. Húzza a hozzárendelés tevékenységet a userName eset törzsébe, és rendelje hozzá aanchor.Value.ToString()
elemet a userName változóhoz. - Húzza a WebSeviceCall-tevékenységet a ForEach-tevékenység utáni sorozattevékenységbe. Válassza az SAPECC szolgáltatás nevét, a ZSAPCONNECTORWS végpontot és BAPI_USER_DELETE műveletet. Kattintson a(z) Argumentumok gombra, hogy a webszolgáltatás-hívás paramétereit az alábbiak szerint határozza meg.
Név | Irány | Típus | Érték |
---|---|---|---|
VISSZATÉRÉS | Be- és kifelé | TABLE_OF_BAPIRET2 | bapiret2Table |
FELHASZNÁLÓNÉV | In | Sztring | Felhasználónév |
- Válassza az OK gombot. A figyelmeztető jel eltűnik.
- A felhasználói törlési kérések eredményeinek feldolgozásához húzza az IF tevékenységet a Sequence aktivitásba a WebServiceCall tevékenység után. Adja meg a következő feltételt:
If(bapiRet2Table.item, Enumerable.Empty(Of BAPIRET2)()).Count(Function(errItem) errItem.TYPE.Equals("E") = True) <> 0
- Ha nem kapunk hibaüzenetet, feltételezzük, hogy a törlési művelet sikeresen befejeződött, és a sikeres exportálást úgy szeretnénk jelezni, hogy
CSEntryChangeResult
elemet hozunk létre Sikeres státusszal. Húzza aCreateCSEntryChangeResult
tevékenységet a HA tevékenység Más ágába, és válassza a Sikeres hibakód lehetőséget.
- Az Exportálás törlése munkafolyamat utolsó lépése az exportálási hibák kezelése és naplózása. Húzza a Szekvencia tevékenységet a HA tevékenység üres akkor ágába.
- Húzza és ejtse a Napló tevékenységet a Sequence tevékenységbe. Váltson a Tulajdonságok lapra, és adja meg a következő LogText értékét:
bapiRetTable.item.First(Function(retItem) retItem.TYPE.Equals("E")= True).MESSAGE
. Tartsa meg a magas naplózási szintet és a nyomkövetési címkét. Ez egy hibaüzenetet naplóz az ConnectorsLog vagy az ECMA2Host eseménynaplóba, ha a részletes nyomkövetés engedélyezve van. - Húzza a Kapcsoló tevékenységet a Naplótevékenység után a Szekvencia tevékenységen belülre. Az előugró ablakban válassza a kapcsoló értékének sztringtípusát. Adja meg a következő kifejezést:
bapiret2Table.item.First(Function(retItem) retItem.TYPE.Equals("E")).NUMBER
- Válassza az Alapértelmezett esetet, és húzza a CreateCSEntryChangeResult tevékenységet az eset keretébe. Válassza az ExportErrorSyntaxViolation hibakódot.
- Válassza a "Új eset hozzáadása" területet, és írjon be egy 124-es esetértéket. Húzza a
CreateCSEntryChangeResult
tevékenységet az eset törzsébe. Válassza kiExportErrorCustomContinueRun
a hibakódot.
Elvégezte a Törlés exportálása munkafolyamat definícióját.
Exportcsere munkafolyamat létrehozása
Ha frissíteni szeretne egy felhasználót az SAP ECC-ben, meghívhatja BAPI_USER_CHANGE programot, és megadhatja az összes paramétert, beleértve a fióknevet és az összes felhasználói adatot, beleértve azokat is, amelyek nem változnak. Az ECMA2 export módot, amikor az összes felhasználói tulajdonságot meg kell adni, Csere módnak nevezik. Ehhez képest az AttributeUpdate exportálási módja csak olyan attribútumokat biztosít, amelyek módosulnak, és emiatt egyes felhasználói tulajdonságok felülírhatók üres értékekkel. Ezért a Webservice-összekötő mindig objektumcsere exportálási módot használ, és elvárja, hogy az összekötő konfigurálva legyen az exportálási típushoz: Csere.
Az Export Csere folyamat majdnem megegyezik az Export Hozzáadás folyamattal. Az egyetlen különbség az, hogy további paramétereket kell megadnia, például a addressX-et vagy a companyX-et a BAPI_USER_CHANGE programhoz. A addressX végén található X azt jelzi, hogy a cím struktúrája nem tartalmaz változást.
- Navigáljon az objektumtípusokhoz –> Felhasználó – Exportálás –> Cserélje a munkafolyamatot, és a jobb oldali eszközkészletből húzza a Munkafolyamat-tervező panelre a Szekvencia tevékenységet.
- A bal alsó sarokban keresse meg a Változók gombot, és jelölje ki az ebben a sorrendben definiált változók listájának kibontásához.
- Adja hozzá a következő változókat. Az SAP WSDL-ben generált változótípus kiválasztásához válassza a Típusok tallózása opciót, majd bontsa ki a által létrehozott-et, és bontsa ki az SAPECC névteret is. Ez inicializálja BAPI_USER_CHANGE program által használt adatstruktúrákat.
Név | Változó típusa | Hatókör | Alapértelmezett |
---|---|---|---|
Felhasználónév | Sztring | Szekvencia | |
bapiret2Table | SAPECC. TABLE_OF_BAPIRET2 | Sorozat | új TABLE_OF_BAPIRET2() |
addressX | SAPECC. BAPIADDR3X | Szekvencia | új BAPIADDR3X() |
cím | SAPECC. BAPIADDR3 | Sorozat | új BAPIADDR3() |
companyX | SAPECC. BAPIUSCOMX | Szekvencia | új BAPIUSCOMX() |
vállalat | SAPECC.BAPIUSCOMP | Szekvencia | új BAPIUSCOMP() |
defaultsX | SAPECC. BAPIDEFAX | Sequence | új BAPIDEFAX() |
alapértelmezések | SAPECC. BAPIDEFAUL | Sorozat | új BAPIDEFAUL() |
logOnDataX | SAPECC.BAPILOGONX | Szekvencia | új BAPILOGONX() |
bejelentkezési adatok | SAPECC.BAPILOGOND | Sorozat | új BAPILOGOND() |
Az „Export Csere” munkafolyamata így néz ki:
- Mivel a userName tulajdonságot nem módosítható azonosítóként, horgonyként definiáltuk, ki kell nyernünk a userName értéket az exportálási objektum horgonyainak gyűjteményéből. Húzza a "ForEachWithBodyFactory" tevékenységet az eszközkészletből a "Sequence" tevékenységbe. Cserélje le az elem változó nevet horgony-ra, váltson át a tulajdonságokra, és válassza ki a
Microsoft.MetadirectoryServices.AnchorAttribute
TypeArgument. Az Érték mezőbe írja be aobjectToExport.AnchorAttributes
.
- A userName horgony sztringértékének kinyeréséhez húzza a Switch tevékenységet a ForEach tevékenységbe. Az előugró ablakban válassza
Microsoft.IdentityManagement.MA.WebServices.Activities.Extensions.AnchorAttributeNameWrapper
kapcsoló típusát. Adja meg az újAnchorAttributeNameWrapper(anchor.Name)
kifejezés értékét. Válassza a Kapcsoló tevékenység új esetterületének hozzáadása lehetőséget. Írja be a userName-t pontosan ebben a formában. Húzza a Hozzárendelési tevékenységet a userName eset törzsébe, és rendelje hozzáanchor.Value.ToString()
a userName változóhoz. A munkafolyamat az exportálás helyettesítésére a következőképpen néz ki:
- Most, hogy kinyertük a userName értéket az exportált objektumhorgony tulajdonságból, más struktúrákat kell feltöltenünk, például a vállalatot, az alapértelmezett értékeket, a címet, a bejelentkezési adatokat, amelyek más SAP-felhasználói adatokat tartalmaznak. Ezt úgy hajtjuk végre, hogy a sémában definiált összes attribútum gyűjteményén keresztül lépegetünk.
- Csukja össze a ForEach-tevékenységet, és húzzon be egy másik ForEachWithBothFactory-tevékenységet a sorozattevékenységbe a meglévő ForEach-tevékenység után. Cserélje le az item nevét a(z) schemaAttr változóra, váltson a tulajdonságokra, és válassza a(z)
Microsoft.MetadirectoryServices.SchemaAttribute
TypeArgumentot. Az Érték mezőbe írja be aschemaType.Attributes
.
- Húzza a Sequence tevékenységet a ForEach-tevékenység törzsébe. A bal alsó sarokban keresse meg a Változók gombot, és jelölje ki az ebben a sorrendben definiált változók listájának kibontásához. Adja hozzá a következő változót: xValue szöveg típusú. Húzza a Hozzárendelés tevékenységet a Szekvencia tevékenységbe. Rendelje az xValue változót az alábbi kifejezéshez:
If(objectToExport.AttributeChanges.Contains(schemaAttr.Name), objectToExport.AttributeChanges(schemaAttr.Name).ValueChanges(0).Value.ToString(), String.Empty)
Ez kinyeri az exportálásra előkészített módosításokat ehhez az attribútumhoz, vagy egy üres sztringgel inicializálja azt. Az Exportálás cseréje munkafolyamat a következőképpen néz ki:
- Húzza a "Kapcsoló" tevékenységet a "Hozzárendelés" tevékenység után. Az előugró menüben válassza a
Microsoft.IdentityManagement.MA.WebServices.Activities.Extensions.AttributeNameWrapper
, majd az Ok gombot. Adja meg a következő kifejezést: ÚjAttributeNameWrapper(schemaAttr.Name)
. A Kapcsoló tevékenység jobb felső sarkában megjelenik egy figyelmeztető ikon, amely a sémában definiált, nem kezelt attribútumokra figyelmeztet, amelyekhez nincs hozzárendelve semmilyen tulajdonság. Válassza a Kiváltó tevékenységnél az Új eset hozzáadása lehetőséget, és írja be a városértéket. Húzza a Szekvencia tevékenységet az aktuális eset törzsébe. Húzza be a Hozzárendelés tevékenységet az ügy törzsébe. Rendelje hozzá az "X" értéket az addressX.city-hez. Húzzon be egy másik hozzárendelési tevékenységet ennek az esetnek a közepébe. Az xValue hozzárendelése az address.city-hez. Az Ön "Export csere" munkafolyamata így néz ki:
10.Adjon hozzá más hiányzó eseteket és hozzárendeléseket. Használja ezt a leképezési táblázatot útmutatóként:
Eset | Hozzárendelés |
---|---|
Város | addressX.city = "X" address.city = xValue |
vállalat | companyX.company = "X" company.company = xValue |
osztály | address.departmentX = "X" address.department = xValue |
addressX.e_mail = "X" address.e_mail = xValue | |
lejárati idő | logOnDataX.GLTGB = "X" logOnData.GLTGB = xValue |
utónév | addressX.firstname = "X" address.firstname = xValue |
lastName | addressX.lastname = "X" address.lastname = xValue |
második keresztnév | addressX.middlename = "X" address.middlename = xValue |
telefonszám | addressX.TEL1_Numbr = "X" cím. TEL1_Numbr = xValue |
munkakör | addressX.function = "X" address.function = xValue |
Az Export csere munkafolyamata így néz ki:
Mielőtt meghívnánk BAPI_USER_CHANGE programot, ellenőriznünk kell a nem üres felhasználónevet. Csukja össze mindkét ForEach-tevékenységet, majd húzza a IF tevékenységet a második ForEach-tevékenység után. Adja meg a következő feltételt:
String.IsNullOrEmpty(userName ) = False
Ha a felhasználónév üres, azt szeretnénk jelezni, hogy a művelet sikertelen volt. Húzza a
CreateCSEntryChangeResult
tevékenységet a HA tevékenység Else ágába, majd válassza ki aExportErrorCustomContinueRun
hibakódot. Az Export helyettesítése munkafolyamat a következőképpen néz ki:Húzza a Szekvencia tevékenységet az első HA tevékenység üres Akkor ágába. Húzza a WebSeviceCall tevékenységet a Sequence tevékenységbe. Válassza az SAPECC szolgáltatás nevét, a ZSAPCONNECTORWS végpontot és BAPI_USER_CHANGE műveletet. Kattintson a(z) Argumentumok gombra, hogy a webszolgáltatás-hívás paramétereit az alábbiak szerint határozza meg.
Név | Irány | Típus | Érték |
---|---|---|---|
CÍM | In | BAPIADDR3 | cím |
ADDRESSX | In | BAPIADDR3X | addressX |
VÁLLALAT | In | BAPIUSCOMP | vállalat |
COMPANYX | In | BAPIUSCOMX | vállalat |
ALAPÉRTELMEZETT | In | BAPIDEFAUL | alapértelmezések |
DEFAULTSX | In | BAPIDEFAX | alapértelmezett értékek X |
LOGONDATA | In | BAPILOGOND | logOnData |
LOGONDATAX | In | BAPILOGONX | logOnDataX |
VISSZATÉRÉS | Be- és kifelé | TABLE_OF_BAPIRET2 | bapiret2Table |
FELHASZNÁLÓNÉV | In | Sztring | Felhasználónév |
- Válassza az OK gombot. A figyelmeztető jel eltűnik. Az Exportálás cseréje munkafolyamat a következőképpen néz ki:
- A felhasználói kérés eredményeinek feldolgozásához húzza az IF tevékenységet a WebServiceCall tevékenység után a Szekvencia tevékenységbe. Adja meg a következő feltételt:
Not IsNothing(bapiret2Table.item) AndAlso bapiret2Table.item.Count(Function(errItem) errItem.TYPE.Equals("E") = True) <> 0
- Ha nem kapunk hibaüzenetet, feltételezzük, hogy az exportálási művelet sikeresen befejeződött, és sikeres exportálást szeretnénk jelezni az objektum sikeres exportálásával
CSEntryChangeResult
. Húzza aCreateCSEntryChangeResult
tevékenységet az IF tevékenységed 'Egyéb' ágába, és válassza a 'Sikeres' hibakódot. - Húzza a Sequence tevékenységet az IF tevékenység Then ágába. Log-tevékenység hozzáadása a LogText
string.Join("\n",bapiret2Table.item.Where(Function(retItem) retItem.TYPE.Equals("E")).Select(Function(r) r.MESSAGE))
értékével és a hibacímkével. AExportErrorCustomContinueRun
hibakóddal rendelkező naplótevékenység után adja hozzá aCreateCSEntryChangeResult
tevékenységet. Az Exportálás cseréje munkafolyamat a következőképpen néz ki:
Befejezte az Export Csere munkafolyamat definícióját.
A következő lépés az ECMA2Host Webservice-összekötő konfigurálása ezzel a sablonnal.