Application Development and Automation Blog Posts
Learn and share on deeper, cross technology development topics such as integration and connectivity, automation, cloud extensibility, developing at scale, and security.
cancel
Showing results for 
Search instead for 
Did you mean: 
phidoe
Explorer
21,129

 


The Challenge: I Can't Achieve the Same AI-Assisted Flow in ABAP as in Other Languages

When I tested tools like SAP Joule, Amazon Q, Github CoPilot and others, I encountered what seemed to be two main limitations:

  1. Easy access to the ABAP platform file system or IDE workspace – In my testing, most AI assistants couldn't easily connect to the ABAP platform file system to work with actual source code. At least not as effortlessly and comprehensively as if these tools work with the local file system.
  2. Lack of understanding of SAP standards – I found that LLMs often struggled with ABAP-specific syntax and (internal) standard APIs.

The result in my case: broken code, unclear suggestions, wrong use of standard components leading to short dumps.


The Goal: Enable a Seamless, Productive AI Workflow for ABAP

Inspired by a full stack AWS CDK & React project I was recently working on, I tried transferring some of the workflows and framework conditions to my ABAP development practice. The result is an experimental set up that - so far - seems very promising to achieve a comparable development flow and seamless integration of AI coding assistants as I experienced in projects outside of the ABAP universe.

The set up utilizes existing open source and community based tools and combines them to help the AI coding assistant to work as intended. 


My Setup for Agentic ABAP Development

1. abapGit in the SAP backend

Crucial to sync ABAP code between the SAP dev system and a remote Git repository. I use the background option the keep the SAP system in sync with my local changes. The background option can be activated in the repo settings. Once activated, you can schedule a batch job of abapGit, which will then run the configured actions on the repo(s). In my case I configured the background auto pull function the keep the developments objects in the SAP dev system in sync with the changes I make locally & push to the remote.
Like this, the SAP dev system becomes more of a stage in a pipeline than a development environment.

auto pull option in abapGit repoauto pull option in abapGit repo 

2. A Remote Git Repository

It acts as the bridge between the SAP system and my local development environment. I only do changes in my local environment (see 3) and push them to the remote repo. The background configuration (see 1) ensures that the SAP system stays in sync with the remote. Currently there is nothing more happening here, but I'd like to enhance the set up with some actions once changes are pushed/ merged in the remote. Maybe only trigger the sync in (1) only when a pipeline successfully executes.

3. A Local Development Environment Powered by AI

On my local machine, I use Visual Studio Code enhanced by these key tools:

  • An AI coding assistant 
  • abaplint – The static code analysis tool by Lars Hvam to validate syntax and ensure code quality. This acts as a filter between AI output and real-world SAP code. The coding assistant can respond to the hints, warnings, errors given by the linter and therefore gets feedback whether it produces valid ABAP code, without the need for an actual ABAP platform underneath.
  • ADT MCP Server – A MCP server by Mario Andreschak that runs locally on my machine. It exposes SAP standard components to the AI engine. With this in place, LLMs can understand ABAP interfaces, function modules, and class signatures, etc. - making their suggestions much more relevant. I advise the LLM to use the first two parts of the Workflow ('searchObject' and 'getObjectSource') mentioned in the MCP repository to understand how it can get information about SAP standard objects.

Set Up OverviewSet Up Overview

 

 


What I've observed so far

My experience with this set up so far is really great. I mainly used it in a OO greenfield development, helping me to focus on software architecture and object composition and avoiding to deal with boilerplate code. I try writing to the AI assistant as with a development colleague, questioning my ideas and current problem solving approach. 
I also let the assistant implement complete parts of the solution after creating and evaluating a detailed development plan upfront. It works really well as long as the current 'feature scope' is not too large and the implementation plan is well described. 

This approach has given me what feels like a more tailored and extensible development experience compared to exclusively using the assistants mentioned at the beginning of this article without changing the complete set up.

--------------------------
This post was written with the help of GenAI.
Want to share your experiences with AI assisted coding? Get in touch! 

3 Comments