SAP S/4HANA uygulamaları, geleneksel SAP GUI işlemlerinin yerini alan merkezi kullanıcı arayüzü olarak Fiori başlangıç ekranına büyük ölçüde bağımlıdır; bu da SAPUI5 uygulamalarıyla sağlanmaktadır. Bu uygulamalar, genellikle miras RFC (Uzak Fonksiyon Çağrısı) işlev modüllerini saran OData hizmetleri aracılığıyla veri tüketmektedir. Dağıtım mimarisi, çok katmanlı bir yapı içerir: ön yüz BSP (Business Server Pages) uygulaması, OData'yı açığa çıkaran SAP Gateway katmanı, arka uç ABAP yığını ve PFCG (Profil Üreticisi) yetkilendirme profilleri.
Arazi yükseltmesi sırasında (Geliştirme → Kalite Güvencesi → Üretim), tutarsızlıklar genellikle kod hatalarından değil, yapılandırma kaymasından kaynaklanmaktadır. OData hizmetleri, IWBEP bileşeninde meta veriyi yoğun bir şekilde önbelleğe alırken, PFCG rollerinin yeni Yetkilendirme Nesneleri (örneğin S_START veya özel Z* nesneleri) gibi nesneleri yaymak için manuel olarak yeniden oluşturulması gerekir (Profil → Oluştur). Bu soru, bir testçinin n-katmanlı mimariyi gezme yeteneğini ve eksik bir kutunun, ön yüz önbelleği, geçit meta verisi, taşıma sıralaması veya yetkilendirme arabelleği gecikmesi nedeniyle olup olmadığını sistematik olarak ayırt etme yeteneğini test eder.
Ana zorluk, belirti belirsizliğidir: Bir kullanıcı Fiori başlangıç ekranına giriş yaptığında ya gri bir kutu görmekte ya da kutu tamamen eksik olmaktadır ya da ona tıkladığında "Uygulama açılamadı. Lütfen daha sonra tekrar deneyin." mesajını almaktadır. Bu belirtiler şunlardan kaynaklanabilir:
OData Meta Veri Eski: SAPUI5 uygulaması, varlık yapılarını anlamak için $metadata getirir. Eğer Geçit önbelleği (/IWFND/CACHE) taşınmadan sonra eski bir sürümü tutuyorsa, uygulama, arka uçta değişen RFC alanlarına bağlanamayabilir.
PFCG Rol Yayılma Gecikmesi: Taşıma Talebi Rol'ün QAS'a başarıyla taşınmış olmasına rağmen, Kullanıcı Master (USR04) tabloları, bir karşılaştırma çalıştırılana kadar (PFUD) ya da kullanıcı tekrar giriş yapana kadar yeni Profil sürümlerini yansıtmayabilir. Rol, Katalog'u listeleyebilir ama OData hizmeti için özel S_IWSG (İnternet İletişim Çerçevesi) yetkilendirmesi eksik olabilir.
Hedef Eşleştirme Yetim: LPD_CUST (Başlangıç Ekranı Özelleştirme) girişi veya KATALOG ataması, bir Anlam Nesnesi (örneğin, ZPurchaseOrder) ve Eylem (oluştur) ile referans alabilir, ancak eğer taşıma Grup atamasını veya manifest.json içindeki SAPUI5 bileşen kimliği BSP uygulama adıyla eşleşmiyorsa, kutu görünür ancak hiçbir yere gitmez.
Sistematik bir yaklaşım olmadan, testçiler eksik bir Sistem Alias'ı SM59'da kontrol etmek ya da boşaltılmamış bir SU56 yetkilendirme arabelleği olduğu zamana kadar SE80 kodunu kontrol etmek için saatler harcar.
Statik yapılandırmadan dinamik çalışma zamanına kadar çalışan bir katmanlı eleme protokolu gereklidir:
Adım 1: Taşıma Tutarlılığı Denetimi
Herhangi bir işlevsel testten önce, SE01 ve SE09 kullanarak Taşıma Kopyalarının (TOC) veya Çalışma Masası Talebi içeriğini doğrulayın. Ko-dependentliği doğrulayın: BSP uygulaması, ICF düğümü (işlem SICF), OData hizmeti (/IWFND/MAINT_SERVICE), Fiori Katalog/Grup atamaları (/UI2/FLPD_CUST) ve PFCG rolünün ya aynı taşımada ya da belgelenmiş sıralamada olması gerekir. Sistemler arasındaki LPD_T (Başlangıç Ekranı Verisi) tablolarını karşılaştırmak için SCMP (Görünüm/Tablo Karşılaştırması) kullanın.
Adım 2: Meta Veri Önbellek Geçersiz Kılma
Gateway sisteminde meta veri ve model önbelleklerini temizlemek için /IWFND/CACHE_CLEANUP yürütün. Tarayıcıda zorla tamamen yeniden yükleme (Ctrl+F5) yapın ve SAPUI5 başlatma URL'sine ?sap-ui-xx-noCache=true ekleyin. $metadata isteği için Ağ sekmesini kontrol edin; XML yanıtının güncel RFC imzasıyla eşleşen doğru EntitySets'leri içerip içermediğini doğrulayın.
Adım 3: Yetkilendirme Arabelleği Boşaltma
Mevcut kullanıcının yetkilendirme arabelleğini silmek için işlem SU56'yı kullanın. PFUD (Kullanıcı Master Verisi Ayarlaması) aracılığıyla seçeneği "Karşılaştır" ile çalıştırın ve PFCG rolünün Profil'inin güncel olduğundan emin olun. Başarısız bir kutu erişiminden hemen sonra SU53 çalıştırarak son başarısız yetkilendirme kontrolünü görüntüleyin. Özellikle S_START (genel başlangıç yetki), S_IWSG ve S_SERVICE nesnelerine dikkat edin.
Adım 4: Hedef Eşleştirme Çözümleme Doğrulama
Semantic Object ve Action'u girmek için işlem /UI2/FLIA (Fiori Başlangıç Ekranı Niyet Analizi) kullanın. Bu, hangi SAPUI5 uygulamasının ( Bileşen ID aracılığıyla) çözüldüğünü, ICF yolunu ve LPD_CST girişinin geçerli olup olmadığını gösterir. Eğer FLIA eşleştirmeyi gösteriyorsa ama kullanıcı göremiyorsa, sorun PFCG (eksik katalog ataması) kaynaklıdır. Eğer FLIA hiçbir eşleştirme göstermiyorsa, sorun LPD_CUST ya da taşımadadır.
Adım 5: RFC Bağlantı İzleme
/IWFND/ERROR_LOG aracılığıyla Gateway hata günlüklerini etkinleştirin. SM59 → Bağlantı Testi kullanarak RFC hedefini izleyin, ardından SM50 (İşlem Genel Görünümü) aracılığıyla OData hizmetinin arka uca ulaşmaya çalışırken RFC hatalarını gözlemleyin. SM21 (Sistem Günlüğü) içerisinde S_RFC veya S_RFCACL yetkilendirme hatalarını kontrol edin.
Sorun Açıklaması
Bir S/4HANA 2022 yükseltme projesi sırasında, SAP Fiori "Satın Alma Taleplerini Yönet" uygulaması Geliştirme ortamında mükemmel çalışırken, Kalite Güvencesi'nde "Uygulama açılamadı çünkü SAPUI5 bileşeni ui.sscim.prereq yüklenemedi." hatası ile açılmadı. Basis ekibi, tüm taşımaların RC=0 (Sıfır Dönüş Kodu) ile başarıyla aktarıldığını onayladı. SAPUI5 ABAP deposu (SE80) QAS'da ui.sscim.prereq BSP uygulamasının mevcut olduğunu gösterdi. OData hizmeti C_PURCHASEREQ_SRV da aktif durumdaydı ve /IWFND/MAINT_SERVICE içerisinde yer alıyordu. Ancak kutu yöneticiler için görünür ancak tedarik sekreterleri için görünmüyor, bu bir yetkilendirme sorunu gibi görünüyordu, yine de yöneticilerin tıkladığında yüklenme hatası aldıkları görüldü.
Çözüm 1: Tarayıcı Önbelleği Temizleme ve UI5 Sürüm Geri Alma
İlk hipotez, QAS'da bozulmuş bir SAPUI5 önbelleği ya da ABAP deposunda sürüm tutarsızlığı olmasıydı. Ekip, tüm kullanıcılar için tarayıcı önbelleklerini temizledi ve manuel olarak MIME deposu önbelleğini /UI5/APP_INDEX_CALCULATE kullanarak geçersiz kıldı.
Artıları: Bu, genellikle SAPUI5 kaynak yükleme sorunlarını (404'ler üzerindeki Component-preload.js) çözebilen hızlı, müdahaleci olmayan bir düzeltmedir. ABAP kodu değişiklikleri gerektirmez.
Eksileri: Sorunu çözmedi. Hata devam etti ve daha kritik olarak, kutunun sekreterler için neden görünmez olduğunu açıklamadı. Belirtileri (yüklenme hatası) tedavi etti, neden meta verilerin yüklenmesinin başarısız olduğunu teşhis etmeden, muhtemelen daha derin bir OData hizmet yapılandırma sorununun gizlenmesine neden oldu.
Çözüm 2: Tam PFCG Rol Yeniden Üretimi ve Kullanıcı Karşılaştırması
Ekip, Fiori Katalog atamasının PFCG'de eksik olabileceğini düşündü. Tedarik rollerinin tüm profillerini yeniden oluşturdu ve tüm kullanıcıların güncellenmiş yetkilendirmeleri aldığından emin olmak için "Tam karşılaştırma" seçeneğiyle PFUD çalıştırdı.
Artıları: Yetkilendirme Profilleri (PROF_NAME UST04'te) ile Rol tanımlamalarının senkronize olmasını sağlar. Bu, sekreterler için "görünmez kutu" sorununu çözdü, çünkü Katalog grup ataması gerçekten QAS rol sürümünde eksikti.
Eksileri: Kutu görünür hale gelirken, tıklama hâlâ "bileşen yüklenemedi" hatasına yol açıyordu. Bu yaklaşım, yalnızca yetkilendirme katmanına odaklandığı ve OData hizmeti ile RFC eşleme katmanını göz ardı ettiği için başarısız oldu. Kutuyu görebilen yöneticiler bile açamadı ve bu, sorunun yetkilendirmeden öte olduğunu kanıtladı.
Çözüm 3: Sistematik Gateway ve ICF Düğümü Doğrulaması (Seçilen Yaklaşım)
Seçilen metodoloji, OData hizmet etkinlik durumunu UI5 uygulamasından bağımsız olarak kontrol etmekti. /IWFND/GW_CLIENT işlemini kullanarak C_PURCHASEREQ_SRV?sap-client=100 için bir GET isteği yürüttüler. İstek HTTP 200 döndürdü, ancak XML yükü, güncel bir RFC ara yüzü değişikliğinden önceki bir önbellek sürümüne ait meta veriyi gösterdi. Ardından, SICF (Hizmetleri Yönet) işlemini kontrol ettiklerinde, DEV ortamında aktif ama QAS'da pasif durumdaydı (ithalat sessizce başarısız oldu, çünkü bir nesne kilitliydi). Son olarak, /IWFND/ERROR_LOG kontrolü, uygulama $metadata'yı almaya çalışırken bir Yetkilendirme hatası aldığını gösterdi; bu, göç sonrası devre dışı bırakılmış bir SM59 hedefine işaret ediyordu.
Seçim Sebebi: Bu yaklaşım, üç eş zamanlı hatayı izole etti: (1) OData önbellek hizalanmazlığı DEV ve QAS arasında meta veri uyuşmazlığına neden oldu, (2) ICF düğümünün pasifliği, SAPUI5 kaynaklarının HTTP aracılığıyla sunulmasını önledi ve (3) Sistem Alias yapılandırma hatası, artık mevcut olmayan bir RFC hedefini QAS'da gösteriyordu. Genel kullanıcı mesajları yerine belirli hata kodları (ICF 403'leri ile OData 404'leri) sağladı.
Sonuç
/IWFND/CACHE_CLEANUP yürütülmesi OData meta verisini yeni RFC imzasıyla eşleşecek şekilde yeniledi. ICF düğümünün etkinleştirilmesi, bileşen yüklenemedi hatasını çözerek BSP uygulamasının HTML ve JS dosyalarına erişimi sağladı. /IWFND/MAINT_SERVICE → SAP Sistem Alias içerisindeki Sistem Alias'ın düzeltilmesi, Gateway'in arka uca ulaşabilmesini sağladı. Tedarik sekreterleri, PFCG rolü (Çözüm 2'de düzeltildi) artık çalışır durumda olan kutuya erişim verdiği için uygulamayı görebilir ve açabilir hale geldi. Sistematik yaklaşım, kodun kusurlu olduğu varsayımında harcanacak yaklaşık 8 saatlik ABAP hata ayıklamasını kurtardı.
Kaybolan bir Fiori kutusunun eksik bir Hedef Eşleştirme (LPD_CUST) mi yoksa PFCG'deki eksik bir Katalog atamasından mı kaynaklandığını kesin olarak nasıl belirlersiniz, her iki durum da kutunun görünmemesiyle sonuçlanır?
Cevap:
Eksik bir Hedef Eşleştirme ( LPD_CUST veya Fiori KATALOG tasarımında yapılandırılan) demek, Anlam Nesnesi ve Eylem kombinasyonunun ilişkilendirilmiş bir SAPUI5 uygulaması olmadığı anlamına gelir; ancak bu durumda kutu kendisi, PFCG içindeki Katalog ataması mevcutsa yine de görünebilir. Tıkladığınızda "Navigasyon hedefi bulunamadı" hatası alınabilir. Doğrulamak için /UI2/FLIA (Fiori Başlangıç Ekranı Niyet Analizi) işlemini kullanın. Anlam Nesnesi ve Eylem'i girin; eğer FLIA "Bu niyet için uygulama bulunamadı" dönerse, Hedef Eşleştirme eksiktir veya haritalama içindeki BSP uygulama adı yanlıştır.
Aksine, eğer FLIA başarılı bir şekilde hedef SAPUI5 uygulamasını ve Bileşen ID'yi gösteriyorsa ama kutu kullanıcının başlangıç ekranından eksikse, sorun PFCG ile ilgilidir. Kontrol edin, kutu içeren Katalog kullanıcının PFCG'deki Rol'üne atanmış mı ( Menü sekmesini kontrol edin) ve Grup'un (başlangıç ekranı ana sayfasındaki kutuları düzenleyen) da atanmış olduğundan emin olun. Ayrıca, kullanıcının SU53 izinde S_START yetkilendirme nesnesinin WEBGUI değerine sahip olup olmadığını kontrol edin; çünkü bu, her türlü Fiori uygulamasını başlatmak için gereklidir ve genellikle SAP GUI-yalnızca sistemlerden rol güncellemelerinde göz önünde bulundurulmaz.
Gateway Client (/IWFND/GW_CLIENT) üzerinden bir OData hizmet testinin başarılı olmasının ardından, ancak tarayıcıda SAPUI5 uygulaması tarafından yapılan isteğin 403 Yasak hatası ile sonuçlanmasının nedeni nedir?
Cevap:
Gateway Client (/IWFND/GW_CLIENT), SAP GUI oturum bağlamında çalışır, SAP Logon kimliğini kullanır ve HTTP Internet Communication Framework (ICF) düğümü güvenlik kontrollerinden kaçınır. Ancak SAPUI5 uygulaması, istekleri ICF düğüm yapısı üzerinden yönlendirir (/sap/bc/ui5_ui5/... veya /sap/opu/odata/...).
Bu nedenle, tarayıcıda bir 403 genellikle aşağıdaki durumları gösterir:
ICF Düğümü Pasif: Hedef istemcideki belirli hizmet düğümü SICF'de pasif durumdayken, OData hizmetinin kendisi /IWFND/MAINT_SERVICE içinde kayıtlı olabilir.
S_ICF Yetkilendirmesi: Kullanıcının belirli HTTP yoluna erişmek için gerekli doğru ICF Alan Değerleri (Hizmet Adı, Ana Bilgisayar vb.) ile S_ICF yetkilendirme nesnesi yoktur. Hatanın hemen ardından işlem SU53'ü kontrol edin.
CSRF Token Doğrulaması: SAPUI5 uygulamaları, HEAD isteği aracılığıyla alınan geçerli bir CSRF (Cross-Site Request Forgery) tokenına ihtiyaç duyar. Eğer ön yüz ve arka uç sistemleri yanlış yapılandırılmışsa (örneğin, bir Fiori Front-end Server senaryosunda farklı Sistem Kimlikleri varsa), token doğrulaması bir 403 ile başarısız olurken, GW_CLIENT (durumsuz ve CSRF bağışiksiz) başarılı olur.
PFCG rol güncellemelerinde bir yarış koşulu testi nasıl yapılır? Birden çok taşıma talebinin yetkilendirme profil değişiklikleri içeren güncellemeleri sıkı bir sürüm penceresi içinde aynı anda aktarılması durumunda?
Cevap:
Birden çok Taşıma Talebi, PFCG rollerini eş zamanlı olarak içeriyorsa, Profil üretimi (PFCG → Profil Oluştur) USR10 veya USR12 üzerinde Tablo Kilidi çarpışmaları oluşturabilir ve bazı kullanıcıların eksik yetkilendirme tamponları almasına yol açabilir. Bu durumu test etmek için:
Aşamalı İthalat Simülasyonu: QAS sisteminde, Rol taşımalarını ardışık olarak içe aktarın. Hedef RC=0 veya RC=4 uyarılarıyla Dönüş Kodlarını belgeleyin. Ardından, sistemi sıfırlayın ve bunları eş zamanlı olarak içe aktarın. İki senaryo arasında Kullanıcı Master kayıtlarını (tablo UST04) karşılaştırmak için SE16 veya AGR_USERS sorgusunu kullanın.
Yetkilendirme İzleme Karşılaştırması: Aynı kullanıcı için eş zamanlı aktarım öncesi ve sonrası için ST01 (Yetkilendirme İzleme) kullanın. Yetkilendirme Kontrolleri tamponlarını yakalayın. Eğer ardışık içe aktarma, Z_CUSTOM_AUTH_OBJECT için başarılı kontroller gösterirse, ancak eş zamanlı içe aktarma hatalar gösteriyorsa, Profil üretiminde bir yarış koşulu muhtemeldir.
PFUD Gecikme Testi: Eş zamanlı ithalat işleminin hemen ardından SUIM → Kullanıcı → Karmaşık Seçim Kriterlerine Göre işlemini çalıştırın ve Profil sürümlerinin (PROFN USR10'da), PFCG'deki Rol sürümüyle eşleşip eşleşmediğini kontrol edin. Eğer bunlar uyuşmuyorsa, Kullanıcı Master ayarlama (PFUD) atlanmış veya sessizce başarısız olmuştur. Çözüm, imzalama öncesinde RSUSR200 (Kullanıcı-Rol Atamalarının Analizi) doğrulaması ile zorunlu bir PFUD çalıştırılmasıdır.