Co-authored-by: Thomas Ergin <Thomas.Ergin@bmw.de>
Co-authored-by: Marc Bernard <59966492+mbtools@users.noreply.github.com>
Co-authored-by: Marc Bernard <marc@marcbernardtools.com>
Co-authored-by: abaplint[bot] <24845621+abaplint[bot]@users.noreply.github.com>
Co-authored-by: Lars Hvam <larshp@hotmail.com>
Co-authored-by: Christian Günter <christianguenter@googlemail.com>
Co-authored-by: Marc Bernard <59966492+mbtools@users.noreply.github.com>
Co-authored-by: abaplint[bot] <24845621+abaplint[bot]@users.noreply.github.com>
Co-authored-by: Marc Bernard <59966492+mbtools@users.noreply.github.com>
Co-authored-by: larshp <larshp@users.noreply.github.com>
Co-authored-by: Marc Bernard <59966492+mbtools@users.noreply.github.com>
Co-authored-by: Lars Hvam <larshp@hotmail.com>
Co-authored-by: abaplint[bot] <24845621+abaplint[bot]@users.noreply.github.com>
Co-authored-by: Marc Bernard <59966492+mbtools@users.noreply.github.com>
* 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.
* Fix data elem type ref to class in same repository
* simpler solution by testing refkind and reftype
Co-authored-by: sandraros <sandra.rossi@gmail.com>
Co-authored-by: Marc Bernard <59966492+mbtools@users.noreply.github.com>
* Fix proposal for issue #5347: added support for 'TYPE REF TO DATA' DDIC data elements as components in DDIC structures
* Fix proposal for issue #5347. Added support for 'REF TO DATA' DTEL DDIC element residing in DDIC structure
* Fix proposal for issue #5347, added support for 'TYPE REF TO DATA' DDIC data element residing in DDIC data structurees
* REF TO DATA for DDIC element support (#5347)
* No error if ddic type has warning (abapGit#5361) during import
* Update zcl_abapgit_objects_activation.clas.abap
* Fix for (abapGit#5361). Warnings during DDIC objects activation shouldn't be considered as error but will be shown as 'yellow' messages after activation
* Fix for (#5361).
Warnings during DDIC objects activation shouldn't be considered as error but will be shown as 'yellow' messages after activation
Co-authored-by: Lars Hvam <larshp@hotmail.com>
In some systems, function modules RS_GET_ALL_INCLUDES returns an include *T00. Where *T00 include is not returned, abapGit adds to the internal table. This results in different sorting order in different systems. Sort to keep the same order.
- Eliminate flashing of progress bar during deserialize
- Updated description for deserialize steps
- Add steps to log (see below)
Co-authored-by: Lars Hvam <larshp@hotmail.com>
* TABL: Properly show inactive objects
Current `is_active` check is insufficient for DDIC objects and can't detect "new" or "partically active" objects.
Introduces a new `is_active_ddic` method in `zcl_abapgit_objects_super` which should be used by all DDIC types (follow-up).
Ref #5294
* Update zcl_abapgit_objects.clas.abap
* Update
- Allow for radio options to be arranged in column (instead of side-by-side)
- Render maxlength for text fields only when provided
Co-authored-by: Lars Hvam <larshp@hotmail.com>
* Initial
* Adjustments
* Router
* Abaplint
* abaplint
* diff between eclipse and vscode
* Multiple Adjustments
* Split Backend And GUI Logic
* Multiple Adjustments
* No Unit Tests
* abaplint
* Rename ZCL_ABAPGIT_REPO_PRE_FILTER to ...TR
* Multiple Adjustments
* Refactor the OVP action links into a toolbar
* abaplint
* Replace BAPI_MSG by STRING
* Rename Pre Filter to Object Filter
* Rename Pre Filter also in abap_transpile.json
* restore from main
* Check if <ls_item>-li_class is filled in Toolbar
* Adj. toolbars and move TR Req to zif_abapgit_popup
* abaplint
* Move ty_trrngtrkor_tt to zif_abapgit_definitions
* abaplint
* Move and rename filter menu entries
Co-authored-by: Lars Hvam <larshp@hotmail.com>
Co-authored-by: IBM <mbox-060-sap-extern-tbom@daimler.com>
Co-authored-by: Marc Bernard <59966492+mbtools@users.noreply.github.com>
* Change icon for user settings
Reduce confusion because of same icon for different settings.
Closes https://github.com/abapGit/abapGit/issues/5088
* Icon
* Update toolbars
Co-authored-by: Lars Hvam <larshp@hotmail.com>
* Avoid double deserialize of text symbols
Text symbols are already deserialized in `ZCL_ABAPGIT_OBJECTS_PROGRAM->DESERIALIZE_TEXTPOOL`.
* remove method
Co-authored-by: Lars Hvam <larshp@hotmail.com>
* UI: Center Popups
GUI popups were showing up all over the screen. On bigger screens, they often display outside the abapGit HTML frame.
With this change, most popups will show nicely centered or close to it (some fine tuning might still be required).
Notes:
- Some popups like the one prompting for a transport request do not allow to influence the screen position.
- Follow-up: Consolidate "Tag Popups" from `ZCL_ABAPGIT_TAG_POPUPS` to `ZCL_ABAPGIT_POPUPS` and adjust accordingly.
* Lint
Co-authored-by: Lars Hvam <larshp@hotmail.com>
When serializing objects in parallel threads, it can happen that there are not sufficient system resources available (free dialog processes). In this case, abapGit can run into error "RFC task <task name> already open". This is caused by reusing the same task name in subsequent tries to serialize an object.
The correction appends a sequential number to the previous task name so each try will result in a unique task name.
Closes#5224.
PS: This does not fix any resource issues but should prevent the error. It will lead to wait situations and longer processing, however.
* Don't include XML when serializing AFF
Avoids output of metadata XML when serialized object contains JSON (ABAP file format).
Preparation for #5126
PS: Contains new and updated unit tests
* Rename is_json_metadata
* CP
Co-authored-by: Lars Hvam <larshp@hotmail.com>
* Adjust diff algorithm
This implements a workaround for the kernel issue when determining diffs (see https://github.com/abapGit/abapGit/issues/4395 for background).
Here's an example of the change.
Before:
After:
* Lint + check
* Add test
* Ignore new tests
Co-authored-by: Lars Hvam <larshp@hotmail.com>
* objects: use provided Transport in deserialization of ENHO+SFPF
I have been working on RFC enabled functions modules for executing
abapGit operations and I found out that transported objects of type ENHO
and SFPF cannot be pulled over my RFC methods because the specified
transport was not used.
This commit simply takes over the approach from other objects where
we already read the transport number.
For SFPF, I had to add "darkmode" which was missing and which is
necessary to avoid any dialogues.
I am not sure if there are other objects with the same problem, so
I might be posting similar patches in future.
* Downport #5199
* Fix indentation
* Always pass transport in SFPF
Co-authored-by: Jakub Filak <jakub.filak@sap.com>
Co-authored-by: Lars Hvam <larshp@hotmail.com>
Co-authored-by: Marc Bernard <59966492+mbtools@users.noreply.github.com>
* Repo, Repo Online, File Status
* Stage Logic
* Adjustments
* abaplint
* abaplint
* abaplint
* diff between eclipse and vscode
* Centralisation and reuse
* Filter at Get Remote Files instead of Set
* Split Backend And GUI Logic
* abaplint
* abaplint
* Filter Unit Tests
* Missing ,
* remove own type for trobj_name
* Multiple Adjustments
* Rename ZCL_ABAPGIT_REPO_PRE_FILTER to ..._TR
* abaplint
* Replace BAPI_MSG by STRING
* Rename Pre Filter to Object Filter
* Rename Pre Filter also in abap_transpile.json
Co-authored-by: Lars Hvam <larshp@hotmail.com>
After #5216
Replaces `zcl_abapgit_default_transport=>get_instance( )->get( )` logic with `iv_transport` for the following object types:
`AMSD, BDEF, DRUL, DTDC, FDT0, FUGR, INTF, PROG, SQSC, SRVB, SRVD, WDCA`
Co-authored-by: Lars Hvam <larshp@hotmail.com>
* Repo View: Improve view with folders
I made some improvements to the folder view:
- Boxed display of path
- Separate links for folders within path
- Remove leading/trailing `/` in folder display
- Better alignment of `..` parent folder
- Fix incorrect HTML since `%26lt;tr%26gt;` was before `%26lt;thead%26gt;`
Ref https://github.com/abapGit/abapGit/pull/5159#issuecomment-976124592
* Update CSS
Co-authored-by: Lars Hvam <larshp@hotmail.com>
Co-authored-by: Christian Günter <christianguenter@googlemail.com>
Adds transport number for `zif_abapgit_object~deserialize` and `zif_abapgit_object~delete` to pass the transport number to the object classes.
Co-authored-by: Lars Hvam <larshp@hotmail.com>
There are scenarios where you want to serialize objects differently than abapGit. This exit is called at the end of the serialize process and gives an opportunity to change the content of the serialzed files.
One such scenario would be to automatically pretty-print code. This can be achieved by looping over all `.abap` files and processing them accordingly in this exit.
Closes#5050
Co-authored-by: Lars Hvam <larshp@hotmail.com>
* performance optimization parallel mode
in parallel mode a new session is created for each object to be serialized. method IS_TYPE_SUPPORTED is called in each new session with only one object type. however all objects are loaded via method SUPPORTED_LIST. this change implements a specific cache for method IS_TYPE_SUPPORTED.
* Update src/objects/zcl_abapgit_objects.clas.abap
Co-authored-by: Christian Günter <christianguenter@googlemail.com>
* moved type defintion to PRIVATE SECTION
Co-authored-by: Lars Hvam <larshp@hotmail.com>
Co-authored-by: Christian Günter <christianguenter@googlemail.com>
* Refactor: Consolidate front-end classes
There's no need for two "front-end classes". Moves all of ZCL_ABAPGIT_GUI_FUNCTIONS to ZCL_ABAPGIT_FRONTEND_SERVICES. Now all front-end calls are nicely together.
No functional change, some method reordering.
Ref #2510, #5145
* Add missing interface
Co-authored-by: Christian Günter <christianguenter@googlemail.com>
Co-authored-by: Lars Hvam <larshp@hotmail.com>
* Repo view: Set minimum width of status column
As seen in https://github.com/abapGit/abapGit/issues/5178, if the repo view table is very wide, the status column might not wide enough and be wrapped.
Change ensures a minimum width of the column.
* Reduce
Co-authored-by: Lars Hvam <larshp@hotmail.com>
The filenames can become very long, for example, usage of many sub-packages, namespaces, objects like function groups, or BSP/Fiori apps with many sub-objects, or a long paths as starting folder. This can make the repository view very busy or render the output as a very wide table (see #5169, #5178).
This exit allows to adjust the filename according to your own rules.
Here's an example for shortening the display of files for sub-objects:
```abap
METHOD zif_abapgit_exit~adjust_display_filename.
DATA:
lv_path TYPE string,
lv_name TYPE string,
lv_ext1 TYPE string,
lv_ext2 TYPE string.
SPLIT iv_filename AT '.' INTO lv_path lv_name lv_ext1 lv_ext2.
IF lv_ext2 IS INITIAL.
" Main object
rv_filename = iv_filename.
ELSE.
" Sub object
rv_filename = |…{ lv_ext1 }.{ lv_ext2 }|.
ENDIF.
ENDMETHOD.
```
* Commit page: option to hide author fields
The vast majority of time the committer is the same as the author (I assume). This adds an option to hide the author name and email fields on the commit form.
* Update docs
* Update docs
Co-authored-by: Christian Günter <christianguenter@googlemail.com>
* Refactor: Jump to Object Logic
Continue #5114
- Removes jump_adt and jump_se11 from zcl_abapgit_objects_super
- Remove almost all object-specific jump handlers (zif_abapgit_object~jump) since they are covered by GUI Jumper now
* Remove ZCL_ABAPGIT_OBJECT_SICF
* Remove obsolete RS_TOOL_ACCESS
* FUGR
* IATU
* PDXX
* SRVD
* XINX
Co-authored-by: Lars Hvam <larshp@hotmail.com>
Co-authored-by: Christian Günter <christianguenter@googlemail.com>
* Add new methods
directory_create and directory_exis
* clean up whitespace
* normalize whitespace, formatting, comments
* decouple direct usage of cl_gui_frontend_services
* downport + concatenate to string template
* move param to single line
Co-authored-by: Marc Bernard <59966492+mbtools@users.noreply.github.com>
Co-authored-by: Lars Hvam <larshp@hotmail.com>
* Add DRUL and DTDC to mass activation
DDIC mass activation supports Dependency Rules (DRUL) and Dynamic Cache (DTDC) object
* Len
* Update abap_transpile.json
* Make exceptions compatible with 702
702 does not deserialize exception classes correctly that have a constructor in a super class (see #1273). Adding an explicit constructor that calls the super-constructor, the issue is avoided.
* Pretty
Co-authored-by: Lars Hvam <larshp@hotmail.com>
* Adjust syntax highlighter output
Minor adjustment to output of syntax highlighter. There's no need to escape quotes, so `e_html_text` is sufficient.
PS: Change will make implementing "Highlight parts where a changed line is changed" a bit easier (#2804)
* Adjust tests
* Update abap_transpile.json
* Update test case
* Revert
Co-authored-by: Lars Hvam <larshp@hotmail.com>
* Exclude package from AJSON mirror
Just copy `z*` objects which keeps `package.devc.xml`
* Update package.devc.xml
Co-authored-by: Lars Hvam <larshp@hotmail.com>
* add feature: create new branch for commit
* add clarifying comments
* add check for empty branch name
* remove check box, add condense to new branch name
* add duplicate check for branch name
Co-authored-by: Marc Bernard <59966492+mbtools@users.noreply.github.com>
Use hotkey activation logic also for link hints. Previously it was possble to activate link hints on some input fields (e.g. search on stage page). This is now fixed.
Co-authored-by: Lars Hvam <larshp@hotmail.com>
Activates buffer mode for menus (same logic as in function BMENU_CREATE_TREE).
Closes#5077
Co-authored-by: Alexander Tsybulsky <sbcgua@users.noreply.github.com>
* Refactor: Jump to Object Logic
The goal is to greatly simplify the code to jump to an object, and to separate UI and object layers some more.
This PR introduces GUI Jumper (`zcl/if_abapgit_gui_jumper`), which covers all generic options to show an object. It tries the following options in order:
- ADT (if enabled)
- Workbench with line number
- Workbench without line number
- Transport System (new)
Only if all fail, abapGit will call the object-specific handler.
Next steps:
- Remove `jump_adt` and `jump_se11` from `zcl_abapgit_objects_super` and replace by GUI Jumper
- Remove almost all object-specific jump handler since they are covered by GUI Jumper now
* Add class
* Lint
* Misleading name
* UI: Sticky Top
With this change, the top bar will become sticky. Meaning, it remains on the top of the page when scrolling down.
It's CSS + JS since IE does not support the "sticky" CSS feature.
There's a bit of a "wiggle" when scrolling begins and alignment is not the best on the diff page (which has full width). Maybe some of you CSS wizards can figure these things out.
Closes#5035
* Upload with LF + UTF8
* Remove todo
- already includes changes of 5083
Co-authored-by: Christian Günter <christianguenter@googlemail.com>
Co-authored-by: Lars Hvam <larshp@hotmail.com>
* wip, unit testing
* refactor popup
* update abaplint
* transpile additional classes
* all data classes
* all git
* update
* fix
* change type
* all gui
* all http
* ZCL_ABAPGIT_USER_RECORD
* all zlib
* all exceptions
* all xml
* all html
* all html zif
* all gui zif
* all xml zif
* all repo zif
* more generic
* star
* zif_abapgit_longtexts
* sort
* zcl_abapgit_news
* zcl_abapgit_adt_link
* ZCL_ABAPGIT_DIFF
* more
* add zcl_abapgit_services_git
* Commit Page: Repo Header and Summary
- Added repo header back
- Changed summary as suggested by @sbcgua
- Adjusted display of details accordingly
* Remove var
* Revert color on details
Co-authored-by: Lars Hvam <larshp@hotmail.com>
* New hotkeys for remote settings page
* Enable hotkeys for non-input fields
* Prioritize link hint activation key over hotkey
* cleanup
* resolve 2
* resolve 3
Co-authored-by: Marc Bernard <59966492+mbtools@users.noreply.github.com>
* better multilang class tpool handling
* dont save lang list on empty clas docu
Co-authored-by: Marc Bernard <59966492+mbtools@users.noreply.github.com>
Co-authored-by: Lars Hvam <larshp@hotmail.com>
* Diff and Patch Pages Update
- Fix refresh of a single file on diff page (it was displaying all diffs afterwards)
- Add some hotkey assignments
- Replace "Refresh" after filename with icon
normal:
hover:
* Local refresh on patch page
* Update zcl_abapgit_gui_page_patch.clas.abap
* Patch page: Add js for refresh all hotkey
Co-authored-by: Christian Günter <christianguenter@googlemail.com>
* Commit Page Update
Here's the redesigned commit page moving to the HTML forms you know form other dialogs (goes together with #5047 for best look).
New features:
- check of mandatory entries
- validation of email address format
- link to docs (t.b..d.)
- summary of changes on top, list of changed filed on bottom
- placeholder for body
Closes#5029
* rm > remove
* Create guide-stage-commit.md
* Add files via upload
* Update guide-stage-commit.md
* Delete commit_done.png
* Add files via upload
* Update guide-moving-package.md
* Add files via upload
* Add files via upload
* Update zcl_abapgit_gui_page_patch.clas.xml
* Update zcl_abapgit_gui_page_stage.clas.xml
* Update zcl_abapgit_gui_page_merge.clas.xml
* Update zcl_abapgit_gui_page_commit.clas.xml
* Update zcl_abapgit_gui_page_code_insp.clas.xml
Co-authored-by: Lars Hvam <larshp@hotmail.com>
* Enhance diff class
- Refactor `zcl_abapgit_diff` to use `RS_CMP_COMPUTE_DELTA` instead of `SVRS_COMPUTE_DELTA_REPS` (needs less code in abapGit)
- Replace `abaptxt_255` with `rswsourcet` which removes 255 character per line limit. Now diffs on long lines are calculated properly.
- Add "ignore indent", "ignore comments", and "ignore case" options. These correspond to the options for the Split Screen Editor in SAP GUI and work the same way. The options are *not* exposed to the UI yet.
Same functionality, same performance.
* Lint
Co-authored-by: Lars Hvam <larshp@hotmail.com>
* Refactor serializer class
- Consolidate i18n parameters
- Move determination of translation languages into serializer class
- Pass translation language setting when parallel processing (was a bug)
* Lint
* Add unit tests
Co-authored-by: Lars Hvam <larshp@hotmail.com>
* CSS adjustments
I made a few small CSS adjustments to make things a bit more consistent
- Repo overview: Adjust hightlight for current row
- Repo: Add background color to table header to match staging
- Repo: Fix hightlight for current row
- Staging: Slight color and table border adjustments
- Forms: Slight color adjustments for textarea placeholder
- DB Utility: Add hightlight for current row
* Update to dark theme
Co-authored-by: Lars Hvam <larshp@hotmail.com>
This measures the time it takes in the backend to prepare the HTML page. Result is shown when hovering over abapGit logo in the page footer.
Co-authored-by: Lars Hvam <larshp@hotmail.com>
* Diff-page: Enable refresh functions
* cleanup
* Diff: add refresh local hotkey
* Rename 'Refresh' to 'Refresh All'
Co-authored-by: Alexander Tsybulsky <sbcgua@users.noreply.github.com>
Co-authored-by: Lars Hvam <larshp@hotmail.com>
Co-authored-by: Marc Bernard <59966492+mbtools@users.noreply.github.com>
Co-authored-by: Frederik Hudák <frederik.hudak@sap.com>
* sci result at stage and commit pages
* improvements
Co-authored-by: Lars Hvam <larshp@hotmail.com>
Co-authored-by: Christian Günter <christianguenter@googlemail.com>
* SXCI: Inactive classic BAdIs
Implements a workaround since SAP does not show inactive classic BAdIs properly (missing entry in table `dwinactive`).
* Update zcl_abapgit_object_sxci.clas.abap
* Update src/objects/zcl_abapgit_object_sxci.clas.abap
Co-authored-by: abaplint[bot] <24845621+abaplint[bot]@users.noreply.github.com>
* Change by
Co-authored-by: abaplint[bot] <24845621+abaplint[bot]@users.noreply.github.com>
Co-authored-by: Lars Hvam <larshp@hotmail.com>
* Change Package Assignment
Previously, if an object was assigned to another package (but not changed otherwise), AG would delete and re-create the object. This was also visible in the "Selective Pull" popups:
The new process is smarter and detects such changes. It re-assigns the package (via a TADIR change) and avoids dropping and re-creating. The package overwrite popup is also avoided (it will still appear if the object itself was changed, too):
* Better icon
* Add unit test
Co-authored-by: Lars Hvam <larshp@hotmail.com>
Co-authored-by: Alexander Tsybulsky <sbcgua@users.noreply.github.com>
* XSLT: Add late activation
In case a transformation depends on other objects like a class, the transformation will not activate if it's deserialized before the dependent objects.
This change adds the transformation to the late activation step.
* lint
Co-authored-by: abaplint[bot] <24845621+abaplint[bot]@users.noreply.github.com>
Co-authored-by: abaplint[bot] <24845621+abaplint[bot]@users.noreply.github.com>
Co-authored-by: Lars Hvam <larshp@hotmail.com>
* Fix dump during "New Online"
I accidentally used a copied link `sapevent:url?url=https://github.com/abapGit-tests/TABL` into the "New Online" diaplog. AG would dump in this case.
Now you get a proper error message.
* Strip leading/trailing spaces for URLs
* Add
* Update
Co-authored-by: Lars Hvam <larshp@hotmail.com>
Co-authored-by: g-back <27279305+g-back@users.noreply.github.com>
- Removed "class analysis logic" from hotkey collection
- Hotkeys are now registered directly in the hotkey controller (similar to asset manager)
- `zif_abapgit_hotkeys->get_hotkey_actions` was changed to instance method and can therefore be redefined in subclasses
- Renamed the controller class to match the interface name
Co-authored-by: Christian Günter <christianguenter@googlemail.com>
Co-authored-by: Lars Hvam <larshp@hotmail.com>
In dynpro screen, when a field is referring to a data element and text is taken from dictionary, no need to serialize the text as it is always taken from dictionary. If the text is included then it will show unnecessary diffs when data element text changes.
Co-authored-by: Marc Bernard <59966492+mbtools@users.noreply.github.com>
Co-authored-by: Lars Hvam <larshp@hotmail.com>
* ENHO: Split code into separate files
Similarly to class enhancements where enhanced methods are stored as individual files, this change separates the code for implicit enhancements (type `HOOK_IMPL`) into abap-files.
This makes the code more readable (instead of being embedded and escaped into XML) and allows for linting.
* Switch to filenames with hash
* CI
* Filenames in XML
* Lint
Co-authored-by: Lars Hvam <larshp@hotmail.com>
* CLEAR dd05m-leng
In S/4HANA system some of the data element lengths changed. Example: MATNR length changed from 18 characters to 40 characters. It would show as diff when this repo is pulled into S/4HANA. dd05m-leng is for information only hence, cleared it to avoid diffs.
* Replace tab with space
Co-authored-by: abaplint[bot] <24845621+abaplint[bot]@users.noreply.github.com>
* Replace tab with 6 spaces
Co-authored-by: abaplint[bot] <24845621+abaplint[bot]@users.noreply.github.com>
Co-authored-by: Lars Hvam <larshp@hotmail.com>
* Post-processing option for custom class serializer
When using the current exit for serializing classes, you have to code the complete serialization yourself (i.e. reading and formatting the code).
https://docs.abapgit.org/ref-exits.html#custom_serialize_abap_clif
With this change, you get the option to let abapGit serialize the class first and then post-process the source in the exit. The change is compatible with existing implementations of the exit.
To use the post-processing option, add the following code to the beginning of the exit:
```abap
IF it_source IS INITIAL.
RETURN.
ENDIF.
```
* Update ref-exits.md
Co-authored-by: Lars Hvam <larshp@hotmail.com>
* Naming of class constants
This is in preparation of enforcing a naming convention for constants in classes/interfaces. At the end, the following lint rule shall be set:
```json
"class_attribute_names": {
"constants": "^C_.+$",
...
},
```
After this, the only remaining constants not following this rule are in `zcl_abapgit_version`.
* Update zif_abapgit_dot_abapgit.intf.abap
* Update zcl_abapgit_gui_chunk_lib.clas.abap
* Update zcl_abapgit_gui_router.clas.abap
Co-authored-by: Lars Hvam <larshp@hotmail.com>
* SRFC: Improvements
- Check if `SRFC` is supported in `constructor`. This will ensure proper error handling (closes#4899). Note: Using the constructor is how it should be checked for other object types as well.
- Added `changed_by` logic
- Simplified catch code
* SRFC: Improvements
* SRFC: Improvements
* Update message
* Raise
Co-authored-by: Lars Hvam <larshp@hotmail.com>
* DDLS: Fix dump in lower releases
- Add requirements check to constructor
- Prevent delete call in case object does not exist
Ref #4899
* Update message
Co-authored-by: Lars Hvam <larshp@hotmail.com>
* Improvements for Objects Class
This introduces a new `is_type_supported` method for `zcl_abapgit_objects` which is about 30x faster than the current `is_supported` method.
`is_type_supported` is used in the other methods like `changed_by` and `exists` to avoid instanciating or calling the object class unnecessarily. It won't be necessary to check for support before using these methods which will alllow simplifying the calling programs (separate PR).
There are also some new test cases for `is_type_supported` and for serializing a commom interface.
* No user id for unsupported objects
Co-authored-by: Lars Hvam <larshp@hotmail.com>
* Filter code inspection/syntax check
In case of generated maintenance screens, the code inspection/syntax check include findings in SAP code (`LSVIM*` includes). This change removes those findings.
* Update zcl_abapgit_code_inspector.clas.abap
* Add "Last changed by" to repo page
Proposition for #3267
* Add "Last changed by" to repo page
For #3267
- add "Changed by" also for local items
Co-authored-by: Lars Hvam <larshp@hotmail.com>
SAP GUI for Java 7.70 has trailing null values in postdata (if data >256 characters). This is a bug that SAP will have to fix.
As a workaround, abapGit will strip the trailing null values. The workaround shall be removed 2022-12-31 latest.
Closes#4832
Co-authored-by: Lars Hvam <larshp@hotmail.com>
* Add icon link for changing remote repo on the list
Proposition for #4737
* Add icon link for changing remote repo on the list
- corrections for PR #4907
- fixed syntax
* Update zcl_abapgit_gui_page_repo_over.clas.abap
Co-authored-by: Lars Hvam <larshp@hotmail.com>
Co-authored-by: Marc Bernard <59966492+mbtools@users.noreply.github.com>
Clarify error and resolution options in case subpackage already exists in system but is not included in pack hierarchy of repo root package.
Closes#4904