Fiori uygulaması geliştirmek hiç bu kadar kolay olmamıştı

Yes Björn, “@OData.publish: true” works

Bundan yaklaşık 2.5 sene önceydi ilk Fiori uygulamalarının çıktığını öğrendiğimizde büyük bir heyecan içerisindeydik. Hemen bu uygulamalar nasıl geliştirilir diye araştırmaya başladık. SAPUI5 kütüphanesiyle tanışıklığımız bu zamanlara denk gelir. Kolları sıvayıp demo sistemimizi kurduk ve geliştirmelere başladık. Geliştirmelere başladık derken her şey bu kadar kolay olmadı tabii ki. Örnek bulmakta ve takıldığımız konularda ilerlemekte ciddi anlamda zorlandık. Yine de o günün heyecanıyla odata nasıl oluşturulur, Fiori servisleri nasıl aktiflenir, SAPUI5 uygulamaları nasıl geliştirilir öğrendik ve demo uygulamalarımızı hayata geçirdik. Sonrasında da bu tecrübelerimizi müşterilerimize aktardık, başarılı projelere imza attık.

Yine bugünlerde farklı bir heyecan içerisindeyiz. SAP artık bize 3-5 satırlık kodlarla odata servisleri oluşturabileceğimiz ve hazır şablonlarla Fiori uygulamaları geliştirebileceğimiz yapılar sunmaya başladı. Hana Cloud Platform, Sap Web IDE, Cloud Connector, Splash&Build gibi bir çok aracı kullanarak uygulamalar geliştirebiliyor, Hana’nın gücünü kullanan CDS View ve AMDP’ler ile veriye hızlı ve kolay bir şekilde erişebiliyoruz.

Bütün bu teknolojiyi tek bir parçada ve müthiş bir senaryoyla bize aktaran Björn Goerke‘a özellikle teşekkür etmek isterim ve eğer izlemediyseniz aşağıdaki teched keynote’u mutlaka izlemenizi tavsiye ederim.

http://events.sap.com/teched/en/session/26506

Bu şovu canlı canlı izledikten sonra “@OData.publish: true” satırı çalışacak mı cidden çok merak etmiştim. Hana makinemiz geldikten sonra arkadaşlar hemen S4Hana kurulumunu yaptı ve benim de ilk işim bu kod parçacığını denemek oldu. Öncelikle Eclipse’i açıp S4Hana sistemini projelere ekledim. Daha sonra kullanıcı tablosundan kullanıcıları ve bu kullanıcıların sisteme son giriş tarihlerini çekecek şekilde aşağıdaki CDS View’ı yazdım. Ayrıca kullanıcının profillerini getirecek bir ilişki ekledim. Sonrasında fiori uygulamasında kullanacağım search help için languages ilişkisini ekledim. Bunları segw’de yapabilmek için en az 3 entity ve 6’dan fazla binding’e ihtiyacım vardı ama cds view ile 27 satırda herşeyi hallettim. Activate tuşuna bastığımda SAP benim için odata servisini oluşturdu ve Björn’ün dediği gibi “@OData.publish: true” satırı çalışıyordu 🙂

@AbapCatalog.sqlViewName: 'ZV_SERKAN_DDL1'
@AbapCatalog.compiler.compareFilter: true
@AccessControl.authorizationCheck: #CHECK
@EndUserText.label: 'Serkan Test'
@ObjectModel: {
createEnabled,
deleteEnabled,
updateEnabled
}
@OData.publish: true
 
define view Zmobil_Serkan_Ddl1 as select from usr01
left outer join usr02
on usr01.bname = usr02.bname
association [0..*] to ust04 as _profiles
on usr01.bname = _profiles.bname
association [0..*] to t002c as _languages
on usr01.langu = _languages.spras {
key usr01.bname,
usr02.trdat,
usr02.ltime,
@Semantics.language: true
@ObjectModel.foreignKey.association: '_languages'
usr01.langu,
_profiles,
_languages
}

Odata hazır hale geldikten sonra hemen daha önceden indirmiş olduğumuz Local Sap Web IDE’yi açtık ve Björn’dan kopya olmasın diye “Smart Template Application” yerine “Sap Fiori Worklist Application” hazır şablonunu seçerek uygulamamızı oluşturduk. Ama sonrasında detay sayfasında küçük bir değişiklik yaparak “SmartForm” kontrolünü ekledik. Bu kontrol bize view,edit,create gibi sayfaları ayrı ayrı tasarlamak yerine hepsini tek bir seferde tek noktada yapmamızı sağlıyor. Ayrıca etiket metinlerini metadata’dan alıyor, search help’leri odata servisinden çekiyor. Bunları manuel olarak yapanlar eminim nasıl bir kolaylık sağladığını çok daha iyi anlıyordur.

Eklediğimiz kod parçacığı da bu kadar 🙂

<smartform:smartform app:defaultcheckboxdisplaybehaviour="OnOff" app:defaultdropdowndisplaybehaviour="idAndDescription" edittogglable="true" id="smartForm" title="{Name}">
<smartform:group label="Kullanıcı">
<smartform:groupelement>
<smartfield:smartfield value="{bname}">
</smartfield:smartfield></smartform:groupelement>
<smartform:groupelement>
<smartfield:smartfield value="{trdat}">
<smartfield:configuration>
<smartfield:configuration controltype="datePicker">
</smartfield:configuration>
</smartfield:configuration></smartfield:smartfield>
</smartform:groupelement>
<smartform:groupelement>
<smartfield:smartfield value="{langu}">
<smartfield:configuration>
<smartfield:configuration controltype="dropDownList" <displaybehaviour="descriptionOnly">
</smartfield:configuration>
</smartfield:configuration></smartfield:smartfield>
</smartform:groupelement>
</smartform:group>
</smartform:smartform>

Ve sonuç olarak Local SAP Web IDE üzerinden uygulamayı çalıştırdığımızda karşımıza çıkan ekran;

sap fiori smart list smart form

sap fiori smart form Gördüğünüz gibi etiket metinleri (label) bildiğimiz se11 data element tanımlarından geldi. Sağ üst köşedeki kalem işaretine basınca otomatik olarak değişiklik moduna geçti. Oturum dili combobox’tan seçilebilir hale gelip combobox cds view içerisinde olan _languages ilişkisindeki t002c tablosundan doldu. Ve en önemlisi bunların hepsi çok basit yöntemlerle oldu.

Serkan Özcan

Orjinal Yazı: https://www.linkedin.com/pulse/fiori-uygulaması-geliştirmek-hiç-bu-kadar-kolay-olmamıştı-özcan