ABAPParallelizationService
A generic framework, called from code, for running a function unit, report or method across many parameter combinations in parallel dialog or batch tasks.
Running the same unit of work across many parameter combinations in parallel is something many companies have built for themselves, each time for one purpose and generalised afterwards; the maintainer started this project after finding nothing from SAP as versatile and available on any system able to run ABAP. It takes an Application (what to run: a function unit, report or method), a Configuration (parallelisation technique, how many parallel tasks, package size) and a set of Parameter Sets, groups the sets into packages, and runs each package as a dialog or batch task, collecting the final states and the results once every task finishes. The Application and the Configuration come from customizing tables, the Parameter Sets from a class the Application names, and the customer event ZAPS_JOB_START has to be created by hand in SM62 because abapGit cannot carry it.
Facts
Where it sits
Who is behind it
In the atlas: maintains 1, contributes to 2@BiberMmaintainer
Before choosing this
Signals
ActivityQuietNo published releases; repository quiet for 57 months
It publishes no releases, and its repository has been quiet for at least 24 full months. This may be normal for stable software; check whether its current state still fits your use.
Conditions
PracticalFunctional boundary
The maintainer states the current state has never been used in real-world scenarios: the demo reports in package ZAPS_DEMO and the unit tests are the only runs reported, and the release table marks SAP_BASIS 740 unclear, 754 as the release it was developed on, and 750 to 756 as expected to work.
What it declares
Every artifact
- Type
- Package
- Origin
- Independently maintained
As a package
- Where it runs
- does not say
- Distributed through
- does not say
Connections
Splitting one run's work across several work processes
Download
README
quoted from BiberM/ABAPParallelizationService under MIT, readABAP Parallelization Services
ABAP Parallelization Services are designed to be called from code in order to run a function unit / report / method with multiple parameter combinations in parallel.
Reason for this project
As I could not find anything from SAP as versatile, easy to use and available on any SAP system able to run ABAP I started this project. I know many companies (customers, addon vendors and consulting companies) do have their own implementation. Most of the time these had been started to solve a certain purpose and have ben generalized after.
This project tries to suit those with a generic approach in order to give every company the possibility to easily run code in parallel without a big barrier to climb before.
Capabilities
Executables supported: function unit, report, method
Parallelization technique: dialog task, batch task
Release compatibility
The design has on Premise in mind. Whether this could work in BTP has not yet been discussed.
| on Prem release SAP_BASIS | status |
|---|---|
| 740 | unclear |
| 750 | should work |
| 751 | should work |
| 752 | should work |
| 753 | should work |
| 754 | developed on |
| 755 | should work |
| 756 | should work |
Design and glossary
The caller must supply the following information:
- WHAT is to be executed? (type, name) → this is called Application
- HOW is it to be executed? (parallelization technique, how many parallel, package size, …) → this is called Configuration
- Parameter combinations for every call → this is called Parameter Sets (one set for one call)
The Application information and Configuration information are supplied via customizing tables (for reusability and easy change). The Parameter Sets must be implemented and the class doing so must be specified in the Application.
Using the max package size from the Configuration a so called Packetizer groups the Parameter Sets into Packages. Every Package is then assigned to one Task, which can be a Dialog Task or a Batch Task. A Task Starter (scheduler) then starts the Tasks regarding the max parallel settings from the Configuration and collects final states of the tasks including the results. When all Tasks are finished the caller can then retrieve the results if needed to further process them.
Installation
ABAPgit currently does not support SM62-event to be stored in git. Therefor the customer event ZAPS_JOB_START must be created manually using transaction SM62.
This is used for batch jobs to be started after creation.
Demo Reports
The development package ZAPS_DEMO contains demo reports that show how to use the ABAP Parallelization Services in different situations.
| Demo Report Name | demoed functionality |
|---|---|
| zaps_demo_execute_funcunit | Execute a function unit with batch jobs and receive results |
| zaps_demo_execute_func_dia | Execute a function unit with aRFC and receive results |
| zaps_demo_execute_report | Execute a report with batch jobs (no results possible) |
| zaps_demo_execute_object | Execute a method with batch jobs |
Disclaimer
The current state has never been used in real world scenarios. All demo reports work as expected and the unit test are running fine.
Ideas for stabilization and enhancement are welcome!
Others providing
Compare all 6 on the Parallel processing page →- abapify/promiseabapify/promiseA Promise and async/await implementation for ABAP, modelled on JavaScript's Promise API, that runs a resolver as a background task and offers all, race, resolve, reject and all_settled.independent, abapPromise and async/await implementation for ABAPfrom ABAP
- COROUTINES4ABAPCOROUTINES4ABAPA coroutine framework for ABAP that launches a piece of work, such as a database query or a background task, as a task the caller awaits later while carrying on with other work.independent, abapCoroutine framework for ABAP with awaitable resultsfrom ABAP
- zconcurrency_apizconcurrency_apiA Java-inspired ABAP library that runs tasks in parallel over SAP's SPTA framework without an RFC-enabled function module, capping concurrent tasks at 40% of the dialog work processes.independent, abapParallel task library for ABAP over the SPTA frameworkfrom ABAP
- RFC_TOOLSRFC_TOOLSA wrapper class for calling asynchronous RFC function modules in parallel from ABAP, one instance per parallel task.independent, abapA wrapper class for calling asynchronous RFC function modules in parallel from ABAP, one instance per parallel task.from ABAP
- zthreadzthreadA threading library for ABAP modelled on Java's Thread and Runnable interface: a runnable class is forked as a thread, joined singly or all at once, and returns a result or a callback.independent, abapThreading library for ABAP modelled on Java's Thread and Runnablefrom ABAP
Details
Sources
Sources are graph entities: the same page may back several entries, and an unreachable source flags every row that rests on it.
Compatibility and provenance
abaplint
Flavors
“The design has on Premise in mind. Whether this could work in BTP has not yet been discussed.” — BiberM/ABAPParallelizationService — README, Release compatibility
History in the atlas
- First seen.
For your agent
- Ref
artifact:biberm-abapparallelizationservice- JSON
- /artifacts/biberm-abapparallelizationservice.json
- MCP
- Connecting an agent