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. Varsayılır ki Geliştirici önceden oluşturulmuş bir tanıtım hesabı, bu makalede belirtilen BAPI'lere izin veren bir profil RFC_ALL ile kullanılmaktadı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 Yapılandırma Aracı" klasöründen Web Hizmeti Yapılandırma aracını başlatın wsconfigTool.exe
- File-New menüsünden Yeni SOAP Projesi Oluştur'u seçin
- SOAP Projesi'ni seçin 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'yi seçin.
- SAP ECC uç noktasına bağlanmak için kimlik bilgilerini sağlayın. İleri'yi seçin.
- Uç noktalar ve işlemler sayfasında BAPI'lerin görüntülendiğinden emin olun ve Son'u seçin
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ünü eklemeyi seçin. Tamam'ı seçin.
- Nesne Türleri sekmesini genişletin ve Kullanıcı türü tanımını seçin.
- Ş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.
tr-TR: İçeri aktarma iş akışı oluşturmazsanız, bağlayıcınız yalnızca dışa aktarma modunda çalışır ve ECMA2Host'un mevcut kullanıcılar için bile her zaman Kullanıcı oluşturma işlemlerini başlatmasına 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ğıda açıklandığı gibi aşağıdaki 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üğmeyi seçin.
- 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'ı seçin ve oluşturulan 'i genişletip sonra'i genişletin, ardından SAPECC ad alanını genişletin.
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 aşağıdaki 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'i seçin 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'ndaki Sıra etkinliğini, DoWhile etkinliğinizin içine 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.
- Web hizmeti çağrısı parametrelerini aşağıdaki gibi tanımlamak için Bağımsız Değişkenler düğmesine tıklayın:
Adı | Yön | Tip | 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'ı seçin. 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. Başka bir deyişle, 1.000 kullanıcı ve sayfa boyutu 200 olan bir manzara için Web Hizmeti bağlayıcısı, kullanıcıların listesini almak için 5 çağrı ve kullanıcıların ayrıntılarını almak için 1.000 ayrı çağrı yapar. Performansı geliştirmek için SAP ekibinizden tüm kullanımları özellikleriyle birlikte listeleyen özel bir BAPI programı geliştirmesini isteyin. Bu, 1.000 ayrı çağrı yapma ve SOAP WS uç noktası üzerinden bu BAPI işlevini kullanıma sunma gereksinimini ortadan kaldırıyor.
- Araç Kutusu'ndan, WebServiceCall etkinliğinden sonra DoWhile etkinliğinizin içine IF 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
- İçeri aktarma başarısız olduğunda hata vermek için Araç Kutusu'ndan Throw aktivitesini IF aktivitenizin Else dalına 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ç: ... düğmesini seçin ve values özelliği için şu ifadeyi yazın:
if(usersTable.item,Enumerable.Empty(of BAPIUSNAME)())
- Araç Kutusu'ndan, Dizi etkinliğini ForEach etkinliğinizin içine sürükleyip bırakın. Bu Sıralı etkinlik penceresinin etkin olması için Değişkenler düğmesini seçin ve şu değişkenleri tanımlayın:
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 & öğe 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. Web hizmeti çağrısı için parametreleri tanımlamak üzere Bağımsız Değişkenler düğmesine tıklayın:
Adı | Yön | Tip | 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'ı seçin. 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ıralı 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 olarakselRangeTable.item(0).LOW
ayarlayınusersTable.item(returnedSize-1).username
.
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üğmeyi seçin.
- 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'ı seçin ve oluşturulan genişletin ve sapECC ad alanını genişletin. Bu, BAPI_USER_CREATE1 program tarafından kullanılan veri yapılarını başlatır.
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 gibi, 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ınaobjectToExport.AnchorAttributes
yazın.
- 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ü
Microsoft.IdentityManagement.MA.WebServices.Activities.Extensions.AnchorAttributeNameWrapper
seçin. İfade değerini girin: New AnchorAttributeNameWrapper(anchor. Ad). - Switch etkinliğinin Yeni durum ekleme alanını seçin. 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ınaobjectToExport.AttributeChanges
yazın.
- Switch etkinliğini Sürükleyip ForEach etkinliğinizin gövdesine bırakın.
- Açılan menüden
Microsoft.IdentityManagement.MA.WebServices.Activities.Extensions.AttributeNameWrapper
'ı ve ardından Tamam'ı seçin. - Ş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ğinde Yeni vaka alanı ekle'yi seçin ve şehirbir vaka değeri 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 şeylere 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 veExportErrorMissingAnchorComponent
hata kodunuExportErrorMissingProvisioningAttribute
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. Web hizmeti çağrısı parametrelerini aşağıdaki şekilde tanımlamak için Bağımsız Değişkenler düğmesine tıklayın.
Adı | Yön | Tip | 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'ı seçin. Uyarı işareti kaybolur.
- Kullanıcı oluşturma isteği sonuçlarını işlemek için, IF etkinliğini WebServiceCall etkinliğinden sonra Sıra etkinliği içine 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
CreateAttrubuteChange
sürükleyip bırakınCreateCSEntryChangeResult
ve UserName ekle'yi seçin. Ardından etkinliğin içineCreateValueChange
sürükleyip bırakınCreateAttributeChange
ve bir web hizmeti çağrısı etkinliği tarafından doldurulan değişken adını girin. Bu kılavuzda, dışa aktarıldığında güncellenmeyen 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 durumu seçin ve CreateCSEntryChangeResult etkinliğini bu durumun gövdesine sürükleyip bırakın. ExportErrorInvalidProvisioningAttributeValue hata kodunu seçin.
- Yeni vaka ekle alanını seçin ve 224 vaka 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ı çağırabilir ve bağlı sistemde silinecek bir hesap adı sağlayabilirsiniz. Bu senaryo için zorunlu olup olmadığını belirlemek için SAP Yöneticinize başvurun. Çoğu zaman SAP ECC hesapları silinmez, ancak geçmiş kayıtları tutmak için süresi dolacak şekilde ayarlanır.
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üğmeyi seçin.
- 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'ı seçin ve oluşturulan genişletin ve sapECC ad alanını genişletin. Bu, BAPI_USER_DELETE program tarafından kullanılan veri yapılarını başlatır.
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 gibi, 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ınaobjectToExport.AnchorAttributes
yazın.
- 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ü
Microsoft.IdentityManagement.MA.WebServices.Activities.Extensions.AnchorAttributeNameWrapper
seçin. şu ifade değerini girin: YeniAnchorAttributeNameWrapper(anchor.Name)
. Switch etkinliğinde Yeni vaka alanını eklemeyi seçin. 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. Web hizmeti çağrısının parametrelerini aşağıdaki gibi tanımlamak için Bağımsız değişkenler düğmesine tıklayın:
Adı | Yön | Tip | Değer |
---|---|---|---|
DÖNMEK | Gelen/Giden | TABLE_OF_BAPIRET2 | bapiret2Table |
KULLANICI ADI | İçinde | String | userName |
- Tamam'ı seçin. 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 vaka'yı seçin ve CreateCSEntryChangeResult etkinliğini bu vakanın gövdesine sürükleyip bırakın. ExportErrorSyntaxViolation hata kodunu seçin.
- Yeni vaka ekle alanını seçin ve 124 vaka 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'deki 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. addressX'in sonundaki X değeri, adresin 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üğmeyi seçin.
- 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' seçeneğine tıklayın, ardından oluşturulan ve'i genişletin ve SAPECC ad alanını genişletin. Bu, BAPI_USER_CHANGE program tarafından kullanılan veri yapılarını başlatır.
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 gibi, 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ınaobjectToExport.AnchorAttributes
yazın.
- 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,
Microsoft.IdentityManagement.MA.WebServices.Activities.Extensions.AnchorAttributeNameWrapper
anahtar türünü seçin. şu ifade değerini girin: YeniAnchorAttributeNameWrapper(anchor.Name)
. Switch etkinliğinde Yeni durum alanını ekle'yi seçin. 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ınaschemaType.Attributes
yazın.
- 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üğmeyi seçin. Ş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ışa aktarılmak üzere 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
Microsoft.IdentityManagement.MA.WebServices.Activities.Extensions.AttributeNameWrapper
'ı ve ardından Tamam'ı seçin. Ş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ğinde "Yeni durum alanı ekle"yi seçin ve "şehir" bir durum değeri 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. Bağımsız Değişkenler düğmesini seçin ve web hizmeti çağrısı parametrelerini aşağıdaki gibi tanımlayın:
Adı | Yön | Tip | 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'ı seçin. 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ğindenCreateCSEntryChangeResult
sonra etkinlik ekleyinExportErrorCustomContinueRun
. 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.