SAP AI: Część 3 – Użycie AI w pisaniu kodu bardziej tradycyjne niż Vibe Coding

Artykul

Tytułem wstępu

Ten artykuł stanowi trzecią część krótkiego cyklu, pokazującego z perspektywy osoby odpowiedzialnej za rozwój ekosystemu SAP w przedsiębiorstwie, jak zacząć od zupełnych podstaw pracę z SAP AI, w czym SAP AI może pomóc oraz jak wykorzystać SAP AI do realizacji niestandardowych wymagań przedsiębiorstwa. W części pierwszej pokazałem, jak zdobyć wiedzę, niezbędną do realizacji niestandardowych potrzeb przedsiębiorstwa. W drugim odcinku pokazałem, jak uzyskać możliwość Vibe Coding-u w SAP Business Application Studio. A w tym odcinku pokażę użycie AI w pisaniu kodu, ale bardziej tradycyjnie.

Definicja potrzeby

Wiemy, jak pisać kod. Znamy język, w którym piszemy kod. Ale chcielibyśmy trochę ułatwić sobie zadanie. Nie chcemy oddać całości pracy w tryby AI, ale chcemy, aby AI nam pomogła czy to pisać kod, czy zrozumieć.

ABAP

Zacznijmy od Pomocy AI w pisaniu, analizie czy refaktoringu kodu ABAP. W tym zakresie pomocą służy SAP Joule for Developers, ABAP AI Capabilities. Ta wersja może być używana w trzech przypadkach (w dniu pisania tego tekstu):

  • ABAP w SAP BTP ABAP Environment
  • ABAP w SAP S/4HANA Cloud Public Edition (SAP Cloud ERP)
  • ABAP w SAP S/4HANA Cloud Private Edition (SAP Cloud ERP Private)

Zakres funkcji J4D ABAP

Zakres funkcji dostępnych we wszystkich trzech środowiskach, jest niemal identyczny. We wszystkich środowiskach mamy do dyspozycji następujące funkcje:

  • Joule Chat – Funkcja czatu Joule umożliwia prowadzenie rozmów w języku naturalnym, zadawanie pytań lub uzyskiwanie szczegółowych wyjaśnień dotyczących fragmentów kodu lub obiektów programistycznych.
  • Documentation Chat – Umożliwia czatowanie z dokumentacją w Portalu Pomocy SAP.
  • Predictive Code Completion – Funkcja predykcyjnego uzupełniania kodu wykorzystuje sztuczną inteligencję (AI) do podpowiadania kodu podczas pisania w edytorze kodu źródłowego ABAP. Sugerowany kod – tzw. ghost text – jest wyświetlany przed kursorem. Możesz zaakceptować sugestię, naciskając klawisz Tab, lub kontynuować pisanie, aby ją zignorować.
  • Explain – Funkcja Wyjaśnij umożliwia uzyskanie szczegółowych wyjaśnień wybranych obiektów programistycznych lub wierszy kodu źródłowego.
  • ABAP Unit Test Generation – Pomoc dla autora testów jednostkowych ABAP, w skuteczniejszym tworzeniu i ulepszaniu testów.
  • CDS Test Generation – Generuje zautomatyzowane i kontekstowe testy dla encji ABAP CDS.
  • OData UI Service from Scratch – Można utworzyć od podstaw obiekty repozytorium związane z usługą RAP.
  • RAP Business Logic Prediction – Prognoza logiki biznesowej RAP pomaga wdrażać ustalenia lub walidacje w klasie implementacji definicji zachowania.
  • Consume – Funkcja Consume umożliwia korzystanie z serwera proxy klienta OData w celu korzystania ze zdalnej usługi OData.
  • Emedded Analytics Star Schema Generator powered by AI – Narzędzie służące do tworzenia analitycznego schematu gwiazdy przy użyciu sztucznej inteligencji.

Funkcje unikalne dla SAP S/4HANA Cloud Private Edition (SAP Cloud ERP Private)

W środowisku SAP S/4HANA Cloud Private Edition (SAP Cloud ERP Private) mamy do dyspozycji dodatkową funkcję, dedykowaną dla tego środowiska:

  • Custom Code Migration AI Assistant – Asystent AI migracji kodu niestandardowego, będący częścią Documentation Chat, udziela wsparcia w projekcie migracji kodu niestandardowego.

Funkcje unikalne dla środowiska SAP S/4HANA Cloud Public Edition (SAP Cloud ERP)

Z kolei w środowisku SAP S/4HANA Cloud Public Edition (SAP Cloud ERP) mamy dodatkową, dedykowaną dla tego środowiska, funkcję:

  • Extensibility Assistant – Może odpowiedzieć na pytania dotyczące rozszerzalności pól i ich logiki. Może pomóc w różnych zadaniach związanych z rozszerzalnością pól, w tym:
    • Tworzenie pól niestandardowych: Może pomóc w tworzeniu nowych pól niestandardowych w określonych kontekstach biznesowych.
    • Znajdowanie kontekstów biznesowych: Może pomóc w identyfikacji odpowiedniego kontekstu biznesowego do rozszerzania aplikacji, usług, interfejsów API lub transakcji.
    • Włączanie zastosowań: Może pomóc w znalezieniu i włączeniu zastosowań, w których pola niestandardowe mogą być widoczne, takich jak interfejsy użytkownika, interfejsy API, widoki analityczne lub transakcje SAP GUI.
    • Włączanie scenariuszy biznesowych: Może pomóc w włączaniu scenariuszy biznesowych dla pól niestandardowych, umożliwiając przepływ danych między różnymi obiektami biznesowymi.
    • Znajdowanie widoków pomocy wartości: Może pomóc w znalezieniu widoków pomocy wartości, które dostarczają danych pomocy wartości dla pól niestandardowych typu lista kodów na podstawie widoku CDS.
    • Znajdowanie BAdI: Może pomóc w znalezieniu dodatków biznesowych na podstawie danych wejściowych w języku naturalnym.

Uruchomienie SAP Joule for Developers, ABAP AI Capabilities

Aby używać SAP Joule for Developers, ABAP AI Capabilities, potrzebujemy:

  • Jedno ze środowisk (S/4HANA Cloud Public lub Private lub SAP BTP ABAP Environment)
  • Licencję SAP Joule for Developers, ABAP AI capabilities (licencja bezpłatna do 30 września 2026)
  • Środowisko deweloperskie – w dniu pisania tego artykułu jest to Eclipse, natomiast w planach jest również wsparcie dla MS Visual Studio Code
  • AI Units do pokrycia kosztów funkcji generatywnych

Uruchamiamy całość w kilku prostych krokach:

  • Aktywujemy SAP Joule for Developers, ABAP AI Capabilities w kokpicie SAP BTP. Tu uwaga: procedura aktywacji jest nieco inna w zależności od tego, czy będziemy korzystać z ABAP w S/4HANA Cloud czy w SAP BTP ABAP Environment. Procedura jest opisana w dokumentacji na help.sap.com.
  • Pobieramy i instalujemy Eclipce
  • W Eclipse Wybieramy Help -> Install New Software i w polu „Work with” wpisujemy https://tools.hana.ondemand.com/latest
  • W repozytorium wybieramy „ABAP Development Tools” i instalujemy
  • W zależności od używanego środowiska ABAP, konfigurujemy współpracę pomiędzy SAP ABAP Development Tools a naszym środowiskiem ABAP

Wszystkie powyższe kroki są opisane w dokumentacji.

Po wykonaniu powyższych kroków otrzymujemy lokalne środowisko deweloperskie, podłączone z jednej strony do S/4HANA Cloud Public Edition, S/4HANA Cloud Private Edition lub SAP BTP ABAP Environment, a z drugiej strony do środowiska Joule for Developers, ABAP Capapbilities.

Technologie inne niż ABAP (node.js, Java, Python itd.)

Tu mamy znacznie więcej możliwości niż w przypadku ABAP. Zacznijmy od tego, że funkcje oparte na AI są wbudowane bezpośrednio w środowisko deweloperskie. Wystarczy jedna z subskrypcji:

  • SAP Build Code (https://help.sap.com/docs/build_code)
  • SAP Build (unified) Developer (https://help.sap.com/docs/build-service)
  • SAP Joule Studio 2.0 (dokumentacja w opracowaniu)

Uruchomienie każdej z tych subskrypcji jest zautomatyzowane – albo używamy tzw. „booster” w SAP BTP Cockpit, albo zautomatyzowanej procedury, uruchamianej w SAP Cloud Integration Automation.

Jedna rzecz, na którą trzeba zwrócić uwagę: w chwili pisania tego artykułu, Joule for Developers (w wersji dla Node.js i Java, a nie ABAP) jest dostępny w SAP Busienss Application Studio, będącym składnikiem pakietów SAP Build Code i SAP Build (unified). Podczas uruchamiania każdego z tych pakietów należ się upewnić, że w przypadku SAP Build (unified) SAP Business Application Studio zostanie uruchomione w planie „build-default”, a w przypadku SAP Build Code – w planie „build-code”.

W każdym przypadku po zakończeniu procesu aktywacji subskrypcji, otrzymujemy środowisko deweloperskie klasy Pro-Code, w którym standardowo możemy posługiwać się Node.js, Java, Python, a ponadto możemy rozszerzyć listę standardowo obsługiwanych języków poprzez zainstalowanie jednego z „Extensions”.

Standardowo otrzymujemy w środowisku dostęp do Joule for Developers: po lewej stronie ekranu pojawia się „diament”, którego kliknięcie przenosi nas do okna pracy z Joule for Developers.

Ważna uwaga: Joule w SAP Business Application Studio używa całego kodu, zawartego w projekcie jako kontekstu. Dlatego w żadnym przypadku nie wolno w kodzie projektu umieszczać danych wrażliwych.

Podczas pracy z projektem dostajemy do dyspozycji wiele narzędzi, które można podzielić na dwie kategorie:

  • Joule Code Assistant
  • Joule Chat

Joule Chat

Zazwyczaj zaczynamy pracę od Joule Chat. W okienku czatu możemy wybrać kategorię polecenia – do tego służy znak „/”. Po wpisaniu tego znaku pojawi się wybór dostępnych komend. Tu może pojawić się pytanie: dlaczego ograniczona lista komend, wywoływanych przez „/”? Ma to na celu minimalizację niepożądanych odpowiedzi. SAP Jolue for Developers jest dedykowany do konkretnych zadań i w ich realizacji jest naprawdę dobry. Innym zadaniami po prostu nie zajmuje się.

Przy pomocy Joule możemy:

  • W projekcie Full Stack
    • Wygenerować model danych lub serwis
    • Edytować projekt
    • Edytować dane testowe
    • Aktualizować logikę aplikacji
    • Generować i uruchamiać testy jednostkowe
  • W projekcie aplikacji UI5
    • Realizować zadania, związane z tworzeniem aplikacji UI5
    • Zadawać pytania, związane z UI5
    • Dodawać funkcje aplikacji UI5

Joule Code Assistant

Kiedy mamy już utworzony zarys projektu, czy to przy pomocy okna czatu Joule, czy metodami tradycyjnymi, jak użycie szablonów i generatorów albo po prostu ręcznie, możemy używać Joule Code Assistant.

Joule Code Assistant pozwala wykonywać prace bezpośrednio na edytowanym kodzie:

  • Automatyczne uzupełnianie pisanego kodu – podczas pisania kodu naciskamy „Tab” i Joule sugeruje kolejną linię kodu. Ponowne naciśnięcie „Tab” oznacza akceptację całego zaproponowanego kodu, lub można też można akceptować każdy segment proponowanego kodu, naciskając fiszkę „Accept Word”
  • Refaktoryzacja kodu
  • Objaśnienie kodu
  • Przeszukiwanie kodu

Co ciekawe, w przypadku refaktoryzacji, mamy możliwość zmiany LLM, z którego korzystamy do tego zadania. Standardowo jest to Joule, ale jeżeli zaznaczymy fragment kodu, wybierzemy opcję „Refactor”, a następnie „Modify”, to otworzy się okienko, w którym wpisujemy komendę, jaką chcemy, aby LLM zrealizował w trakcie refaktoryzacji kodu, ale po prawej stronie tego okienka znajduje się opcja wyboru LLM, który od tej pory będzie wykonywał refaktoryzację.

I tutaj mamy szerokie spektrum usługodawców do wyboru – ale do skorzystania z któregokolwiek z nich, potrzebujemy tzw. „API Key” od wybranego usługodawcy, aby móc skorzystać z jego LLM-ów.

Do wyboru mamy:

  • Anthropic – Haiku, Sonnet i Opus
  • xAI – Grok
  • Google – Gemini
  • OpenRouter – dostęp do mniej znanych LLM-ów, które implementują interface OpenRouter
  • OpenAI – CztGPT
  • Ollama – Ollama
  • OpenAI Compatible – mniej znane modele, zgodne z technologią OpenAI
  • Azure – dostęp do LLM-ów serwowanych przez Microsoft Azure
  • SAP AI Core – dostęp do modeli serwowanych przez SAP AI Core

Jeżeli zrealizowaliśmy to, co opisałem w poprzedniej części tej mini-serii artykułów, czyli uruchomiliśmy SAP AI Core, to ostatnia opcja z powyższej listy będzie bardzo interesująca – da nam dostęp do modeli LLM, dostarczanych przez SAP. Wystarczy pobrać service key usługi SAP Ai Core i na żądanie BAS wkleić jego całą treść jako API Key AI Core. W tym momencie dostajemy dostęp do (na dzień pisania tego artykułu) 34 LLM-ów.

Tu uwaga techniczna: nie jest to czysty dostęp bezpośrednio do LLM, jak to było w poprzednim artykule. W tym przypadku pośrednikiem pomiędzy nami a LLM jest GitHub Copilot, który nam pomaga w pracy z kodem i który używa wskazany przez nas, lub wybierany automatycznie, LLM do wykonywania zadań.