* Deserialize: Commit changes before activation
Some objects (like `prog` or `intf`) are deserialized as inactive objects i.e. uncommitted changes. Usually, these changes are committed to the database after the activation process (end of the session). However, if there are any errors during activation, an exception is raised which will automatically do a `rollback work`.
This change will make sure that inactive objects are preserved even if the activation fails. One can then analyze the inactive objects, make necessary corrections, and activate them manually.
Closes#4500
* Replace with standard function
Co-authored-by: Lars Hvam <larshp@hotmail.com>
* DEVC: Fix check if package is empty
SOTR object is linked to SAP package and removed together with the package on uninstall. Therefore, it should not be taken into account when checking if a package is empty.
* Update comment
Co-authored-by: Lars Hvam <larshp@hotmail.com>
Co-authored-by: Lars Hvam <larshp@hotmail.com>
The progress bar should not be turned off after `deserialize_object` (but only at end of `deserialize`).
Co-authored-by: Lars Hvam <larshp@hotmail.com>
* ACID: Avoid "no changes found" popup
- Fix "no changes found" popup in case identical object is deserialized again
- Change to T100 messages
- Add missing dequeue
* Lint
Co-authored-by: Lars Hvam <larshp@hotmail.com>
* Fix status calculation on package move
If an object is moved to another package *and* changed, the status was "blank". Now the object status is properly shown as "added/deleted". Also the `packmove` flag is *not* set anymore since a simple `tadir` change would not be sufficient.
Extended unit test to cover this case.
* Split test method
* pretty
Co-authored-by: Lars Hvam <larshp@hotmail.com>
* Automatic creation of top repository package
When adding a repository, it is not necessary anymore that the top SAP package assigned to the repository exists. Just enter a package name and clone (works for offline, too).
The initial diff will now show that the top package exists remotely only. Therefore, when pulling, you will not get the "confirm overwrite package" popup anymore. Yippie!
* Typo
Co-authored-by: Lars Hvam <larshp@hotmail.com>
* NSPC: Add support for namespaces
Part 2 of #835
If a repo contains any namespaced object, then this PR will make namespaces part of the repository. So far, serializing and updating an existing namespace is supported.
abapGit can not (yet) create the namespace automatically. This will require a bit of refactoring which will then also support creating the top repo package automatically. Coming soon.
See readme of test case https://github.com/abapGit-tests/NSPC
* Refactor build
Co-authored-by: Lars Hvam <larshp@hotmail.com>
* Fix for #4425
* Remove whitespace at end of line
Co-authored-by: abaplint[bot] <24845621+abaplint[bot]@users.noreply.github.com>
* Remove whitespace at end of line
Co-authored-by: abaplint[bot] <24845621+abaplint[bot]@users.noreply.github.com>
Co-authored-by: abaplint[bot] <24845621+abaplint[bot]@users.noreply.github.com>
* Refactor I18N settings
- Consolidate I18N parameters into a structure and pass it to xml and serializer classes (#4415)
- Continue change of terminology (#4043)
* Remove changes to serializer class
* Main lang
* DSYS
* OTGR
* Repo view
* Main langu
* Repo view %26 stage
* Serialize
* Settings
* Repo view
* Defs
* Stage
Co-authored-by: Lars Hvam <larshp@hotmail.com>
* NSPC: Add warning if namespace does not exist
Part 1 of #835
* Limit to xml files
* Unit test
* RC
* Regex
* Refactor checks into methods
Co-authored-by: Lars Hvam <larshp@hotmail.com>
Usually, in abapGit packages are created by the folder logic already. But it dumps with "`li_package` is not assigned," if deserialize is used in other ways.
Co-authored-by: Lars Hvam <larshp@hotmail.com>
* Prevent staging of duplicate files
Since objects cannot exist in multiple packages, the staging page is now checking the selected files to prevent the resulting repo from containing an object multiple times.
If an object is moved to another SAP package and the corresponding files are seleted to be added to the repo (for the new package), then the files must also be removed from the repo (from the old package). If not, an error is raised.
* Remove other changes
* Update file status
* Extend unit test
Co-authored-by: Lars Hvam <larshp@hotmail.com>
* Adjustment to BDEF Object Handler
Adjustment to BDEF Object Handler regarding exchange file format
* fix abaplint stuff
* fix abaplint issue
* adaptation in deserialize method
* fix abaplint issues
* fixes abaplinter issues
* requested changes
* fix type issue
* fix type issue
* delete unused method FILL_METADATA_FROM_DB
* enhance signature with exception information
* change reference type
* change to initial activation logic
* change to abap step for activation
* change of reference type as part of create Service
Co-authored-by: Christian Günter <christianguenter@googlemail.com>
Co-authored-by: Lars Hvam <larshp@hotmail.com>
The specific dump occurred when the source was empty. Now it checks the string length properly.
Closes#4309
Co-authored-by: Lars Hvam <larshp@hotmail.com>
* Reduce memory consumption during deserialize
Import of objects required unnecessarily a lot of memory. This was the especially the case during the initial import of repos with large (binary) objects or high number of objects (even if they were not under /src/).
With this fix, an instance of an object serializer now contains only the files associated with this object (rather than all (!) files of the repo).
* Change path logic
* Comment
Co-authored-by: Lars Hvam <larshp@hotmail.com>
Uninstall of enhancements failed with "Action cancelled" error and left object locked.
Removed call of `save` since calling `delete` method is sufficient. Also added `run_dark` for `delete`.
Co-authored-by: Lars Hvam <larshp@hotmail.com>
* Raise error if package is not part of package hierarchy
If a package exists locally and remotely, but the local package is not part of the package hierarchy associated with the repo, then an error message will be raised.
The local package must be assigned manually to the package hierarchy before abapGit can process this scenario.
Note: The assignment is not done automatically, since it's not clear where in the hierarchy the new package should be located.
* lv_msg
Co-authored-by: Lars Hvam <larshp@hotmail.com>
* Fix pull errors related to files deleted remotely
Improve #4281 by moving "ignore logic" to `filter_files_to_deserialize`
* Added unit test
Co-authored-by: Lars Hvam <larshp@hotmail.com>
* Remove unnecessary constructors
A constructor that redefines the super constructor but only calls the super constructor with the same parameters is unnecessary and can be removed
https://github.com/abaplint/abaplint/issues/1417
* Lint
Co-authored-by: Lars Hvam <larshp@hotmail.com>
* fix creation of TR entries for uninstalled PROGs
Fixes creation of CTS Transport Request entries for PROG Objects uninstalled from transportable package.
* Abaplint Fixes
Co-authored-by: Lars Hvam <larshp@hotmail.com>
* Align naming of object super classes
- SAXX_SUPER for SAMC %26 SAPC
- W3XX_SUPER for W3HT %26 W3MI
* Delete old classes
Co-authored-by: Lars Hvam <larshp@hotmail.com>
* Fix missing i_suppress_dialog parameter syntax error in 731 system
* replace cx_root with cx_sy_dyn_call_param_not_found
* revert back to cx_root because checks have failed
"Statement does not exist in ABAPv702(or a parser error)"
* Revert "revert back to cx_root because checks have failed"
This reverts commit 73b9b2aa6f.
* replace cx_root with cx_sy_dyn_call_param_not_found, sorry i didn't see that extra quote character, should be fine now.
* fix whitespace
Co-authored-by: larshp <larshp@hotmail.com>