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: 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: Marc Bernard <59966492+mbtools@users.noreply.github.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: Lars Hvam <larshp@hotmail.com>
Co-authored-by: abaplint[bot] <24845621+abaplint[bot]@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: abaplint[bot] <24845621+abaplint[bot]@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>
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: abaplint[bot] <24845621+abaplint[bot]@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>
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: abaplint[bot] <24845621+abaplint[bot]@users.noreply.github.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: Lars Hvam <larshp@hotmail.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: abaplint[bot] <24845621+abaplint[bot]@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: Marc Bernard <marc@marcbernardtools.com>
Co-authored-by: Marc Bernard <59966492+mbtools@users.noreply.github.com>
Co-authored-by: lars <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>
Co-authored-by: Lars Hvam <larshp@hotmail.com>
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>
* Support Ukraine
This is inspired by some other open source projects. Adds a banner with link to Ukraine Red Cross and switches the abapGit logo to Ukraine flag colors.
* Images
* Logo
* Update README.md
* Add files via upload
* Update README.md
* Delete UA_abapGit.png
* Add files via upload
* Add files via upload
* Update README.md
* Delete UA_abapGit_2022.png
* Add files via upload
* Add files via upload
* Add files via upload
* Update README.md
* Heart
* With logo
* Link
* Link
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>
The changelog is displayed only if the repository contains a class which implements `ZIF_APACK_MANIFEST`, whose constructor initializes the current version in attribute `zif_apack_manifest~descriptor-version`.
* 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
the old get_instance() method in ZCL_ABAPGIT_PERSIST_SETTINGS has been moved to a method in zcl_abapgit_persist_factory, plus interface added. Added to persist injector
add unit test which parses the response from hex, ie. containing a real null value
simplify get_null() method, it only returns 1 character, but 2 characters are calculated
* Auto creation of package during new online
If you create a new online repository and the repo does not contain any SAP package, then abapGit will prompt you for the package attributes and create the package for you. This is, for example, the case when you use an newly created online repo as a starting point.
If the repo does contain a package, then the package will be created automatically when you pull from the repo (as described in [docs](https://docs.abapgit.org/ref-packages.html)).
Closes#4538
* Update docs
Co-authored-by: Lars Hvam <larshp@hotmail.com>
Co-authored-by: Christian Günter <christianguenter@googlemail.com>
* Dialogs: Set autofocus on first form element
Improves usability.
Closes#4816
* Autofocus for commit page
- Works in case JS is not an option
Co-authored-by: Lars Hvam <larshp@hotmail.com>
* Add more shortcuts for main page
* Update zabapgit_css_common.w3mi.data.css
* Update zcl_abapgit_gui_router.clas.abap
* Change keyboard shortcuts
* fix js
* fix js
* deindent
* indentation
* one more
Co-authored-by: Lars Hvam <larshp@hotmail.com>
Co-authored-by: Marc Bernard <59966492+mbtools@users.noreply.github.com>
* Fixed Version BRF+ Integration
* BRF+ serialization
* Fixed obsolete parameters and wrong boolean type
* Fixed some errors and filtered ComponentReleeases
ComponentReleeases in XML Export and Import of BRF+ API can be omitted and works also the same. Next try if I could delete the useless metadata (User, System, etc...) or must leave them empty and fill them manually before deserialization.
* Some little changes
Removed Parameter iv_marked_option for older releases and removed method wb_request_choice. Changed to transport automatically.
Aligned some parameters.
Co-authored-by: Lars Hvam <larshp@hotmail.com>
Co-authored-by: Marc Bernard <59966492+mbtools@users.noreply.github.com>
* Repo overview - cosmetic changes
* extract logic to method
* Update src/ui/zcl_abapgit_gui_page_repo_over.clas.abap
Co-authored-by: abaplint[bot] <24845621+abaplint[bot]@users.noreply.github.com>
* fix if in if
* unshorten remote, move package, improve wrapping
* Add max width for columns
* Mostly working now
* add prefixes
* Remove checkbox, move package where it was
* Keyboard navigation
< > to navigate in list (arrow keys don't seem to trigger), enter to open selected
* Ellipsis for repo url, use css variable
* Fix css, js persistence
* Fix invalid function name
* add back !important to override hover color
* abaplint
* Don't use const in js
* more eslint
* Remove unused field symbol
* eslint
* Bring back repo lock icon, styling improvements
Co-authored-by: Marc Bernard <59966492+mbtools@users.noreply.github.com>
* Focus HTML control on abapGit startup
`cl_gui_control=>set_focus` must be called during PBO. Maybe there's a nicer way to pass the HTML control to the PBO.
* Move to output form
* Set focus
* Add autofocus
* Docs: Add CI description
Moved description from https://github.com/abapGit/CI readme
* Images
* Add json example
* Add link
* Link
* Update ci.md
* Update docs/collections/_development/ci.md
* Update ci.md
Co-authored-by: Lars Hvam <larshp@hotmail.com>
* Offline repo: "Import via RFC" feature
Adds option to **offline** repositories for importing a repo via an RFC connection from another SAP system. It's a shortcut for doing "Export ZIP" in one system, and "Import ZIP" in the other.
Closes#4784
Pre-requisite: abapGit develop version (with this change) is installed on remote SAP system.
Note: The general recommendation is to use **online** repositories and a git server for comparing and synchronizing systems.
* Lint
* Create guide-import-rfc.md
* Langu
* Langu
* Write-protect only
* Compare
* Compare
* Compare
* Compare
* Git
* Update docs/guide-import-rfc.md
Co-authored-by: Lars Hvam <larshp@hotmail.com>
Co-authored-by: Lars Hvam <larshp@hotmail.com>
* Fix use of sy-langu in object serializers
- Replace sy-langu variable with mv_language
- Replace sy-langu type with langu (makes it easier to spot sy-langu)
- Enhance generic serializer to use mv_language
- Add unit tests to generic serializer
- Adjust and simplify serializers that are based on generic class
Closes#2080
* Update scvi+ueno
* Revert scvi
* Langu
* Langu
* Langu
* Langu
* Langu
Co-authored-by: Lars Hvam <larshp@hotmail.com>
* Terminology: Inclusive Language - Part 6
Change remaining variables and switch setting to main_language.
Finally closes#4043
* Add todo
Co-authored-by: Lars Hvam <larshp@hotmail.com>
For local packages, the application component is now stored in AG persistence. This will avoid the diff, if transportable packages are pulled into local packages.
Closes#1880
Checkout commit: Improve error message.
Checking out commits is currently limited to branches with less than 99 commits. If this limit is reached a message appears saying 'No commits are available in this branch.'.
After this commit is applied the error message is 'Cannot find initial commit. Too many commits. Action not possible.'.
* Release serialization resources (fixes#4774)
Release serialization resources to prevent dump #4774 for export of large packages
* Free files after parallelization
* transfer files one by one
* Update src/objects/core/zcl_abapgit_serialize.clas.abap
Co-authored-by: abaplint[bot] <24845621+abaplint[bot]@users.noreply.github.com>
* fix lint, missing fs declaration
* index access on delete lt_found
* Update src/objects/core/zcl_abapgit_serialize.clas.abap
Co-authored-by: abaplint[bot] <24845621+abaplint[bot]@users.noreply.github.com>
* cleanup: index variable not required
* rollback to original APPEND LINES
Co-authored-by: abaplint[bot] <24845621+abaplint[bot]@users.noreply.github.com>
Co-authored-by: Lars Hvam <larshp@hotmail.com>
* Fix menu hover background
In default theme, the background color when hovering over menu items was bearly visible in HTML GUI and not visible at all in Win GUI.
The fix explicitly set the background color so both GUIs look the same.
* Keep subitem highlight
Co-authored-by: Lars Hvam <larshp@hotmail.com>
* Enhance "Force Pull" to become "Selective Pull"
With this PR you can now peform a selective pull. Yay!
- Changes "Force Pull" to show *all* changed objects in the usual "Overwrite Popup". This allows you to select individual objects to be pulled no matter if they were changed locally or remotely.
- Does *not* change the regular "Pull" logic
Closes#413, #4282
* Combine delete and overwrite popups
* Add icons to abaplint.json
* Change if to case
* Add icons to abaplint.json
* Enhance UTs
* show_icon
* Show icon
Co-authored-by: Lars Hvam <larshp@hotmail.com>
- Differentiate between Developer and Standalone versions
- Add link to contribution guidelines
- Add listing of user exits with implementation status (based on include for standalone, class for developer version)
- Add feature to save debug info output as HTML page which can be used for attaching to Github issues
Co-authored-by: Lars Hvam <larshp@hotmail.com>
* Remove adjust_namespace
Method is obsolete since namespace of object is already adjusted in `zcl_abapgit_filename_logic=>file_to_object`
* Remove adjust_namespace
* Remove bracket
Co-authored-by: Lars Hvam <larshp@hotmail.com>
As mentioned in #4673, the existence check for interfaces is not correct and actually checking for classes. The PR will correct the check.
Co-authored-by: Lars Hvam <larshp@hotmail.com>
* Replace GET_R3TR_OBJECT_FROM_LIMU_OBJ, fixes#4715
Replaced with TR_CHECK_TYPE. Only tested locally (with a copy of the method in a separate program), not in full ABAPGit context.
* forgot the additional DATA declarations
* Ignore deleted objects
as requested by Marc Bernard
* remove whitespace at end
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>
* INTF: Refactor to fix "permission error"
Implements interface deserializer the same way as the class deserializer.
Closes#4672
* Remove types
* Class exists
Co-authored-by: Lars Hvam <larshp@hotmail.com>
* based on the lastest master
* pretty printer
* fix inline declaration fragments
* fixing method chaining
* Fix: Use boolc instead of IF, negate expression
* remove descriptions
* pretty printer
* empty line in method calls
* Fix: Statement does not exist in ABAPv702
* fix exceptions
* fix Indentation problem
* fix: Statement does not exist in ABAPv702(or a par
* mitigate usage of not existing objects in 702
* remove not existing objects for 702
* indentation issues
* next
* next
* Indentation issues
* next
* fix
* Fix: The EXPORTING keyword can be omitted
* change to constant mc_source_file
* Update zcl_abapgit_object_srvd.clas.abap
* changes regarding mbtools' feedback
* according to mbtools' feedback
* Update zcl_abapgit_object_srvd.clas.abap
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>
* Add support for partial logs (WIP)
* Still trying to handle multiple branch origins
* Error message for too many commits
* Remove PDXX
* Lint
Co-authored-by: Lars Hvam <larshp@hotmail.com>
* New "Switch" tab in repo settings
This PR adds a new tab to the repo settings which combines all options for switching the repository to a different source:
- Switch between "Online" and "Offline"
- Switch to Branch, Tag, Commit, or Pull Request
Note 1: Value help for URL history has not been implemented yet.
Note 2: None of the existing related menu items have been removed yet.
* Clean-up
* Clean-up
* Clean-up
* Clean-up
* Clean-up
* Change to "Remote"
- rename class
- add "autosave" for on/offline switch
- change "Switch" to "Remote"
* Update on/offline switch
* Update on/offline switch
* Update zcl_abapgit_gui_page_sett_remo.clas.abap
* Grammar
Co-authored-by: Lars Hvam <larshp@hotmail.com>
* Accept remote without HEAD
* Update src/git/zcl_abapgit_git_branch_list.clas.testclasses.abap
Co-authored-by: Lars Hvam <larshp@hotmail.com>
Co-authored-by: Lars Hvam <larshp@hotmail.com>
Combines `zcl_abapgit_file_status=>identify_object` and `zcl_abapgit_object_files=>filename` into new class `zcl_abapgit_filename_logic`. This class provides `file_to_object` and `object_to_file` conversion logic similar to what `zcl_abapgit_folder_logic` does for packages and git folders.
Also includes unit tests which were missing for the old methods.
Co-authored-by: Lars Hvam <larshp@hotmail.com>
* Terminology: Inclusive Language - Part 5
Change of terminology (#4043)
- Replace `get_master_language` with `get_main_language` and remove it
* File Status
* Jump
* Language
* Main language
* Main language
Enhancements might refer to other objects of the repo so create them after the other objects.
Example: Repo includes enhancement for an exception class. Therefore, the exception class has to be deserialized before the enhancement.
* Show "data" by object in repo view
Continuing on #3441
- "data" is now shown as `TABU` `<table>` in the repo view
* Remove get_item
* Add cmnt
* Update src/objects/core/zcl_abapgit_serialize.clas.abap
Co-authored-by: abaplint[bot] <24845621+abaplint[bot]@users.noreply.github.com>
* Update zcl_abapgit_serialize.clas.abap
Co-authored-by: Lars Hvam <larshp@hotmail.com>
Co-authored-by: abaplint[bot] <24845621+abaplint[bot]@users.noreply.github.com>
* Fix dump due to package name conflicts
Raises an error message instead of dumping
Closes#4620
* Split calculate_status
* Refactor only
Co-authored-by: Lars Hvam <larshp@hotmail.com>
* SOTS: Uninstall with usage reference
Remove usage references of `SOTS` texts during uninstall
* Add comment
Co-authored-by: Lars Hvam <larshp@hotmail.com>
Co-authored-by: Lars Hvam <larshp@hotmail.com>
* Improve reuse of HTML viewer
Adding optional parameters to allow reuse of HTML viewer in subscreens and allow testing of query parameter table (potential replacement of `zcl_abapgit_html_action_util=>parse...`).
* Lint
Co-authored-by: Lars Hvam <larshp@hotmail.com>
In addition to the client setting (repository objects modifiable or not, scc4), abapGit will not allow changes to any local objects, if
- system is set to "not modifiable" (se03)
- system is running an upgrade
- system is a shadow system
Closes#4267
Co-authored-by: Lars Hvam <larshp@hotmail.com>
If the composite enhancement already exists, trying to update it fails with error "Error while creating enhancement implementation"
Co-authored-by: Lars Hvam <larshp@hotmail.com>
* PROG: Refactor deserialize and fix inactive code
This is a follow-up to #4500, #4509, #4518
- Split `ZCL_ABAPGIT_OBJECTS_PROGRAM->DESERIALIZE_PROGRAM` into smaller methods
- `INSERT_PROGRAM` now uses standard `RPY_PROGRAM_INSERT` and only does `INSERT REPORT` in exceptional cases like function groups (see below)
- Special case of Code Inspector variants is handled by `ZCL_ABAPGIT_OBJECT_PROG->DESERIALIZE_WITH_EXT` since these aren't actual programs (but includes containing data)
Using the standard function fixes the issue of inactive code that can't be accessed after a pull. This used to happen, for example, when a program contained syntax errors due to missing objects.
* Update zcl_abapgit_objects_program.clas.abap
Co-authored-by: Lars Hvam <larshp@hotmail.com>
* Fix for Java GUI so new repo can be defined
The HTML demo programs are able to pass values from a form, so why does abapGit not work with Java GUI?
I've been trying to figure this out. The key to a break-through was not any fancy code analysis, it was "brute force".
I added a method in ZCL_ABAPGIT_HTML_FORM to replace the generated HTML by a copy of the resulting HTML. Then I removed things until POST-data was filled, and added things back until it broke again.
The main issue was of course the complete lack of POST-data for the event.
This is solved by adding an action attribute to the form element and removing the form-action attribute from the 'default' submit button.
The biggest surprise was that radion buttons don't work as they should. Values are returned as if both radio buttons (in the new online repository form) are checked - which of course is not possible. I tried enabling the query table in the HTML viewer just in case this was specific to the POST-data, but no such luck, it is probably a problem with the HTML viewer itself. You won't find any samples from SAP with radio buttons either.
The bug is possibly fixed by the patch in Note 2832978.
The solution is far from perfect, but at least it is now possible to add new repositories in Java GUI.
The most annoying problem that remains is that if a dialog is opened to select a package or branch the existing input data are lost. One step at a time though...
* Update src/ui/zcl_abapgit_html_form.clas.abap
Linter fix
Co-authored-by: abaplint[bot] <24845621+abaplint[bot]@users.noreply.github.com>
* Single-parameter calls on one line
One extended line, mind you...
* One argument per line - when possible
Don't break the string expression up over more lines thna neessary.
* Keep line length under 120 characters
* Playing catch-up
Fixing the conflict after another pull-request was merged
* Catch up with main branch
I didn't understand from the conflict resolution view on github the total difference between main and my fork. Looked at the source file and it became clear.
So hopefully this is the last commit... (and hopefully that won't be "famous last words")
* Time to learn about rebase...
Removed duplicate statement to get number of rows
* Conflicting line reset
Reset to main
<<<<<<< kjetil-kilhavn/javagui-fix
ii_html->add( |<td><input type="text" name="{ lv_cell_id }" id="{ lv_cell_id }"|
%26%26 | value="{ lv_value }"{ lv_readonly }></td>| ).
=======
ii_html->add( |<td><input type="text" name="{ lv_cell_id }" id="{
lv_cell_id }" value="{ lv_value }"{ lv_readonly }></td>| ).
>>>>>>> main
Now, may I have all green lights please?
Co-authored-by: abaplint[bot] <24845621+abaplint[bot]@users.noreply.github.com>
Co-authored-by: Lars Hvam <larshp@hotmail.com>
* Refactor "Background Mode" to HTML Form
ref #4171
- Moved "Background Mode" from "Advanced" menu to "Repo Settings"
- Changed Bckg Setting and Bckg Run to new HTML pages
* Add back_toolbar
Previously if there were no data rows, it would render just the column headers of the table.
After this change, it shows "Not available".
Co-authored-by: Lars Hvam <larshp@hotmail.com>
* Data deserialize
Continuing on #3441
- Fixes issue with namespaced tables
- Adds deserialize of table content during pull but does NOT persist changes to database
`zcl_abapgit_repo->deserialize` now contains the following call to deserialize "data":
```abap
zcl_abapgit_data_factory=>get_deserializer( )->deserialize(
ii_config = get_data_config( )
it_files = get_files_remote( )
iv_persist = abap_false ). "<<no persisting, just test for now
```
Closes#4650
* Fixes and max record check
* Get result preview
* Split deser/actualize
Co-authored-by: Lars Hvam <larshp@hotmail.com>
Error "The concept will be created in the non-original system" (`SOTR_MESS 137`)
It's not an error (see function `SOTR_STRING_CREATE_CONCEPT`) and has been removed.
* refactor export package to zip to HTML form
* change literal to constant
* downport statement
* remove popup package_export
* reorder methods, unify whitespace
Co-authored-by: Lars Hvam <larshp@hotmail.com>
* Fixes DDIC activation
The changes mimic the behavior of CTS Activatin Job as of 7.40 SP 23
* fixes Activation of dependant DDIC (#4496)
The change attempts to mimic behaviour of SAP CTS DDIC Mass Activation Job
* Revert to DDMODE = 'O'
Reverts to activation mode "in original" system; adds "forced activation" (FRCACT = abap_true)
* restore variable definitions
* and Pretty Printer
Co-authored-by: Lars Hvam <larshp@hotmail.com>
* Add measures to repo stats
- Lines in ABAP Files
- Lines of Code in ABAP Files (no empty or comment lines)
* Split read_stats
Co-authored-by: Lars Hvam <larshp@hotmail.com>
* move perf test option to new repo
Moving the performance test option to separate repository,
https://github.com/abapGit/performance-test
I guess this feature is not used very often, it will reduce the overall code size, and instead of refactoring these popups to HTML they can stay ALVs in the new repo
* fixes
The old code called the REPO service class to check if a repo exists, to better encapsulate the packages, the check will now stay inside the persistence package
* overview page, dont display ".git"
dont display ".git" in the urls in the overview page, to save a bit more horizontal space
also see #4539
* dont use regex
* add ORDER BY
* wdcc, add ORDER BY
* wapa add order by
* udmo, add order by
* tobj, add order by
* stvi, add order by
* CHAR, add order by
* CMOD, add order by
* dial, order by
* CLAS: Remove test class include
Once unit tests are disabled, the test class include is now completely removed (before it might have still contains obsolete code).
Closes#4460
* Reverse pp
* Update 6 objects
* Typo
* Typo
* Revert
* Revert
* Revert
* Revert
* Revert
* Lint
* Update zcl_abapgit_oo_class.clas.abap
* Move add_to_activation
Co-authored-by: Lars Hvam <larshp@hotmail.com>
* Add unsupported object count in repo statistics
* lint fix: Keep single parameter on one line
* Fix indentation
* Undo changes to TADIR and DEFINITIONS
Undo changes to ZCL_ABAPGIT_TADIR and ZIF_ABAPGIT_DEFINITIONS
* Refactor code
Co-authored-by: Lars Hvam <larshp@hotmail.com>
After the pull request:
https://github.com/abapGit/abapGit/pull/4589
Objects supported by abapGit-plugins are not deserialized and
all are reported as not supported.
Closes#4610
Co-authored-by: Lars Hvam <larshp@hotmail.com>
* TYPE: Serialize active version
When a new type-pools is created, SAP creates active version by default. SY-SUBRC is always set to 0 for the first function module call as there is always an active version hence, second function will never be called. Remove the second call.
* Multiple changes
Check existence of the object using TADIR entry
If the active object doesn't exist, show proper message
* Existence check using PROGDIR
* Replace SELECT..ENDSELECT
Co-authored-by: Lars Hvam <larshp@hotmail.com>
* Group unsupported messages per object type
When number of unsupported objects increase in a package, user needs to scroll through the long list of messages. This change groups messages per object type reducing the number of messages. Also, the filtering before serialization is good in terms of effective work process utilization( in parallel mode ).
* Replace LINE_EXISTS with READ TABLE
* Cache the supported object types
* Show object name
If there is only one object name for the unsupported object type, show the name.
* Spelling: "object(s)" to "objects"
Co-authored-by: Marc Bernard <59966492+mbtools@users.noreply.github.com>
Co-authored-by: Lars Hvam <larshp@hotmail.com>
In case DDIC objects exist as "new" version only , the system will now raise an error message to alert the user that "No active version was found".
Note: The log will disappear after some navigation and such objects will not be included in the repo view if they only exist locally (until they are activated).
* Fix#4515Fix#4515 by serializing new TAB_INCLUDES to contain include numbers of new methods of classes.
* Last fix before pull request
* files named "em_<methodname>" instead "emxxx"
* editorder without gaps
* Cleanup commented out line
* fixes abaplint
Co-authored-by: sandra rossi <sandra.rossi@gmail.com>
Co-authored-by: Lars Hvam <larshp@hotmail.com>
* DEVC: Unlock in case of errors
If a package object cannot be deleted or deserialized properly, it remains locked.
The change unlocks the object in these cases.
* Update set_lock
Co-authored-by: Lars Hvam <larshp@hotmail.com>
* TABL: Remove field position from serialization
It's not necessary to serialize field position (`DD03P-POSTION`). Fields can simply be numberred sequentially during deserialize.
This avoid issues with include structures that have different number of fields in original and target systems.
Closes#4506
* Clear tabname, ddlanguage
* Lint
Co-authored-by: abaplint[bot] <24845621+abaplint[bot]@users.noreply.github.com>
* Clear dd08v-ddlanguage
Co-authored-by: abaplint[bot] <24845621+abaplint[bot]@users.noreply.github.com>
Co-authored-by: Lars Hvam <larshp@hotmail.com>
* Main page - Only show hover info for favorites
in package, user links
suppress titles for non-favorite repositories
* always suppress loading titles in repo overview
Co-authored-by: Lars Hvam <larshp@hotmail.com>
When executing the background logic if a repo processing fails, then log the error and continue processing with next repository.
Co-authored-by: Lars Hvam <larshp@hotmail.com>
* 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>
* Tweak HTTP error messages
- Minor changes to error texts
- Add HTTP 422 which can happen on gitlab if you ommit ".git" in the URL
* Lint
Co-authored-by: Lars Hvam <larshp@hotmail.com>
Fix the following issues to make it CSS3 compliant:
- Font-style bold is not a font-style value
- Family names containing whitespace should be quoted
- Same color for background-color and border-color
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>
* Adjustments to Debug Info
- Fix display of abapGit installation package (side-effect of changed package assignment)
- Clarify that list of supported objects is relevant for the local system only (since it's release dependent)
- Add link to complete list of supported objects
* Remove pragmas
* 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>
Change of terminology (#4043). This time with the missing changes in service_repo.
repo_srv and serializer will be next after #4431.
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 CTS API and support additional objects
- Change methods from public to private
- Reduce interface to public methods
- Support objects that can not be locked but can be included in a transport (prep for namespaces)
* Remove lenght check
Co-authored-by: Lars Hvam <larshp@hotmail.com>
There is no problem with having dots in names - we have these names in
our corporate github.
I don't know how to deal with the non-deterministic regex differently
than first trying with the suffix .git and than without it.
Closes#4427
* 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>
* Repo view: Adjust link to settings & render transport
- Update link text
- Re-init flag to render transport (in case the package has changed)
* Main langu
* 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>
* Remove dependency on persistence interface
Minor adjustment to exit interface (`zif_abapgit_exit`)
* Lint
Co-authored-by: Lars Hvam <larshp@hotmail.com>
* Dialogs: HTML forms for repo settings
This moves the repo settings to HTML forms. The settings are split into three pages:
- Repository settings (ie abapgit.xml)
- Local settings
- Infos
* Lint
* Infos > Stats
* Infos > Stats
* Infos > Stats
Co-authored-by: Lars Hvam <larshp@hotmail.com>
* UI: Refactor form css class
- Move styles to CSS
- Provide default for form class
- Remove form class from render calls
* Update css
* Condense textarea
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>
* Dialogs: HTML forms - follow-up
Follow-up to #4264:
- Split `zcl_abapgit_html_form` class
Processing form data has been moved to `zcl_abapgit_html_form_utils`
- `iv_is_main` refactored to `iv_cmd_type`
- In case of unsaved data, form exit will now prompt for confirmation (`zcl_abapgit_html_form_utils`)
* dot space
* lint
* Remove const
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>
* Set branch name with commit
* Can't stage when commit is checked out
* Add missing variable
* Remove passing a parameter, since set relies on IS SUPPLIED
* Undo last commit
* Intelligent create branch when commit is checked o
ut
* lint
* Fix cancel buttons (missing commit)
* Code review
* Remove unused variables
* Add extra line
* Remove unused variable
* Add back new branch pop-up. Considers tag.
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>
* Add refresh after failed uninstall
If uninstall does not complete successfully, the old state of the repo will be shown. This will refresh the state and properly show which objects were deleted and which still remain.
* Update src/zcl_abapgit_repo_srv.clas.abap
Co-authored-by: Lars Hvam <larshp@hotmail.com>
Co-authored-by: Lars Hvam <larshp@hotmail.com>
syntax highligting, move unit tests for abap to abap class, xml to xml class
this avoids having cyclic references, previously HIGHLIGTER called FACTORY which instantiated ABAP which inherited from HIGHLIGTER
* 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>
* New Repo: Check package existence before showing p
* fix lint errors
* fix linter
* add more unit tests
* refactor unit tests
Co-authored-by: Lars Hvam <larshp@hotmail.com>
Maintenance views can have dependencies on tables with foreign keys. Such cases can lead to errors during deserialize since the foreign key relationships between tables are processed only in the "late" step.
This fix moves the processing of maintenance views (viewclass = c) to the "late" step.
Co-authored-by: Lars Hvam <larshp@hotmail.com>
* Dialogs: HTML form tweaks
- Minor increase of contrast for background, input- and readonly fields
- Add read-only option for columns of table control
* Add is_empty
* Add init and hidden
* Render
* Remove init
Co-authored-by: Lars Hvam <larshp@hotmail.com>
In case files are deleted remotely, the files are now ignored during a pull. In other words, "pull" will not touch objects that exist only locally and not remotely.
To delete such objects locally, use "reset local (forced pull)" which will show a popup for these objects and let you delete them.
Closes#4277
Co-authored-by: Lars Hvam <larshp@hotmail.com>
* Improve ""Cannot find .abapgit.xml" situation
Skip check during creating of repo and increase file count.
Closes#4174
* New online
* Add UT
* Move check to content list
* Update zcl_abapgit_repo_srv.clas.abap
* Lint
* Rename to check_repo_size
Co-authored-by: Lars Hvam <larshp@hotmail.com>
* Fix unit test for user records
Perform unit test only if a user with an email address exists
Closes#4247
* Remove test
Co-authored-by: Lars Hvam <larshp@hotmail.com>
* PROG: Remove objects from work area
Fixes issue with incomplete deletion of inactive objects
Closes#4151
* Lint
* Add correction
Co-authored-by: Lars Hvam <larshp@hotmail.com>
Reverting back to a proper exit of screens using `LEAVE TO SCREEN` and avoid increasing the size of the callstack.
Closes#4279
PS: The crash mentioned in #4027 was prevented by removing the commit hash from the check screen. It works also with `LEAVE TO SCREEN`.
* Optimize status calc
Avoid status calculation for ignored files. Since files in / are ignored by default, the starting folder for unit tests is set to /.
* Fix if
* Index
Co-authored-by: Lars Hvam <larshp@hotmail.com>
* UI: Clear progress bar
Clears status/progress bar at end of process and removes leftover messages.
Closes#3505
* Lint
Co-authored-by: Lars Hvam <larshp@hotmail.com>
* UI: Improvements for setting pages
- Better navigation between settings pages
After jumping between setting pages, the back button will go to last page before navigating to the settings (ie "back with bookmark")
- Add commit work
* Lint + router
* Jump repo view to settings
* Lint
* Conflict
Co-authored-by: Lars Hvam <larshp@hotmail.com>
* Remove obsolete late_deser from metadata
Final part to remove late_deser flag. Solution remains compatible with old bridge class which still uses the flag.
* Call
Co-authored-by: Lars Hvam <larshp@hotmail.com>
* User interface, "Advanced" menu
Added tooltips to the "Remove" and "Uninstall" options in the advanced menu. As a new user, I would revisit the [documentation](https://docs.abapgit.org/guide-online-uninstall.html) to distinguish between the two.
The tooltips are passed as "iv_title" parameters to ZCL_ABAPGIT_HTML_TOOLBAR->add
* Update src/ui/zcl_abapgit_gui_page_repo_view.clas.abap
Adjustments from review
* Update src/ui/zcl_abapgit_gui_page_repo_view.clas.abap
Adjustments from review
* Update zcl_abapgit_gui_page_repo_view.clas.abap
Comply with abaplint line length of 120
* Update zcl_abapgit_gui_page_repo_view.clas.abap
Comply with abaplint's no whitespaces at EOL
Co-authored-by: Lars Hvam <larshp@hotmail.com>
* show log, remove title parameter
the log objec already have the title as part of the object, another input is not required
this aligns the code to always use the title from the object
closes#4223
* zif_abapgit_log, change title to csequence input
* Refactor: Version comparison
Move version comparison from `zcl_abapgit_news` to `zcl_abapgit_version` and make it public for use in other places
* Lint
* Compare sem versions
* Change supplied
Co-authored-by: Lars Hvam <larshp@hotmail.com>
* Dialogs: Enhance HTML form with table control
- Adds option to maintain data using a table control
- Extends UTs with several cases that were include in #4172
- Table control to be used by "repo settings" #4171
* Border
* Lint
Co-authored-by: Lars Hvam <larshp@hotmail.com>
* /git/, put method get_length under test
add unit tests for method get_length
the method will probably be refactored sometime in the future, I think the bit manipulation can be replaced with some hex, div and bit-mask magic
* fix tabs
* log, purge() now returns the log
For each action, the log should be returned, then it is up to the UI how or if to show or persist it in the session.
First step of #2821
* li_log not needed anymore
* Update contributing.md
Rephrase and reorganize to make the various concepts clearer, especially to new abapGit adopters
* Update contributing.md
Clarifications on fork requirement
* Update contributing.md
* Update contributing.md
* Update contributing.md
* Update user-owned branch following merge with abapGit master (#2)
* Documentation: Rephrase the "contributing to abapGit" section (#4213)
* Update contributing.md
Rephrase and reorganize to make the various concepts clearer, especially to new abapGit adopters
* Update contributing.md
Clarifications on fork requirement
* Update contributing.md
* Update contributing.md
* Update contributing.md
Co-authored-by: Lars Hvam <larshp@hotmail.com>
* Fix uncaught exception of zcl_abapgit_repo_srv (#4215)
When repeatedly navigating "back" to the main screen via the "Repository List" [o] button:
If somewhere in this navigation sequence you Remove a repository,
then continue on via "Repository List",
but later you use the GUI's actual "BACK" button, until you have returned to the main screen where that repository still existed,
a short dump occurs as the exception raised by zcl_abapgit_repo_srv=>get in zcl_abapgit_gui_page_repo_view->render_content propagates unhandled
Co-authored-by: Lars Hvam <larshp@hotmail.com>
Co-authored-by: Lars Hvam <larshp@hotmail.com>
* Update contributing.md
Fix the ordered list markup for github pages (where numbering was being restarted)
Co-authored-by: Lars Hvam <larshp@hotmail.com>
This adds shorthand methods for the SHA1 calculation of the different git artifacts.
More logic in ZCL_ABAPGIT_HASH, but easier to read and less application logic.
When repeatedly navigating "back" to the main screen via the "Repository List" [o] button:
If somewhere in this navigation sequence you Remove a repository,
then continue on via "Repository List",
but later you use the GUI's actual "BACK" button, until you have returned to the main screen where that repository still existed,
a short dump occurs as the exception raised by zcl_abapgit_repo_srv=>get in zcl_abapgit_gui_page_repo_view->render_content propagates unhandled
Co-authored-by: Lars Hvam <larshp@hotmail.com>
* Update contributing.md
Rephrase and reorganize to make the various concepts clearer, especially to new abapGit adopters
* Update contributing.md
Clarifications on fork requirement
* Update contributing.md
* Update contributing.md
* Update contributing.md
Co-authored-by: Lars Hvam <larshp@hotmail.com>
* Dialogs: New pages for global and personal setting
Redesign of abapGit settings using HTML forms. Two functional changes to old settings page:
- "Development Internal Settings" are only visible when using the developer version (not in standalone program)
- "User-specific hotkey settings" are not available anymore. The default hotkeys continue to work as before.
Global/Personal settings can be reached using hotkeys "x" and "y".
* Lint
* Hide button
* Change to top menu
* Remove old page
* Remove old page
* fix links
Co-authored-by: Lars Hvam <larshp@hotmail.com>
* Create an interface for online repo functions
To make my own code calling online repo functions testable, I need some functions behind an interface. Using aliases, this is a safe refactoring. Please pull :)
* Update src/zif_abapgit_repo_online.intf.abap
Co-authored-by: abaplint[bot] <24845621+abaplint[bot]@users.noreply.github.com>
* Update src/zif_abapgit_repo_online.intf.abap
Commit abaplint recommendation
Co-authored-by: abaplint[bot] <24845621+abaplint[bot]@users.noreply.github.com>
* update formatting
Co-authored-by: Rembold Rembold <philipp.rebold@sap.com>
Co-authored-by: abaplint[bot] <24845621+abaplint[bot]@users.noreply.github.com>
* UI: Add help buttons to "New Online/Offline"
- Add help button to both dialogs linking to docs.abapgit.org
- Clicking the button brings up the documentation inside the GUI HTML viewer
- Enhancement to `zcl_abapgit_gui` and `zcl_abapgit_html_viewer_gui` to properly handle 'Back' when navigating through Internet pages
* Open help in external browser
Co-authored-by: Lars Hvam <larshp@hotmail.com>
* Update docs for "Settings"
New pages for "Global Settings" and "Personal Settings" (to be linked via help buttons in new forms)
* Screenshots
* Screenshots
* Personal settings
* Vimium
Co-authored-by: Lars Hvam <larshp@hotmail.com>
* Refactor XSTRING_TO_INT
this will use the built-in type conversion, its less code and most likely also runs faster
* delete METHOD alpha_output
it is only used in one place, and its a simple NUMC that is converted
* Dialogs: HTML form enhancements
In preparation for https://github.com/abapGit/abapGit/issues/4171, HTML forms were enhanced as follows:
- New integer fields (type "number") with min/max, https://github.com/abapGit/abapGit/issues/3559
- Added support for minlength/maxlength for text fields
- Added support for read-only fields
- Added support for password fields
- New option for adding a help button to the form (with URL link)
- Moved HTML snippets to render method
- Changed parameters to csequence to also accept char variables (like abap_true)
- Minor adjustments to styles
* Lint and fix ul/fieldgroup
* Min/max validation, textarea
* Close textarea tag
Co-authored-by: Lars Hvam <larshp@hotmail.com>
* Fix dump in status calculation
Happened when switching a repo from offline to online, which incorrectly set the branch to "master" (separate issue), and then trying to switch branch to "main".
* Add testcase
Co-authored-by: Lars Hvam <larshp@hotmail.com>
* ZCL_ABAPGIT_CONVERT refactor
this removes calls to function modules, replacing with class based equivalents, or all custom ABAP implementations
* rename local variables
* move merge types to merge class
this will make the God interface defintions smaller
also reducing INTF -> CLAS references
and making it easier to add an interface for the merge class in the future
* add interface ZIF_ABAPGIT_MERGE
* DEVC: Remove obsolete TADIR entries
In case a package is local (ie no transports), abapGit will now check if objects still exist in the package. In case an object does not exist anymore, the corresponding TADIR entry will be removed. This allows empty local packages to be uninstalled automatically.
* Lint
Co-authored-by: Lars Hvam <larshp@hotmail.com>
* Terminology: Inclusive Language - Part 2
Change "Master Language" to "Main Language" in UI and comments (documentation and variables next)
* Docs
* Docs
Co-authored-by: Lars Hvam <larshp@hotmail.com>
- Add FUGR, CLAS, INTF into existing order of object types
- Also fixes BINARY search for DDLS dependencies
Co-authored-by: Lars Hvam <larshp@hotmail.com>
* Move git url repo methods
This moves methods GET_COMMIT_DISPLAY_URL and GET_DEFAULT_COMMIT_DISPLAY_URL from the repo class to new class in new package GIT_PLATFORM.
we want to keep the repo class small, as its quite complex and central
#4085
* fix line length
* Triggers main command when pressing enter in form
Adds hidden button that triggers main command when pressing the enter key
* Lint
Co-authored-by: Lars Hvam <larshp@hotmail.com>
* Backup and restore for abapGit persistency
Backup complete content of abapGit persistency to a ZIP file and restore when necessary.
* Messages
* 702
Co-authored-by: Lars Hvam <larshp@hotmail.com>
- Added icon for user
- Changed icon for transport to truck
- Adapted "staging" page
- Renamed CSS-classes because of conflict with classes used on staging page
Screenshots #4097Closes#4098
Co-authored-by: Lars Hvam <larshp@hotmail.com>
* Update unit tests to use CI
* Make test repo configurable
* Remove local tests and use CI
* Lint fixes
* Replace local tests with CI
* Add Type Group constants to abaplint
* Update constants and replace assert_true
* Revert constants
Co-authored-by: Lars Hvam <larshp@hotmail.com>
* Fix DDIC activation issues
- Avoid double activation of DDIC objects in case of "LATE" processing
- Derive DDIC id for XINX and MCID (same as for INDX)
Closes#4103
* Lint
Co-authored-by: Lars Hvam <larshp@hotmail.com>
The field `late_deser` in `ZIF_ABAPGIT_DEFINITIONS=>ty_metadata` is obsolete:
```abap
TYPES:
BEGIN OF ty_metadata,
class TYPE string,
version TYPE string,
late_deser TYPE abap_bool, " refactor: can be removed later. replaced by steps
delete_tadir TYPE abap_bool,
ddic TYPE abap_bool,
END OF ty_metadata .
```
The PR removes the remaining usage with one exception: `ZCL_ABAPGIT_OBJECTS_BRIDGE->GET_DESERIALIZE_STEPS` still depends on the field. In order to remove it completely, the plug-in interface `zif_abapgitp_plugin` (https://github.com/abapGit/abapGit-Plugins/blob/master/src/zif_abapgitp_plugin.intf.abap) will have to be changed.
Co-authored-by: Lars Hvam <larshp@hotmail.com>
* 702: Downport
No chaining with CHANGING
* 702: Downport
* Syntax check variant
* Too many fields warning
Co-authored-by: Lars Hvam <larshp@hotmail.com>
* UI: Unify rendering of branch, package, user names
Branch name was already rendered "boxed with a leading icon". The same is now done for package and user names.
See `zcl_abapgit_gui_chunk_lib->render_branch_name, render_package_name, render_user_name`.
Closes#4059
* Lint %26 transport
* Unknown user
* Transport css
Co-authored-by: Lars Hvam <larshp@hotmail.com>
Some files that existed locally didn't have a link. After #4084, the state can be evaluated properly to determine if local object exists.
Co-authored-by: Lars Hvam <larshp@hotmail.com>
* Implementation
* Remove old source code
* Clear selected_commit on switch_repo_type
* Reset selected commit or branch on select
* Don't clear the branch name if commit selected
* add user exit for commit display URL
METHODS adjust_display_commit_url
IMPORTING iv_repo_url TYPE zif_abapgit_persistence=>ty_repo-url
iv_commit_hash TYPE zif_abapgit_definitions=>ty_sha1
CHANGING cv_display_url TYPE zif_abapgit_persistence=>ty_repo-url
* adjust UT
* provide also repo name and key in the exit
* Update ref-exits.md
* Update ref-exits.md
Co-authored-by: Lars Hvam <larshp@hotmail.com>
* Fix state calculation for deleted objects
In case objects are deleted locally or remotely, abapGit now compares against the last known state (checksum).
Closes https://github.com/abapGit/abapGit/issues/4030
* Added test case
Covers known local and remote states
Co-authored-by: Lars Hvam <larshp@hotmail.com>
* TABL: Skip data check for GTT
fixes#4074
* undo case change
* TABL: use fm DD_EXISTS_DATA for data check
* remove formatting change
* Data existence check only for DB tables
Co-authored-by: Lars Hvam <larshp@hotmail.com>
* add minimal unit test
* readd new keywords to abap syntax highlighter
- removed duplicates from keywords
- removed deprecated pseudo comment
- explicitly remove duplicates from keywords to avoid needless dumps
Co-authored-by: Lars Hvam <larshp@hotmail.com>
* Implementation
- Create new class ZCL_ABAPGIT_GIT_COMMIT
- Move commit-specific methods from ZCL_ABAPGIT_BRANCH_OVERVIEW to ZCL_ABAPGIT_GIT_COMMIT
- Change methods visibility (from private to public) and type (from instance to class method)
* Remove ##NO_TEXT
Co-authored-by: abaplint[bot] <24845621+abaplint[bot]@users.noreply.github.com>
* Rename get to get_from_remote
* abapLint: Remove space
Co-authored-by: abaplint[bot] <24845621+abaplint[bot]@users.noreply.github.com>
* abapLint
- Remove space
- Remove unused type in ZCL_ABAPGIT_BRANCH_OVERVIEW
* abapLint: Remove space
Co-authored-by: abaplint[bot] <24845621+abaplint[bot]@users.noreply.github.com>
* Remove obsolete class attribute
* Separate get_by_branch and get_by_commit
* Remove duplicate char
Co-authored-by: abaplint[bot] <24845621+abaplint[bot]@users.noreply.github.com>
* Remove iv_repo_name; replace its usage by url
Co-authored-by: abaplint[bot] <24845621+abaplint[bot]@users.noreply.github.com>
Co-authored-by: Lars Hvam <larshp@hotmail.com>
* Replace LEAVE with CALL SCREEN
* Add new option iv_show_commit
Add new option iv_show_commit to GUI_CHUNK_LIB to be able to suppress showing commit hash on GUI_PAGE_CODE_INSP page
* abapLint: Replace 'EQ' by '='
Co-authored-by: abaplint[bot] <24845621+abaplint[bot]@users.noreply.github.com>
* Hide commit hash on other pages too
Hide commit hash on ZCL_ABAPGIT_GUI_PAGE_REPO_SETT and ZCL_ABAPGIT_GUI_PAGE_SYNTAX pages
Co-authored-by: abaplint[bot] <24845621+abaplint[bot]@users.noreply.github.com>
Co-authored-by: Lars Hvam <larshp@hotmail.com>
* Refactor user persistence
Instead of selecting the settings from the DB for each "get", user settings are now kept in instance memory. Simplifies code, too.
* Lint
* Replace commit work
* Change risk level
Co-authored-by: Lars Hvam <larshp@hotmail.com>
* CLAS: Avoid unnecessary serialize of testclass file
Unit tests are only functional if the corresponding flag is set (`seoclassdf-with_unit_tests`). Therefore, if the flag is not set, there's no need to serialize this include.
* Added version to select
* Switch to seo function
* Set mv_skip_testclass
Co-authored-by: Lars Hvam <larshp@hotmail.com>
* refactor validation in html_form + UT
* minor UT tweak
* subtle form bugfix (boolc return space string)
* cleanup add forms
Co-authored-by: Lars Hvam <larshp@hotmail.com>
* Update ZCL_ABAPGIT_USER_MASTER_RECORD
- Issue: If the user does not exist in the system, the BAPI will fail but still the user still will be added to the gt_user.
- Fixed the issue, if user is invalid it wont be added to the list.
- Refactored the class and added check_user_exist method.
- Added unit tests.
* Sy-uname
* Lint
Co-authored-by: Lars Hvam <larshp@hotmail.com>
* Close some todos
FUGR does not have any class includes
* Remove huh?
* Move WDYN activation to serializer
Co-authored-by: Lars Hvam <larshp@hotmail.com>
Pressing ESC used to exit abapGit completely. Changed it to work like F3 (BACK), which makes more sense especially in HTML form. You can still exit from anywhere using SHIFT+F3.
Co-authored-by: Lars Hvam <larshp@hotmail.com>
* Part 1
* Part 2
* Part 3
* Lint
* Part 5
* Part 6
* Part 7
* Part 8
* Part 9
* Enforce type naming prefix
All types need to start with TY_...
* Fix local types
* event->post_data logic
* part of pages, commit test
this is also long text
to test
* string_map: port strict() feature
* pages refactoring part 2
* linter
* docs
Co-authored-by: Lars Hvam <larshp@hotmail.com>
* Dialogs: add offline repo HTML form
* Dialogs: add offline repo HTML form
* Dialogs: add offline repo HTML form
* Lint
* Lint
* Chaining
* Set required attribute
* Check for empty display name
* Change validation
Co-authored-by: Lars Hvam <larshp@hotmail.com>
In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation.
We as members, contributors, and leaders pledge to make participation in our
community a harassment-free experience for everyone, regardless of age, body
size, visible or invisible disability, ethnicity, sex characteristics, gender
identity and expression, level of experience, education, socio-economic status,
nationality, personal appearance, race, caste, color, religion, or sexual identity
and orientation.
We pledge to act and interact in ways that contribute to an open, welcoming,
diverse, inclusive, and healthy community.
## Our Standards
Examples of behavior that contributes to creating a positive environment include:
Examples of behavior that contributes to a positive environment for our
community include:
* Using welcoming and inclusive language
* Being respectful of differing viewpoints and experiences
* Gracefully accepting constructive criticism
* Focusing on what is best for the community
* Showing empathy towards other community members
* Demonstrating empathy and kindness toward other people
* Being respectful of differing opinions, viewpoints, and experiences
* Giving and gracefully accepting constructive feedback
* Accepting responsibility and apologizing to those affected by our mistakes,
and learning from the experience
* Focusing on what is best not just for us as individuals, but for the
overall community
Examples of unacceptable behavior by participants include:
Examples of unacceptable behavior include:
* The use of sexualized language or imagery and unwelcome sexual attention or advances
* Trolling, insulting/derogatory comments, and personal or political attacks
* The use of sexualized language or imagery, and sexual attention or
advances of any kind
* Trolling, insulting or derogatory comments, and personal or political attacks
* Public or private harassment
* Publishing others' private information, such as a physical or electronic address, without explicit permission
* Other conduct which could reasonably be considered inappropriate in a professional setting
* Publishing others' private information, such as a physical or email
address, without their explicit permission
* Other conduct which could reasonably be considered inappropriate in a
professional setting
## Our Responsibilities
## Enforcement Responsibilities
Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior.
Community leaders are responsible for clarifying and enforcing our standards of
acceptable behavior and will take appropriate and fair corrective action in
response to any behavior that they deem inappropriate, threatening, offensive,
or harmful.
Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful.
Community leaders have the right and responsibility to remove, edit, or reject
comments, commits, code, wiki edits, issues, and other contributions that are
not aligned to this Code of Conduct, and will communicate reasons for moderation
decisions when appropriate.
## Scope
This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers.
This Code of Conduct applies within all community spaces, and also applies when
an individual is officially representing the community in public spaces.
Examples of representing our community include using an official e-mail address,
posting via an official social media account, or acting as an appointed
representative at an online or offline event.
## Enforcement
Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at https://abapgit-slackinviter.herokuapp.com/. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately.
Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported to the community leaders responsible for enforcement in the abapGit
Slack at https://communityinviter.com/apps/abapgit/abap.
All complaints will be reviewed and investigated promptly and fairly.
Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership.
All community leaders are obligated to respect the privacy and security of the
reporter of any incident.
## Enforcement Guidelines
Community leaders will follow these Community Impact Guidelines in determining
the consequences for any action they deem in violation of this Code of Conduct:
### 1. Correction
**Community Impact**: Use of inappropriate language or other behavior deemed
unprofessional or unwelcome in the community.
**Consequence**: A private, written warning from community leaders, providing
clarity around the nature of the violation and an explanation of why the
behavior was inappropriate. A public apology may be requested.
### 2. Warning
**Community Impact**: A violation through a single incident or series
of actions.
**Consequence**: A warning with consequences for continued behavior. No
interaction with the people involved, including unsolicited interaction with
those enforcing the Code of Conduct, for a specified period of time. This
includes avoiding interactions in community spaces as well as external channels
like social media. Violating these terms may lead to a temporary or
permanent ban.
### 3. Temporary Ban
**Community Impact**: A serious violation of community standards, including
sustained inappropriate behavior.
**Consequence**: A temporary ban from any sort of interaction or public
communication with the community for a specified period of time. No public or
private interaction with the people involved, including unsolicited interaction
with those enforcing the Code of Conduct, is allowed during this period.
Violating these terms may lead to a permanent ban.
### 4. Permanent Ban
**Community Impact**: Demonstrating a pattern of violation of community
standards, including sustained inappropriate behavior, harassment of an
individual, or aggression toward or disparagement of classes of individuals.
**Consequence**: A permanent ban from any sort of public interaction within
the community.
## Attribution
This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [http://contributor-covenant.org/version/1/4][version]
This Code of Conduct is adapted from the [Contributor Covenant][homepage],
* If you're new and want to help out, try one of [these](https://github.com/larshp/abapGit/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22). They should not be complicated to implement but require you to get the project up and running. Or pick something that annoys you. Fix a typo. Improve an error message. Correct some [coding conventions](https://docs.abapgit.org/development/guidelines.html). Or try something unusual just to see if it works and if it doesn't, open an issue.
* If you're new and want to help out, try one of [these](https://github.com/larshp/abapGit/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22). They should not be complicated to implement but require you to get the project up and running. Or pick something that annoys you. Fix a typo. Improve an error message. Correct some [coding conventions](https://docs.abapgit.org/development-guide/). Or try something unusual just to see if it works and if it doesn't, open an issue.
* Before starting any significant development, open an issue and propose your solution first. A discussion can save a lot of unnecessary work. It also helps others know that this is being worked on.
* It is in your best interest to keep the commits/PRs as small as possible and solve one thing at a time. The smaller your change is, the easier it is to review and it will be more likely to get accepted.
* It is in your best interest to keep the commits/PRs as small as possible and solve one thing at a time. The smaller your change is, the easier it is to review and it will be more likely to get accepted.
* Commit often, whenever something is working, and is a step in the right direction do a commit or PR. This way other contributors can see the changes, and it will minimize the risk of merge conflicts.
@ -16,11 +16,9 @@ A bug is a _demonstrable problem_ that is caused by the code in the repository.
Guidelines for bug reports:
1. **Use the GitHub issue search**— check if the issue has already been
reported.
1. **Use the GitHub issue search**— check if the issue has already been reported.
2. **Check if the issue has been fixed**— try to reproduce it using the
latest `master` or development branch in the repository.
2. **Check if the issue has been fixed**— try to reproduce it using the latest version or development branch in the repository.
3. **Demonstrate the problem**— provide clear steps that can be reproduced.
@ -28,8 +26,8 @@ A good bug report should not leave others needing to chase you up for more infor
*NB: Some people reported that browsers have issues displaying the file with 75k lines. The easiest solution is to "Save as" the link above and then open it with any editor/viewer (notepad included) and copy from there.*
Recommend using SAP GUI for Windows, there are multiple issues related to running abapGit and Java SAP GUI. Focus is on supporting [ADT](https://github.com/abapGit/ADT_Frontend) instead of supporting Java SAP GUI.
*Notes: Some people reported that browsers have issues displaying the file with more than 100k lines. The easiest solution is to "Save as" the link above and then open it with any editor/viewer (notepad included) and copy from there. If your SAP GUI editor freezes when pasting the code, use Utilities > More Utilities > Upload/Download > Upload in the editor instead.*
It is recommended to use SAP GUI for Windows, since there are known issues related to running abapGit and SAP GUI for Java. The focus of abapGit is on supporting [ADT](https://github.com/abapGit/ADT_Frontend) instead of supporting SAP GUI for Java.
For questions/comments/bugs/feature requests/wishes please create an [issue](https://github.com/abapGit/abapGit/issues).
## Credits and references

## Credits and References
- Icons used in abapGit are created from [Font Awesome](https://fontawesome.com/) free icon set ([CC-BY-4.0](LICENSES/CC-BY-4.0.txt))
- [AJSON](https://github.com/sbcgua/ajson) and [String-Map](https://github.com/sbcgua/abap-string-map) are developed by Alexander Tsybulsky ([MIT](LICENSES/MIT.txt))
- [AFF](https://github.com/SAP/abap-file-formats) formats are by SAP ([MIT](LICENSES/MIT.txt))
Icons used in abapGit are created from [Font Awesome](https://fontawesome.com/) free icon set ([CC BY 4.0 License](https://fontawesome.com/license/free)).
To report a security issue, please use the GitHub Security Advisory ["Report a Vulnerability"](https://github.com/abapGit/abapGit/security/advisories/new) tab.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.