* 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>