Repository navigation
Releases: greltel/abap-form-translator
Release list
Release v2.0.0
Changelog
All notable changes to this project are documented here. The format follows
Keep a Changelog; versions follow
Semantic Versioning.
[2.0.0] - 2026-09
First release built as ABAP for Cloud Development. Breaking for existing
installations — read the upgrade notes.
Added
- Authorization object
ZFORMTRA(activity only) with CDS access control on
every view and a global authorization check in the behavior implementation.
Denied operations report messages 008 and 009. ZIF_FORM_TRANS_AUTHORITY/ZCL_FORM_TRANS_AUTHORITY: the authority check
behind an interface, injected into the handler through a local factory.ZIF_FORM_TRANS_USER_CONTEXT/ZCL_FORM_TRANS_USER_CONTEXT: the logon
language behind an interface;ZCL_FORM_TRANSLATIONtakes it as an optional
constructor parameter, so the "no language given" path is testable.- Direct handler tests for the global authorization, every validation, the
feature control and the Copy Language action (23 tests on the behavior pool). - Off-stack gate hardened: abaplint syntax check against the released ABAP Cloud
API (2305 snapshot), Clean ABAP rules, a CI guard for the#CHANGE_SET
grouping of the Copy Language button, Dependabot.
Changed
- All objects carry ABAP language version ABAP for Cloud Development; the
abapGit repository setscloudDevelopment. - Minimum release is SAP S/4HANA 2023 (ABAP 7.58).
- Validation
validateUniqueKeyreads the persisted keys with one SELECT per
request instead of one per instance. - Copy Language messages show the ISO 639 code of the language (
EL,DE)
instead of the internal key. ZCL_FORM_TRANS_RULES=>check_copy_requesttakes acopy_requeststructure
instead of six scalar parameters.- The behavior implementation of the Copy Language action is split into
queue_copies,report_rejectionandcreate_drafts. - Message texts in the tests use string literals in backticks; internal tables
are filled withINSERT … INTO TABLEthroughout.
Removed
- Dead exception handling around the logon language and the XCO language
formatting. - Four EML-driven tests of the save sequence that the direct handler tests
cover; two smoke tests remain.
Upgrade notes
- Move the objects into a package with ABAP language version
ABAP for Cloud Development (or set the abapGit option ABAP Language
Version to Undefined to keep a standard package). - Every user of the app needs
ZFORMTRA:03to display,01/02/06to
maintain. Without a role the list is empty and create is denied. - Callers of
ZCL_FORM_TRANS_RULES=>check_copy_request(unlikely outside this
package) have to pass acopy_requeststructure. - The protected type
ZCL_FORM_TRANSLATION=>translationsbecame a sorted
table with a unique key on the field name.
[1.3.0] and earlier
Standard ABAP releases; see the
GitHub releases.
Release v1.3.0
ABAP Form Translator 1.3.0
This release focuses on correctness and test coverage. Two blocking defects in
the RAP maintenance app are fixed, key handling is now case-safe end to end, and
the validation rules were extracted into a dependency-free local class covered
by unit tests.
-
FIXED
-
Existing translations could not be edited. validateUniqueKey was assigned
to the Prepare determine action, which ignores create/update trigger
conditions and also runs for edit drafts. Every Edit found the row's own
active record and reported it as a duplicate, making the save impossible. -
Lower case keys silently disabled translation. HANA compares case
sensitively and OData does not apply the DDIC lower case flag, so a form
name typed in lower case in the app could never be matched at print time -
with no error anywhere. -
Validation messages piled up. Without %state_area, a message from a
previous Prepare stayed in the message popover even after the user had
corrected the value. -
copyToLanguage reported success while copying nothing. Keys that could not
be read were dropped instead of being reported as failed. -
MaxLength above the domain range was accepted. The 0-9999 range is only
enforced on the UI, so requests arriving through OData or the EML API
bypassed it entirely. -
copyToLanguage returned a generated %cid. The consumer's own %cid is now
handed back in mapped, so the UI can correlate the created draft with its
request. -
Value help type-ahead did not filter. @Search.defaultSearchElement was
inert without @Search.searchable at view level.
-
-
ADDED
-
validateKeyCase - rejects form and field names that are not upper case,
with a clear message instead of a silently broken row. -
lcl_rules - all validation logic extracted into a local class with no RAP,
draft or persistence dependency. -
36 unit tests, up from 9: 15 pure rule tests, 6 RAP integration smoke
tests, 8 runtime translation tests and 7 covering the buffer, per-field
fallback and negative caching of get_translations, which previously had no
coverage at all. -
@Semantics.text on LanguageName so #TEXT_FIRST renders reliably.
-
-
CHANGED
-
Duplicate detection in copyToLanguage now covers persisted rows and rows
queued within the same batch through one shared rule. -
Secondary keys are used explicitly on hot internal table reads.
-
ABAP Doc across the behavior pool, including full parameter documentation.
-
README corrected: removed the SM30 / Business Configuration claim (neither
exists in this repository, and SM30 does not exist in ABAP Cloud) and
documented that hot-swapped texts become visible on other application
servers only after buffer synchronisation (~60s), or immediately after
ZCL_FORM_TRANSLATION=>clear_buffer( ) inside a long-running session.
-
Release V1.2.0
New RAP Application & Fiori Elements UI
- Built a new Fiori Elements maintenance app using ABAP RAP.
- Enabled Draft functionality for auto-saving.
- Added context-aware Value Helps for Form and Field names.
- Added backend validations to prevent negative lengths and empty descriptions.
- Added a backend determination to auto-fill the user's logon language.
Class Optimizations (v1.2.0)
- Implemented internal memory caching to eliminate redundant database reads.
- Removed RTTI overhead.
- Added an iv_enable_fallback parameter to default to English if a specific translation is missing.
- Replaced legacy system variables with standard ABAP Cloud methods.
Release v1.0.0
What's Changed
New Contributors
Full Changelog: https://github.com/greltel/abap-smartform-translator/commits/v1.0.0