PackagePackagetypeA library you install and call yourself.See every one →What this type is →independently maintainedindependently maintainedoriginPublished by one person or a small company outside SAP. Says nothing about quality; the readings say that.See every one →

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

Last pushLicenceMIT

Where it sits

Lives in
Provides
Parallel processingABAPParallel processingcapabilitySplitting one run's work across several work processes so that it finishes sooner, and collecting what each part returned before the run goes on. [Async processing](capability:async-processing) is the neighbouring concern: work deferred past the request with a guarantee that it eventually happens, where parallel processing is throughput inside a run that waits for its results.

Who is behind it

Michael BiberMichael BiberPersonMaintains this
In the atlas: maintains 1, contributes to 2
@BiberM
maintainer

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

Connections1

README

quoted from BiberM/ABAPParallelizationService under MIT, read
BiberM/ABAPParallelizationService/README.mdOn GitHub

ABAP 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_BASISstatus
740unclear
750should work
751should work
752should work
753should work
754developed on
755should work
756should work

Design and glossary

The caller must supply the following information:

  1. WHAT is to be executed? (type, name) → this is called Application
  2. HOW is it to be executed? (parallelization technique, how many parallel, package size, …) → this is called Configuration
  3. 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 Namedemoed functionality
zaps_demo_execute_funcunitExecute a function unit with batch jobs and receive results
zaps_demo_execute_func_diaExecute a function unit with aRFC and receive results
zaps_demo_execute_reportExecute a report with batch jobs (no results possible)
zaps_demo_execute_objectExecute 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!

MIT, read
Parallel processing
  1. abapify/promisePromise and async/await implementation for ABAPfrom ABAP
  2. COROUTINES4ABAPCoroutine framework for ABAP with awaitable resultsfrom ABAP
  3. zconcurrency_apiParallel task library for ABAP over the SPTA frameworkfrom ABAP
  4. RFC_TOOLSA wrapper class for calling asynchronous RFC function modules in parallel from ABAP, one instance per parallel task.from ABAP
  5. zthreadThreading library for ABAP modelled on Java's Thread and Runnablefrom ABAP

Details

Sources3
dotabapdiscovered herechecked
github.com/BiberM/ABAPParallelizationServicetree, pushes, contributors, CIchecked
README.mdquoted, and what the entry declareschecked

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
discovered viadotabap
first seen in the atlas
ecosystem and domainabap, operations-and-runtime
abaplint
issues under its own abaplint configuration2,473
lines6,438
statements2,927
objects122
files154
analysed, main
abaplint version2.120.84
Flavors1
Standard ABAP
“The design has on Premise in mind. Whether this could work in BTP has not yet been discussed.” — BiberM/ABAPParallelizationService — README, Release compatibilitychecked
History in the atlas1
  1. First seen.
For your agent
Ref
artifact:biberm-abapparallelizationservice
JSON
/artifacts/biberm-abapparallelizationservice.json
MCP
Connecting an agent