
054: Recycling-Heroes - Data Generation (Document)
In this episode, we generate test data off-stack with Claude and have the method written for us, before we then perform the review in the real ABAP system and load the sample data for our documents.
Table of contents
In this episode, we want to generate off-stack test data for our document app, have the ABAP code written for us, which we will then push to the Git repository and finally execute in the ABAP system to simplify the insertion of the various test data.
Clone
For this, we use Visual Studio Code with an installed Claude Code plugin and Git to access the data. ABAP is also installed in the same installation, but it is currently not running. In this episode, we want to work in VS Code without ABAP and ABAP MCP. To do this, we first need to perform the Git clone and will use our Recycling Heroes core repository for this. We clone this into our project directory, where other GitHub projects are also located. Next, we open this in a new window. This focuses our workspace on the current Git repository. To make things easier for LLM, we open the files we want to edit, such as our initialization class for the data, and also open the JSON files for which we want to continue generating test data. Our workspace is now ready to be used with LLM.
Prompting
We are using the Claude Code plugin and the Opus 5.5 model in the "Medium" setting. To save ourselves typing, we pass the various details to the Large Language Model via voice input. We specify that we want a new method in the current class that generates the document entities. A new directory "Attachment" should be created on the root layer, in which the various documents will be created. Additionally, we provide information about which documents we want to generate and for which target group, so that, for example, we have the various basic documents for all employees. At the same time, we also want small images for customers based on the title and description, as well as five vehicles that will be added later. Finally, we provide information about which actual Core Data Service should be used as the reference data type to conclude the prompt. The model now starts working to determine what it should create, in what format, and to execute the various tasks.
Files
Generation is now complete. Let's take a closer look at the class. Two new methods have been generated: "load_documents", which downloads the actual documents from GitHub and uses roughly the same logic as before, and the "get_attachment" method, which then reads the individual entities separately.
Scrolling up, we find a new folder for the attachments that have been created, as well as a new file for the various documents. At first glance, the documents have been given different text, including information about the employees, which we also provided via the "Employee" file. The most interesting part later on is ensuring the correct tags are loaded during insertion, as these are defined in the system via the UUID.
Let's take a look at the test files. We find various images of our employees. We can also view a PDF, which looks fine at first glance. This is acceptable for a preliminary check. Now let's perform a push to bring the new test data and the modified class back to the Git repository.
GitHub
The data has now arrived on GitHub, and we can find our commit with the various assets that were added. Navigating back to the repository, we can now examine the various attachments in detail, as we haven't yet seen the PDFs, for example. Several evaluation documents for Recycling Heroes GmbH have been created here, as well as a CV containing fabricated information, perfect for our test data.
ABAP
Back in ABAP, we now need to import our customized class back into the system. The other documents remain on GitHub. We cannot import these into the system. To do this, we use the abapGit plugin, which is included in our Eclipse installation, and perform a pull from the repository. Here we select our class for the initial data, which we then bring back into the system. abapGit now needs a short while to retrieve the various objects back into the system and overwrite them. Once we're finished, we need to activate everything inactive in the system to ensure a clean state. This also allows us to check whether the adjustments made by Claude have produced the correct result and whether there are any syntax errors in the code.
Before we execute the code in the system, we want to do a quick code review and check the results. Beforehand, we should comment out all the old data we've already generated so that we only create the new entities in the system. At first glance, the logic reads the document from GitHub. Simultaneously, the created text is read to assign the appropriate UUID. In the lower section, the mapping is then performed to create a new entry, and finally, a MODIFY ENTITIES operation is executed. This generates the data in the system. Finally, let's execute the class and generate the documents in the system. We then receive the result in the console: all imported and created documents.
Test
Finally, let's go to the preview of our application and load all the documents to check the result we've implemented. We can see all the assigned documents and document types that have been created. In the details, we also find the assigned tags, for example, PDF, Personal, and Important. By clicking on the document, we can start the download. If we then check the document, we see that the PDF has been properly attached to the system and is now also attached to the receipt.
Summary
In today's episode, we wanted to look at how we can generate test data off-stack without an ABAP system. With the help of modern LLMs, which are now very capable of development, we generated test data as well as the ABAP adjustments and then deployed them back into the system to validate whether the result corresponds to what we wanted. Basically, we have to say that we didn't have to rework the ABAP class even once; what was originally adapted could be adopted verbatim. This allowed us to define countless documents in the system for our various use cases without having to write any actual code or laboriously devise test information. We hope you were able to take something away from this. Thanks for watching and see you next time.
YouTube
Video