ECMA2Host için SAP ECC 7.51 Web Hizmeti bağlayıcı şablonunu yazma
Bu kılavuz, SAP ECC kullanıcılarını yönetmek üzere Web Hizmeti Genişletilebilirlik Bağlantı Yönetimi Aracısı (ECMA) bağlayıcısı için şablon oluşturma işleminde size yol gösterir.
Sınırlamalar ve varsayımlar
Bu şablon, kullanıcıların nasıl yönetileceğini gösterir. ECMA2Host şu anda çok değerli başvuruları desteklemediğinden, Yerel Etkinlik Grupları, Roller ve Profiller gibi diğer nesne türleri bu kılavuz kapsamında değildir. Parola işlemleri de bu kılavuz için kapsam dışındadır.
Bu kılavuz, kullanıma sunulan BAPI işlevlerini çağırmak için kullanılan SAP içinde hizmet hesabının oluşturulmasını kapsamaz. Önceden oluşturulmuş bir tanıtım hesabı Geliştiricisinin , aşağıda belirtilen BAPI'lere izinler veren bir profil RFC_ALL kullanıldığı varsayılır.
Web Hizmeti Yapılandırma Aracı, SAP'de varsayılan olarak kullanıma sunulan şu özellikleri desteklemez: WSP İlkeleri ve uç nokta başına birden çok bağlama. Yalnızca SOAP 1.1 içeren bir WSDL, ilkeler olmadan hepsi bir arada belge stili bağlaması bekler.
Bu şablonda kullanılan SAP ECC BAPI işlevleri:
- BAPI_USER_GETLIST - Bu sisteme bağlı tüm kullanıcıların listesini alın.
- BAPI_USER_GETDETAIL - belirli bir kullanıcının ayrıntılarını alın.
- BAPI_USER_CREATE1 - bir kullanıcı oluşturur.
- BAPI_USER_DELETE - bir kullanıcıyı siler.
- BAPI_USER_CHANGE - kullanıcıyı güncelleştirir.
Bu kılavuzdaki tüm SAP kullanıcı özellikleri tek değerli özellikler olarak değerlendirilir.
Kullanılan programlama dili Visual Basic'tir.
Web hizmeti uç noktası tanımlama ve şema oluşturma
İçeri ve dışarı aktarma iş akışlarını tasarlamadan önce bir şablon oluşturmanız ve SOAP arabiriminde kullanıma sunulan SAP BAPI işlevleriyle bir uç nokta tanımlamanız gerekir. Ardından ECMA2 nesnelerinin bir şemasını oluşturun ve bunların özellikleri bu şablonda kullanılabilir.
- "C:\Program Files\Microsoft ECMA2Host\Web Service Configuration Tool" klasöründen Web Hizmeti Yapılandırma aracını başlatın wsconfigTool.exe
- Dosya-Yeni menüsünden Yeni SOAP Projesi Oluştur'u seçin
- SOAP Projesi'ne tıklayın ve Yeni Web Hizmeti ekle'yi seçin.
- Web hizmetinize SAPECC adını verin, yayımlanan WSDL'yi indirmek için bir URL sağlayın, SAPECC'yi ad alanı olarak girin. Web Hizmeti adı, şablonunuzdaki bu web hizmetini diğerlerinden ayırmanıza yardımcı olur. Ad alanı, sınıf oluşturmak için kullanılan Microsoft .NET ad alanının adını tanımlar. SAP yöneticisi tarafından aksi belirtilmedikçe Temel kimlik doğrulama modu'nu seçin. İleri'ye tıklayın.
- SAP ECC uç noktasına bağlanmak için kimlik bilgilerini sağlayın. İleri'ye tıklayın.
- Uç noktalar ve işlemler sayfasında BAPI'lerin görüntülendiğinden emin olun ve Son'a tıklayın
Not
birden fazla uç nokta görürseniz hem SOAP 1.2 hem de SOAP 1.1 bağlamaları etkindir. Bu, bağlayıcının başarısız olmasına neden olur. SOAMANAGER'da bağlama tanımınızı değiştirin ve yalnızca bir tane tutun. Ardından bir web hizmetini yeniden ekleyin.
- Projeyi C:\Program Files\Microsoft ECMA2Host\Service\ECMA klasörüne kaydedin.
- Nesne Türleri sekmesine tıklayın ve Kullanıcı nesne türü eklemeyi seçin. Tamam’a tıklayın.
- Nesne Türleri sekmesini genişletin ve Kullanıcı türü tanımına tıklayın.
- Şemaya aşağıdaki öznitelikleri ekleyin ve bağlayıcı olarak userName'i seçin.
- Projenizi kaydedin.
Adı | Tip | Bağlayıcı |
---|---|---|
şehir | Dize | |
company | Dize | |
department | Dize | |
e-posta | Dize | |
expirationTime | Dize | |
firstName | Dize | |
lastName | Dize | |
middleName | Dize | |
telephoneNumber | Dize | |
jobTitle | Dize | |
userName | Dize | checked |
Tam İçeri Aktarma iş akışı oluşturma
ECMA2Host'ta isteğe bağlı olan İçeri Aktarma iş akışı, mevcut SAP kullanıcılarını ECMA2Host bellek içi önbelleğine içeri aktarmanıza ve sağlama sırasında yinelenen kullanıcıların oluşturulmasını önlemenize olanak tanır.
İçeri aktarma iş akışı oluşturmazsanız bağlayıcınız Yalnızca dışarı aktarma modunda çalışır ve ECMA2Host'un mevcut kullanıcılar için bile Kullanıcı oluşturma işlemlerini her zaman vermesine neden olur. Yinelenenler dışarı aktarma iş akışı tarafından işlenmediği sürece standart SAP BAPI'leri kullanıldığında bu hatalara veya yinelemelere yol açabilir.
SAP ECC, son okumadan bu yana yapılan değişiklikleri okumak için yerleşik bir mekanizma sunmaz.
Bu nedenle yalnızca Tam İçeri Aktarma iş akışını uyguluyoruz. Performans nedenleriyle Delta İçeri Aktarmaları uygulamanız gerekiyorsa, BAPI'lerin listesi için SAP yöneticinize başvurun ve soap web hizmeti olarak yayımlanmalarını sağlayın. Ardından aşağıdaki açıklanan yaklaşımı ve önceki başarılı çalıştırmanın zaman damgasını içeren customData özelliğini kullanarak Delta İçeri Aktarma iş akışını uygulayın.
SAP ECC, özelliklerine sahip kullanıcıların listesini almak için çeşitli BAPI işlevleri sunar:
- BAPI_USER_GETLIST - Bu sisteme bağlı tüm kullanıcıların listesini alın.
- BAPI_USER_GETDETAIL - belirli bir kullanıcının ayrıntılarını alın.
Bu şablonda SAP ECC'den mevcut kullanıcıları almak için yalnızca bu iki BAPI kullanılır.
- Nesne Türleri - Kullanıcı -> İçeri Aktarma ->> Tam İçeri Aktarma iş akışı'na gidin ve sağ taraftaki Araç Kutusu'ndan Sıralı etkinliği iş akışı tasarımcısı bölmesine sürükleyip bırakın.
- Sol altta Değişkenler düğmesini bulun ve bu Dizi içinde tanımlanan değişkenlerin listesini genişletmek için bu düğmeye tıklayın.
- Aşağıdaki değişkenleri ekleyin. SAP WSDL'den oluşturulan bir değişken türünü seçmek için Türlere Gözat'a tıklayın ve oluşturulanı genişletin ve ardından SAPECC ad alanını genişletin.
Veri Akışı Adı | Değişken Türü | Kapsam | Varsayılan |
---|---|---|---|
selRangeTable | SAPECC. TABLE_OF_BAPIUSSRGE | Sequence | {.item = new BAPIUSSRGE(){new BAPIUSSRGE}} ile yeni TABLE_OF_BAPIUSSRGE |
getListRetTable | SAPECC. TABLE_OF_BAPIRET2 | Sequence | yeni TABLE_OF_BAPIRET2 |
Pagesize | Int32 | Sequence | 200 |
returnedSize | Int32 | Sequence | |
usersTable | SAPECC. TABLE_OF_BAPIUSNAME | Sequence | new TABLE_OF_BAPIUSNAME() |
- Araç Kutusu'ndan, Sıralı etkinliğinizin içine dört Atama etkinliği sürükleyip bırakın ve şu değerleri ayarlayın:
selRangeTable.item(0).PARAMETER = "USERNAME"
selRangeTable.item(0).SIGN = "I" selRangeTable.item(0).OPTION = "GT" selRangeTable.item(0).LOW = ""
bu parametreler BAPI_USER_GETLIST işlevini çağırmak ve sayfalandırma uygulamak için kullanılır.
- Sayfalandırmayı uygulamak için Araç Kutusu'ndan DoWhile etkinliğini son Atama işleminden sonra Sıralı etkinliğinizin içine sürükleyip bırakın.
- Sağ bölmede Özellikler sekmesine geçin ve DoWhile için bu koşulu girin
- devir:
returnedSize = pageSize
- Değişkenler'e tıklayın ve varsayılan değeri 0 olan DoWhile döngüsü içinde int32 türünün currentPageNumber özelliğini ekleyin.
- İsteğe bağlı adım: Delta İçeri Aktarma iş akışını uygulamayı planlıyorsanız, Araç Kutusu'ndan Ata etkinliğini DoWhile döngüsünden sonra Sıralı etkinliğinizin içinde sürükleyip bırakın. Şu değeri ayarlayın:
customData(schemaType.Name + "_lastImportTime") = DateTimeOffset.UtcNow.Ticks.ToString()
Bu, son tam içeri aktarma çalıştırmasının tarih ve saatini kaydeder ve bu zaman damgası daha sonra Delta İçeri Aktarma iş akışında kullanılabilir.
- Araç Kutusu'ndan DoWhile etkinliğinizin içindeki Sıralı etkinliği sürükleyip bırakın. WebServiceCall etkinliğini bu Sıralı etkinliğin içine sürükleyip bırakın ve SAPECC hizmet adı, ZSAPCONNECTORWS uç noktası ve BAPI_USER_GETLIST işlemi seçin.
- ... seçeneğine tıklayın. Web hizmeti çağrısı parametrelerini tanımlamak için bağımsız değişkenler düğmesi aşağıdaki gibi:
Veri Akışı Adı | Yön | Tür | Değer |
---|---|---|---|
MAX_ROWS | İçinde | Int32 | Pagesize |
MAX_ROWSSpecified | İçinde | Boolean | True |
DÖNMEK | Gelen/Giden | TABLE_OF_BAPIRET2 | getListRetTable |
SELECTION_EXP | Gelen/Giden | TABLE_OF_BAPIUSSEXP | |
SELECTION_RANGE | Gelen/Giden | TABLE_OF_BAPIUSSRGE | selRangeTable |
KULLANICI LİSTESİ | Gelen/Giden | TABLE_OF_BAPIUSNAME | usersTable |
WITH_USERNAME | İçinde | String | |
SATIRLAR | Dışarı | Int32 | returnedSize |
- Tamam'a tıklayın. Uyarı işareti kaybolur. usersTable değişkeninde depolanan kullanıcıların listesi. SAP tek bir yanıtta kullanıcıların tam listesini döndürmediğinden sayfalandırma uygulamamız ve sayfalar arasında geçiş yaparken bu işlevi birkaç kez çağırmamız gerekir. Ardından içeri aktarılan her kullanıcı için ayrı bir çağrı yaparak bu kullanıcının ayrıntılarını almanız gerekir. Bu, 1000 kullanıcı ve sayfa boyutu 200 olan bir manzara için Web Hizmeti bağlayıcısının, kullanıcıların listesini almak için 5 çağrı ve kullanıcıların ayrıntılarını almak için 1000 ayrı çağrı yaptığı anlamına gelir. Performansı artırmak için SAP ekibinizden, 1000 ayrı çağrı yapma gereksinimini önlemek ve SOAP WS uç noktası üzerinden bu BAPI işlevini kullanıma sunma gereksinimini önlemek için tüm kullanımlarını özellikleriyle birlikte listeleyen özel bir BAPI programı geliştirmesini isteyin.
- Araç Kutusu'ndan, WebServiceCall etkinliğinden sonra DoWhile etkinliğinizin içinde EĞER etkinliğini sürükleyip bırakın. Boş olmayan yanıtı ve hataların yokluğunu denetlemek için bu koşulu belirtin:
IsNothing(getListRetTable.item) OrElse getListRetTable.item.Count(Function(errItem) errItem.TYPE.Equals("E") = True) = 0
- Başarısız içeri aktarma işleminde hata vermek için, Araç Kutusu'ndan Throw etkinliğini IF etkinliğinizin Else dalı içine sürükleyip bırakın. Özellikler sekmesine geçin ve Throw etkinliğinin Exception özelliği için şu ifadeyi girin:
New Exception(getListRetTable.item.First(Function(retItem) retItem.TYPE.Equals("E")).MESSAGE)
- İçeri aktarılan kullanıcıların listesini işlemek için ForEachWithBodyFactory etkinliğini Araç Kutusu'ndan IF etkinliğinizin Then dalı içine sürükleyip bırakın. Özellikler sekmesine geçin ve SAPECC'yi seçin. TypeArgument olarak BAPIUSNAME. ... seçeneğine tıklayın. düğmesini seçin ve values özelliği için şu ifadeyi yazın:
if(usersTable.item,Enumerable.Empty(of BAPIUSNAME)())
- Araç Kutusu'ndan, ForEach etkinliğinizin içindeki Sıralı etkinliği sürükleyip bırakın. Bu Sıra etkinliği penceresinin etkin olması için Değişkenler düğmesine tıklayın ve şu değişkenleri tanımlayın:
Veri Akışı Adı | Değişken Türü | Kapsam | Varsayılan |
---|---|---|---|
company | SAPECC. BAPIUSCOMP | Sequence | new BAPIUSCOMP() |
adres | SAPECC. BAPIADDR3 | Sequence | new BAPIADDR3() |
varsayılan değerler | SAPECC. BAPIDEFAUL | Sequence | new BAPIDEFAUL() |
logondata | SAPECC. BAPILOGOND | Sequence | new BAPILOGOND() |
getDetailRetTable | SAPECC. TABLE_OF_BAPIRET2 | Sequence | new TABLE_OF_BAPIRET2() |
EĞER etkinliğiniz şöyle görünür:
- CreateCSEntryChangeScope etkinliğini Sıra etkinliğinizin içine sürükleyip bırakın. DN özelliğine schemaType.Name ve öğesini girin. KULLANICI ADI. CreateAnchorAttribute AnchorValue alanına item.username girin.
- Her kullanıcının ayrıntılarını almak için Toolbox'tan WebServiceCall etkinliğini CreateAnchorAttribute etkinliğinden hemen önce Sıra etkinliği içinde sürükleyip bırakın. SAPECC hizmet adı, ZSAPCONNECTORWS uç noktası ve BAPI_USER_GET_DETAIL işlemi seçin. ... seçeneğine tıklayın. Web hizmeti çağrısı parametrelerini tanımlamak için bağımsız değişkenler düğmesi aşağıdaki gibi:
Veri Akışı Adı | Yön | Tür | Değer |
---|---|---|---|
DÖNMEK | Gelen/Giden | TABLE_OF_BAPIRET2 | getDetailRetTable |
KULLANICI ADI | İçinde | String | item.username |
ADRES | Dışarı | BAPIADDR3 | adres |
ŞİRKET | Dışarı | BAPIUSCOMP | company |
VARSAYILAN | Dışarı | BAPIUSDEFAUL | varsayılan değerler |
LOGONDATA | Dışarı | BAPILOGOND | logonData |
WITH_USERNAME | İçinde | String | |
SATIRLAR | Dışarı | Int32 | returnedSize |
- Tamam'a tıklayın. Uyarı işareti kaybolur. Bir kullanıcının ayrıntıları, yukarıda listelenen değişkenlerde depolanır. EĞER etkinliğiniz şöyle görünür:
- BAPI_USER_GET_DETAIL işleminin sonuçlarını denetlemek için, Araç Kutusu'ndan EĞER etkinliğini sürükleyip bırakın ve WebServiceCall ile CreateAnchorAttribute etkinlikleri arasında Sıra etkinliğinin içine yerleştirin. Şu koşulu girin:
IsNothing(getDetailRetTable.item) OrElse getDetailRetTable.item.Count(Function(errItem) errItem.TYPE.Equals("E") = True) = 0
Eksik kullanıcı ayrıntıları yıkıcı bir olay olarak değerlendirilmediğinden, bu hatayı belirtmek ve diğer kullanıcıların işlenmesine devam etmek istiyoruz. Dizi etkinliğini EĞER etkinliğinizin Else dalı içine sürükleyip bırakın. Bu yeni Sıralı etkinliğin içine Günlük etkinliği ekleyin. Özellikler sekmesine geçin ve Düzey özelliğini Yüksek, Etiket'i İzleme olarak değiştirin. LogText özelliğine aşağıdakileri girin: string.Join("\n", getDetailRetTable.item.Select (Function(item) item.MESSAGE ))
- Dizi etkinliğini EĞER etkinliğinin Then dalı içine sürükleyip bırakın. Mevcut CreateAnchorAttribute etkinliğini, IF etkinliğinin Then dalındaki Sıra etkinliğine sürükleyip bırakın. ForEach etkinliğiniz şu şekilde görünür:
- Bir kullanıcının city, company, department gibi her özelliği için CreateAnchorAttribute etkinliğinden sonra EĞER etkinliği ekleyin ve gibi
Not string.IsNullOrEmpty(address.city)
koşullar girip CreateAttributeChange etkinliklerini bu IF etkinliğinin Then dalı içine ekleyerek boş olmayan değerleri denetleyin.
Örneğin: Bu eşleme tablosunu kullanarak tüm kullanıcı özellikleri için CreateAttributeChange etkinlikleri ekleyin:
ECMA Kullanıcı özelliği | SAP özelliği |
---|---|
şehir | adres.şehir |
department | address.department |
company | company.company |
e-posta | address.e_mail |
firstName | address.firstName |
lastName | address.lastName |
middleName | address.middleName |
jobTitle | address.function |
expirationTime | logonData.GLTGB |
telephoneNumber | adres. TEL1_NUMBR |
- Son olarak, son CreateAttributeChange etkinliğinden sonra SetImportStatusCode etkinliğini ekleyin. Then dalında ErrorCode değerini Başarılı olarak ayarlayın. Else dalı içine bir SetImportStatus kod etkinliği daha ekleyin ve ErrorCode değerini ImportErrorCustomContinueRun olarak ayarlayın.
- DoWhile döngünüzün şu şekilde görünmesi için ForEach etkinliğinin içindeki Sıra etkinliğini daraltma:
- Kullanıcıların sonraki sayfasını almak için özelliği güncelleştirin
selRangeTable.item(0).LOW
. IF etkinliğini DoWhile içindeki Sıra etkinliğine sürükleyip bırakın, mevcut EĞER etkinliğinin arkasına yerleştirin. koşul olarak returnedSize>0 girin. Assign etkinliğini IF etkinliğinin Then dalı'na ekleyin ve olarakusersTable.item(returnedSize-1).username
ayarlayınselRangeTable.item(0).LOW
.
Tam İçeri Aktarma iş akışının tanımını tamamladınız.
Dışarı Aktarma İş Akışı Ekleme Oluşturma
SAP ECC'de bir kullanıcı oluşturmak için BAPI_USER_CREATE1 programını çağırabilir ve hesap adı ve başlangıç parolası dahil olmak üzere tüm parametreleri sağlayabilirsiniz. SAP tarafında bir hesap adı oluşturulması gerekiyorsa SAP yöneticinize başvurun ve yeni oluşturulan bir kullanıcı hesabının userName özelliğini döndüren özel bir BAPI işlevi kullanın.
Bu kılavuzda lisansların, yerel veya genel etkinlik gruplarının, sistemlerin veya profillerin atanması gösterilmiyor. SAP yöneticinize danışın ve bu iş akışını uygun şekilde değiştirin.
Dışarı aktarma iş akışlarında sayfalandırma uygulamaya gerek yoktur. İş akışı bağlamında yalnızca bir objectToExport kullanılabilir.
- Nesne Türleri - Kullanıcı ->> Dışarı Aktar -> İş akışı ekle'ye gidin ve sağ taraftaki Araç Kutusu'ndan Sıralı etkinliği iş akışı tasarımcısı bölmesine sürükleyip bırakın.
- Sol altta Değişkenler düğmesini bulun ve bu Dizi içinde tanımlanan değişkenlerin listesini genişletmek için bu düğmeye tıklayın.
- Aşağıdaki değişkenleri ekleyin. SAP WSDL'den oluşturulan bir değişken türünü seçmek için Türlere Gözat'a tıklayın ve oluşturulanı genişletin ve ardından SAPECC ad alanını genişletin. Bu, BAPI_USER_CREATE1 program tarafından kullanılan veri yapılarını başlatır.
Veri Akışı Adı | Değişken Türü | Kapsam | Varsayılan |
---|---|---|---|
adres | SAPECC. BAPIADDR3 | Sequence | new BAPIADDR3() |
userName | String | Sequence | |
password | SAPECC. BAPIPWD | Sequence | new BAPIPWD() |
company | SAPECC. BAPIUSCOMP | Sequence | new BAPIUSCOMP() |
varsayılan değerler | SAPECC. BAPIDEFAUL | Sequence | new BAPIDEFAUL() |
logOnData | SAPECC. BAPILOGOND | Sequence | new BAPILOGOND() |
bapiret2Table | SAPECC. TABLE_OF_BAPIRET2 | Sequence | new TABLE_OF_BAPIRET2() |
- userName özelliğini sabit bir kimlik, bir yer işareti olarak tanımladığımız için, dışarı aktarma nesnemizin yer işaretleri koleksiyonundan userName değerini ayıklamamız gerekir. ForEachWithBodyFactory etkinliğini Araç Kutusu'ndan Sıra etkinliğinize sürükleyip bırakın. Öğe değişkeni adını tutturucuyla değiştirin, özelliklere geçin ve TypeArgument değerini
Microsoft.MetadirectoryServices.AnchorAttribute
seçin. Değer alanı türüne yazınobjectToExport.AnchorAttributes
.
- UserName tutturucusunun dize değerini ayıklamak için, ForEach etkinliğinin içinde Switch etkinliğini sürükleyip bırakın. Açılan pencerede bir anahtarın türünü seçin
Microsoft.IdentityManagement.MA.WebServices.Activities.Extensions.AnchorAttributeNameWrapper
. İfade değerini girin: New AnchorAttributeNameWrapper(anchor. Ad). - Switch etkinliğinin Yeni servis talebi alanı ekle'ye tıklayın. UserName değerini Büyük/Küçük Harf Değeri olarak yazın. Etkinlik ata'yı userName servis talebi gövdesine sürükleyip bırakın ve yer işareti atayın. Value.ToString() to userName değişkeni.
- Dışarı aktarılan nesne bağlantısı özelliğinden userName değerini ayıkladığımıza göre, diğer SAP kullanıcı ayrıntılarını içeren şirket, varsayılanlar, adres, oturum açma verileri gibi diğer yapıları doldurmamız gerekir. Bunu, öznitelik değişiklikleri koleksiyonu aracılığıyla döngü yaparak yaparız.
- ForEach etkinliğinizi daraltın ve mevcut ForEach etkinliğinden sonra Sıra etkinliğinizin içinde başka bir ForEachWithBothFactory etkinliğini sürükleyip bırakın. öğe değişkeni adını attributeChange ile değiştirin, özelliklere geçin ve TypeArgument öğesini
Microsoft.MetadirectoryServices.AttributeChange
seçin. Değer alanı türüne yazınobjectToExport.AttributeChanges
.
- Switch etkinliğini Sürükleyip ForEach etkinliğinizin gövdesine bırakın.
- Açılan menüden Tamam'ı seçin
Microsoft.IdentityManagement.MA.WebServices.Activities.Extensions.AttributeNameWrapper
ve tıklayın. - Şu ifadeyi girin: New AttributeNameWrapper(attributeChange.Name). Switch etkinliğinizin sağ üst köşesinde şemada tanımlanan ve hiçbir özelliğe atanmayan işlenmeyen öznitelikler hakkında bir uyarı simgesi görürsünüz.
- Switch etkinliğinin yeni servis talebi alanı ekle'ye tıklayın ve şehrin servis talebi değerini yazın.
- Assign etkinliğini bu servis talebinin gövdesine sürükleyip bırakın. address.city adresine atayın
attributeChange.ValueChanges(0).Value.ToString()
.
- Diğer eksik servis taleplerini ve atamaları ekleyin. Bu eşleme tablosunu kılavuz olarak kullanın:
Büyük/küçük harf durumu | Atama |
---|---|
şehir | address.city = attributeChange.ValueChanges(0)Value.ToString() |
company | company.company = attributeChange.ValueChanges(0)Value.ToString() |
department | address.department = attributeChange.ValueChanges(0)Value.ToString() |
e-posta | address.e_mail = attributeChange.ValueChanges(0)Value.ToString() |
expirationTime | logOnData.GLTGB = attributeChange.ValueChanges(0)Value.ToString() |
ad | address.firstname = attributeChange.ValueChanges(0)Value.ToString() |
lastName | address.lastname = attributeChange.ValueChanges(0)Value.ToString() |
middleName | address.middlename = attributeChange.ValueChanges(0)Value.ToString() |
telephoneNumber | adres. TEL1_Numbr = attributeChange.ValueChanges(0)Value.ToString() |
jobTitle | address.function = attributeChange.ValueChanges(0)Value.ToString() |
export_password | parola. BAPIPWD1 = attributeChange.ValueChanges(0)Value.ToString() |
Burada export_password her zaman şemada tanımlanan ve oluşturulan kullanıcının ilk parolasını geçirmek için kullanılabilen özel bir sanal özniteliktir.
- ForEach etkinliğinizi daraltın ve oluşturma kullanıcı isteğini göndermeden önce kullanıcı özelliklerini doğrulamak için EĞER etkinliğini ikinci ForEach etkinliğinden sonra Sıra etkinliğine sürükleyip bırakın. En az 3 boş olmayan değere ihtiyacımız var: kullanıcı adı, soyadı, ilk parola. Şu koşulu girin:
(String.IsNullOrEmpty(address.lastname) = False ) AND (String.IsNullOrEmpty(userName) = False) AND (String.IsNullOrEmpty(password.BAPIPWD1) = False)
- EĞER etkinliğinin Else dalında, eksik olan şeye bağlı olarak farklı hatalar atmak istediğimiz için bir EĞER etkinliği daha ekleyin. Koşul değerini girin: String.IsNullOrEmpty(userName). etkinlikleri ikinci EĞER etkinliğinin her iki dalı içine sürükleyip bırakın
CreateCSEntryChangeResult
ve veExportErrorMissingProvisioningAttribute
hata kodunuExportErrorMissingAnchorComponent
ayarlayın.
- Sıra etkinliğini ilk EĞER etkinliğinin boş Then dalında sürükleyip bırakın. WebSeviceCall etkinliğini Sıralı etkinliğin içine sürükleyip bırakın. SAPECC hizmet adı, ZSAPCONNECTORWS uç noktası ve BAPI_USER_CREATE1 işlemi seçin. ... seçeneğine tıklayın. Web hizmeti çağrısı parametrelerini tanımlamak için bağımsız değişkenler düğmesi aşağıdaki gibi:
Veri Akışı Adı | Yön | Tür | Değer |
---|---|---|---|
ADRES | İçinde | BAPIADDR3 | adres |
ŞİRKET | İçinde | BAPIUSCOMP | company |
VARSAYILAN | İçinde | BAPIDEFAUL | varsayılan değerler |
LOGONDATA | İçinde | BAPILOGOND | logOnData |
PAROLA | İçinde | BAPIPWD | password |
DÖNMEK | Gelen | TABLE_OF_BAPIRET2 | bapiret2Table |
SELF_REGISTER | İçinde | String | "X" |
KULLANICI ADI | İçinde | String | userName |
- Tamam'a tıklayın. Uyarı işareti kaybolur.
- Kullanıcı isteği oluşturma sonuçlarını işlemek için, Eğer etkinliğini WebServiceCall etkinliğinden sonra Sıra etkinliği içinde sürükleyip bırakın. Aşağıdaki koşulu girin:
IsNothing (bapiret2Table.item) OrElse bapiret2Table.item.Count(Function(errItem) errItem.TYPE.Equals("E") = True) <> 0
- Hata almadığımız takdirde, dışarı aktarma işleminin başarıyla tamamlandığını varsayarız ve Başarılı durumuyla CSEntryChangeResult oluşturarak bu nesnenin başarılı dışarı aktarılmasını belirtmek isteriz. CreateCSEntryChangeResult etkinliğini IF etkinliğinizin Else dalı içine sürükleyip bırakın ve Başarılı hata kodu'nu seçin.
- İsteğe bağlı: Web hizmeti çağrısı bir kullanıcının oluşturulan hesap adını döndürürse, dışarı aktarılan nesnenin tutturucu değerini güncelleştirmemiz gerekir. Bunu yapmak için etkinliğin içine
CreateCSEntryChangeResult
sürükleyip bırakınCreateAttrubuteChange
ve UserName ekle'yi seçin. Ardından etkinliğin içineCreateAttributeChange
sürükleyip bırakınCreateValueChange
ve bir web hizmeti çağrısı etkinliği tarafından doldurulan değişken adını girin. Bu kılavuzda, dışarı aktarmada güncelleştirilmeyen userName değişkenini kullanacaksınız.
- Dışarı Aktarma Ekleme iş akışının son adımı dışarı aktarma hatalarını işlemek ve günlüğe kaydetmektir. Dizi etkinliğini, EĞER etkinliğinizin boş Then dalı içine sürükleyip bırakın.
- Günlük etkinliğini Sıra etkinliğine sürükleyip bırakın. Özellikler sekmesine geçin ve LogText değerini girin:
bapiret2Table.item.First(Function(retItem) retItem.TYPE.Equals("E"))
. İLETİ. Yüksek günlük düzeyini ve İzleme etiketini koruyun. Bu, ayrıntılı izleme etkinleştirildiğinde ConnectorsLog veya ECMA2Host olay günlüğüne bir hata iletisi kaydeder. - Günlük etkinliğinden sonra Sıralı etkinliğin içinde Switch etkinliğini sürükleyip bırakın. Açılan pencerede anahtar değerinin Dize türü'nü seçin. Aşağıdaki ifadeyi girin:
bapiret2Table.item.First(Function(retItem) retItem.TYPE.Equals("E")).NUMBER
- Varsayılan servis talebi'ne tıklayın ve CreateCSEntryChangeResult etkinliğini bu olayın gövdesine sürükleyip bırakın. ExportErrorInvalidProvisioningAttributeValue hata kodunu seçin.
- Yeni servis talebi ekle alanına tıklayın ve 224 servis talebi değeri yazın. Etkinliği bu olayın gövdesine sürükleyin ve bırakın
CreateCSEntryChangeResult
. Hata kodunu seçinExportErrorCustomContinueRun
.
İş akışı ekleme dışarı aktarma tanımını tamamladınız.
Dışarı Aktarma Silme iş akışı oluşturma
SAP ECC'de bir kullanıcıyı silmek için BAPI_USER_DELETE programını çağırabilir ve bağlı sistemde silinecek bir hesap adı sağlayabilirsiniz. SAP ECC hesaplarının silinmesi değil, geçmiş kayıtları tutmak için süresinin dolması gerekip gerekmediği için bu senaryo için zorunlu olup olmadığını SAP Yöneticinize danışın.
Bu kılavuz SAP Common User Administration sistemiyle ilgili senaryoları, bağlı sistemlerden kullanıcıların sağlamasını kaldırmayı, lisansların iptalini vb. kapsamaz.
Dışarı aktarma iş akışlarında sayfalandırma uygulamaya gerek yoktur. İş akışı bağlamında yalnızca bir objectToExport kullanılabilir.
- Nesne Türleri - Kullanıcı ->> Dışarı Aktar -> İş akışını sil'e gidin ve sağ taraftaki Araç Kutusu'ndan Sıralı etkinliği iş akışı tasarımcısı bölmesine sürükleyip bırakın.
- Sol altta Değişkenler düğmesini bulun ve bu Dizi içinde tanımlanan değişkenlerin listesini genişletmek için bu düğmeye tıklayın.
- Aşağıdaki değişkenleri ekleyin. SAP WSDL'den oluşturulan bir değişken türünü seçmek için Türlere Gözat'a tıklayın ve oluşturulanı genişletin ve ardından SAPECC ad alanını genişletin. Bu, BAPI_USER_DELETE program tarafından kullanılan veri yapılarını başlatır.
Veri Akışı Adı | Değişken Türü | Kapsam | Varsayılan |
---|---|---|---|
userName | String | Sequence | |
bapiret2Table | SAPECC. TABLE_OF_BAPIRET2 | Sequence | new TABLE_OF_BAPIRET2() |
- userName özelliğini sabit bir kimlik, bir yer işareti olarak tanımladığımız için, dışarı aktarma nesnemizin yer işaretleri koleksiyonundan userName değerini ayıklamamız gerekir. ForEachWithBodyFactory etkinliğini Araç Kutusu'ndan Sıra etkinliğinize sürükleyip bırakın. Öğe değişkeni adını tutturucuyla değiştirin, özelliklere geçin ve TypeArgument değerini
Microsoft.MetadirectoryServices.AnchorAttribute
seçin. Değer alanı türüne yazınobjectToExport.AnchorAttributes
.
- UserName tutturucusunun dize değerini ayıklamak için, ForEach etkinliğinin içinde Switch etkinliğini sürükleyip bırakın. Açılan pencerede bir anahtarın türünü seçin
Microsoft.IdentityManagement.MA.WebServices.Activities.Extensions.AnchorAttributeNameWrapper
. şu ifade değerini girin: YeniAnchorAttributeNameWrapper(anchor.Name)
. Switch etkinliğinin Yeni servis talebi alanı ekle'ye tıklayın. UserName değerini Büyük/Küçük Harf Değeri olarak yazın. Assign etkinliğini userName servis talebi gövdesine sürükleyip bırakın ve userName değişkenine atayınanchor.Value.ToString()
. - WebSeviceCall etkinliğini ForEach etkinliğinden sonra Sıra etkinliği içinde sürükleyip bırakın. SAPECC hizmet adı, ZSAPCONNECTORWS uç noktası ve BAPI_USER_DELETE işlemi seçin. ... seçeneğine tıklayın. Web hizmeti çağrısı parametrelerini tanımlamak için bağımsız değişkenler düğmesi aşağıdaki gibi:
Veri Akışı Adı | Yön | Tür | Değer |
---|---|---|---|
DÖNMEK | Gelen/Giden | TABLE_OF_BAPIRET2 | bapiret2Table |
KULLANICI ADI | İçinde | String | userName |
- Tamam'a tıklayın. Uyarı işareti kaybolur.
- Silme kullanıcı isteği sonuçlarını işlemek için, Eğer etkinliğini WebServiceCall etkinliğinden sonra Sıra etkinliği içinde sürükleyip bırakın. Aşağıdaki koşulu girin:
If(bapiRet2Table.item, Enumerable.Empty(Of BAPIRET2)()).Count(Function(errItem) errItem.TYPE.Equals("E") = True) <> 0
- Hata almadığımız takdirde silme işleminin başarıyla tamamlandığını varsayarız ve Başarılı durumuyla oluşturarak
CSEntryChangeResult
bu nesnenin başarılı bir şekilde dışarı aktarıldığını belirtmek isteriz. Etkinliği IF etkinliğinizin Else dalı içine sürükleyip bırakınCreateCSEntryChangeResult
ve Başarılı hata kodu'nu seçin.
- Dışarı Aktarma Silme iş akışının son adımı dışarı aktarma hatalarını işlemek ve günlüğe kaydetmektir. Dizi etkinliğini, EĞER etkinliğinizin boş Then dalı içine sürükleyip bırakın.
- Günlük etkinliğini Sıra etkinliğine sürükleyip bırakın. Özellikler sekmesine geçin ve LogText değerini girin:
bapiRetTable.item.First(Function(retItem) retItem.TYPE.Equals("E")= True).MESSAGE
. Yüksek günlük düzeyini ve İzleme etiketini koruyun. Bu, ayrıntılı izleme etkinleştirildiğinde ConnectorsLog veya ECMA2Host olay günlüğüne bir hata iletisi kaydeder. - Günlük etkinliğinden sonra Sıralı etkinliğin içinde Switch etkinliğini sürükleyip bırakın. Açılan pencerede anahtar değerinin Dize türü'nü seçin. Aşağıdaki ifadeyi girin:
bapiret2Table.item.First(Function(retItem) retItem.TYPE.Equals("E")).NUMBER
- Varsayılan servis talebi'ne tıklayın ve CreateCSEntryChangeResult etkinliğini bu olayın gövdesine sürükleyip bırakın. ExportErrorSyntaxViolation hata kodunu seçin.
- Yeni servis talebi ekle alanına tıklayın ve 124 servis talebi değeri yazın. Etkinliği bu olayın gövdesine sürükleyin ve bırakın
CreateCSEntryChangeResult
. Hata kodunu seçinExportErrorCustomContinueRun
.
Silmeyi Dışarı Aktar iş akışının tanımını tamamladınız.
Dışarı Aktarma Değiştirme iş akışı oluşturma
SAP ECC'de bir kullanıcıyı güncelleştirmek için BAPI_USER_CHANGE programını çağırabilir ve hesap adı ve değişmeyenler de dahil olmak üzere tüm kullanıcı ayrıntıları dahil olmak üzere tüm parametreleri sağlayabilirsiniz. Tüm kullanıcı özellikleri sağlanacakken ECMA2 dışarı aktarma modu Değiştir olarak adlandırılır. Buna karşılık, AttributeUpdate'in dışarı aktarma modu yalnızca değiştirilen öznitelikleri sağlar ve bu, bazı kullanıcı özelliklerinin üzerine boş değerlerle yazılmasını sağlayabilir. Bu nedenle, Web hizmeti bağlayıcısı her zaman Nesne Değiştirme dışarı aktarma modunu kullanır ve bağlayıcının Dışarı Aktarma Türü: Değiştir için yapılandırılmasını bekler.
Dışarı Aktarma Değiştirme iş akışı, Dışarı Aktarma Ekleme iş akışıyla neredeyse aynıdır. Tek fark, BAPI_USER_CHANGE program için addressX veya companyX gibi ek parametreler belirtmeniz gerektiğidir; burada X, addressX ile biten adres yapısının bir değişiklik içerdiğini gösterir.
- Nesne Türleri - Kullanıcı ->> Dışarı Aktar -> İş akışını değiştir'e gidin ve sağ taraftaki Araç Kutusu'ndan Sıralı etkinliği iş akışı tasarımcısı bölmesine sürükleyip bırakın.
- Sol altta Değişkenler düğmesini bulun ve bu Dizi içinde tanımlanan değişkenlerin listesini genişletmek için bu düğmeye tıklayın.
- Aşağıdaki değişkenleri ekleyin. SAP WSDL'den oluşturulan bir değişken türünü seçmek için Türlere Gözat'a tıklayın ve oluşturulanı genişletin ve ardından SAPECC ad alanını genişletin. Bu, BAPI_USER_CHANGE program tarafından kullanılan veri yapılarını başlatır.
Veri Akışı Adı | Değişken Türü | Kapsam | Varsayılan |
---|---|---|---|
userName | String | Sequence | |
bapiret2Table | SAPECC. TABLE_OF_BAPIRET2 | Sequence | new TABLE_OF_BAPIRET2() |
addressX | SAPECC. BAPIADDR3X | Sequence | new BAPIADDR3X() |
adres | SAPECC. BAPIADDR3 | Sequence | new BAPIADDR3() |
companyX | SAPECC. BAPIUSCOMX | Sequence | new BAPIUSCOMX() |
company | SAPECC. BAPIUSCOMP | Sequence | new BAPIUSCOMP() |
defaultsX | SAPECC. BAPIDEFAX | Sequence | new BAPIDEFAX() |
varsayılan değerler | SAPECC. BAPIDEFAUL | Sequence | new BAPIDEFAUL() |
logOnDataX | SAPECC. BAPILOGONX | Sequence | new BAPILOGONX() |
logOnData | SAPECC. BAPILOGOND | Sequence | new BAPILOGOND() |
Dışarı Aktarma Değiştirme iş akışınız şöyle görünür:
- userName özelliğini sabit bir kimlik, bir yer işareti olarak tanımladığımız için, dışarı aktarma nesnemizin yer işaretleri koleksiyonundan userName değerini ayıklamamız gerekir. ForEachWithBodyFactory etkinliğini Araç Kutusu'ndan Sıra etkinliğinize sürükleyip bırakın. Öğe değişkeni adını tutturucuyla değiştirin, özelliklere geçin ve TypeArgument değerini
Microsoft.MetadirectoryServices.AnchorAttribute
seçin. Değer alanı türüne yazınobjectToExport.AnchorAttributes
.
- UserName tutturucusunun dize değerini ayıklamak için, ForEach etkinliğinin içinde Switch etkinliğini sürükleyip bırakın. Açılan pencerede bir anahtarın türünü seçin
Microsoft.IdentityManagement.MA.WebServices.Activities.Extensions.AnchorAttributeNameWrapper
. şu ifade değerini girin: YeniAnchorAttributeNameWrapper(anchor.Name)
. Switch etkinliğinin Yeni servis talebi alanı ekle'ye tıklayın. UserName değerini Büyük/Küçük Harf Değeri olarak yazın. Assign etkinliğini userName servis talebi gövdesine sürükleyip bırakın ve userName değişkenine atayınanchor.Value.ToString()
. Dışarı Aktarma Değiştirme iş akışınız şöyle görünür:
- Dışarı aktarılan nesne bağlantısı özelliğinden userName değerini ayıkladığımıza göre, diğer SAP kullanıcı ayrıntılarını içeren şirket, varsayılanlar, adres, oturum açma verileri gibi diğer yapıları doldurmamız gerekir. Bunu, şemada tanımlanan tüm özniteliklerin koleksiyonunda döngü yaparak yaparız.
- ForEach etkinliğinizi daraltın ve mevcut ForEach etkinliğinden sonra Sıra etkinliğinizin içinde başka bir ForEachWithBothFactory etkinliğini sürükleyip bırakın. Öğe değişkeni adını schemaAttr ile değiştirin, özelliklere geçin ve TypeArgument değerini
Microsoft.MetadirectoryServices.SchemaAttribute
seçin. Değer alanı türüne yazınschemaType.Attributes
.
- Sequence etkinliğini Sürükleyip ForEach etkinliğinizin gövdesine bırakın. Sol altta Değişkenler düğmesini bulun ve bu Dizi içinde tanımlanan değişkenlerin listesini genişletmek için bu düğmeye tıklayın. Şu değişkeni ekleyin: Dize türünün xValue değeri. Etkinlik ata'yı Sürükleyip Sıra etkinliğinize bırakın. xValue değerini şu ifadeyle atayın:
If(objectToExport.AttributeChanges.Contains(schemaAttr.Name), objectToExport.AttributeChanges(schemaAttr.Name).ValueChanges(0).Value.ToString(), String.Empty)
Bu öznitelik için dışarı aktarma için hazırlanan değişiklikleri ayıklar veya boş bir dizeyle başlatır. Dışarı Aktarma Değiştirme iş akışınız şöyle görünür:
- Etkinlik ata'nın ardından Switch etkinliğini sürükleyip bırakın. Açılan menüden Tamam'ı seçin
Microsoft.IdentityManagement.MA.WebServices.Activities.Extensions.AttributeNameWrapper
ve tıklayın. Şu ifadeyi girin: YeniAttributeNameWrapper(schemaAttr.Name)
. Switch etkinliğinizin sağ üst köşesinde şemada tanımlanan ve hiçbir özelliğe atanmayan işlenmeyen öznitelikler hakkında bir uyarı simgesi görürsünüz. Switch etkinliğinin yeni servis talebi alanı ekle'ye tıklayın ve şehrin servis talebi değerini yazın. Sıralı etkinliği bu servis talebinin gövdesine sürükleyip bırakın. Assign etkinliğini sürükleyip bu servis talebinin gövdesine bırakın. addressX.city adresine "X" değeri atayın. Bu servis talebinin gövdesine başka bir Assign etkinliği sürükleyip bırakın. address.city adresine xValue atayın. Dışarı Aktarma Değiştirme iş akışınız şöyle görünür:
10.Diğer eksik servis taleplerini ve atamaları ekleyin. Bu eşleme tablosunu kılavuz olarak kullanın:
Büyük/küçük harf durumu | Atama |
---|---|
şehir | addressX.city = "X" address.city = xValue |
company | companyX.company = "X" company.company = xValue |
department | address.departmentX = "X" address.department = xValue |
e-posta | addressX.e_mail = "X" address.e_mail = xValue |
expirationTime | logOnDataX.GLTGB = "X" logOnData.GLTGB = xValue |
ad | 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" adresi. TEL1_Numbr = xValue |
jobTitle | addressX.function = "X" address.function = xValue |
Dışarı Aktarma Değiştirme iş akışınız şöyle görünür:
BAPI_USER_CHANGE programı çağırmadan önce boş olmayan kullanıcı adı olup olmadığını denetlememiz gerekir. Her iki ForEach etkinliğini de daraltın ve eğer etkinliğini ikinci ForEach etkinliğinden sonra sürükleyip bırakın. Aşağıdaki koşulu girin:
String.IsNullOrEmpty(userName ) = False
Kullanıcı adı boş olduğunda işlemin başarısız olduğunu belirtmek isteriz. Etkinliği EĞER etkinliğinizin Else dalı içine sürükleyip bırakın
CreateCSEntryChangeResult
ve hata kodunu seçinExportErrorCustomContinueRun
. Dışarı Aktarma Değiştirme iş akışınız şöyle görünür:Sıra etkinliğini ilk EĞER etkinliğinin boş Then dalı içine sürükleyip bırakın. WebSeviceCall etkinliğini Sıralı etkinliğin içine sürükleyip bırakın. SAPECC hizmet adı, ZSAPCONNECTORWS uç noktası ve BAPI_USER_CHANGE işlemi seçin. ... seçeneğine tıklayın. Web hizmeti çağrısı parametrelerini tanımlamak için bağımsız değişkenler düğmesi aşağıdaki gibi:
Veri Akışı Adı | Yön | Tür | Değer |
---|---|---|---|
ADRES | İçinde | BAPIADDR3 | adres |
ADDRESSX | İçinde | BAPIADDR3X | addressX |
ŞİRKET | İçinde | BAPIUSCOMP | company |
COMPANYX | İçinde | BAPIUSCOMX | company |
VARSAYILAN | İçinde | BAPIDEFAUL | varsayılan değerler |
DEFAULTSX | İçinde | BAPIDEFAX | defaultsX |
LOGONDATA | İçinde | BAPILOGOND | logOnData |
LOGONDATAX | İçinde | BAPILOGONX | logOnDataX |
DÖNMEK | Gelen/Giden | TABLE_OF_BAPIRET2 | bapiret2Table |
KULLANICI ADI | İçinde | String | userName |
- Tamam'a tıklayın. Uyarı işareti kaybolur. Dışarı Aktarma Değiştirme iş akışınız şöyle görünür:
- Değişiklik kullanıcı isteği sonuçlarını işlemek için, Eğer etkinliğini WebServiceCall etkinliğinden sonra Sıra etkinliğinin içine sürükleyip bırakın. Aşağıdaki koşulu girin:
Not IsNothing(bapiret2Table.item) AndAlso bapiret2Table.item.Count(Function(errItem) errItem.TYPE.Equals("E") = True) <> 0
- Hata almadığımız takdirde, dışarı aktarma işleminin başarıyla tamamlandığını varsayarız ve Başarılı durumuyla oluşturarak
CSEntryChangeResult
bu nesnenin başarılı dışarı aktarılmasını belirtmek isteriz. Etkinliği IF etkinliğinizin Else dalı içine sürükleyip bırakınCreateCSEntryChangeResult
ve Başarılı hata kodu'nu seçin. - Eğer etkinliğinizin Then dalı içine Sıralı etkinliği sürükleyip bırakın. LogText değeri
string.Join("\n",bapiret2Table.item.Where(Function(retItem) retItem.TYPE.Equals("E")).Select(Function(r) r.MESSAGE))
ve Error etiketiyle Log etkinliği ekleyin. Hata koduyla Günlük etkinliğindenExportErrorCustomContinueRun
sonra etkinlik ekleyinCreateCSEntryChangeResult
. Dışarı Aktarma Değiştirme iş akışınız şöyle görünür:
Dışarı Aktarma Değiştirme iş akışının tanımını tamamladınız.
Sonraki adım, bu şablonu kullanarak ECMA2Host Web hizmeti bağlayıcısını yapılandırmaktır.