SAP RFC Fonksiyon İle Odata Servis Örneği

fiori

Merhaba bu yazımızda bir SAP RFC fonksiyon ile odata servis nasıl oluşturabileceğimizi göreceğiz. Daha sonrasında ise basit bir fiori ekranında bu servisten veriyi alıp göstereceğiz. İlk olarak Se37 işlem koduna girerek bir RFC fonksiyon oluşturalım. Import, export, changing veya table parametreleri verebiliriz. Bunu isteğinize göre biçimlendirebilirsiniz. Bizim yapacağımız örnekte sadece bir table parametresi olacak. Fonksiyonumuzun rfc olması için processing type kısmını remote-enabled module olarak değiştirmeliyiz.

sap-odata
sap odata
sap odata

Fonksiyonumuzda veri çekme kısmında mara tablosunda çok fazla veri olacağı için sadece 100 veri çektik. Fonksiyonumuzu oluşturduğumuza göre şimdi Segw işlem kodunda yeni bir proje oluşturalım. Rfc fonksiyonumuzu referans göstererek yeni bir entitiy oluşturalım. Fonksiyonumuzda tablo olarak mara tablosunu almıştık fakat biz entity mizde bu kadar fazla alan istemiyoruz. Aşağıdaki alanları seçsek bizim için yeterli olacaktır. Daha sonra bir key alan seçmemiz gerekiyor. Matnr alanını seçebiliriz.

sap odata
sap odata
sap odata
sap odata

Entity‘mizi de oluşturduktan sonra rfc fonksiyonumuzla mapping işlemlerini yapabiliriz. Service Implementation kısmında entityset imize sağ tıklayalım. Sırasıyla aşağıdaki adımları uygulayalım.

sap odata
sap odata
sap odata

Biz entity mizi oluştururken aynı rfc fonksiyonu kullandığımız için Propose Mapping butonu ile otomatik mapping yapabiliriz. Bazı uyuşmazlık durumlarında ise el ile de mapping yapabilmekteyiz. Bu aşamadan sonra kaydedip projemizi generate edeceğiz.

sap odata
sap odata

Projemizi generate ettiğimizde bizim için servisimiz otamatik oluşturuluyor. Fakat biz servisimizi /iwfnd/maint_service işlem koduna giderek ekleyip etkinleştirmemiz gerekiyor.

sap oadata
sap oadata
sap oadata
sap odata

Aslında bu aşamaya kadar her şeyi hatasız yaptıysak odata servisimiz başarılı bir şekilde oluşturulmuştur. Yine de bir fiori ekranında tablo olarak gösterelim. WEbide ekranımızı açarak yeni bir SapUi5 projesi oluşturalım. Servisimizi ekleyelim.

sap odata
sap odata

Örnek olarak aşağıdaki kodları kullanabiliriz.

sap.ui.define([ "sap/ui/core/mvc/Controller", "sap/ui/model/json/JSONModel" ], function (Controller, JSONModel) { "use strict"; var dialogBusy = new sap.m.BusyDialog(); dialogBusy.setText("İşlem sürüyor, lütfen bekleyiniz.."); return Controller.extend("ZMOP_ODATA_TEST1.ZMOP_ODATA_TEST1.controller.Main", { onInit: function () { var oModelData = this.getOwnerComponent().getModel(); var jsonMainModel = new JSONModel(); jsonMainModel.setSizeLimit(10000); this.getView().setModel(jsonMainModel, "mainView"); dialogBusy.open(); oModelData.read("/EtMaraSet", { success: function (resp) { jsonMainModel.setProperty("/list", resp.results); jsonMainModel.refresh(); dialogBusy.close(); }, error: function (resp) { dialogBusy.close(); } }); } }); });

<mvc:View xmlns:core="sap.ui.core" xmlns:mvc="sap.ui.core.mvc" xmlns="sap.m" controllerName="ZMOP_ODATA_TEST1.ZMOP_ODATA_TEST1.controller.Main" xmlns:html="http://www.w3.org/1999/xhtml"> <App> <pages> <Page title="Teknopati"> <content> <Table contextualWidth="auto" keyboardMode="Navigation" class="sapUiLargeMarginEnd tableRowColor" id="kontrolPartisiListesi" items="{path:'mainView>/list'}" noDataText=" Listelenecek kayıt bulunamamıştır"> <headerToolbar> <Toolbar> <Title text="Teknopati.net RFC ile odata" level="H2"/> <ToolbarSpacer/> </Toolbar> </headerToolbar> <items> <ColumnListItem press="methodMainTableSelected" id="id_list_item1" type="Navigation"> <cells> <Text text="{mainView>Matnr}"/> <Text text="{mainView>Ersda}"/> <Text text="{mainView>Ernam}"/> <Text text="{mainView>Matkl}"/> <Text text="{mainView>Meins}"/> </cells> </ColumnListItem> </items> <!--// Tablo Başlıkları - Başlangıç --> <columns > <Column hAlign="Center"> <header> <Label text="Malzeme" design="Bold"/> </header> </Column> <Column hAlign="Center"> <header> <Label text="Yaratma tarihi" design="Bold"/> </header> </Column> <Column hAlign="Center"> <header> <Label text="Yaratan" design="Bold"/> </header> </Column> <Column hAlign="Center"> <header> <Label text="Mal grubu" design="Bold"/> </header> </Column> <Column hAlign="Center"> <header> <Label text="Temel ölçü brm." design="Bold"/> </header> </Column> </columns> <!--// Tablo Başlıkları - Bitiş --> </Table> </content> </Page> </pages> </App> </mvc:View>

Son olarak görsel aşağıdaki görseldeki gibi olacaktır. Tarih alanını isterseniz formatter ile istediğiniz formata dönüştürebilirsiniz.

webide-table
E-bültene Abone Ol Merak etmeyin. Spam yapmayacağız.

Yazar

Merhaba, Kocaeli Üniversitesi Bilişim Sistemleri Mühendisliği Bölümü'nden 2019 yılında mezun oldum. Daha sonra Sap sektöründe çalışma hayatına başladım. Burada elimden geldiğince tecrübelerimi sizinle paylaşacağım.

İlgili Yazılar

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Hızlı yorum için giriş yapın.

Başka Yazı Yok

Kayıt Ol

Zaten üye misiniz? Giriş Yap

Giriş Yap

Henüz üyeliğiniz yok mu? Kayıt Ol