Context
Raised during design of #46 (export/import rulesets). The export feature uses a virtual element with a clickable URL pointing to the HTTP export endpoint. In ABAP Cloud, the service path is deterministic (/sap/bc/http/sap/zasis_ext_api_cld/...). In on-premise (SICF), the path is user-defined — we cannot hardcode it.
This surfaced the broader need to properly separate cloud and on-premise concerns.
What needs to be considered
1. Package split for the service layer
- Cloud cannot contain objects that are not cloud-compatible (leads to activation errors)
- The
srv/ package currently has both zasis_cl_http_handler (SICF/on-prem) and zasis_cl_http_handler_cld (IF_HTTP_SERVICE_EXTENSION/cloud)
- Need separate packages: e.g.
srv_cloud/ and srv_onprem/ (or similar)
- Shared core logic (
zasis_cl_http_handler_core, interfaces, validator) stays in a common package
2. Variant detection (zasis_if_version)
- Introduce a constant or interface attribute that indicates which variant is installed (cloud vs on-prem)
- Could be used at runtime to branch behavior (e.g. virtual element URL construction)
- Each release artifact would set this differently
3. Separate releases / branches
- Users should be able to download only the cloud or on-prem release
- Possible approaches:
- Separate git branches per variant
- Single branch with conditional packaging (abapGit package exclusion)
- Build-time artifact generation (zip per variant)
- Release-please would need to handle this
4. Virtual element URL for on-prem
- On-prem: SICF node path is user-defined → cannot hardcode in virtual element
- Options: configurable table, system setting, or simply hide the export link on on-prem
5. Testing implications
- Need to verify both variants independently
- abaplint config may need variant-specific rule sets (cloud syntax restrictions vs standard)
Current decision
For #46 (export feature), we scope the virtual element URL to cloud only. On-prem users can still call the HTTP endpoint directly if they know their SICF path. The clickable link in the UI is cloud-only until this issue is resolved.
Related
Context
Raised during design of #46 (export/import rulesets). The export feature uses a virtual element with a clickable URL pointing to the HTTP export endpoint. In ABAP Cloud, the service path is deterministic (
/sap/bc/http/sap/zasis_ext_api_cld/...). In on-premise (SICF), the path is user-defined — we cannot hardcode it.This surfaced the broader need to properly separate cloud and on-premise concerns.
What needs to be considered
1. Package split for the service layer
srv/package currently has bothzasis_cl_http_handler(SICF/on-prem) andzasis_cl_http_handler_cld(IF_HTTP_SERVICE_EXTENSION/cloud)srv_cloud/andsrv_onprem/(or similar)zasis_cl_http_handler_core, interfaces, validator) stays in a common package2. Variant detection (
zasis_if_version)3. Separate releases / branches
4. Virtual element URL for on-prem
5. Testing implications
Current decision
For #46 (export feature), we scope the virtual element URL to cloud only. On-prem users can still call the HTTP endpoint directly if they know their SICF path. The clickable link in the UI is cloud-only until this issue is resolved.
Related