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 referansları desteklemediğinden, Yerel Etkinlik Grupları, Roller ve Profiller gibi diğer nesne türleri bu kılavuzda ele alınmamaktadır. 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 | |
şirket | Dize | |
bölüm | Dize | |
e-posta | Dize | |
son kullanma zamanı | Dize | |
firstName | Dize | |
lastName | string | |
ikinci ad | Dize | |
telefon numarası | Dize | |
iş unvanı | Dize | |
userName | Dize | kontrol edildi |
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. Standart SAP BAPI'leri kullanıldığında, yinelenenler dışarı aktarma iş akışı tarafından işlenmediği takdirde bu, hatalara veya yinelere 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 Aktarımlar uygulamanız gerekiyorsa, BAPI'lerin listesi için SAP yöneticinize başvurun ve bunların birer SOAP web hizmeti olarak yayımlanmalarını talep edin. 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ıralama etkinliğini 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, ardından oluşturulan bölümünü genişletin ve SAPECC ad alanını genişletin.
Adı | Değişken Türü | Kapsam | Varsayılan |
---|---|---|---|
seçimAralığıTablosu | SAPECC. TABLE_OF_BAPIUSSRGE | Sekans | yeni TABLE_OF_BAPIUSSRGE ile {.item = new BAPIUSSRGE(){new BAPIUSSRGE}} |
getListRetTable | SAPECC. TABLE_OF_BAPIRET2 | Dizi | yeni TABLE_OF_BAPIRET2 |
sayfa boyutu | Int32 | Sıra | 200 |
returnedSize | Int32 | Dizi | |
kullanıcılarTablosu | SAPECC. TABLE_OF_BAPIUSNAME | Dizi | 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
- döngü:
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'ndan 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 | Sayfa Boyutu |
MAX_ROWSSpecified | İçinde | Boolean | Doğru |
DÖNÜŞ | Gelen/Giden | TABLE_OF_BAPIRET2 | getListRetTable |
Seçim_EXP | Gelen/Giden | TABLE_OF_BAPIUSSEXP | |
SEÇİM_ARALIĞI | Gelen/Giden | TABLE_OF_BAPIUSSRGE | seçiliAralıkTablosu |
KULLANICI LİSTESİ | Gelen/Giden | TABLE_OF_BAPIUSNAME | kullanıcıTablosu |
KULLANICI_ADI | İçinde | Dize | |
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 bir hata fırlatmak için Araç Kutusu'ndan Throw etkinliğini IF etkinliğinizin 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 TypeArgument olarak SAPECC.BAPIUSNAME'i seçin. 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 |
---|---|---|---|
şirket | SAPECC.BAPIUSCOMP | Dizi | new BAPIUSCOMP() |
adres | SAPECC. BAPIADDR3 | Dizi | new BAPIADDR3() |
varsayılan değerler | SAPECC. BAPIDEFAUL | Dizi | new BAPIDEFAUL() |
logondata | SAPECC.BAPILOGOND | Dizi | new BAPILOGOND() |
getDetailRetTable | SAPECC. TABLE_OF_BAPIRET2 | Dizi | yeni 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ı 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ÖNÜŞ | İçeri/Dışarı | TABLE_OF_BAPIRET2 | getDetailRetTable |
KULLANICI ADI | İçinde | Dize | item.username |
ADRES | Dışarı | BAPIADDR3 | adres |
ŞİRKET | Dışarı | BAPIUSCOMP | şirket |
VARSAYILAN | Dışarıda | BAPIUSDEFAUL | varsayılan değerler |
LOGONDATA | Dışarı | BAPILOGOND | oturumAçmaVerileri |
KULLANICI_ADIYLA | İçinde | String | |
SATIRLAR | Dışarı | Int32 | döndürülenBoyut |
- 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 Sekans etkinliğinin içine Etkinlik günlüğü ekleyin. Özellikler sekmesine geçin ve Düzey özelliğini Yüksek, Etiket özelliğini İzleme olarak değiştirin. LogText özelliğine aşağıdakileri girin: string.Join("\n", getDetailRetTable.item.Select (Function(item) item.MESSAGE ))
- Eylem sıralamasını, EĞER etkinliğinin 'O zaman' 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 aktivitesinden sonra IF aktivitesi ekleyin ve
Not string.IsNullOrEmpty(address.city)
gibi koşullar girerek ve CreateAttributeChange aktivitelerini bu IF aktivitesinin Then dalı içine ekleyerek boş olmayan değerleri kontrol edin.
Ö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 |
bölüm | adres.bölüm |
şirket | şirket.şirket |
e-posta | adres.e_posta |
isim | address.adİlk |
soyadı | adres.soyad |
ikinci ad | address.ikinciAd |
iş unvanı | adres.fonksiyon |
son kullanma zamanı | logonData.GLTGB |
telefon numarası | adres. TEL1_NUMBR |
- Son olarak, son CreateAttributeChange etkinliğinden sonra SetImportStatusCode etkinliğini ekleyin. Then dallında ErrorCode değerini Başarı 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 içerisindeki Sıra etkinliğini daraltın:
- Kullanıcıların sonraki sayfasını almak için
selRangeTable.item(0).LOW
özelliğini güncelleyin. IF etkinliğini DoWhile içindeki Sıra Etkinliği'ne 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 veselRangeTable.item(0).LOW
değeriniusersTable.item(returnedSize-1).username
olarak ayarlayın.
Tam İçeri Aktarma iş akışının tanımını tamamladınız.
İhracat İş 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öz At"a tıklayın, ardından oluşturulan kısmını genişletip 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 | Dizi | new BAPIADDR3() |
userName | String | Sıra | |
şifre | SAPECC.BAPIPWD | Dizi | new BAPIPWD() |
şirket | SAPECC.BAPIUSCOMP | Dizi | new BAPIUSCOMP() |
varsayılan değerler | SAPECC. BAPIDEFAUL | Dizi | new BAPIDEFAUL() |
logOnData | SAPECC.BAPILOGOND | Dizi | new BAPILOGOND() |
bapiret2Table | SAPECC. TABLE_OF_BAPIRET2 | Dizi | yeni 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.
item değişken adını anchor ile değiştirin, özelliklere geçin ve
Microsoft.MetadirectoryServices.AnchorAttribute
TypeArgument değerini seçin. Değer alanınaobjectToExport.AnchorAttributes
yazın.
- UserName tutturucusunun dize değerini ayıklamak için, Switch etkinliğini ForEach etkinliğinin içine sürükleyip bırakın. Açılan pencerede anahtarın
Microsoft.IdentityManagement.MA.WebServices.Activities.Extensions.AnchorAttributeNameWrapper
türünü seçin. İfade değerini girin: New AnchorAttributeNameWrapper(anchor.Ad). - Switch etkinliğindeki "Yeni durumu ekle" alanını seçin. "userName'i Durum Değeri olarak girin." Atama etkinliğini userName vaka gövdesine sürükleyip bırakın ve anchor.Value.ToString() değerini userName değişkenine atayın.
- 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, özellik değişiklikleri koleksiyonunu sırayla gözden geçirerek 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, ForEach etkinliğinizin gövdesine 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: 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 bölümünde şehir olarak bir vaka değeri yazın.
- Assign etkinliğini bu servis talebinin gövdesine sürükleyip bırakın.
attributeChange.ValueChanges(0).Value.ToString()
adresini address.city olarak atayın.
- Diğer eksik vakaları ve atamaları ekleyin. Bu eşleme tablosunu kılavuz olarak kullanın:
Büyük/küçük harf durumu | Görevlendirme |
---|---|
şehir | address.city = attributeChange.ValueChanges(0)Value.ToString() |
şirket | company.company = attributeChange.ValueChanges(0)Value.ToString() |
bölüm | address.department = attributeChange.ValueChanges(0)Value.ToString() |
e-posta | address.e_mail = attributeChange.ValueChanges(0)Value.ToString() |
sona erme zamanı | logOnData.GLTGB = attributeChange.ValueChanges(0)Value.ToString() |
isim | address.firstname = attributeChange.ValueChanges(0)Value.ToString() |
soyadı | address.lastname = attributeChange.ValueChanges(0)Value.ToString() |
ikinci ad | address.middlename = attributeChange.ValueChanges(0)Value.ToString() |
telefon numarası | address.TEL1_Numbr = attributeChange.ValueChanges(0)Value.ToString() |
iş unvanı | address.function = attributeChange.ValueChanges(0)Value.ToString() |
dışa_aktar_şifre | 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 EĞER etkinliğini Sıra etkinliğine, ikinci ForEach etkinliğinden sonra, kullanıcı özelliklerini doğrulamak üzere, kullanıcı oluşturma isteğini göndermeden önce 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)
- IF işleminin Else dalında, eksik olan şeylere bağlı olarak farklı hatalar atmak istediğimiz için bir IF işlemi daha ekleyin. Koşul değerini girin: String.IsNullOrEmpty(userName). İkinci EĞER etkinliğinin her iki dalına
CreateCSEntryChangeResult
Sürükleyip Bırakma etkinliklerini sürükleyin ve bırakın veExportErrorMissingAnchorComponent
veExportErrorMissingProvisioningAttribute
hata kodlarını 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 gibi tanımlamak için Argümanlar düğmesini seçin:
Adı | Yön | Tip | Değer |
---|---|---|---|
ADRES | İçinde | BAPIADDR3 | adres |
ŞİRKET | İçinde | BAPIUSCOMP | şirket |
VARSAYILAN | İçinde | BAPIDEFAUL | varsayılan değerler |
LOGONDATA | İçinde | BAPILOGOND | logOnData |
ŞİFRE | İçinde | BAPIPWD | şifre |
GERİ DÖN | Gelen-Giden | TABLE_OF_BAPIRET2 | bapiret2Table |
KENDİ_KAYIT | İç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, WebServiceCall etkinliğinden sonra Dizi etkinliği içine IF etkinliğini 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
CreateAttrubuteChange
aktiviteyiCreateCSEntryChangeResult
etkinliğin içine sürükleyip bırakın ve kullanıcı adı ekle'yi seçin. Ardından,CreateValueChange
etkinliğiniCreateAttributeChange
etkinliğinin içine sürükleyip bırakın 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 akışının son adımı dışarı aktarma hatalarını işlemek ve kayıt altına almaktır. Dizi etkinliğini, EĞER etkinliğinizin boş Then dalı içine sürükleyip bırakın.
- Kayıt 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 kayıt düzeyini ve İzleme etiketi ayarını koruyun. Ayrıntılı izleme etkinleştirildiğinde, bu, bir hata iletisini ConnectorsLog'a veya ECMA2Host olay günlüğüne kaydeder. - Günlük etkinliğinden sonra Sıralı etkinliğin içine 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
.
Dışa Aktarma Ekleme iş akışı 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ışa Aktar -> Sil iş akışına gidin ve sağ taraftaki Araç Kutusu'ndan Sıralama aktivitesini iş akışı tasarım alanına 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, ardından generated'i genişletip 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 | Sıra | |
bapiret2Table | SAPECC. TABLE_OF_BAPIRET2 | Sekans | 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.
Item değişken adını ankor ile değiştirin, özelliklere geçin ve
Microsoft.MetadirectoryServices.AnchorAttribute
tür bağımsız değişkenini 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 türü seçin
Microsoft.IdentityManagement.MA.WebServices.Activities.Extensions.AnchorAttributeNameWrapper
. şu ifade değerini girin: YeniAnchorAttributeNameWrapper(anchor.Name)
. Switch etkinliğinin Yeni durum ekleme alanını seçin. KullanıcıAdını Büyük/Küçük Harf Duyarlılığı olarak yazın. Assign etkinliğini userName vaka gövdesine sürükleyip bırakın ve userName değişkenineanchor.Value.ToString()
atayın. - 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ı parametrelerini aşağıdaki gibi tanımlamak için Bağımsız Değişkenler düğmesini seçin.
Adı | Yön | Tip | Değer |
---|---|---|---|
GERİ DÖNÜŞ | Giriş/Çıkış | TABLOSU_BAPIRET2 | bapiret2Table |
KULLANICI ADI | İçinde | String | userName |
- Tamam'ı seçin. Uyarı işareti kaybolur.
- Kullanıcı silme isteği sonuçlarını işlemek için, IF etkinliğini WebServiceCall etkinliğinden sonraki Sıra etkinliği içine 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.CreateCSEntryChangeResult
etkinliğini IF etkinliğinizin Else dalına sürükleyip bırakın ve Başarı hata kodunu seçin.
- Dışarı Aktarma Silme iş akışının son adımı, dışarı aktarma hatalarını ele almak 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 kaydı etkinliğini Sıra etkinliğinin iç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 hata ayıklama düzeyini ve İzleme etiketini koruyun. Ayrıntılı izleme etkinleştirildiğinde, bir hata mesajı ConnectorsLog veya ECMA2Host olay günlüğüne kaydedilir. - Log etkinliğinden sonra, Sıralı etkinliğin içine 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. ExportErrorSyntaxViolation hata kodunu seçin.
- Yeni vaka ekle alanını seçin ve 124 vaka değeri yazın.
CreateCSEntryChangeResult
etkinliğini bu durumun gövdesine sürükleyip bırakın. 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ışa Aktarma Değiştirme işlem akışı, Dışa Aktarma Ekleme işlem akışı ile 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 seçeneğine gidin ve sağ taraftaki Araç Kutusu'ndan Sıra etkinliğini 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’a tıklayın ve generated'i genişletip ardından 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 | Dizi | |
bapiret2Table | SAPECC. TABLE_OF_BAPIRET2 | Sıra | yeni TABLE_OF_BAPIRET2() |
adresX | SAPECC. BAPIADDR3X | Sıra | new BAPIADDR3X() |
adres | SAPECC. BAPIADDR3 | Sıra | new BAPIADDR3() |
companyX | SAPECC. BAPIUSCOMX | Dizi | new BAPIUSCOMX() |
şirket | SAPECC.BAPIUSCOMP | Dizi | new BAPIUSCOMP() |
defaultsX | SAPECC. BAPIDEFAX | Dizi | new BAPIDEFAX() |
varsayılan değerler | SAPECC. BAPIDEFAUL | Dizi | new BAPIDEFAUL() |
logOnDataX | SAPECC.BAPILOGONX | Dizi | new BAPILOGONX() |
logOnData | SAPECC.BAPILOGOND | Dizi | 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.
Item değişken adını Anchor ile değiştirin, özelliklere geçin ve
Microsoft.MetadirectoryServices.AnchorAttribute
'nın TypeArgument değerini seçin. Değer alanınaobjectToExport.AnchorAttributes
yazın.
- UserName tutturucusunun dize değerini ayıklamak için Switch etkinliğini, ForEach etkinliğinin içine sürükleyip bırakın. Açılır pencerede anahtar türünü
Microsoft.IdentityManagement.MA.WebServices.Activities.Extensions.AnchorAttributeNameWrapper
seçin. şu ifade değerini girin: YeniAnchorAttributeNameWrapper(anchor.Name)
. Switch etkinliğinde yeni durum ekle alanını seçin. UserName değerini Case Value olarak yazın. Atama aktivitesini userName kutusu gövdesine sürükleyip bırakın veanchor.Value.ToString()
'yi userName değişkenine atayın. Dışa Aktarma Değiştirme iş akışınız şöyle görünmektedir:
- 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ğinin içine 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 ForEach etkinliğinizin gövdesine sürükleyin ve 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. Ata etkinliğini 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ışa Aktarma Değiştirme iş akışınız şu şekilde görünür:
- Atama etkinliğinin 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 vaka ekle alanı'nı seçin ve şehir bir vaka değeri yazın. Sequence etkinliğini bu durumun gövdesine sürükleyip bırakın. Assign etkinliğini sürükleyin ve bu durumun gövdesine bırakın. addressX.city adresine "X" değeri atayın. Bu durumun 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 durumları ve atamaları ekleyin. Bu eşleme tablosunu kılavuz olarak kullanın:
Büyük/küçük harf durumu | Görev |
---|---|
şehir | addressX.city = "X" address.city = xValue |
şirket | companyX.company = "X" company.company = xValue |
bölüm | address.departmentX = "X" address.department = xValue |
e-posta | addressX.e_mail = "X" address.e_mail = xValue |
son kullanma süresi | logOnDataX.GLTGB = "X" logOnData.GLTGB = xValue |
isim | addressX.firstname = "X" address.firstname = xValue |
soyadı | addressX.lastname = "X" address.lastname = xValue |
orta ad | addressX.middlename = "X" address.middlename = xValue |
telefon numarası | addressX.TEL1_Numbr = "X" adresi. TEL1_Numbr = xValue |
iş unvanı | addressX.function = "X" address.function = xValue |
Dışa Aktarım ve Değiştirme iş akışınız şöyle görünüyor:
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 IF 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.
CreateCSEntryChangeResult
etkinliğini EĞER etkinliğinizin Else dalına sürükleyip bırakın veExportErrorCustomContinueRun
hata kodunu seçin. Dışarı Aktarma Değiştirme iş akışınız şöyle görünür:Dizi etkinliğini ilk IF 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. Web hizmeti çağrısı parametrelerini aşağıdaki gibi tanımlamak için ... Açıklama Düğmesine seçin:
Adı | Yön | Tip | Değer |
---|---|---|---|
ADRES | İçinde | BAPIADDR3 | adres |
ADDRESSX | İçinde | BAPIADDR3X | addressX |
ŞİRKET | İçinde | BAPIUSCOMP | şirket |
COMPANYX | İçinde | BAPIUSCOMX | şirket |
VARSAYILAN | İçinde | BAPIDEFAUL | varsayılan değerler |
DEFAULTSX | İçinde | BAPIDEFAX | defaultsX |
LOGONDATA | İçinde | BAPILOGOND | logOnData |
LOGONDATAX | İçinde | BAPILOGONX | logOnDataX |
Geri Dönüş | Giriş/Çıkış | TABLE_OF_BAPIRET2 | bapiret2Table |
KULLANICI ADI | İçinde | Dize | userName |
- Tamam'ı seçin. Uyarı işareti kaybolur. Dışarı Aktarma Değiştirme iş akışınız şöyle görünür:
- Kullanıcı değişiklik isteği sonuçlarını işlemek için, IF etkinliğini WebServiceCall etkinliğinden sonra Dizi etkinliğinin içine sürükleyin ve 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. IF etkinliğinizin Else dalınaCreateCSEntryChangeResult
etkinliğini sürükleyip bırakın ve Başarı durum kodunu seçin. - IF faaliyetinizin o zaman dalına Sıra etkinliğini 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 Hata etiketi kullanarak Log etkinliği ekleyin. Günlük etkinliğindenCreateCSEntryChangeResult
sonraExportErrorCustomContinueRun
hata koduyla bir etkinlik ekleyin. "Export Replace" iş akışınız şöyle görünür:
İhracat Değiştir 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.