Przejdź do głównej zawartości

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:

  1. 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.
  2. 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.

  1. 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.
  2. Czy usługa CDI jest dostępna? Jeśli Package Studio nie wyświetla grupy usług CDI, przejść do Kroku 1.
  3. Czy widok pojawia się w SAP? Przetestować zapytanie CDI Providers opisane w Kroku 3, używając tego samego użytkownika technicznego, którego stosuje Nexus.
  4. 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​

  1. W Fiori launchpad przejść do Communication Arrangements.
  2. 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.
  3. 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.
  4. W konfiguracji SAP_COM_0531 zanotować Authorization Group ID. W następnym kroku porównać go z grupą i allowlistą.
  5. 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:

  1. Zalogować się do odpowiedniego SAP System i klienta poprzez SAP Logon.
  2. W polu poleceń wpisać /n/IWFND/V4_ADMIN, zatwierdzić Enter. Otworzy się ekran administracji OData V4 dla SAP Gateway.
  3. Wybrać Publish Service Groups, następnie Get Service Groups. Zlokalizować /IWFND/CONFIG (usługa katalogowa) oraz CDI_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 alias LOCAL; w przypadku lokalnego Gateway należy także skontrolować ustawienie Local GW.
  4. Postępować zgodnie z zaleceniami SAP dla danej wersji – czy grupa CDI musi być również opublikowana. Gdy SAP sygnalizuje, że repozytorium CDI_CDS nie jest przypisane do grupy CDI_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:

  1. Wpisać podaną przez SAP relatywną ścieżkę żądania w odpowiednie pole.
  2. Wybrać metodę HTTP GET, a następnie wykonać żądanie (zazwyczaj F8).
  3. Zweryfikować status HTTP i treść odpowiedzi. Najpierw sprawdzić katalog, potem CDI Providers, na końcu $metadata skopiowany od dostawcy.
  4. 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ń​

  1. W View Browser wyszukać po technicznej nazwie CDS. Jeśli dostępne – odfiltrować po Data Extraction Enabled Views lub adnotacji Analytics.dataExtraction.enabled.
  2. 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.
  3. 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.
  4. 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.sqlViewName wraz 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:

IdentyfikatorPrzykład
Nazwa widoku CDS w dokumentacji SAPC_BillingDocItemBasicDEX_1
Segment ścieżki dostawcy zwracany przez CDIc_billingdocitembasicdex_1
Zbiór encji OData wewnątrz dostawcyFacts

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:

  1. Utworzyć żądanie metodą GET.
  2. Wkleić cały adres Providers, podstawiając <SAP-API-Host> host z Inbound Services SAP_COM_0531.
  3. W sekcji Authorization wybrać metodę przypisaną do Communication User (np. Basic Auth z loginem i hasłem, lub odpowiedni certyfikat klienta).
  4. Kliknąć Send. Przeszukać odpowiedź pod kątem wcześniej określonej nazwy ekstraktora. Odpowiedź 200 OK oznacza, ż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.ReadRestrictions nie może zawierać deklaracji Readable osadzonej jako false; 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:

  1. Upewnić się, że połączenie Nexus wskazuje prawidłowy host SAP oraz konfigurację OData V4.
  2. 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*.
  3. 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 Nexus 1.21.
  4. W przypadku otrzymania błędów z SAP, zaleca się użycie /IWFND/ERROR_LOG oraz, w razie konieczności, /IWBEP/ERROR_LOG w SAP Logon do analizy logów Gateway/back-end. /IWFND/GW_CLIENT pozwala 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​