{"ref":"artifact:larshp-formfactor","page":"/artifacts/larshp-formfactor","json":"/artifacts/larshp-formfactor.json","generated":"2026-10-26","drafted_with_ai":true,"entity":{"id":"larshp-formfactor","name":"FORMfactor","artifact_type":"generator","ecosystem":"abap","domain":"learning-and-reference","origin_ring":"independent","description":{"one_line":"A report that generates local classes with static methods from an old FORM-based ABAP program, as code to paste in by hand, without support for 740 constructs, TABLES parameters or INCLUDEs.","short":"Generates local classes from FORM-based ABAP programs","what_it_solves":"FORMfactor reads an old program built from FORM routines and produces local classes with static methods from it. It runs as report `ZFORMFACTOR` and changes nothing in the system by itself: the generated code has to be copy-pasted into the report by hand. Its own limitations list three gaps: the new 740 language constructs, `TABLES` parameters and `INCLUDE`s. Installation runs in order — [abapGit](artifact:abapgit-abapgit), then [abapOpenChecks](artifact:larshp-abapopenchecks) through abapGit, then FORMfactor — and the maintainer also points to [FORMfactor-Eclipse](https://github.com/larshp/FORMfactor-Eclipse)."},"links":{"repo":"https://github.com/larshp/FORMfactor"},"type_properties":{"generates":{"value":["code"],"sources":[{"url":"https://github.com/larshp/FORMfactor","title":"larshp/FORMfactor — README, Installation","checked":"2026-10-19","quote":"Run via report ZFORMFACTOR, it will not automatically change anything in the system, code has to be copy-pasted into report manually."}]},"distribution":{"value":["abapgit"],"sources":[{"url":"https://github.com/larshp/FORMfactor","title":"larshp/FORMfactor — README, Installation","checked":"2026-10-19","quote":"1. Install [abapGit](https://github.com/larshp/abapGit)\n2. Install [abapOpenChecks](https://github.com/larshp/abapOpenChecks) using abapGit\n3. Install FORMfactor"}]}},"identity":{"license":"MIT"},"source_available":true,"provides":[{"capability":"capability:abap-clean-code","what_it_does":"Generates local classes with static methods from the FORM routines of an old program, for a developer to copy into the program.","sources":[{"url":"https://github.com/larshp/FORMfactor","title":"larshp/FORMfactor — README","checked":"2026-10-19","quote":"Helps refactoring old FORM based programs to local classes with static methods."}]}],"requires":[{"ref":"artifact:larshp-abapopenchecks","requirement":"required","basis":"binding","for":"FORMfactor's second installation step, after [abapGit](artifact:abapgit-abapgit) itself and before FORMfactor is installed; the README does not say what it is used for.","sources":[{"url":"https://github.com/larshp/FORMfactor","title":"larshp/FORMfactor — README, Installation","checked":"2026-10-19","quote":"2. Install [abapOpenChecks](https://github.com/larshp/abapOpenChecks) using abapGit"}]},{"ref":"artifact:abapgit-abapgit","requirement":"required","basis":"binding","for":"Installs the repository into the ABAP system; the README gives [abapGit](artifact:abapgit-abapgit) as the first install step.","sources":[{"url":"https://github.com/larshp/FORMfactor","title":"larshp/FORMfactor — README, Installation","checked":"2026-10-19","quote":"1. Install [abapGit](https://github.com/larshp/abapGit)"}]}],"maintainers":["actor:larshp"],"drafted_with_ai":true,"provenance":{"discovered_via":[{"source":"source:curator"}],"first_seen":"2026-09-14"},"contributors":["actor:bigld","actor:larshp"]},"effective_normative_relations":[],"readings":{"liveness":[{"label":"Maintenance","tier":"unknown","evidence":"no release data"},{"label":"Continuity","tier":"fair","evidence":"2 contributors"},{"label":"Repository","tier":"poor","evidence":"pushed 2021-03, not archived"}],"compatibility":[{"label":"Declared for","tier":"fair","evidence":"nothing declared"},{"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":"poor","evidence":"README 1 KB"},{"label":"Changelog","tier":"fair","evidence":"none in the repo"}],"reach":[{"value":null,"unit":"installs/week"},{"value":20,"unit":"watching"}]},"signals":{"crawled_at":"2026-10-25","npm":"not published under this name","stars":20,"forks":5,"open_issues":2,"archived":false,"pushed_at":"2021-03-01","license_spdx":"MIT","org_owned":false,"default_branch":"main","created_at":"2015-09-04T14:15:39Z","open_prs":0,"tree_truncated":false,"test_files":0,"workflows":0,"other_ci":false,"readme_bytes":708,"docs_files":0,"changelog":false,"license_file":true,"dts_files":0,"first_commit":"2015-09-04","last_commit":"2020-08-15","commits":28,"contributors":2,"readme_path":"README.md","readme_sha":"a8d816ef3d24fd4f0929cf8d223c55b6417a7e8f","repo_read":"2026-10-25"},"edges":{"maintainers":[{"ref":"actor:larshp","name":"Lars Hvam","json":"/actors/larshp.json"}],"contributors":[{"ref":"actor:bigld","name":"Domi Bigl","json":"/actors/bigld.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":[]}}