SAP RFC Fonksiyon İle Odata Servis Örneği
- 1
- 0
- 0
- 0
- 0
- 0
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.
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.
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.
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.
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.
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.
Ö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.