Rozwiązywanie problemu z brakiem widocznych widoków SAP OData V4 CDS w Package Studio
Z tego przewodnika należy skorzystać, jeżeli źródło ekstrakcji SAP CDS oczekiwane poprzez usługę CDI_CDS OData V4 nie jest widoczne lub nie można go wybrać w Nexus Package Studio. Konfiguracja po stronie SAP różni się w zależności od S/4HANA Cloud Public Edition oraz systemów zarządzanych przez klienta (Private Edition lub On-Premise). Najpierw należy jednoznacznie ustalić produkt SAP, wersję, wydanie oraz docelowego tenant'a/klienta. Jeśli nie są Państwo pewni, z którego wariantu korzystają, należy zwrócić się do administratora SAP; sam Fiori launchpad nie określa typu posiadanej edycji SAP.
Przewodnik dotyczy ekstrakcji opartej na CDS przez CDI_CDS. Widok CDS udostępniony jako osobne API zewnętrzne lub przez inną własną usługę OData stanowi inne źródło i nie jest automatycznie uwzględniany przez CDI_CDS.
Zasada działania dwóch warstw wykrywania
Wykrywanie należy postrzegać jako sprawdzanie dwóch niezależnych list:
- Katalog usług OData to rejestr opublikowanych usług OData V4. W Public Edition dostęp do katalogu zapewnia układ
SAP_COM_0181– nie daje jednak uprawnień do samej zawartości CDS. - Rejestr dostawców CDI stanowi listę źródeł ekstrakcji CDS dostępnych przez CDI. Wyświetla dostawców – niekoniecznie każdy widok jako osobną usługę katalogową.
W Package Studio, Nexus porządkuje źródła OData w schemacie grupa usług → usługa → wersja → zbiór encji. Zbiór encji to zbiór rekordów, który Nexus może dodać do pakietu; traktowany jest jak tabela. Dla dostawcy CDI jego nazwą jest zazwyczaj Facts; należy każdorazowo posługiwać się rzeczywistą nazwą pokazującą się w metadanych dostawcy.
Zalecana ścieżka postępowania
Aby zidentyfikować problem, przeanalizować kolejne kroki. Po niepowodzeniu któregokolwiek, należy skontaktować się z odpowiednim administratorem SAP lub Nexus.
- Jak powstał widok? Czy utworzono go przez aplikację Fiori Custom CDS Views, czy w ABAP Development Tools (ADT) jako autorski widok
Z*? Należy rozpocząć od odpowiadających instrukcji w Kroku 2. - Czy usługa CDI jest dostępna? Jeśli Package Studio nie wyświetla grupy usług CDI, przejść do Kroku 1.
- Czy widok pojawia się w SAP? Przetestować zapytanie CDI
Providersopisane w Kroku 3, używając tego samego użytkownika technicznego, którego stosuje Nexus. - SAP wykrywa widok, ale Package Studio nadal nie pozwala go dodać? Zweryfikować zbiór encji i metadane, jak wskazano w Kroku 4, a następnie zastosować Krok 5.
Informacje wymagane dla diagnostyki
- Nazwa techniczna CDS/ekstraktora dokładnie tak, jak przedstawia SAP. Etykieta biznesowa typu „Orders for Reporting” nie wystarcza. Sposób nazw zależy od rodzaju widoku CDS – patrz Krok 3.
- Edycja SAP oraz dokładny system/tenant, którego dotyczy zgłoszenie (np. development, test czy produkcja).
- Techniczna tożsamość komunikacyjna skonfigurowana dla Nexus. Nie zawsze jest to osobisty użytkownik Fiori lub SAP Logon.
- Wersja Nexus, prezentowana w Ustawienia → Licencja i wsparcie.
Nie należy przesyłać haseł, kluczy prywatnych ani plików certyfikatów w zgłoszeniach wsparcia.
1. Weryfikacja katalogu i dostępności usługi CDI
SAP Fiori: Public Edition
- W Fiori launchpad przejść do Communication Arrangements.
- Odnaleźć konfigurację dla
SAP_COM_0181. Upewnić się, że jest aktywna, korzysta z Communication System utworzonego dla Nexus oraz prezentuje usługę przychodzącą dla katalogu OData V4. Ten układ umożliwia Nexus wyświetlanie dostępnych usług; nie oznacza jednak nadania uprawnień do czytania widoku CDS. - Wyszukać oddzielny układ dla
SAP_COM_0531. Przejść do Inbound Services i skopiować prezentowane tam adresy URL CDI. Właśnie te linki należy testować — nie kopiować hosta z pola Host Name w Communication System, gdyż odnosi się ono do strony Nexus. - W konfiguracji
SAP_COM_0531zanotować Authorization Group ID. W następnym kroku porównać go z grupą i allowlistą. - Sprawdzić, czy widok i jego allowlista są wdrożone w tej samej instancji tenant, którą obecnie testujemy. Widok obecny w development tenant nie jest domyślnie widoczny w testowym ani produkcyjnym.
Pełna procedura konfiguracji Public Edition i allowlist dostępna jest w Podłączenie do S/4HANA Cloud Public Edition przez OData V4.
SAP Logon: systemy zarządzane przez klienta
W przypadku systemów SAP S/4HANA Private Edition lub On-Premise, gdzie administrują Państwo SAP Gateway:
- Zalogować się do odpowiedniego SAP System i klienta poprzez SAP Logon.
- W polu poleceń wpisać
/n/IWFND/V4_ADMIN, zatwierdzić Enter. Otworzy się ekran administracji OData V4 dla SAP Gateway. - Wybrać Publish Service Groups, następnie Get Service Groups. Zlokalizować
/IWFND/CONFIG(usługa katalogowa) orazCDI_CDS(grupa usług ekstrakcji CDS). Brak publikacji którejkolwiek oznacza konieczność opublikowania zgodnie z procedurą administratora SAP oraz weryfikację aliasu/systemu kierującego ruch. SAP podaje przykładowy aliasLOCAL; w przypadku lokalnego Gateway należy także skontrolować ustawienie Local GW. - Postępować zgodnie z zaleceniami SAP dla danej wersji – czy grupa
CDImusi być również opublikowana. Gdy SAP sygnalizuje, że repozytoriumCDI_CDSnie jest przypisane do grupyCDI_CDS, należy sprawdzić SAP KBA 3339952 w SAP for Me.
Nie należy używać /IWFND/V4_ADMIN do administracji tenant'ów Public Edition. W Public Edition korzystać z communication arrangements i linków inbound service z poziomu Fiori. Do testów żądań zaleca się użycie klienta HTTP z tożsamością Communication User i skonfigurowaną dla niej autentykacją.
Test dostępu do katalogu
Należy stosować wyłącznie URL katalogu udostępniony przez SAP lub konfigurację komunikacji – samodzielne zgadywanie ścieżki jest niewłaściwe. Przykładowy format URL katalogu SAP Gateway V4:
https://<SAP-API-Host>/sap/opu/odata4/iwfnd/config/default/iwfnd/catalog/0002/ServiceGroups?$expand=DefaultSystem($expand=Services)&$top=5
Wartość katalogu (0002 tutaj) może różnić się w zależności od wersji SAP. W Public Edition należy bezwzględnie skopiować dokładny link z Inbound Services określonego przez SAP_COM_0181. W systemach zarządzanych wymagana jest publikacja grupy usług katalogowych /IWFND/CONFIG, aby endpoint był dostępny – to działanie jest rozłączne z publikacją CDI_CDS.
W systemie SAP Gateway zarządzanym przez klienta wykonać test poprzez /IWFND/GW_CLIENT:
- Wpisać podaną przez SAP relatywną ścieżkę żądania w odpowiednie pole.
- Wybrać metodę HTTP
GET, a następnie wykonać żądanie (zazwyczaj F8). - Zweryfikować status HTTP i treść odpowiedzi. Najpierw sprawdzić katalog, potem CDI
Providers, na końcu$metadataskopiowany od dostawcy. - Powtórzyć test HTTP z tożsamością integracyjną Nexus, o ile to możliwe. Powodzenie zapytania jako użytkownik GUI SAP nie gwarantuje, że tożsamość techniczna Nexus ma jednakowy dostęp.
W Public Edition najczęściej brak dostępu do tych transakcji przez SAP Logon. Należy posługiwać się adresami z Communication Arrangements w Fiori – w przeglądarce lub narzędziu HTTP, wykorzystując dane Communication User.
W przypadku braku CDI_CDS, przed diagnozowaniem pojedynczego widoku CDS należy najpierw rozwiązać dostęp do katalogu lub publikację grupy usług.
2. Ustalenie, czy SAP udostępnia widok CDS do ekstrakcji
SAP Fiori: weryfikacja widoku i uprawnień
- W View Browser wyszukać po technicznej nazwie CDS. Jeśli dostępne – odfiltrować po Data Extraction Enabled Views lub adnotacji
Analytics.dataExtraction.enabled. - W przypadku widokus stworzonego w Custom CDS Views otworzyć aplikację, sprawdzić, czy scenariusz to Data Extraction, wykonać sprawdzenie i opublikować widok. Wersja szkicowa lub nieopublikowana nie będzie widoczna do ekstrakcji.
- W odpowiednim środowisku konfiguracyjnym wyszukać i otworzyć Define Allowlists for CDS View Extraction. Otworzyć grupę uprawnień o ID zanotowanym w układzie
SAP_COM_0531. Zweryfikować, czy techniczna nazwa CDS jest wymieniona. Na przykład, jeśli układ wskazuje grupęNEXUS_READ, dodanie widoku do innej grupy nie daje dostępu Nexus. - Sprawdzić dokładnie znak po znaku Authorization Group ID z układu. W przypadku transportu konfiguracji między tenantami, potwierdzić przeniesienie całej grupy i jej zawartości.
Gdy SAP wyświetla informację Authorization Group must be maintained, należy odnieść się do SAP KBA 3118974 w SAP for Me. Brak aktywności konfiguracji allowlist w Public Edition SAP tłumaczy czasem nieaktywnością scope item Data Protection and Privacy (5LE); patrz SAP KBA 3781796 w SAP for Me.
Widoki CDS napisane przez dewelopera (Z*)
Dla deweloperskiego widoku ABAP CDS stosuje się adnotację ekstrakcyjną:
@Analytics.dataExtraction.enabled: true
Definicję należy przeglądać w ABAP Development Tools (ADT), aktywować oraz sprawdzić, czy adnotacja jest dozwolona dla wersji języka ABAP danego systemu. Ta adnotacja zezwala SAP na wystawienie widoku do ekstrakcji danych; nie powoduje automatycznej publikacji usługi OData ani nie gwarantuje, że Nexus go odnajdzie.
Uwaga dla Public Edition: nie należy zakładać, że deweloper może dodać tę adnotację do dowolnego własnego obiektu Z*. Ograniczenia wersji języka ABAP i dozwolonych API mogą ją odrzucić. Dla własnych widoków key-user należy wykorzystać dedykowany scenariusz Custom CDS Views → Data Extraction. SAP dokumentuje błędy adnotacji przy własnych widokach ABAP CDS w KBA 3404120 w SAP for Me.
Dla przykładu, deweloper może utworzyć i aktywować widok o nazwie ZC_ORDER_EXTRACT, lecz Nexus nie odnajdzie go tylko na podstawie prefiksu Z w nazwie. Widok musi być kwalifikowany do ekstrakcji SAP, udostępniony przez CDI_CDS i widoczny dla tożsamości integracyjnej. W Public Edition widok ekstrakcyjny tworzy key user w aplikacji Custom CDS Views; nie edytuje on ręcznie adnotacji ABAP.
3. Ręczne zapytanie o wykrycie dostawców CDI
Należy użyć endpointu CDI z konfiguracji SAP lub systemu oraz uwierzytelnić się jako tożsamość integracyjna Nexus. Dla Public Edition SAP dokumentuje następujący schemat katalogu dostawców:
https://<SAP-API-Host>/sap/opu/odata4/sap/cdi/default/sap/cdi/0001/Providers
Najpierw ustalić właściwą nazwę ekstraktora
Definicja CDS, nazwa ekstraktora ODP, URL dostawcy CDI i zbiór encji OData to różne identyfikatory. Należy szukać nazwy technicznej ekstraktora przypisanej przez SAP, nie ograniczając się do etykiety biznesowej:
- Klasyczny widok CDS (
DEFINE VIEW): nazwa ekstraktora ODP to wygenerowana nazwa widoku SQL z@AbapCatalog.sqlViewNamewraz z sufiksem odpowiadającym kategorii danych. - Encja widoku CDS (
DEFINE VIEW ENTITY): należy użyć nazwy encji CDS (view entities nie mają wygenerowanych nazw widoku SQL). - Widok key-user CDS: stosować nazwę techniczną z aplikacji Custom CDS Views lub View Browser.
Przykładowo, widok SQL CMMPURORDHIST o kategorii #FACT ma nazwę ekstraktora ODP CMMPURORDHIST$F (dane operacyjne/księgi transakcji). Inne sufiksy kategorii to $P (atrybuty danych podstawowych), $T (teksty), $H (hierarchia) oraz $E (pozostałe kategorie danych). Wytyczne SAP dot. nazewnictwa ekstrakcji CDS prezentują komplet sufiksów.
Dla encji widoku CDS o nazwie ZI_OrderItem, SAP używa tej właśnie nazwy jako nazwy ekstrakcji, ponieważ nie powstaje wygenerowany widok SQL.
Dla przykładu przygotowanego przez SAP ścieżka CDI prezentuje dodatkowe odwzorowanie nazw:
| Identyfikator | Przykład |
|---|---|
| Nazwa widoku CDS w dokumentacji SAP | C_BillingDocItemBasicDEX_1 |
| Segment ścieżki dostawcy zwracany przez CDI | c_billingdocitembasicdex_1 |
| Zbiór encji OData wewnątrz dostawcy | Facts |
Segment ścieżki z małych liter jest składnikiem adresu URL dostawcy; Facts to zbiór encji (table-like), który wybiera się w Package Studio. Nazwa CDS, nazwa ekstraktora, ścieżka dostawcy i zbiór encji to byty niezamienne.
$ w sufiksach ODP nie ma związku z systemowymi ścieżkami OData typu $metadata ani opcjami zapytań jak $expand.
Wysyłanie zapytania Providers
Należy wykorzystać adres URL Providers zgodnie z powyższym formatem. W systemie zarządzanym przez klienta można wysłać zapytanie narzędziem /IWFND/GW_CLIENT, wprowadzając ścieżkę za hostem, wybierając GET i naciskając F8. W Public Edition wykonać zapytanie pełnym URL-em w Postman lub innym dedykowanym narzędziu HTTP:
- Utworzyć żądanie metodą GET.
- Wkleić cały adres
Providers, podstawiając<SAP-API-Host>host z Inbound ServicesSAP_COM_0531. - W sekcji Authorization wybrać metodę przypisaną do Communication User (np. Basic Auth z loginem i hasłem, lub odpowiedni certyfikat klienta).
- Kliknąć Send. Przeszukać odpowiedź pod kątem wcześniej określonej nazwy ekstraktora. Odpowiedź
200 OKoznacza, że zapytanie powiodło się – nie jest to jednak równoznaczne z możliwością wylistowania każdego widoku CDS.
Nigdy nie używać prywatnego hasła Fiori, jeżeli nie jest ono tożsamością Communication User, i nigdy nie umieszczać danych dostępowych ani certyfikatów w screenshocie lub zgłoszeniu wsparcia.
Jeżeli odpowiedź zawiera @odata.nextLink, należy wywołać podany URL oraz powtarzać aż do wyczerpania stron. Brak ekstraktora na wszystkich stronach oznacza, że SAP nie udostępnił danego widoku temu użytkownikowi przez CDI; należy ponownie sprawdzić kryteria kwalifikacji ekstrakcji, aktywację/publikację, docelowy tenant/klient, grupę uprawnień/allowlistę, wsparcie wersji oraz publikację grupy usług. W przypadku odpowiedzi SAP z błędem ODP/provider, należy zarejestrować dokładną treść błędu i sygnaturę czasu dla administratora SAP – być może problem dotyczy dostawcy ekstrakcji, a nie katalogu Nexus.
4. Analiza metadanych $metadata dostawcy
Wysłać zapytanie o service root oraz jego $metadata, używając linku dostawcy zwróconego przez SAP. $metadata to schemat usługi; informuje Nexus, jakie zbiory encji i pola są dostępne oraz jakie operacje oferuje usługa. Należy sprawdzić, czy zawiera oczekiwaną wersję usługi, pola, klucze oraz zbiór encji. Dostawcy CDI najczęściej wystawiają zbiór Facts; używać nazwy deklarowanej przez usługę docelową.
Dla przykładu, gdy Providers zwraca root serwisu:
https://<SAP-API-Host>/sap/opu/odata4/sap/cdi_cds/cdi_cds/sap/c_billingdocitembasicdex_1/0001/
wystarczy dodać /$metadata do adresu, aby otrzymać metadane:
https://<SAP-API-Host>/sap/opu/odata4/sap/cdi_cds/cdi_cds/sap/c_billingdocitembasicdex_1/0001/$metadata
Adres danych encji to ten sam root serwisu z dodanym /Facts. $metadata zwraca schemat usługi, nie zaś samą encję ani dane.
Weryfikacja prawa odczytu na zbiorze encji:
Org.OData.Capabilities.V1.ReadRestrictionsnie może zawierać deklaracjiReadableosadzonej jakofalse; w przypadku braku lub pominięcia tej właściwości OData uznaje domyślnie, że jest dostępna do odczytu.
Aby Nexus rozpoznawał zbiór encji jako obsługujący CDC, należy sprawdzić obecność Org.OData.Capabilities.V1.ChangeTracking z wartością Supported=true. Brak tej funkcji lub ustawienie jej na fałsz oznacza możliwość eksportu pełnego, ale bez wsparcia CDC dla tego typu widoku przez Package Studio.
Schemaryczna ilustracja istotnych adnotacji metadanych. Nie należy kopiować wartości Target dosłownie – użyć docelowej nazwy prezentowanej przez własne $metadata danej usługi:
<Annotations Target=".../Facts">
<Annotation Term="Org.OData.Capabilities.V1.ReadRestrictions">
<Record>
<PropertyValue Property="Readable" Bool="true" />
</Record>
</Annotation>
<Annotation Term="Org.OData.Capabilities.V1.ChangeTracking">
<Record>
<PropertyValue Property="Supported" Bool="true" />
</Record>
</Annotation>
</Annotations>
Metadane potwierdzają deklarowane możliwości – nie gwarantują natomiast skuteczności tzw. „delta run” w runtime. Chcąc potwierdzić, należy wykonać pełen run początkowy i uzyskać odpowiedź SAP z @odata.deltaLink. Scenariusz Data Extraction w aplikacji Custom CDS Views dla użytkowników kluczowych wspiera wyłącznie ekstrakcję zupełną – nie należy oczekiwać obsługi CDC dla tego wariantu.
5. Weryfikacja błędów Package Studio i SAP Gateway
Gdy dostawca pojawia się w odpowiedzi Providers SAP, a jego $metadata jest dostępny do odczytu:
- Upewnić się, że połączenie Nexus wskazuje prawidłowy host SAP oraz konfigurację OData V4.
- W Package Studio rozwinąć grupę usług, usługę oraz wersję, a następnie wskazać odpowiedni zbiór encji. Wyszukując, używać faktycznej ścieżki dostawca/zbiór encji dostarczonej przez SAP, a nie samej etykiety biznesowej lub nazwy
Z*. - Sprawdzić, czy wdrożona wersja Nexus obsługuje ekstrakcję OData SAP. Wsparcie dla OData pojawiło się w Nexus
1.20.425; SAP S/4HANA Cloud Public Edition jest obsługiwany począwszy od Nexus1.21. - W przypadku otrzymania błędów z SAP, zaleca się użycie
/IWFND/ERROR_LOGoraz, w razie konieczności,/IWBEP/ERROR_LOGw SAP Logon do analizy logów Gateway/back-end./IWFND/GW_CLIENTpozwala na reprodukcję zapytań o metadane i usługi dostawców. Logowanie to dotyczy systemów zarządzanych przez klienta; użytkownicy Public Edition powinni przekazać SAP Support adres żądania, czas, odpowiedź, tenant i szczegóły konfiguracji komunikacji.
Jeśli serwis i metadane są poprawnie dostępne dla tożsamości integracyjnej, a mimo to Package Studio nie prezentuje zbioru encji, należy zebrać dokładny service root, ścieżkę zbiór encji, wersję Nexus oraz metadane odpowiedzi dla wsparcia Nexus.
Odnośniki
- SAP Help: Integracja CDI
- SAP Help: Integracja OData Metadata (
SAP_COM_0181) - SAP Community: Katalog usług OData V4 i przykład URL katalogu
- SAP Help: Publikacja grupy usług OData V4
- SAP Help: SAP Gateway Client
- SAP Help:
Analytics.dataExtraction.enabled - SAP Community: Wyszukiwanie odpowiedniego ekstraktora CDS w SAP S/4HANA
- SAP Community: Ekstrakcja danych poprzez aplikację Custom CDS Views
- OData Capabilities Vocabulary