{"ref":"artifact:marcellourbani-urbani-saplink","page":"/artifacts/marcellourbani-urbani-saplink","json":"/artifacts/marcellourbani-urbani-saplink.json","generated":"2026-10-30","drafted_with_ai":true,"entity":{"id":"marcellourbani-urbani-saplink","name":"urbani-saplink","artifact_type":"app","ecosystem":"abap","domain":"developer-experience","origin_ring":"independent","description":{"one_line":"An SE16 clone shipped as SAPlink files: an ABAP report that reads a table named at runtime with up to 190 select-options, and a Web Dynpro application beside it.","short":"SE16 clone shipped as SAPlink files","what_it_solves":"An SE16 clone that uses dynamic programming instead of creating reports: the program header states that it supports up to 190 select-options and uses class `ZCL_SE16_CORE` for the business logic. It arrives as SAPlink files rather than as a repository to clone — the nugget `NUGG_ZSE16_URB.nugg` carries everything and is imported and activated first, then the slinkee `WDYA_ZSE16_URB.slnk` carries the Web Dynpro application on its own, because SAPlink dumps if the Web Dynpro component and the application come from the same nugget. The README records two things the import leaves behind: on the maintainer's system the Web Dynpro application only installed over an existing ZSE16_URB application, and SAPlink does not handle text symbols for classes, so the four error texts of `ZCL_SE16_URB_ASSIST` are added by hand in SE24, or the application may short-dump when it tries to display an error message. The repository is an automatic export of code.google.com/p/urbani-saplink, and the README carries the maintainer's disclaimer that the software is distributed without any warranty."},"links":{"repo":"https://github.com/marcellourbani/urbani-saplink"},"type_properties":{"placement":{"value":"in-host","sources":[{"url":"https://github.com/marcellourbani/urbani-saplink","title":"marcellourbani/urbani-saplink — README","checked":"2026-10-19","quote":"To import this stuff in your system with saplink, you should start importing the nugget file NUGG_ZSE16_URB.nugg, which contains everything, activate its content, and then the slinkee WDYA_ZSE16_URB.slnk."}]}},"source_available":true,"provides":[{"capability":"capability:abap-data-browsing","what_it_does":"Selects from a table named at runtime, generating the select-options for its fields rather than a report per table, with the selection logic in class `ZCL_SE16_CORE`.","sources":[{"url":"https://github.com/marcellourbani/urbani-saplink/blob/master/PROG_ZSE16_URB.slnk","title":"marcellourbani/urbani-saplink — PROG_ZSE16_URB.slnk","checked":"2026-10-19","quote":"SE16 clone - uses dynamic programming instead of creating reports"},{"url":"https://github.com/marcellourbani/urbani-saplink/blob/master/PROG_ZSE16_URB.slnk","title":"marcellourbani/urbani-saplink — PROG_ZSE16_URB.slnk","checked":"2026-10-19","quote":"supports up to 190 select-options"},{"url":"https://github.com/marcellourbani/urbani-saplink/blob/master/PROG_ZSE16_URB.slnk","title":"marcellourbani/urbani-saplink — PROG_ZSE16_URB.slnk","checked":"2026-10-19","quote":"uses class ZCL_SE16_CORE for the \"business logic\""}]}],"maintainers":["actor:marcellourbani"],"provenance":{"discovered_via":[{"source":"source:github-orgs","channel":"marcellourbani"}],"first_seen":"2026-09-18"},"drafted_with_ai":true},"effective_normative_relations":[],"readings":{"liveness":[{"label":"Maintenance","tier":"unknown","evidence":"no release data"},{"label":"Continuity","tier":"fair","evidence":"one contributor, personally owned"},{"label":"Repository","tier":"poor","evidence":"pushed 2015-06, 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":"fair","evidence":"README 1 KB"},{"label":"Changelog","tier":"fair","evidence":"none in the repo"}],"reach":[{"value":null,"unit":"installs/week"},{"value":0,"unit":"watching"}]},"signals":{"crawled_at":"2026-10-28","npm":"not published under this name","stars":0,"forks":0,"open_issues":0,"archived":false,"pushed_at":"2015-06-19","license_spdx":null,"org_owned":false,"default_branch":"master","created_at":"2015-06-19T13:33:10Z","open_prs":0,"tree_truncated":false,"test_files":0,"workflows":0,"other_ci":false,"readme_bytes":1369,"docs_files":0,"changelog":false,"license_file":false,"dts_files":0,"first_commit":"2007-11-18","last_commit":"2008-01-23","commits":6,"contributors":0,"readme_path":"readme.txt","readme_sha":"991452a331a99da63546f069a071f17739c7e78a","repo_read":"2026-10-28"},"edges":{"maintainers":[{"ref":"actor:marcellourbani","name":"Marcello Urbani","json":"/actors/marcellourbani.json"}],"contributors":[],"explained_by":[],"alternative_to_this":[],"needed_by":[],"available_via":[],"parts":[],"add_ons":[],"answered_through_parts":[]}}