* 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>
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
```
* [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>
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>
* 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
* 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>
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>
- 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>
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>
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>
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>
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>
* Folder logic "mixed"
Introduces a new folder logic named `mixed` which combines `prefix` and `full`. The root package name will be used as prefix for all sub-packages but the package names are *not* concatenated recursively. This will allow for using significantly logic package names.
Also includes several new unit tests especially for nested packages which had not been tested before.
Closes#5410
Todo: Update docs
* Add constant
* Add options to UI
Co-authored-by: Lars Hvam <larshp@hotmail.com>
Function module WEBI_GET_OBJECT returns several internal tables. Sometimes, the sorting order of these internal tables is different in each system ex: S/4HANA and non-S/4HANA. This fixes#5389.
* Fix data elem type ref to class in same repository
* simpler solution by testing refkind and reftype
Co-authored-by: sandraros <sandra.rossi@gmail.com>
Co-authored-by: Marc Bernard <59966492+mbtools@users.noreply.github.com>
* Fix proposal for issue #5347: added support for 'TYPE REF TO DATA' DDIC data elements as components in DDIC structures
* Fix proposal for issue #5347. Added support for 'REF TO DATA' DTEL DDIC element residing in DDIC structure
* Fix proposal for issue #5347, added support for 'TYPE REF TO DATA' DDIC data element residing in DDIC data structurees
* REF TO DATA for DDIC element support (#5347)
* No error if ddic type has warning (abapGit#5361) during import
* Update zcl_abapgit_objects_activation.clas.abap
* Fix for (abapGit#5361). Warnings during DDIC objects activation shouldn't be considered as error but will be shown as 'yellow' messages after activation
* Fix for (#5361).
Warnings during DDIC objects activation shouldn't be considered as error but will be shown as 'yellow' messages after activation
Co-authored-by: Lars Hvam <larshp@hotmail.com>
In some systems, function modules RS_GET_ALL_INCLUDES returns an include *T00. Where *T00 include is not returned, abapGit adds to the internal table. This results in different sorting order in different systems. Sort to keep the same order.
- Eliminate flashing of progress bar during deserialize
- Updated description for deserialize steps
- Add steps to log (see below)
Co-authored-by: Lars Hvam <larshp@hotmail.com>
* TABL: Properly show inactive objects
Current `is_active` check is insufficient for DDIC objects and can't detect "new" or "partically active" objects.
Introduces a new `is_active_ddic` method in `zcl_abapgit_objects_super` which should be used by all DDIC types (follow-up).
Ref #5294
* Update zcl_abapgit_objects.clas.abap
* Update
* 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>