SAP Fiori’de Tarih ve Zaman Formatlarının Çok Dillilikle Uyumu ve Backend’e Doğru Aktarımı
SAP Fiori uygulamaları, SAP’nin modern kullanıcı arayüzü stratejisinin merkezinde yer alır ve kullanıcı deneyimini kişiselleştirme odaklı tasarlanmıştır. Bu bağlamda, tarih ve zaman bilgileri kullanıcıların dil (language) ve bölge (locale) ayarlarına göre otomatik olarak biçimlenmeli ve aynı zamanda bu verilerin backend’e tutarlı ve doğru bir formatta (genellikle ISO 8601) iletilmesi sağlanmalıdır.
Ancak uygulamada sık karşılaşılan sorunlardan biri, örneğin bir Türk kullanıcının seçtiği "25.04.2025"
tarihinin, arayüzde doğru gözükmesine rağmen backend’e "04/25/2025"
gibi yanlış bir biçimde iletilmesiyle ortaya çıkar. Bu, hem iş süreçlerini sekteye uğratabilir hem de veri tutarsızlıklarına yol açabilir.
Bu yazımda, UI5 bileşenlerinde tarih formatlama stratejilerinden başlayarak OData modellemesindeki veri dönüşümüne, ve son olarak ABAP/RAP tarafında tarih verisinin nasıl işlendiğine kadar uçtan uca bir yaklaşım sunacağım.
Giriş: Problem Tanımı
Kapsam:
- Fiori uygulamalarında tarih/zaman gösterimi kullanıcıya özel olmalı
- Backend sistemle tarih/zaman uyumsuzluğu iş hatalarına sebep olabilir
Hedef:
- Kullanıcıya anlamlı gösterim
- Backend’e hatasız veri transferi
- PP süreçlerinde örnekle anlatım
Gerçek Senaryo: PP Üretim Emri Planlama Ekranı
Örnek:
Kullanıcı bir üretim emrini 25.04.2025 olarak planladı (TR formatı), ama backend’e 04/25/2025 (US formatı) olarak giderse üretim tarihi yanlış hesaplanır.
Soru: Kullanıcı TR ayarında çalışıyorsa neden sistem bu hatayı yapar?
Cevap: UI5 veya Launchpad ayarları dikkate alınmadıysa veya tarih formatı sabit tanımlandıysa bu tür uyuşmazlıklar olur.
UI5 Tarafında Formatlama: Doğru Kullanım
Otomatik formatlamayı kullan, elle tarih biçimi yazma.
// Kullanıcının ayarlarına göre otomatik tarih biçimi
var oDateFormat = sap.ui.core.format.DateFormat.getDateInstance();
// Belirli bir formata zorlama (kötü pratik!)
var oFixedFormat = sap.ui.core.format.DateFormat.getDateInstance({ pattern: "MM/dd/yyyy" });
DatePicker Kullanımı: Doğru vs Yanlış
Doğru:
<DatePicker value="{path: 'StartDate', type: 'sap.ui.model.type.Date', formatOptions: { style: 'medium' }}" />
Yanlış:
<Input value="{StartDate}" /> <! - formatlama yok, hata riski -->
- sap.ui.model.type.Date türü kullanmak zorundayız, yoksa veri OData’ya doğru formatta gitmez.
Fiori Launchpad Ayarları Nasıl Etkiler?
Örnek:
Kullanıcının profilinde:
- Language: EN
- Region: TR
Bu durumda gösterim: 25.04.2025
Ama region US olsaydı: 04/25/2025
Ayar Yolu: User > Settings > Language & Region
OData Modeli ve ISO Format
OData servisleri her zaman Edm.DateTime veya Edm.Date türünde ISO format bekler.
{
"PlannedStartDate": "2025-04-25T00:00:00"
}
- UI5 DatePicker ISO’ya çevirir, ama sen formatOptions vermezsen string gibi gider.
Backend Tarafı: RAP Örneği
define root view entity ZSB_ProductionOrder
as select from zsb_order
{
key order_id,
planned_start_date, // type DATS
planned_end_date // type DATS
}
- RAP otomatik olarak ISO formatı alır ve DATS’e çevirir.
- SEGW kullanıyorsan CONVERSION_EXIT_* kullanman gerekebilir.
Uçtan Uca Akış: TR Formatlı Girdi > Backend
- Kullanıcı: 25.04.2025 (TR ayarı)
- UI5: 2025–04–25T00:00:00 formatına dönüştürür
- OData Modeli: ISO formatlı veriyi gönderir
- ABAP: DATS formatına çevirir → 20250425
Sık Yapılan Hatalar
- Date’i string gibi işlemek
- UI5 içinde sabit format dayatma
- Launchpad ayarlarını dikkate almamak
- OData modelinde yanlış type tanımı

