Sdílet prostřednictvím


Vytvoření šablony konektoru webové služby SAP ECC 7.51 pro ECMA2Host

Tato příručka vás provede procesem vytvoření šablony pro konektor ECMA (Web Service Extensibility Connectivity Management Agent) pro správu uživatelů SAP ECC.

Omezení a předpoklady

Tato šablona ukazuje, jak spravovat uživatele. Ostatní typy objektů, jako jsou místní skupiny aktivit, role a profily, nejsou touto příručkou pokryty, protože ECMA2Host v současné době nepodporuje odkazy s více hodnotami. Operace s heslem jsou také mimo rozsah tohoto průvodce.

Tato příručka nepokrývá vytvoření účtu služby v rámci SAP, který se používá k volání vystavených funkcí BAPI. Předpokládá se, že předpřipravený ukázkový účet vývojářský se používá s profilem RFC_ALL, který uděluje oprávnění pro rozhraní BAPI uvedená v tomto článku.

Nástroj pro konfiguraci webové služby ve výchozím nastavení nepodporuje následující funkce zveřejněné v SAP: Zásady WSP a více vazeb na koncový bod. Očekává pouze WSDL s vazbou stylu dokumentu PROTOKOLU SOAP 1.1, která je typu all-in-one bez zásad.

Funkce SAP ECC BAPI použité v této šabloně:

  • BAPI_USER_GETLIST – získejte seznam všech uživatelů připojených k tomuto systému.
  • BAPI_USER_GETDETAIL – získejte podrobnosti o konkrétním uživateli.
  • BAPI_USER_CREATE1 – vytvoří uživatele.
  • BAPI_USER_DELETE – odstraní uživatele.
  • BAPI_USER_CHANGE – aktualizuje uživatele.

Všechny vlastnosti uživatele SAP v této příručce se považují za vlastnosti s jednou hodnotou.

Použitý programovací jazyk je Visual Basic.

Definování koncového bodu webové služby a vytvoření schématu

Než budete moct navrhnout pracovní postupy importu a exportu, musíte vytvořit šablonu a definovat koncový bod s funkcemi SAP BAPI vystavenými přes rozhraní SOAP. Pak vytvořte schéma objektů ECMA2 a jejich vlastností je k dispozici v této šabloně.

  1. Ve složce C:\Program Files\Microsoft ECMA2Host\Web Service Configuration Tool spusťte nástroj Konfigurace webové služby wsconfigTool.exe
  2. V nabídce File-New zvolte Vytvořit nový projekt SOAP.

Snímek obrazovky s vytvořením projektu SOAP

  1. Vyberte projekt SOAP a zvolte Přidat novou webovou službu.

Snímek obrazovky s přidáním nové webové služby

  1. Pojmenujte webovou službu SAPECC, zadejte adresu URL pro stažení WSDL publikovaného souboru, zadejte SAPECC jako obor názvů. Název webové služby vám pomůže odlišit tuto webovou službu v šabloně od ostatních. Obor názvů definuje název oboru názvů Microsoft .NET, který se používá ke generování tříd. Zvolte režim základního ověřování, pokud není uvedeno jinak správcem SAP. Vyberte Další.

Snímek obrazovky s pojmenováním webové služby

  1. Zadejte přihlašovací údaje pro připojení ke koncovému bodu SAP ECC. Vyberte Další.
  2. Na stránce koncových bodů a operací se ujistěte, že se zobrazují rozhraní BAPI, a vyberte Dokončit.

Poznámka:

Pokud se zobrazí více než jeden koncový bod, máte povolené vazby SOAP 1.2 i SOAP 1.1. To způsobí selhání konektoru. Upravte definici vazby v SOAMANAGER a ponechte pouze jednu. Pak znovu přidejte webovou službu.

Snímek obrazovky s BAPI

  1. Uložte projekt do složky C:\Program Files\Microsoft ECMA2Host\Service\ECMA.
  2. Na kartě Typy objektů vyberte možnost přidat objekt typu Uživatel. Vyberte ok.
  3. Rozbalte kartu Typy objektů a vyberte definici typu uživatel.

Snímek obrazovky s typy objektů

  1. Do schématu přidejte následující atributy a jako ukotvení zvolte userName.

Snímek obrazovky s přidáním atributů

  1. Uložte projekt.
Name Type Záložka
city string
company string
department string
E-mail string
expirationTime string
firstName string
lastName string
middleName string
telephoneNumber string
jobTitle string
userName string checked

Vytvoření pracovního postupu úplného importu

Pracovní postup importu, i když je volitelný v ECMA2Host, umožňuje importovat stávající uživatele SAP do mezipaměti ECMA2Host v paměti a vyhnout se vytváření duplicitních uživatelů během zřizování.

Pokud nevytvoříte pracovní postup importu, váš konektor funguje v režimu jen pro export a způsobí, že ECMA2Host vždy vydá Vytvořit operace uživatele i pro stávající uživatele. To může vést k selháním nebo duplicitám při použití standardních rozhraní SAP BAPI, pokud pracovní postup exportu nezpracuje duplicitní položky.

SAP ECC nenabízí integrovaný mechanismus pro čtení změn provedených od posledního čtení.

Proto implementujeme pouze pracovní postup úplného importu. Pokud potřebujete implementovat rozdílové importy z důvodů výkonu, požádejte správce SAP o seznam BAPI a požádejte je o publikování jako webovou službu SOAP. Pak implementujte pracovní postup Delta Import pomocí následujícího přístupu, jak je popsáno, a vlastnost customData, která obsahuje časové razítko předchozího úspěšného spuštění.

SAP ECC nabízí několik funkcí BAPI pro získání seznamu uživatelů s jejich vlastnostmi:

  • BAPI_USER_GETLIST – získejte seznam všech uživatelů připojených k tomuto systému.
  • BAPI_USER_GETDETAIL – získejte podrobnosti o konkrétním uživateli.

K načtení stávajících uživatelů ze SAP ECC v této šabloně se používají pouze tyto dvě rozhraní BAPI.

  1. Přejděte na Typy objektů –> Uživatel –> Import –> Úplný pracovní postup importu a z panelu nástrojů na pravém panelu nástrojů přetáhněte aktivitu sekvence do podokna návrháře pracovního postupu.
  2. V levém dolním rohu vyhledejte tlačítko Proměnné a vyberte ho, aby se rozbalil seznam proměnných definovaných v této sekvenci.
  3. Přidejte následující proměnné. Pokud chcete vybrat typ proměnné vygenerovaný ze SAP WSDL, vyberte možnost Procházet typy a rozbalte vygenerovaný a rozbalte obor názvů SAPECC.
Name Typ proměnné Obor Výchozí
selRangeTable SAPECC. TABLE_OF_BAPIUSSRGE Sequence new TABLE_OF_BAPIUSSRGE with {.item = new BAPIUSSRGE(){new BAPIUSSRGE}}
getListRetTable SAPECC. TABLE_OF_BAPIRET2 Sequence nový TABLE_OF_BAPIRET2
Pagesize Int32 Sequence 200
returnSize Int32 Sequence
usersTable SAPECC. TABLE_OF_BAPIUSNAME Sequence new TABLE_OF_BAPIUSNAME()

Snímek obrazovky s pracovním postupem úplné operace importu

  1. Z panelu nástrojů přetáhněte čtyři aktivity Přiřadit uvnitř aktivity Sequence a nastavte tyto hodnoty:
selRangeTable.item(0).PARAMETER = "USERNAME" 
selRangeTable.item(0).SIGN = "I" selRangeTable.item(0).OPTION = "GT" selRangeTable.item(0).LOW = ""   

Tyto parametry slouží k volání funkce BAPI_USER_GETLIST a k implementaci stránkování.

Snímek obrazovky s úplným pracovním postupem importu

  1. Pokud chcete implementovat stránkování, přetáhněte z panelu nástrojů aktivitu DoWhile do vaší aktivity Sequence po poslední operaci Assign.
  2. V pravém podokně přepněte na kartu Vlastnosti a zadejte tuto podmínku pro DoWhile
  • cyklus: returnedSize = pageSize

Snímek obrazovky vrácené velikosti

  1. Vyberte proměnné a přidejte vlastnost currentPageNumber typu int32 v rámci cyklu DoWhile s výchozí hodnotou 0.

Snímek obrazovky s obrazovkou do té doby

  1. Volitelný krok: Pokud plánujete implementovat pracovní postup rozdílového importu, přetáhněte z panelu nástrojů aktivitu Přiřadit do aktivity sekvence po cyklu DoWhile. Nastavte tuto hodnotu:
  • customData(schemaType.Name + "_lastImportTime") = DateTimeOffset.UtcNow.Ticks.ToString() Tím se uloží datum a čas posledního úplného spuštění importu a toto časové razítko můžete později použít v pracovním postupu delta importu.

Snímek obrazovky s vlastními daty

  1. Z panelu nástrojů přetáhněte aktivitu Sequence do aktivity Do While. Přetáhněte aktivitu WebServiceCall uvnitř této aktivity sekvence a vyberte název služby SAPECC, koncový bod ZSAPCONNECTORWS a operaci BAPI_USER_GETLIST.

Snímek obrazovky s pořadím do té doby

  1. Vyberte tlačítko Argumenty pro nastavení parametrů volání webové služby takto:
Name Směr Type Hodnota
MAX_ROWS V Int32 Pagesize
MAX_ROWSSpecified V Logická hodnota True
VRÁTIT In/Out TABLE_OF_BAPIRET2 getListRetTable
SELECTION_EXP In/Out TABLE_OF_BAPIUSSEXP
SELECTION_RANGE In/Out TABLE_OF_BAPIUSSRGE selRangeTable
USERLIST In/Out TABLE_OF_BAPIUSNAME usersTable
WITH_USERNAME V String
řádky Ven Int32 returnSize
  1. Vyberte OK. Znaménko upozornění zmizí. Seznam uživatelů uložených v proměnné usersTable. Vzhledem k tomu, že SAP nevrací úplný seznam uživatelů v jedné odpovědi, musíme při přepínání stránek implementovat stránkování a volat tuto funkci několikrát. Potom pro každého uživatele, kterého jste naimportovali, potřebujete získat podrobnosti o uživateli provedením samostatného volání. To znamená, že pro prostředí s 1 000 uživateli a velikostí stránky 200 konektor webové služby provádí 5 volání k načtení seznamu uživatelů a 1 000 individuálních volání k načtení podrobností uživatelů. Pokud chcete zvýšit výkon, požádejte tým SAP, aby vytvořil vlastní program BAPI, který obsahuje seznam všech použití se svými vlastnostmi. Tím se vyhnete nutnosti provádět 1 000 individuálních volání a zpřístupnit tuto funkci BAPI přes koncový bod WS PROTOKOLU SOAP.
  2. Z panelu nástrojů přetáhněte aktivitu IF do vaší aktivity DoWhile po aktivitě WebServiceCall. Zadejte tuto podmínku pro kontrolu neprázdné odpovědi a absence chyb: IsNothing(getListRetTable.item) OrElse getListRetTable.item.Count(Function(errItem) errItem.TYPE.Equals("E") = True) = 0
  3. Z panelu nástrojů přetáhněte aktivitu Throw do větve Else aktivity IF, aby došlo k vyvolání chyby při neúspěšném importu. Přepněte na kartu Vlastnosti a zadejte tento výraz pro vlastnost Exception aktivity Throw: New Exception(getListRetTable.item.First(Function(retItem) retItem.TYPE.Equals("E")).MESSAGE)

Snímek obrazovky s vlastností výjimky

  1. Pokud chcete zpracovat seznam importovaných uživatelů, přetáhněte aktivitu ForEachWithBodyFactory ze sady nástrojů do větve aktivity IF. Přepněte na kartu Vlastnosti a vyberte SAPECC. BAPIUSNAME as TypeArgument. Vyberte možnost ... a zadejte tento výraz pro vlastnost hodnot: if(usersTable.item,Enumerable.Empty(of BAPIUSNAME)())

Snímek obrazovky s aktivitou KDYŽ

  1. Z panelu nástrojů přetáhněte aktivitu Sequence do aktivity ForEach. Pokud je toto okno aktivity sekvence aktivní, vyberte na tlačítku Proměnné a definujte tyto proměnné:
Name Typ proměnné Obor Výchozí
company SAPECC. BAPIUSCOMP Sequence new BAPIUSCOMP()
adresa SAPECC. BAPIADDR3 Sequence new BAPIADDR3()
výchozí hodnoty SAPECC. BAPIDEFAUL Sequence nový BAPIDEFAUL()
logondata SAPECC. BAPILOGOND Sequence nový BAPILOGOND()
getDetailRetTable SAPECC. TABLE_OF_BAPIRET2 Sequence new TABLE_OF_BAPIRET2()

Vaše aktivita KDYŽ vypadá takto:

Snímek obrazovky s aktivitou KDYŽ s foreachem

  1. Přetáhněte aktivitu CreateCSEntryChangeScope do aktivity sekvence. Do vlastnosti DN zadejte schemaType.Name & položku.USERNAME. Do pole CreateAnchorAttribute AnchorValue zadejte item.username.

Snímek obrazovky CreateCSEntryChangeScope

  1. Pokud chcete načíst podrobnosti o jednotlivých uživatelích, přetáhněte z panelu nástrojů aktivitu WebServiceCall uvnitř aktivity sequence přímo před aktivitou CreateAnchorAttribute. Vyberte název služby SAPECC, koncový bod ZSAPCONNECTORWS a operaci BAPI_USER_GET_DETAIL. Vyberte tlačítko Argumenty pro definování parametrů volání webové služby.
Name Směr Type Hodnota
VRÁTIT In/Out TABLE_OF_BAPIRET2 getDetailRetTable
UŽIVATELSKÉ JMÉNO V String item.username
ADRESA Ven BAPIADDR3 adresa
SPOLEČNOST Ven BAPIUSCOMP company
VÝCHOZÍ HODNOTY Ven BAPIUSDEFAUL výchozí hodnoty
LOGONDATA Ven BAPILOGOND logonData
WITH_USERNAME V String
řádky Ven Int32 returnSize
  1. Vyberte OK. Znaménko upozornění zmizí. Podrobnosti o uživateli jsou uloženy ve výše uvedených proměnných. Vaše aktivita KDYŽ vypadá takto:

Snímek obrazovky s parametry

  1. Pokud chcete zkontrolovat výsledky operace BAPI_USER_GET_DETAIL, přetáhněte z panelu nástrojů aktivitu IF a umístěte ji do aktivity Sequence mezi WebServiceCall a CreateAnchorAttribute. Zadejte tuto podmínku: IsNothing(getDetailRetTable.item) OrElse getDetailRetTable.item.Count(Function(errItem) errItem.TYPE.Equals("E") = True) = 0

Vzhledem k tomu, že chybějící podrobnosti o uživateli by neměly být považovány za katastrofickou událost, chceme tuto chybu indikovat a pokračovat ve zpracování ostatních uživatelů. Přetáhněte aktivitu sekvence do větve Else aktivity IF. Přidejte aktivitu protokolu do této nové aktivity sekvence. Přepněte na kartu Vlastnosti a změňte vlastnost Úroveň na Hodnotu Vysoká, Značka na Trasování. Do vlastnosti LogText zadejte následující: string.Join("\n", getDetailRetTable.item.Select (Function(item) item.MESSAGE ))

  1. Přetáhněte sekvenční aktivitu do větve aktivity KDYŽ. Přetáhněte existující aktivitu CreateAnchorAttribute do sekvenční aktivity uvnitř větve IF aktivity. Vaše aktivita ForEach teď vypadá takto:

Snímek obrazovky forEach

  1. Pro každou vlastnost uživatele, jako je město, společnost, oddělení, e-mail přidat aktivitu KDYŽ za aktivitu CreateAnchorAttribute a kontrolovat neprázdné hodnoty zadáním podmínek jako Not string.IsNullOrEmpty(address.city) a přidáním aktivity CreateAttributeChange do větve této aktivity KDYŽ.

Snímek obrazovky CreateAttributeChange

Příklad: Přidání aktivit CreateAttributeChange pro všechny vlastnosti uživatele pomocí této mapovací tabulky:

Vlastnost ECMA User Sap – vlastnost
city address.city
department address.department
company company.company
E-mail address.e_mail
firstName address.firstName
lastName address.lastName
middleName address.middleName
jobTitle address.function
expirationTime logonData.GLTGB
telephoneNumber adresa. TEL1_NUMBR
  1. Nakonec za poslední aktivitu CreateAttributeChange přidejte aktivitu SetImportStatusCode. Nastavte errorCode na úspěch ve větvi Then. Přidejte do větve Else další aktivitu kódu SetImportStatus a nastavte ErrorCode na ImportErrorCustomContinueRun.

Snímek obrazovky setImportStatusCode

  1. Sbalení aktivity sekvence uvnitř aktivity ForEach tak, aby cyklus DoWhile vypadal takto:

Snímek obrazovky cyklu DoWhile

  1. Pokud chcete načíst další stránku uživatelů, aktualizujte selRangeTable.item(0).LOW vlastnost. Přetáhněte aktivitu IF do aktivity Sekvence v rámci DoWhile. Umístěte ho za existující aktivitu 'IF'. Enter returnSize>0 as Condition. Přidat přiřadit aktivitu do větev IF aktivity a nastavit selRangeTable.item(0).LOW na usersTable.item(returnedSize-1).username.

Snímek obrazovky s dokončenou verzí DoWhile final

Dokončili jste definici pracovního postupu úplného importu.

Vytvoření pracovního postupu Přidat export

Pokud chcete vytvořit uživatele v SAP ECC, můžete volat BAPI_USER_CREATE1 program a zadat všechny parametry, včetně názvu účtu a počátečního hesla. Pokud potřebujete vygenerovat název účtu na straně SAP, obraťte se na správce SAP a použijte vlastní funkci BAPI, která vrací vlastnost userName nově vytvořeného uživatelského účtu.

Tato příručka neukazuje přiřazení licencí, místních nebo globálních skupin aktivit, systémů nebo profilů. Obraťte se na správce SAP a upravte tento pracovní postup odpovídajícím způsobem.

V pracovních postupech exportu není potřeba implementovat stránkování. V kontextu pracovního postupu je k dispozici pouze jeden objekt objectToExport.

  1. Přejděte na Typy objektů –> Uživatel – Export –>> Přidat pracovní postup a z panelu nástrojů na pravém panelu nástrojů přetáhněte aktivitu sekvence do podokna návrháře pracovního postupu.
  2. V levém dolním rohu vyhledejte tlačítko Proměnné a vyberte ho, aby se rozbalil seznam proměnných definovaných v této sekvenci.
  3. Přidejte následující proměnné. Pokud chcete vybrat typ proměnné vygenerovaný ze SAP WSDL, zvolte Procházet typy, rozbalte generované, a poté rozbalte obor názvů SAPECC. Tím se inicializují datové struktury používané programem BAPI_USER_CREATE1.
Name Typ proměnné Obor Výchozí
adresa SAPECC. BAPIADDR3 Sequence new BAPIADDR3()
userName String Sequence
Heslo SAPECC. BAPIPWD Sequence new BAPIPWD()
company SAPECC. BAPIUSCOMP Sequence new BAPIUSCOMP()
výchozí hodnoty SAPECC. BAPIDEFAUL Sequence nový BAPIDEFAUL()
logOnData SAPECC. BAPILOGOND Sequence nový BAPILOGOND()
bapiret2Table SAPECC. TABLE_OF_BAPIRET2 Sequence new TABLE_OF_BAPIRET2()

Snímek obrazovky s pracovním postupem přidání exportu

  1. Když jsme definovali vlastnost userName jako neměnné ID a kotvicí bod, musíme extrahovat hodnotu userName z kolekce kotvicích bodů našeho exportního objektu. Přetáhněte aktivitu ForEachWithBodyFactory ze sady nástrojů do aktivity sekvence. Nahraďte název proměnné položky ukotveným , přepněte na vlastnosti a zvolte TypeArgument of Microsoft.MetadirectoryServices.AnchorAttribute. Do pole Hodnota zadejte objectToExport.AnchorAttributes.

Snímek obrazovky s posloupností pro přidání exportu

  1. Chcete-li extrahovat řetězcovou hodnotu ukotvení userName, přetáhněte aktivitu Switch uvnitř aktivity ForEach. Ve vyskakovacím okně vyberte typ přepínače Microsoft.IdentityManagement.MA.WebServices.Activities.Extensions.AnchorAttributeNameWrapper. Zadejte hodnotu výrazu: New AnchorAttributeNameWrapper(anchor. Název).
  2. Vyberte možnost Přidat nový případ v rámci aktivity Switch. Zadejte userName jako hodnotu velikosti písmen. Přetáhněte aktivitu Assign do textu případu userName a přiřaďte ukotvení. Value.ToString() na proměnnou userName.

Snímek obrazovky s novým případem

  1. Teď, když jsme extrahovali hodnotu userName z exportované vlastnosti ukotvení objektu, musíme naplnit další struktury, jako jsou společnosti, výchozí hodnoty, adresa, přihlašovací data, která obsahují další podrobnosti o uživateli SAP. Provedeme to tak, že projdeme kolekcí změn atributů.
  2. Sbalte aktivitu ForEach a přetáhněte jinou aktivitu ForEachWithBothFactory uvnitř vaší aktivity Sequence za existující aktivitou ForEach. Nahraďte název proměnné položky atributEmChange, přepněte na vlastnosti a zvolte TypeArgument of Microsoft.MetadirectoryServices.AttributeChange. Do pole Hodnota zadejte objectToExport.AttributeChanges.

Snímek obrazovky s novou sekvencí

  1. Přetáhněte aktivitu Switch do těla aktivity ForEach.
  2. V místní nabídce vyberte Microsoft.IdentityManagement.MA.WebServices.Activities.Extensions.AttributeNameWrapper a pak vyberte OK.
  3. Zadejte následující výraz: New AttributeNameWrapper(attributeChange.Name). V pravém horním rohu aktivity Switch se zobrazí ikona upozornění týkající se neošetřených atributů definovaných ve schématu a nepřiřazených k žádné vlastnosti.
  4. Vyberte možnost Přidat nový případ v oblasti aktivity Switch a zadejte hodnotu případu město.
  5. Přetáhněte aktivitu Assign do textu tohoto případu. Přiřaďte attributeChange.ValueChanges(0).Value.ToString() adresu.city.

Snímek obrazovky s novým pracovním postupem pro přidání exportu

  1. Přidejte další chybějící případy a přiřazení. Tuto tabulku mapování použijte jako vodítko:
Velikost písmen Přiřazení
city address.city = attributeChange.ValueChanges(0)Value.ToString()
company company.company = attributeChange.ValueChanges(0)Value.ToString()
department address.department = attributeChange.ValueChanges(0)Value.ToString()
E-mail address.e_mail = attributeChange.ValueChanges(0)Value.ToString()
expirationTime logOnData.GLTGB = attributeChange.ValueChanges(0)Value.ToString()
Jméno address.firstname = attributeChange.ValueChanges(0)Value.ToString()
lastName address.lastname = attributeChange.ValueChanges(0)Value.ToString()
middleName address.middlename = attributeChange.ValueChanges(0)Value.ToString()
telephoneNumber adresa. TEL1_Numbr = attributeChange.ValueChanges(0)Value.ToString()
jobTitle address.function = attributeChange.ValueChanges(0)Value.ToString()
export_password heslo. BAPIPWD1 = attributeChange.ValueChanges(0)Value.ToString()

Zde export_password je speciální virtuální atribut, který je vždy definován ve schématu a lze jej použít k předání počátečního hesla uživatele, který se vytváří.

Snímek obrazovky s případy

  1. Sbalte aktivitu ForEach a přetáhněte aktivitu IF do aktivity Sekvence po druhé aktivitě ForEach, abyste před odesláním žádosti o vytvoření uživatele ověřili vlastnosti uživatele. Potřebujeme alespoň 3 neprázdné hodnoty: uživatelské jméno, příjmení, počáteční heslo. Zadejte tuto podmínku: (String.IsNullOrEmpty(address.lastname) = False ) AND (String.IsNullOrEmpty(userName) = False) AND (String.IsNullOrEmpty(password.BAPIPWD1) = False)
  2. Ve větvi Else aktivity KDYŽ přidejte jednu další aktivitu KDYŽ, protože chceme v závislosti na tom, co chybí, vyvolat různé chyby. Zadejte hodnotu podmínky: String.IsNullOrEmpty(userName). CreateCSEntryChangeResult Přetáhněte aktivity do obou větví druhé aktivity KDYŽ a nastavte ErrorCode of ExportErrorMissingAnchorComponent a ExportErrorMissingProvisioningAttribute.

Snímek obrazovky s druhou aktivitou IF

  1. Přetáhněte aktivitu sekvence do prázdné větve Potom první aktivity KDYŽ. Přetáhněte aktivitu WebSeviceCall uvnitř aktivity Sequence. Vyberte název služby SAPECC, koncový bod ZSAPCONNECTORWS a operaci BAPI_USER_CREATE1. Vyberte tlačítko Argumenty a definujte parametry pro volání webové služby takto:
Name Směr Type Hodnota
ADRESA V BAPIADDR3 adresa
SPOLEČNOST V BAPIUSCOMP company
VÝCHOZÍ HODNOTY V BAPIDEFAUL výchozí hodnoty
LOGONDATA V BAPILOGOND logOnData
HESLO V BAPIPWD Heslo
VRÁTIT In-Out TABLE_OF_BAPIRET2 bapiret2Table
SELF_REGISTER V String "X"
UŽIVATELSKÉ JMÉNO V String userName
  1. Vyberte OK. Znaménko upozornění zmizí.

Snímek obrazovky pracovního postupu za parametry

  1. Chcete-li zpracovat výsledky žádosti uživatele, přetáhněte aktivitu KDYŽ uvnitř aktivity Sequence za aktivitu WebServiceCall. Zadejte následující podmínku: IsNothing (bapiret2Table.item) OrElse bapiret2Table.item.Count(Function(errItem) errItem.TYPE.Equals("E") = True) <> 0
  2. Pokud se zobrazí žádné chyby, předpokládáme, že operace exportu byla úspěšně dokončena a chceme označit úspěšný export tohoto objektu vytvořením CSEntryChangeResult se stavem Úspěch. Přetáhněte aktivitu CreateCSEntryChangeResult do větve Else aktivity IF a vyberte kód chyby úspěch.
  3. Volitelné: Pokud volání webové služby vrátí vygenerovaný název účtu uživatele, musíme aktualizovat hodnotu ukotvení exportovaného objektu. Uděláte to tak, že přetáhnete CreateAttrubuteChangeaktivitu uvnitř CreateCSEntryChangeResult aktivity a vyberete Přidat uživatelské jméno. Potom přetáhněte CreateValueChange aktivitu uvnitř CreateAttributeChange aktivity a zadejte název proměnné naplněné aktivitou volání webové služby. V této příručce použijete proměnnou userName, která se při exportu neaktualizuje.

Snímek obrazovky s aktualizovaným sekvenčním tokem

  1. Posledním krokem v pracovním postupu Přidat export je zpracování chyb exportu a protokolování. Přetáhněte aktivitu sekvence do prázdné větve potom aktivity IF.
  2. Přetáhněte aktivitu protokolu do aktivity sekvence. Přepněte na kartu Vlastnosti a zadejte hodnotu LogText: bapiret2Table.item.First(Function(retItem) retItem.TYPE.Equals("E")). ZPRÁVA. Udržujte vysokou úroveň protokolování a značku trasování. Tím se do protokolu událostí ConnectorsLog nebo ECMA2Host zapíše chybová zpráva, když je povolené podrobné trasování.
  3. Přetáhněte aktivitu Switch do aktivity sekvence po aktivitě protokolu. V automaticky otevírajícím okně vyberte typ řetězce pro hodnotu přepínače. Zadejte následující výraz: bapiret2Table.item.First(Function(retItem) retItem.TYPE.Equals("E")).NUMBER
  4. Vyberte výchozí případ a přetáhněte aktivitu CreateCSEntryChangeResult do těla tohoto případu. Zvolte Kód chyby ExportErrorInvalidProvisioningAttributeValue.

Snímek obrazovky s novou aktualizací pracovního postupu

  1. Vyberte v oblasti Přidat nový případ a zadejte hodnotu případu 224. CreateCSEntryChangeResult Přetáhněte aktivitu do textu tohoto případu. Zvolte ExportErrorCustomContinueRun kód chyby.

Snímek obrazovky s konečnou aktualizací pracovního postupu

Dokončili jste definici pracovního postupu Přidat export.

Vytvoření pracovního postupu odstranění exportu

Pokud chcete odstranit uživatele v SAP ECC, můžete volat BAPI_USER_DELETE program a zadat název účtu, který se má odstranit v připojeném systému. Obraťte se na správce SAP a zjistěte, jestli je tento scénář povinný. Účty SAP ECC se většinou neodstraní, ale nastaví se na vypršení platnosti, aby se zachovaly historické záznamy.

Tato příručka nepokrývá scénáře související se systémem SAP Common User Administration, zrušením zřízení uživatelů z připojených systémů, odvoláním licencí atd.

V pracovních postupech exportu není potřeba implementovat stránkování. V kontextu pracovního postupu je k dispozici pouze jeden objekt objectToExport.

  1. Přejděte na Typy objektů –> Uživatel –> Export –> Odstranit pracovní postup a z panelu nástrojů na pravém panelu nástrojů přetáhněte aktivitu sekvence do podokna návrháře pracovního postupu.
  2. V levém dolním rohu vyhledejte tlačítko Proměnné a vyberte ho, aby se rozbalil seznam proměnných definovaných v této sekvenci.
  3. Přidejte následující proměnné. Pokud chcete vybrat typ proměnné vygenerovaný ze SAP WSDL, vyberte možnost Procházet typy a rozbalte vygenerovaný a rozbalte obor názvů SAPECC. Tím se inicializují datové struktury používané programem BAPI_USER_DELETE.
Name Typ proměnné Obor Výchozí
userName String Sequence
bapiret2Table SAPECC. TABLE_OF_BAPIRET2 Sequence new TABLE_OF_BAPIRET2()
  1. Když jsme definovali vlastnost userName jako neměnné ID a ukotvení, musíme extrahovat hodnotu userName z kolekce ukotvení našeho exportního objektu. Přetáhněte aktivitu ForEachWithBodyFactory ze sady nástrojů do aktivity sekvence. Nahraďte název proměnné položky ukotveným , přepněte na vlastnosti a zvolte TypeArgument of Microsoft.MetadirectoryServices.AnchorAttribute. Do pole Hodnota zadejte objectToExport.AnchorAttributes.

Snímek obrazovky s pracovním postupem operace odstranění exportu

  1. Chcete-li extrahovat řetězcovou hodnotu ukotvení userName, přetáhněte aktivitu Switch uvnitř aktivity ForEach. Ve vyskakovacím okně vyberte typ přepínače Microsoft.IdentityManagement.MA.WebServices.Activities.Extensions.AnchorAttributeNameWrapper. Zadejte hodnotu výrazu: New AnchorAttributeNameWrapper(anchor.Name). Vyberte možnost Přidat novou oblast případu aktivity Switch. Zadejte userName jako hodnotu velikosti písmen. Přetáhněte aktivitu Assign do textu případu userName a přiřaďte ji anchor.Value.ToString() proměnné userName.
  2. Přetáhněte aktivitu WebSeviceCall do aktivity Sequence po aktivitě ForEach. Vyberte název služby SAPECC, koncový bod ZSAPCONNECTORWS a operaci BAPI_USER_DELETE. Vyberte tlačítko argumenty k definování parametrů pro volání webové služby, a to následujícím způsobem:
Name Směr Type Hodnota
VRÁTIT In/Out TABLE_OF_BAPIRET2 bapiret2Table
UŽIVATELSKÉ JMÉNO V String userName
  1. Vyberte OK. Znaménko upozornění zmizí.

Snímek obrazovky s aktualizovaným pracovním postupem operace odstranění

  1. Pokud chcete zpracovat odstranění výsledků žádosti uživatele, přetáhněte aktivitu IF uvnitř aktivity Sequence za aktivitu WebServiceCall. Zadejte následující podmínku: If(bapiRet2Table.item, Enumerable.Empty(Of BAPIRET2)()).Count(Function(errItem) errItem.TYPE.Equals("E") = True) <> 0
  2. Pokud nedojde k žádným chybám, předpokládáme, že operace odstranění byla úspěšně dokončena a chceme označit úspěšný export tohoto objektu vytvořením CSEntryChangeResult se stavem Úspěch. CreateCSEntryChangeResult Přetáhněte aktivitu do větve Else aktivity IF a vyberte kód chyby Úspěch.

Snímek obrazovky s pracovním postupem odstranění exportu

  1. Posledním krokem pracovního postupu Odstranění exportu je zpracování chyb exportu a protokolování. Přetáhněte aktivitu sekvence do prázdné větve potom aktivity IF.
  2. Přetáhněte aktivitu protokolu do aktivity sekvence. Přepněte na kartu Vlastnosti a zadejte hodnotu LogText: bapiRetTable.item.First(Function(retItem) retItem.TYPE.Equals("E")= True).MESSAGE. Udržujte vysokou úroveň protokolování a značku trasování. Protokoluje chybovou zprávu do protokolu událostí ConnectorsLog nebo ECMA2Host při povolení podrobného trasování.
  3. Přetáhněte aktivitu Switch do aktivity sekvence po aktivitě protokolu. V automaticky otevíraných oknech vyberte Typ řetězce hodnoty přepínače. Zadejte následující výraz: bapiret2Table.item.First(Function(retItem) retItem.TYPE.Equals("E")).NUMBER
  4. Vyberte výchozí případ a přetáhněte aktivitu CreateCSEntryChangeResult do textu tohoto případu. Zvolte kód chyby ExportErrorSyntaxViolation.

Snímek obrazovky s aktualizací pro export pracovního postupu operace odstranění

  1. Vyberte v oblasti Přidat nový případ a zadejte hodnotu případu 124. CreateCSEntryChangeResult Přetáhněte aktivitu do textu tohoto případu. Zvolte ExportErrorCustomContinueRun kód chyby.

Snímek obrazovky s pracovním postupem dokončení operace odstranění exportu

Dokončili jste definici pracovního postupu exportu odstranění.

Vytvoření pracovního postupu Nahrazení exportu

Pokud chcete aktualizovat uživatele v SAP ECC, můžete volat BAPI_USER_CHANGE program a zadat všechny parametry včetně názvu účtu a všech podrobností o uživateli, včetně těch, které se nemění. Režim exportu ECMA2 při zadání všech vlastností uživatele se nazývá Nahradit. Ve srovnání režim exportu AtributUpdate poskytuje pouze atributy, které se mění, a to může způsobit, že některé vlastnosti uživatele budou přepsány prázdnými hodnotami. Konektor webové služby proto vždy používá režim exportu nahrazení objektu a očekává, že konektor bude nakonfigurovaný pro typ exportu: Nahradit.

Pracovní postup Nahrazení exportu je téměř stejný jako pracovní postup Pro přidání exportu. Jediným rozdílem je, že potřebujete zadat další parametry, jako je addressX nebo companyX pro BAPI_USER_CHANGE program. X na konci addressX označuje, že struktura adresy obsahuje změnu.

  1. Přejděte na Typy objektů –> Uživatel –> Export –> Nahradit pracovní postup a z panelu nástrojů na pravém panelu nástrojů přetáhněte aktivitu sekvence do podokna návrháře pracovního postupu.
  2. V levém dolním rohu vyhledejte tlačítko Proměnné a vyberte ho, aby se rozbalil seznam proměnných definovaných v této sekvenci.
  3. Přidejte následující proměnné. Pokud chcete vybrat typ proměnné vygenerovaný ze SAP WSDL, vyberte možnost Procházet typy a rozbalte vygenerovaný a rozbalte obor názvů SAPECC. Tím se inicializují datové struktury používané programem BAPI_USER_CHANGE.
Name Typ proměnné Obor Výchozí
userName String Sequence
bapiret2Table SAPECC. TABLE_OF_BAPIRET2 Sequence new TABLE_OF_BAPIRET2()
addressX SAPECC. BAPIADDR3X Sequence new BAPIADDR3X()
adresa SAPECC. BAPIADDR3 Sequence new BAPIADDR3()
companyX SAPECC. BAPIUSCOMX Sequence nový BAPIUSCOMX()
company SAPECC. BAPIUSCOMP Sequence new BAPIUSCOMP()
defaultsX SAPECC. BAPIDEFAX Sequence nový BAPIDEFAX()
výchozí hodnoty SAPECC. BAPIDEFAUL Sequence nový BAPIDEFAUL()
logOnDataX SAPECC. BAPILOGONX Sequence nový BAPILOGONX()
logOnData SAPECC. BAPILOGOND Sequence nový BAPILOGOND()

Pracovní postup Nahradit export vypadá takto:

Snímek obrazovky s zahájením pracovního postupu operace nahrazení

  1. Když jsme definovali vlastnost userName jako neměnné ID, tedy jako kotvu, musíme extrahovat hodnotu userName z kolekce kotev našeho exportního objektu. Přetáhněte aktivitu ForEachWithBodyFactory ze sady nástrojů do aktivity sekvence. Nahraďte název proměnné položky ukotveným , přepněte na vlastnosti a zvolte TypeArgument of Microsoft.MetadirectoryServices.AnchorAttribute. Do pole Hodnota zadejte objectToExport.AnchorAttributes.

Snímek obrazovky s aktualizací pro nahrazení pracovního postupu operace

  1. Chcete-li extrahovat řetězcovou hodnotu ukotvení userName, přetáhněte aktivitu Switch uvnitř aktivity ForEach. Ve vyskakovacím okně vyberte Microsoft.IdentityManagement.MA.WebServices.Activities.Extensions.AnchorAttributeNameWrapper typ přepínače. Zadejte hodnotu výrazu: New AnchorAttributeNameWrapper(anchor.Name). Vyberte možnost Přidat nový případ v rámci aktivity Switch. Zadejte userName jako hodnotu velikosti písmen. Přetáhněte aktivitu Assign do textu případu userName a přiřaďte ji anchor.Value.ToString() proměnné userName. Pracovní postup Nahradit export vypadá takto:

Snímek obrazovky s jinou aktualizací pro nahrazení pracovního postupu operace

  1. Teď, když jsme extrahovali hodnotu userName z exportované vlastnosti ukotvení objektu, musíme naplnit další struktury, jako jsou společnosti, výchozí hodnoty, adresa, přihlašovací data, která obsahují další podrobnosti o uživateli SAP. Provedeme to tak, že projdeme kolekcí všech atributů definovaných ve schématu.
  2. Sbalte aktivitu ForEach a přetáhněte jinou aktivitu ForEachWithBothFactory uvnitř vaší aktivity Sequence za existující aktivitou ForEach. Nahraďte název proměnné položky schématemAttr, přepněte na vlastnosti a zvolte TypeArgument of Microsoft.MetadirectoryServices.SchemaAttribute. Do pole Hodnota zadejte schemaType.Attributes.

Snímek obrazovky s aktivitou nahrazení pořadí operací

  1. Přetáhněte aktivitu sekvence do těla aktivity ForEach. V levém dolním rohu vyhledejte tlačítko Proměnné a vyberte ho, aby se rozbalil seznam proměnných definovaných v této sekvenci. Přidejte následující proměnnou: xValue typu String. Přetáhněte aktivitu Assign (Přiřadit) do aktivity sekvence. Přiřaďte výraz xValue: If(objectToExport.AttributeChanges.Contains(schemaAttr.Name), objectToExport.AttributeChanges(schemaAttr.Name).ValueChanges(0).Value.ToString(), String.Empty) Buď extrahuje změny fázované pro export pro tento atribut, nebo inicializuje ho prázdným řetězcem. Pracovní postup Nahradit export vypadá takto:

Snímek obrazovky s aktualizací na sekvenci nahrazení

  1. Přetáhněte aktivitu Switch po přiřazení aktivity. V místní nabídce vyberte Microsoft.IdentityManagement.MA.WebServices.Activities.Extensions.AttributeNameWrapper a vyberte OK. Zadejte následující výraz: Nový AttributeNameWrapper(schemaAttr.Name). V pravém horním rohu aktivity Switch se zobrazí ikona upozornění týkající se neošetřených atributů definovaných ve schématu a nepřiřazená k žádné vlastnosti. Vyberte možnost Přidat nový případ v aktivitě Switch a zadejte hodnotu případu pro město. Přetáhněte aktivitu sekvence do těla tohoto případu. Přetáhněte aktivitu Přiřadit do textu tohoto případu. Přiřaďte hodnotu X k addressX.city. Přetáhněte další aktivitu Assign do textu tohoto případu. Přiřaďte hodnotu xValue k address.city. Pracovní postup Nahradit export vypadá takto:

Snímek obrazovky s aktivitou přepínače přetažení

10.Přidejte další chybějící případy a přiřazení. Tuto tabulku mapování použijte jako vodítko:

Velikost písmen Přiřazení
city addressX.city = "X" address.city = xValue
company companyX.company = "X" company.company = xValue
department address.departmentX = "X" address.department = xValue
E-mail addressX.e_mail = "X" address.e_mail = xValue
expirationTime logOnDataX.GLTGB = "X" logOnData.GLTGB = xValue
Jméno addressX.firstname = "X" address.firstname = xValue
lastName addressX.lastname = "X" address.lastname = xValue
middleName addressX.middlename = "X" address.middlename = xValue
telephoneNumber addressX.TEL1_Numbr = "X" adresa. TEL1_Numbr = xValue
jobTitle addressX.function = "X" address.function = xValue

Pracovní postup Nahradit export vypadá takto:

Snímek obrazovky s druhou aktivitou přepínače přetažení

  1. Před voláním BAPI_USER_CHANGE programu musíme zkontrolovat neprázdné uživatelské jméno. Sbalte obě aktivity ForEach a přetáhněte aktivitu KDYŽ po druhé aktivitě ForEach. Zadejte následující podmínku: String.IsNullOrEmpty(userName ) = False

  2. Když je uživatelské jméno prázdné, chceme označit, že operace nebyla úspěšná. CreateCSEntryChangeResult Přetáhněte aktivitu do větve Else aktivity IF a vyberte ExportErrorCustomContinueRun kód chyby. Pracovní postup Nahradit export vypadá takto: Snímek obrazovky s aktivitou CreateCSEntryChangeResult

  3. Přetáhněte aktivitu sekvence do prázdné větve potom první aktivity KDYŽ. Přetáhněte aktivitu WebSeviceCall uvnitř aktivity Sequence. Vyberte název služby SAPECC, koncový bod ZSAPCONNECTORWS a operaci BAPI_USER_CHANGE. Klikněte na tlačítko Argumenty k definování parametrů pro volání webové služby takto:

Name Směr Type Hodnota
ADRESA V BAPIADDR3 adresa
ADDRESSX V BAPIADDR3X addressX
SPOLEČNOST V BAPIUSCOMP company
COMPANYX V BAPIUSCOMX company
VÝCHOZÍ HODNOTY V BAPIDEFAUL výchozí hodnoty
DEFAULTSX V BAPIDEFAX defaultsX
LOGONDATA V BAPILOGOND logOnData
LOGONDATAX V BAPILOGONX logOnDataX
VRÁTIT In/Out TABLE_OF_BAPIRET2 bapiret2Table
UŽIVATELSKÉ JMÉNO V String userName
  1. Vyberte OK. Znaménko upozornění zmizí. Pracovní postup Nahradit export vypadá takto:

Snímek obrazovky s operací BAPI_USER_CHANGE

  1. Chcete-li zpracovat výsledky žádosti o změnu uživatele, přetáhněte aktivitu IF uvnitř aktivity Sequence za aktivitu WebServiceCall. Zadejte následující podmínku: Not IsNothing(bapiret2Table.item) AndAlso bapiret2Table.item.Count(Function(errItem) errItem.TYPE.Equals("E") = True) <> 0
  2. Pokud nedojde k žádným chybám, předpokládáme, že se operace exportu úspěšně dokončila a chceme označit úspěšný export tohoto objektu vytvořením CSEntryChangeResult se stavem Úspěch. CreateCSEntryChangeResult Přetáhněte aktivitu do větve Else aktivity IF a vyberte kód chyby Úspěch.
  3. Přetáhněte aktivitu sekvence do větve aktivity IF. Přidejte aktivitu protokolu s hodnotou string.Join("\n",bapiret2Table.item.Where(Function(retItem) retItem.TYPE.Equals("E")).Select(Function(r) r.MESSAGE)) LogText a značkou Error. Přidejte CreateCSEntryChangeResult aktivitu po aktivitě protokolu s kódem ExportErrorCustomContinueRunchyby . Pracovní postup Nahradit export vypadá takto:

Snímek obrazovky s pracovním postupem nahrazení konečného exportu

Dokončili jste definici pracovního postupu Nahrazení exportu.

Dalším krokem je konfigurace konektoru webové služby ECMA2Host pomocí této šablony.

Další kroky