* DOCV: Fix dump for namespaced documents
Fix handing of documents in classes UO and UP which use a different namespace logic than DT, IN, MO.
Regression #5756Closes#5854
* Doc classes
* Fix "Unexpected package naming" error
Previously, when an object existed in the repo and locally but was *not* included in the package hierarchy of the repository, you would get the following error (when opening the repo):
...
With this PR, log messages will list all objects that are not included in the package hierarchy. When pulling, the popup will show these objects and ask for confirmation to overwrite. I added an icon and description to the "package overwrite" popup similar to the "object selection" popup.
Closes#5728
* Update unit tests
Co-authored-by: Lars Hvam <larshp@hotmail.com>
* Fix syntax highlight for xml and html
The parsing was not correct if an xml/html attribute value contains one or more `=` sign.
Before:
After:
* Unit test
* Update zcl_abapgit_object_drul.clas.abap
Use in class ZCL_ABAPGIT_OBJECT_DRUL the more generic type CL_BLUE_SOURCE_OBJECT_DATA instead of CL_DRUL_WB_OBJECT_DATA
* Update zcl_abapgit_object_drul.clas.abap
Use in class ZCL_ABAPGIT_OBJECT_DRUL the more generic, similar type CL_BLUE_SOURCE_OBJECT_DATA instead of CL_DRUL_WB_OBJECT_DATA
* CLAS,ENHO: Fix inactive enhancements
When pulling a change to an existing class, existing enhancement where inactivated and the enhancement code deleted.
This was caused by unnecessarily calling `CALL FUNCTION 'SEO_CLASS_CREATE_COMPLETE'` in `zcl_abapgit_oo_class->create`, twice.
The change avoids the second call if the class properties and attributes have *not* been changed. Interfaces are handled the same way.
Tested with CI tests for classes and interfaces:
Closes#5809
* Clear
Co-authored-by: Lars Hvam <larshp@hotmail.com>
* improvements in abapgit_html
* linter fix
* repo over code styling
* repo overview refactoring part 1
* move universal cod to chunks
* cleanup new code temporarily
* more clean ups
* ui_component register_hotkeys helper
* move relevant hotkeys to repo overview
* forgotten part
* move event handling to repo over
* reuse td
* move render_repo_url to chunks
* minor
* linter fix
* new > create
Co-authored-by: Lars Hvam <larshp@hotmail.com>
Co-authored-by: Marc Bernard <59966492+mbtools@users.noreply.github.com>
* improvements in abapgit_html
* linter fix
* Try to workaround transpiler bug
* exclude uts from transpiler
* new -> create
Co-authored-by: Marc Bernard <59966492+mbtools@users.noreply.github.com>
* Fix failing unit test for SAP_BASIS SP00
before this fix ls_requirement-min_patch gets negative for SP00 and therefore failing
* fix linter
Co-authored-by: Marc Bernard <59966492+mbtools@users.noreply.github.com>
After #5786, Ref #5774
Serialize and deserialize documentation of function group, function modules, and parameters.
Test case:
https://github.com/abapGit-tests/FUGR_docu
Co-authored-by: Lars Hvam <larshp@hotmail.com>
* serialization
* full sotr class serialization
* nw 7.02 compatibility
* ensure consistent order
* Second attempt to stage support for CLAS and INTF
Second attempt to stage support for CLAS and INTF, first attempt did not have changes
* Pretty printed
* Lint compliance part 1
* Lint compliance part 2
* code review remediation plus one bugfix
includes one bugfix - do not write entries in <DOCU_CAT> if there are no lines of text
* Update src/objects/zcl_abapgit_objects_program.clas.abap
Co-authored-by: Lars Hvam <larshp@hotmail.com>
* Switch to new method
Co-authored-by: Lars Hvam <larshp@hotmail.com>
Co-authored-by: Marc Bernard <59966492+mbtools@users.noreply.github.com>
Co-authored-by: Marc Bernard <marc@marcbernardtools.com>
* CLAS: Fix pull for deleted interface methods
In case an interface method was deleted, pulling a class that had implemented such method would not delete the implementation. This resulted in a diff and manual effort to remove the method (or repair the class).
The fix will compare the implemented methods and trigger the repair if necessary.
Closes#5578
* Update zcl_abapgit_oo_class.clas.abap
* return all includes
Co-authored-by: Lars Hvam <larshp@hotmail.com>
* Delete obsolete longtexts on pull
Longtexts that exist in the system but not in the remote repository are deleted when pulling.
Closes#5202
* Refactor
* Constant
Co-authored-by: Lars Hvam <larshp@hotmail.com>
* Fix unit test for user persistence
Test fails if no repo exists with key `REPO/000000000001`
* Use existing constants
* Update src/persist/zcl_abapgit_persistence_user.clas.testclasses.abap
Co-authored-by: abaplint[bot] <24845621+abaplint[bot]@users.noreply.github.com>
Co-authored-by: Lars Hvam <larshp@hotmail.com>
Co-authored-by: abaplint[bot] <24845621+abaplint[bot]@users.noreply.github.com>
* Fix dump when deleting repo with DB utility
Ref #5612
- Avoid dump when manually deleting entries with DB Utility
- Avoid inconsistency when deleting repo entry but not repo checksums
- Improve warning popup and error message
* Fix warning
Co-authored-by: Lars Hvam <larshp@hotmail.com>
* 1st version of abapGit - SOBJ serializer
- added class 1st version of zcl_abapgit_object_sobj
- pending more testing
* refactoring to comply with abapGit conventions
* downporting to 7.02
* refactoring as abaplint suggests
'data' keyword in cappital letters
* more abaplint fixing
* changes for PR merging
- changed ABAP class title
- deleted commented code
* changes for PR merging (2)
- fixing abaplint
Co-authored-by: Marc Bernard <59966492+mbtools@users.noreply.github.com>
Co-authored-by: Lars Hvam <larshp@hotmail.com>
* fixed "Add via Transport" short keys
* replace trobj_name with TYPE C LENTH 120
* Pretty Printer (VALUE uppercase)
* add skip
* add skip
* removed pretty printer comments
* running
* Replace with dtel
Works should SAP change the max key length
* Replace dtel
For abaplint
Co-authored-by: Lars Hvam <larshp@hotmail.com>
Co-authored-by: Marc Bernard <59966492+mbtools@users.noreply.github.com>
If a sub-package is removed from the package hierarchy, instead of an exception, abapGit now shows a detailed warning message in the log.
This allows to remedy the situation either by adding the sub-package to the package hierarchy or by removing the sub-package from the repository (via push).
* [AFF] Get data for serialization from the DB
This is definitely not 7.02 syntax.
Contributes to #5658
* is this 7.02 syntax?
* WIP: inlide data declaration
* declare locale variable FIELD-SYMBOL
* multiple statements -> line break; local variable
* one more FIELD0-SYMBOL
* fix redundant `this`
* WIP: streamline data types
* WIP: streamline data types and typos
* add const to abaplint config
* rm commended code line
* add const to abaplint config
* WIP: SELECT follows 7.02 syntax
* space before dot
* WIP: SELECT 7.02
* linter constants
* WIP: finish SELECT 7.02
* Update src/objects/zcl_abapgit_object_intf.clas.locals_imp.abap
Co-authored-by: abaplint[bot] <24845621+abaplint[bot]@users.noreply.github.com>
* add ci/abaplint CONST
* more CONST to ci/abaplint
Co-authored-by: abaplint[bot] <24845621+abaplint[bot]@users.noreply.github.com>
* Skipping serialization for ignored objects
Serialization now evaluates the ignore list and skips matching objects. Note: The match is using the ABAP `cp` operator.
Example:
```
*ztest.prog.* Ignore individual program
*.ectd.* Ignore all objects of a given type
*/subpack/* Ignore all objects in a sub-package
```
Renames methods after changing to interface. Interface methods are now properly named `<interface>~<method>` (instead of `<alias>`). This also fixes warnings and navigation issues in `SE24/SE80`.
* [AFF] Add the types for INTF manually
* Add the types
* [AFF] JSON handler based on AJSON: deserialize
Minimal example in UT.
UT is RED, since AJSON does not yet match the ST behavior
// the change might be cherry-picked when AFF types are provided in abapGit
* Revert "[AFF] JSON handler based on AJSON: deserialize"
This reverts commit 149d2a86c3.
* Update zif_abapgit_aff_intf_v1.intf.xml
* Update zif_abapgit_aff_oo_types_v1.intf.xml
* Update zif_abapgit_aff_types_v1.intf.xml
* BOM
* Update zif_abapgit_aff_oo_types_v1.intf.xml
* Update zif_abapgit_aff_types_v1.intf.xml
* [abaplint] skip folder aff_types
* Revert "[abaplint] skip folder aff_types"
This reverts commit f63b601a3d.
* [abaplint] exclude aff_types for unused check
* mv AFF types to src/objects/aff_types
* Update zif_abapgit_aff_oo_types_v1.intf.xml
* Update zif_abapgit_aff_types_v1.intf.xml
Co-authored-by: Lars Hvam <larshp@hotmail.com>
* Support direct longtexts in exceptions
as opposed to already supported indirect T100-based longtexts
* Lint
* Remove direct longtext variable support
* Add unit tests for exception longtext
* Add longtext message to language mismatch error
* Fix missing preserve_newline handling
* Adjust longtext display in error message box
- Convert newlines to html line breaks
- Indicate if a longtext is available on hover
* Fix duplicate preserve newline handling
* Adjust exception longtext rendering
Render linebreaks as html paragraphs
* Align error message box buttons to bottom right
so they do not move on hover when a longtext is available
* Refactor exception unit tests
* Skip failing transpiled tests
* Adjust longtext indicator for error message
Co-authored-by: Marc Bernard <59966492+mbtools@users.noreply.github.com>
Co-authored-by: Lars Hvam <larshp@hotmail.com>
* Small git utils improvements
- Saves ~20ms per call of `length_uft8_hex`
- Improve test coverage
* Update test
* Update abap_transpile.json
* no skip, fixed
* Update test
* Update abap_transpile.json
* update
Co-authored-by: Lars Hvam <larshp@hotmail.com>
After all OTR usage has been removed, uninstall will now also delete the TADIR entry for SOTR. This is necessary in order to delete the corresponding package.
* Add exposure to workflow class attributes
* Add constant seoc_state_implemented to abaplint
* Also add seoc_state_implemented to ci/abaplint
Co-authored-by: Marc Bernard <59966492+mbtools@users.noreply.github.com>
Co-authored-by: Lars Hvam <larshp@hotmail.com>
* Refactor: Create Tag
Replaces the old style page with a nice HTML form for creating a new tag.
* Update validation
* Allow empty comment and tagger
Co-authored-by: Lars Hvam <larshp@hotmail.com>
* exclude technical language from DOMA
* exclude technical language from DTEL
* exclude technical language from TABL
* exclude technical language from CLAS
* exclude technical language from PROG
* exclude technical language from INTF
* fix abaplint issue: Place pragma at end of statem.
Co-authored-by: Marc Bernard <59966492+mbtools@users.noreply.github.com>
- Move `is_active` from `zcl_abapgit_objects_super` to `zcl_abapgit_objects_activation`
- Consolidate `is_ddic_type` logic
- Add unit tests for `zcl_abapgit_objects_activation`
Package is now required for CLAS deletion for RS_CORR_INSERT but was not correctly determined for object deletions because of different field names when using MOVE-CORRESPONDING and another missing assignment.
Co-authored-by: Marc Bernard <59966492+mbtools@users.noreply.github.com>
* fix: exclude Translation Object Detective language
Excludes Translation Object Detective language from serialization
Provides a solution for object type MSAG in issue #5595
* fix: Contains non 7 bit ascii character
* fix: exclude also Pseudo Translation
* refactoring based on the PR suggestion
* fix abaplint issues
* fix further abaplint issues
* Refactor: Commit list popup
- Move popup for selecting a commit to `zcl_abapgit_popup`
- Allow to skip sorting of commits in `zcl_abapgit_git_commit` which often led to "too many commits" error (on GitHub you get the 300 most recent commits)
Popup will be used in `zcl_abapgit_gui_page_sett_remo` and `zcl_abapgit_gui_page_tags` (separate PR)
* Fix test classes
* Replace popup in remote settings
* Remove type
Co-authored-by: Lars Hvam <larshp@hotmail.com>
* Fix dump for repos using data tables
Fixes dump in `zcl_abapgit_data_util` in case the data table does not exist yet.
* Method
Co-authored-by: Lars Hvam <larshp@hotmail.com>
* Data import: fix dump ITAB_DUPLICATE_KEY
System dumps during serialization of customizing table comprizing of include structures. Example: WCFC_GIL_COMPROP.
* Fix error "Object type TABU is not supported"
* Fix date format incorrect during serialization
* Fix /data/ serialization package issue
* Commit table content after deserialization
* Cleaning some code
* Rollback code change concerning /data/ folder
Doesn't seem to be necessary in the end...
* Renamed variable <tab> to <lt_tab>
* Fix ASSERTION_FAILED table content deserialization
Issue https://github.com/abapGit/abapGit/issues/5585
Co-authored-by: Lars Hvam <larshp@hotmail.com>
In case an objects originates from a different system (`<> sy-sysid`), an icon will be shown after the object. On hover, you can see the id of the original system.
Closes https://github.com/abapGit/abapGit/issues/3865
abapGit should support systems without SAP_BW component. Therefore, references to BW data types have to be replaced by generic types and BW classes have to be replaced by dynamic calls.
Follow-up to #5556Closes#5565
It's not possible to import local apps into transportable packages or vice versa. The check raises corresponding error messages (and avoids a slew of cryptic errors you would get otherwise).
Co-authored-by: Lars Hvam <larshp@hotmail.com>
* Improve error message for language mismatch
* refactor
* refactor
Co-authored-by: Marc Bernard <59966492+mbtools@users.noreply.github.com>
Co-authored-by: Lars Hvam <larshp@hotmail.com>
In certain cases, the default transport set by abapGit does not work and there's no API to pass the transport for the object type. Therefore, we need to set the transport via ABAP memory (similar to setting the default package).
Co-authored-by: Lars Hvam <larshp@hotmail.com>
* DDIC: Improve active/inactive check
Use `is_active_ddic` (function `DDIF_STATE_GET`) for all DDIC object types. This is more accurate than the current method (function `RS_INACTIVE_OBJECTS_WARNING`) since it detects newly created but not active objects as well.
* Fix const
* Remove "no active version" error
* Update comment
Co-authored-by: Lars Hvam <larshp@hotmail.com>
`cl_enh_composite` already handles OTR shorttext and there's no need to use `zcl_abapgit_sotr_handler`.
Update test case:
https://github.com/abapGit-tests/ENHC
Co-authored-by: Lars Hvam <larshp@hotmail.com>
When the "Activation Popup" is turned off in "Personal Settings", any errors during activation will lead to "Activation cancelled. Check the inactive objects" which is not very helpful.
The change will add the errors to the abapGit log.
It will also handle the special case when activation of includes leads to error "Include is used in multiple main programs" (EU 404). In such case, you can turn on the activation popup and repeat the abapGit process successfully.
Co-authored-by: Lars Hvam <larshp@hotmail.com>
* Fix commit message encoding
- Properly encode % and & symbols
- Add unit test for special characters
Closes https://github.com/abapGit/abapGit/issues/2448
* Exclude testclass
* Comment
* update to 2.0.17
* update to 2.0.18
Co-authored-by: Lars Hvam <larshp@hotmail.com>
- Add documentation for Web Dynpro component and controllers
- Fix diffs of view components due to missing sort
- Updated https://github.com/abapGit-tests/WDYN
Co-authored-by: Lars Hvam <larshp@hotmail.com>
* Add get_switched_origin to repo_online
* Add onclick action for radiobuttons
* Refactor remote settings to allow for direct input
without using value helps
* Adjust branch overview error message
Inform the user about the possibility of changing HEAD directly without using the value help (that failed to show up).
* Fix hidden form fields taking up vertical space
* Add min/max restriction to commit field
on remote settings page
* Implement basic validation for commit id
on remote settings page
* Load previous branch/tag when PR is selected
in remote settings page to be able to switch back to it more easily
* Use current form data in PR and tag selection
on remote settings page, where possible. Otherwise check the form values are the same as the repo instance values.
* Fix issue when changing URL and switching from PR
at the same time
* Remove repo dependency in PR enumerator
to be able to list PRs for the current url on the repo remote settings page
* Update zcl_abapgit_branch_overview.clas.abap
Co-authored-by: Marc Bernard <59966492+mbtools@users.noreply.github.com>
Uninstalling objects like `ENHC` just removes their references to OTR entries (`sotr_use/u` tables). Therefore, when the package is uninstalled, the remaining OTR entries will be completely removed.
Co-authored-by: Lars Hvam <larshp@hotmail.com>
* Properly ignore files during deserialize
Closes#5426
This moves the ignore logic from `zcl_abapgit_files_status->prepare_remote` to an option of `zcl_abapgit_repo->get_files_remote`. Deserialize can then ignore the files already when getting them via `get_files_remote`.
PS: Required for https://github.com/exercism/abap/pull/82
* Update zcl_abapgit_repo.clas.abap
* Update zcl_abapgit_repo.clas.abap
Co-authored-by: Lars Hvam <larshp@hotmail.com>
Co-authored-by: Christian Günter <christianguenter@googlemail.com>
* Add zcl_abapgit_rule and zif_abapgit_rule
* Insert clear and fill logic
* Pass rule to the generic serializer in IWSG class
* Remove extra space
* Remove inline declaration
* Format the code
* Replace CHECK with IF
* Rename class/interface
* Multiple changes
Rename method name
Change method signature
Remove clear field
* loop over all fields of given fields
* Align method call parameters
* Remove class reference for member
* Use string template to convert to type
Co-authored-by: Lars Hvam <larshp@hotmail.com>
Co-authored-by: Marc Bernard <59966492+mbtools@users.noreply.github.com>
* Allow different user/password per repository
Clear auth buffer to allow different user/password per repository in background mode
* Uppercase for class name
Co-authored-by: Marc Bernard <59966492+mbtools@users.noreply.github.com>
Starting with ABAP Platform 2208 DTDC does no longer have an own workbench data class but instead uses CL_BLUE_SOURCE_OBJECT_DATA directly.
In addition:
The field that carries the ABAP language version changed from ABAP_LANGUAGE_VERSION to ABAP_LANGU_VERSION in ABAP Platform 2208. So to make it work in both releases < and >= ABAP Platform 2208 we have to try to clear both versions of that field.
Co-authored-by: Lars Hvam <larshp@hotmail.com>
Co-authored-by: Marc Bernard <59966492+mbtools@users.noreply.github.com>
* Remove "Tag Overview" popup
- The "Tag > Overview" feature has been removed (because of bad performance and low value)
- The tag select popup has been refactored. The code has been moved to `zcl/if_abapgit_popups`. Only change is that the popup is now centered like the others.
- Therefore, class `zcl_abapgit_tag_popups` has been removed
* Update injectors
* Remove interface
* Secondary key
* Remove "Branch Overview" page
- The "Branch > Overview" feature has been removed (see #5411 for reasoning).
- The merge feature has been refactored into a new HTML page under "Branch > Merge" (#5402)
Closes#5411
* Remove old page
Co-authored-by: Lars Hvam <larshp@hotmail.com>
"Data Config" is persisted on remote side only. Comparison feature reads the local part only and therefore does not support comparing of "data config". Therefore `get_files_remote` is not necessary.
Closes#5189, #5443
Co-authored-by: Lars Hvam <larshp@hotmail.com>
* TABU: Add "jump" to SE16
When using "Data Cofiguration" you can now jump from the repo view to the data browser (`se16`).
* Simplify
Co-authored-by: Lars Hvam <larshp@hotmail.com>
When deserializing SAP packages that do not exist in background, AG will dump with `DYNPRO_SEND_IN_BACKGROUND`. This is caused by a popup asking for the transport.
Fixed by passing the transport to the save method.
Co-authored-by: Lars Hvam <larshp@hotmail.com>
* Improve LXE error handling
Raise exception in case of error messages
* Remove space
Co-authored-by: Lars Hvam <larshp@hotmail.com>
Co-authored-by: Lars Hvam <larshp@hotmail.com>
* DEVC: Raise error for main/structure packages
Main or structure package and cannot be used in local packages (`$...`).
abapGit will now raise an error, if one tries to pull main or structure packages into a local package.
* Split into two messages
* Locally
* Local
Co-authored-by: Lars Hvam <larshp@hotmail.com>
* DOMA: Deletion of domains with append
On newer releases, suppressing the confirmation popup does not work since the parameter has changed.
Added a call using the new parameter.
* No if
Co-authored-by: Lars Hvam <larshp@hotmail.com>
If default transport is set and its type matches to what is required, then use it as default for the transport popup.
This will make it easier for example if a pull or uninstall failed and needs to be repeated since you want to continue using the same transport.
Co-authored-by: Lars Hvam <larshp@hotmail.com>
Change documents left a diff when pulled once that would go away after second pull. In debugging warning CD 763 could be seen "No TADIR entry found'. The `tadir` entry is now created properly.
Uninstall would fail with "Function group ... does not exist". Reason was that the function group was already deleted by `chdo` object. The deletion of such generated function groups is now skipped.
Co-authored-by: Lars Hvam <larshp@hotmail.com>
* Deserialize textpool for some objects
Fixes inserting the textpool for objects that are not handled by `RPY_PROGRAM_INSERT`. This applies for example to function groups and exit includes (`zx...`).
* Fix deserialize_textpool
Co-authored-by: Lars Hvam <larshp@hotmail.com>
CI tests have shown that several object types are not properly recorded in transports. For some objects there was no transport entry when creating the objects, for others when deleting it.
This PR add the necessary calls to `corr_insert()`.
(some SE80 reorders)
Co-authored-by: Lars Hvam <larshp@hotmail.com>
* Check if package name is allowed
When validating SAP packages, it now checks the naming conventions.
* Move method
Co-authored-by: Lars Hvam <larshp@hotmail.com>
* Folder logic "mixed"
Introduces a new folder logic named `mixed` which combines `prefix` and `full`. The root package name will be used as prefix for all sub-packages but the package names are *not* concatenated recursively. This will allow for using significantly logic package names.
Also includes several new unit tests especially for nested packages which had not been tested before.
Closes#5410
Todo: Update docs
* Add constant
* Add options to UI
Co-authored-by: Lars Hvam <larshp@hotmail.com>
Function module WEBI_GET_OBJECT returns several internal tables. Sometimes, the sorting order of these internal tables is different in each system ex: S/4HANA and non-S/4HANA. This fixes#5389.