{"ref":"artifact:bunysae-abap-db-preparator","page":"/artifacts/bunysae-abap-db-preparator","json":"/artifacts/bunysae-abap-db-preparator.json","generated":"2026-10-26","drafted_with_ai":true,"entity":{"id":"bunysae-abap-db-preparator","name":"abap_db_preparator","artifact_type":"package","ecosystem":"abap","domain":"developer-experience","origin_ring":"independent","description":{"one_line":"A wrapper over ABAP's OpenSQL replacement service that exports chosen rows into a stored bundle and, in a unit test's setup, replays it as fake table content in two method calls.","short":"Replays stored database snapshots in ABAP unit tests","what_it_solves":"Unit tests that fake database rows by hand, in a bespoke setup method, tend to break after a system copy or another database manipulation. This library exports the chosen rows into a bundle, stored either in an ECATT test data container or in a cluster (a binary MIME object in transaction `smw0`), and links each original table to a fake counterpart through class `cl_osql_replace`; a test's setup then replaces the content and activates the replacement in two method calls. It supports `FOR ALL ENTRIES IN` restrictions and joins expressed as subqueries when choosing the rows to export, and the code is backwards compatible to release 7.40 although the replacement service itself needs SAP NetWeaver 7.51 or 7.52. The import APIs can only be used in development systems where dangerous ABAP unit-test classes are enabled."},"links":{"repo":"https://github.com/bunysae/abap_db_preparator"},"type_properties":{"placement":{"value":"in-host","sources":[{"url":"https://github.com/bunysae/abap_db_preparator","title":"bunysae/abap_db_preparator — README, How it works","checked":"2026-09-14","quote":"Bundles are stored either in an ECATT test data container\nor in a cluster (binary MIME-object in transaction smw0)."},{"url":"https://github.com/bunysae/abap_db_preparator","title":"bunysae/abap_db_preparator — README, Authorization","checked":"2026-10-19","quote":"The APIs in class `zimport_bundle_from_cluster` or \nin class `zimport_bundle_from_tdc` can only be used in \ndevelopment systems, where \ndangerous ABAP unit-testclasses are enabled."}]},"distribution":{"value":["abapgit"],"sources":[{"url":"https://github.com/bunysae/abap_db_preparator","title":"bunysae/abap_db_preparator — README, Cloning this repository","checked":"2026-10-19","quote":"Cloning can be done with [abapGit](https://github.com/larshp/abapgit)."}]}},"identity":{"license":"MIT"},"source_available":true,"provides":[{"capability":"capability:abap-unit-testing","what_it_does":"Replaces per-test database setup code with a stored snapshot, replayed into fake tables through ABAP's OpenSQL replacement service.","sources":[{"url":"https://github.com/bunysae/abap_db_preparator","title":"bunysae/abap_db_preparator — README","checked":"2026-10-19","quote":"Database preparation for unit testing made simple."},{"url":"https://github.com/bunysae/abap_db_preparator","title":"bunysae/abap_db_preparator — README, No more breaking unit tests","checked":"2026-10-19","quote":"This is achieved by providing a wrapper\nfor the OpenSQL replacement service in class `cl_osql_replace`, that \nmakes huge setups unnecessary."}]}],"drafted_with_ai":true,"provenance":{"discovered_via":[{"source":"source:curator"}],"first_seen":"2026-09-14"},"maintainers":["actor:bunysae"],"contributors":["actor:bunysae","actor:germanysources","actor:larshp"]},"effective_normative_relations":[],"readings":{"liveness":[{"label":"Maintenance","tier":"unknown","evidence":"no release data"},{"label":"Continuity","tier":"good","evidence":"3 contributors"},{"label":"Repository","tier":"poor","evidence":"pushed 2024-06, not archived"}],"compatibility":[{"label":"Declared for","tier":"good","evidence":"SAP_BASIS 745 and up, in its abaplint config: includes every maintained line to 816"},{"label":"Survived majors","tier":"unknown","evidence":"not read on ABAP: its lines run side by side"},{"label":"Maintainer's CI","tier":"fair","evidence":"no CI configured"}],"practice":[{"label":"Tests","tier":"poor","evidence":"none found in the tree"},{"label":"Docs","tier":"good","evidence":"README 6 KB"},{"label":"Changelog","tier":"fair","evidence":"none in the repo"}],"reach":[{"value":null,"unit":"installs/week"},{"value":18,"unit":"watching"}]},"signals":{"crawled_at":"2026-10-24","npm":"not published under this name","stars":18,"forks":1,"open_issues":4,"archived":false,"pushed_at":"2024-06-17","license_spdx":"MIT","org_owned":false,"default_branch":"master","created_at":"2020-01-27T15:56:16Z","open_prs":0,"tree_truncated":false,"test_files":0,"workflows":0,"other_ci":false,"readme_bytes":5905,"docs_files":0,"changelog":false,"license_file":true,"dts_files":0,"first_commit":"2019-09-03","last_commit":"2024-06-07","commits":79,"contributors":3,"readme_path":"README.md","readme_sha":"a1d6bf508200534e10c1685c55583a9dc60ba78f","repo_read":"2026-10-24","abap_syntax":{"repo":"bunysae/abap_db_preparator","file":"abaplint.json","url":"https://github.com/bunysae/abap_db_preparator/blob/HEAD/abaplint.json","version":"v745","floor":"745","checked":"2026-10-26"}},"edges":{"maintainers":[{"ref":"actor:bunysae","name":"Bunyanuch Saengnet","json":"/actors/bunysae.json"}],"contributors":[{"ref":"actor:bunysae","name":"Bunyanuch Saengnet","json":"/actors/bunysae.json"},{"ref":"actor:germanysources","name":"Johannes Gerbershagen","json":"/actors/germanysources.json"},{"ref":"actor:larshp","name":"Lars Hvam","json":"/actors/larshp.json"}],"explained_by":[],"alternative_to_this":[],"needed_by":[],"available_via":[],"parts":[],"add_ons":[],"answered_through_parts":[]}}