The methods CL_OO_CLASS_SECTION_SOURCE=>SCAN_SECTION_SOURCE calls the
function SCAN_ABAP_OBJECTS_SECTION without the parameter superclsname
which causes that variable scan_result (vse_tabs) holds a broken table of
redefinitions for protected methods which leads into a short dump during
CL_OO_CLASS_SECTION_SOURCE=>REVERT_SCAN_RESULTS.
The problem does not occur for public section because the public section
contains "CLASS ... INHERITING FROM ...", so superclsname gets
populated. It's obvious that the class definition statement is not
present in the protected section.
The crash is reported as DBSQL_DUPLICATE_KEY_ERROR in the program
SAPLSEOR at INSERT_REDEFINITIONS.
The code is the following:
* first refresh db table
perform delete_redefinitions
using inhkey.
delete adjacent duplicates from redefinitions.
* insert again
insert seoredef from table redefinitions.
One might think that the delete statement form clears the table seoredef
but the problem is that the variable inhkey contains the super class
name so no redefinitions are actually removed and the insert statement
attempts to insert the redefinitions without parent class again.
The proper solution is to enhance CL_OO_CLASS_SECTION_SOURCE=>SCAN_SECTION_SOURCE
to pass the super class name to SCAN_ABAP_OBJECTS_SECTION - at least for
the protected section.
However, I am not patient and I am not going to wait for the proper fix
(which the maintainers may refuse).
* Order by on repo page
* move render_cols_pec to zcl_abapgit_gui_chunk_lib
* cleanup
* cleanup
* first new working version
* fix lint
* add OrderByHelper
* add new feature clear
* rename ICON to CLEAR
* cleanup
* refactor actions
* fix typo in method name
* remove duplication
* rename render_col_spec to render_order_by_table_he
* refactor type
* fix eslint warning
* isoltate repo_tab CSS
* fix non-code and metadata files at the top
* refactor
* cleanup
* new features "diffs first" + remove clear
* refactor
* take directories into account
* cleanup
* No log messages for local objects after pull
In case a package contains objects that are are not part of the remote repository, the pull log contains messages like "Object (type ) only exists local; no import required". It is not necessary that messages for local object appears in the log. For pull requests, messages for the affected objects (objects to be imported) are sufficient.
This change ir related to issue #2931.
* rename (z)if_abapgit_definitions
rename (z)if_abapgit_definitions
* UENO: Entity Type Implementation (#1906)
* Resolve ABAPlint issues
Resolve ABAPlint issues
* UENO - Use zcl_abapgit_objects_generic
Removal of many unnecessary methods due to use of zcl_abapgit_objects_generic
* #2725
> Bottom logo is now clickable and links to the repository page on GitHub
> New menu item 'Changelog' under 'Help' which links to the changelog.txt
Special Notes:
> Link to documentation was already implemented
> Link for menu item 'Tutorials' isn't linked to anything. But that seems to be right, because there isn't a tutorial site separated from the documentation website
* abaplint: Normalization
* Update zcl_abapgit_services_abapgit.clas.abap
* Update zcl_abapgit_services_abapgit.clas.abap
* abaplint: fix max line length error
* abaplint
* Removed "|{}|"
* command palette
* support for Ctrl; case insensitive search
* some wip
* refactor KeyNavigation
* eslint
* commandPalette key navigation improved
* last backspace hides the palette
* minor cleanups and ids
JavaGUI does not pass values of options from forms generated via
JavaScript.
This commit adds enhances the base page class to render stub forms
(empty form elements), so the page's JavaScript does not need to create
the form element on its own.
It is an optional behavior and can be enabled by redefining the method
get_events which should return table of required events and the base
page object will add the empty form elements for them. Every table line
will be converted to a form with id = "form_" + the event's name.
On the action submit SAP event in the common JavaScript, the method
checks if there is the stub form and if so, the method uses it instead
of creating the dynamic one. Otherwise, it follows the old approach that
creates the form at run-time.
--- v2
Use 'null' instead of 'undefined' to check the form was not found in
the JavaScript code.
---
Issues: #1866, #2769
* draft rewrite hint to be dynamic
* linter fixes
* remove color setting
* remove backspace and esc handling
* close dropdowns
* return some comments in JS
* linter fixes
* Fix hint for dropdown first time + alw close drdwn
* fixes issue #2815
The existing object handler for CDS metadata extension (DDLX) has been reviewed by an expert.
Doing this, the following feedback has been provided:
enable existing logging capability
include environment specific logic (e.g. import of an inactive version)
improve exception handling so that the related object information can be displayed in log
assign package information to handle abap language version ina proper way
adapt lock object
* fixes saplint issues
* fixes saplint issues
* fixes saplint issues
* extract dependency injection for TADIR_INSERT
* fixes saplint issues
* zcl_abapgit_environment.clas.testclasses.abap set to master version
* changes related to code review
* redo changes
* redo changes
* back to master version
* Refactoring of ZCL_ABAPGIT_ENVIRONMENT #2810
* fixes saplint issues
* fixes saplint isues
* fixes saplint issues
* fixes issue based on review
* align zcl_abapgit_objects.clas.abap to master
* add the test class again
* UI Dark Theme #2610
Proposal - Right now, only the first obvious screens were checked, and there are still a few issues with them.
* CSS cleanup of unused elements
* Improve error information - follow up Part I
- Bug: remove errorenous regex
- Add tooltip for message id and message class
* Replace text of message link
* Improve error information
With this commit errors that are raised with zcx_abapgit_exception=>raise
and issued with message are enriched with two additional functions.
1) Go to source
Navigates to the source code position where zcx_abapgit_exception=>raise
is called
2) Callstack
Shows a popup with the full callstack and the possibility to navigate to
the source of each line with double click
This feature requires the full abapGit repository. Without nothing
changes.
* issue messages directly
* zcx_abapgit_exception: adapt callstack handling
- callstack as attribute
- export callstack to ABAP memory only when SAPGui is available
* rename memory id
* Add comment why we don't delete callstack from MEM
* cleanup
* first try html error display
* add some comments
* add longtext
* goto_source and callstack implemented
* part 2
* remove
* fix
* add close button
* fix long classname
* fix linter
* add jump to SE91
* fix lintmr
* fix and cleanup
* fix linter
* fix linter
* fix eslint
* fix linter
* remove message class
* remove superfluous constant
* add missing method implementation
* refactor
* add hotkey for message longtext toggling
* hotkey 2
* refactor + resize callstack popup
* Refactoring: simplify control flow
* fix goto callstack for merged abapGit
* refactor: simplify control flow
* Refactoring: introduce message helper
* fix linter
* remove TODO pragmas
* ren. render meth + move zcl_abapgit_gui_chunk_lib
* refactoring: simplify control flow
* simplify exception handling
* refactor
* refactor
* refactor
* remove duplication
* Rename method
* rename method
* remove superfluous constant
* call ZCL_ABAPGIT_MESSAGE_HELPER dynamically
* cleanup
* Improve UX
* fix linter
* remove hotkey
* Pass log interface for de-serialization
Interface ZIF_ABAPGIT_LOG is now passed for deseriaization API.
This includes:
- Log messages for FUGR: Imported function modules and includes
- Improved error messages for TABL compare
- Log objects w/o changes
- Log is shown in the UI if available ("Log" entry appears if a log exists, no persistence!)
This PR enhances #2534 and #2694
Another important change: In case an object fails (or a single function module in a group fails), the import continues with the next object!
* small pretty printer changes
small pretty printer changes
* fix abaplint issues
reduce line sizes and ensure 7.02 compatibility
* show errors and warnings from pull
Errors and warnings after a pull are now part of the "message list" above the object list in the main screen and will be shown immediately. The new"Log" button shows errors, warnings and success messages on demand.
The log title is now part of the ZIF_ABAPGIT_LOG interface.
* fix abaplint issue
fix abaplint issue
* New Program : Mass Transport to local zip file
Create new program ZMASSGIT in order to convert multiple tranport request to local zip files ( by giving output folder ).
Timestamped subfolder will be created in the input folder.
* Add files via upload
* Update zmassgit.prog.abap
* Add files via upload
* Add files via upload
* Delete zmassgit.prog.xml
* Delete zmassgit.prog.abap
* Add files via upload
* Add files via upload
* Add files via upload
* Add files via upload
* Delete zabapgit_masstransp2zip.fugr.lzabapgit_masstransp2zipf01.abap
* Delete zabapgit_masstransp2zip.fugr.lzabapgit_masstransp2zipf01.xml
* Delete zabapgit_masstransp2zip.fugr.lzabapgit_masstransp2zipplc.abap
* Delete zabapgit_masstransp2zip.fugr.lzabapgit_masstransp2zipplc.xml
* Delete zabapgit_masstransp2zip.fugr.lzabapgit_masstransp2zipscr.abap
* Rename zabapgit_masstransp2zip.fugr.lzabapgit_masstransp2zipscr.xml to src/zabapgit_masstransp2zip.fugr.lzabapgit_masstransp2zipscr.xml
* Rename zabapgit_masstransp2zip.fugr.lzabapgit_masstransp2ziptop.abap to src/zabapgit_masstransp2zip.fugr.lzabapgit_masstransp2ziptop.abap
* Rename zabapgit_masstransp2zip.fugr.lzabapgit_masstransp2ziptop.xml to src/zabapgit_masstransp2zip.fugr.lzabapgit_masstransp2ziptop.xml
* Rename zabapgit_masstransp2zip.fugr.saplzabapgit_masstransp2zip.abap to src/zabapgit_masstransp2zip.fugr.saplzabapgit_masstransp2zip.abap
* Rename zabapgit_masstransp2zip.fugr.saplzabapgit_masstransp2zip.xml to src/zabapgit_masstransp2zip.fugr.saplzabapgit_masstransp2zip.xml
* Rename zabapgit_masstransp2zip.fugr.xml to src/zabapgit_masstransp2zip.fugr.xml
* Rename zabapgit_masstransp2zip.fugr.z_abapgit_transports_2_zip.abap to src/zabapgit_masstransp2zip.fugr.z_abapgit_transports_2_zip.abap
* Rename zcl_abapgit_transport_mass.clas.abap to src/zcl_abapgit_transport_mass.clas.abap
* Rename zcl_abapgit_transport_mass.clas.xml to src/zcl_abapgit_transport_mass.clas.xml
* Delete zcl_abapgit_zip.clas.abap
* Delete zcl_abapgit_zip.clas.xml
* Add files via upload
* Add files via upload
* Add files via upload
* Add files via upload
* Add files via upload
* Add files via upload
* Update zcl_abapgit_zip.clas.abap
* Update zabapgit_masstransp2zip.fugr.lzabapgit_masstransp2zipf01.abap
* Update zabapgit_masstransp2zip.fugr.lzabapgit_masstransp2zipf01.abap
* Update zabapgit_masstransp2zip.fugr.lzabapgit_masstransp2zipf01.abap
* Update zcl_abapgit_transport_mass.clas.xml
* Update zcl_abapgit_transport_mass.clas.abap
* Update zabapgit_masstransp2zip.fugr.saplzabapgit_masstransp2zip.abap
* Update zabapgit_masstransp2zip.fugr.lzabapgit_masstransp2zipplc.abap
* Update zabapgit_masstransp2zip.fugr.saplzabapgit_masstransp2zip.xml
* Update zabapgit_masstransp2zip.fugr.lzabapgit_masstransp2zipplc.abap
* Update zabapgit_masstransp2zip.fugr.lzabapgit_masstransp2zipplc.abap
* Update zabapgit_masstransp2zip.fugr.saplzabapgit_masstransp2zip.abap
* New version without function group
* Cleanup
* Abaplint
* AbapLint Fixes
* Remove plugins objects from master
* Skip log flag in ZIP export
* Popup to ask the Export logic ( FULL / PREFIX ..)
* line length for abaplint
* Refactoring of code
Avoid redundancy of code and remove unused constant.
* Reduce line 50 length for abaplint ( < 120 )
* Change by the review of code
Refactoring of code
* AbapLint Fix
BEFORE:
In case the webi already existed in the receiving system a dump occured that prevent the import from happening
AFTER
The old webi object will be overwritten with the new changes.
* log: move show functions to new class
Enhance ZIF_ABAPGIT_LOG
- add IS_ITEM structure (object) to message adding functions
- add method "add_exception"
- add method "add_info"
- relocate methods "show", "to_html" and "write" to new class ZCL_ABAPGIT_LOG_VIEWER
Introduction of new log viewer class ZCL_ABAPGIT_LOG_VIEWER
Replacement of relocated methods where used
-> This is the next step providing a log for serialzation/de-serialization (see #2534)
* fix abaplint issues
fix abaplint issues
* fix abaplint issues (2)
fix abaplint issues
* Patch: replace links with checkboxes
With this commit we replace the links on the patch page
with checkboxes.
This has several advantages:
- better performance
- simplified and less cluttered UI
- less and easier to understand code
* refactor
* refactoring: introduce new method add_checkbox
* fix linter
* enable link hint navigation
* Refactoring: remove duplication
* refactor: remove duplication
* fix: link hint activate section/lines
* Added client check
Check if repository objects are modifiable in client. If not make write_protected setting active for all repos and make this setting disabled in repo setting page.
* fix abaplint errors
fix for abaplint errors
* code changes as suggested in review
1) Remove zcl_abapgit_client_check class
2) Add is_repo_object_changes_allowed method to zcl_abapgit_environment class
* Delete zcl_abapgit_client_check class
Delete zcl_abapgit_client_check class
* fixed error when activating on ABAP 7.02
* implemented suggestion, direct assignment instead of casting
* implemented suggestion (now using the interface)
* changed lr_popups to li_popups
Since all object handler contains exactly the same CASE statement for STEP definition, I would recommend that each object handler simply returns the STEP he belongs to.
This fix should "simply" issue #2499.
* Update zcl_abapgit_objects_program.clas.abap
Found a situation on my project where on pulling code from a zip file, the error RS_CUA_INTERNAL_WRITE sy-subrc = 2 popped.
The error was due to the content of XML file exported : <CUA><ADM>ACTCODE was containing an 'X' value for a single file. I corrected the file putting it blank and it worked. But it's a fastidious task so I fixed the method ZCL_ABAPGIT_OBJECTS_PROGRAM->auto_correct_cua_adm in order to fix this field also when it contains only an 'X'. Tested ok on my system so I propose this small change.
* Update zcl_abapgit_objects_program.clas.abap
* Update zcl_abapgit_objects_program.clas.abap
Use the same check SAP does in form check_adm of include LSMPIF03 for the CUA values.
* Leading spaces are lost when pulling bug #2571
Reason: during the pull (deserialization), the method `PARSE` of `ZCL_ABAPGIT_XML` does a `li_parser->set_normalizing( iv_normalize )` whose parameter has the default value "true", which strips leading and trailing spaces.
Solution: use `li_parser->add_strip_space_element( )` instead of using the normalization, which seems to work in elementary objects (clas, devc, doma, dtel, enho, enqu, fugr, intf, prog, scp1, tabl, tran, ttyp), but I fear of side effects throughout all abapGit features.
* #2571 zcl_abapgit_xml iv_normalize removed+AU
- Removal of useless parameter IV_NORMALIZE of method PARSE
- Abap Unit test added for testing the method PARSE for an XML valuecontaining leading and trailing spaces
* renaming attribute lo_xml to mo_xml
* Hotkeys no longer depend on abapGit installation
When this commit is applied hotkeys also work with
the single abapGit report. Limitation is still that users
only can override hotkeys with the installed abapGit repo.
* Fix hotkey display when no user def. hotkeys
* New: Override hotkeys within one file abapGit report
When this commit is applied it's possible to override the default
shortcut also in the one file abapGit report. It's no longer necessary
to installe the full abapGit repo to use this feature
* Extract is_merged + check in hotkey logic
* Allow access to private repos when using ADT
In case of using a private repository in ADT (aka ABAP in Eclipse), username and password are passed to the backend system. The ADT backend coding currently handles this via class ZCL_ABAPGIT_DEFAULT_AUTH_INFO. To avoid sending a password dialog in the backend system, class CL_ABAPGIT_PASSWORD_DIALOG needs to be adjusted to take over user/pw from ZCL_ABAPGIT_DEFAULT_AUTH_INFO in a generic way. I know this is not nice and it would be better to have ZCL_ABAPGIT_DEFAULT_AUTH_INFO in ZABAPGIT. Even the best solution would be to re-use ZCL_ABAPGIT_LOGIN_MANAGER instead, but I would recommend to refactor this in a new pull request later on...
* Add comment
Add comment for temporary solution and link to PR#2635
* Avoid DYNPRO_SEND_IN_BACKGROUND while ADT Pull
When ADT (aka ABAP in Eclipse) is used to trigger a pull request, there is no SAPGUI available in the backend system. Whenever a dynpro is called, a DYNPRO_SEND_IN_BACKGROUND short dump occurs.
This commit fixes issue #2632.
Additional remark: In case of a private repository, username and password are passed to the backend system. The ADT backend coding handles this via class ZCL_ABAPGIT_DEFAULT_AUTH_INFO. To avoid sending a password dialog in the backend system (class CL_ABAPGIT_PASSWORD_DIALOG), ZABAPGIT coding needs to be adjusted to take over user/pw from ZCL_ABAPGIT_DEFAULT_AUTH_INFO. I know this is not nice and it would be better to have ZCL_ABAPGIT_DEFAULT_AUTH_INFO in ZABAPGIT. Even the best solution would be to re-use ZCL_ABAPGIT_LOGIN_MANAGER, but I would recommend to refactor this in a new pull request later on...
* Fix abaplint identiation failure
Fix abaplint identiation failure
* Rest ZCL_ABAPGIT_PASSWORD_DIALOG
Rest ZCL_ABAPGIT_PASSWORD_DIALOG to prelimiary version.
To be changed in a different pull request....
* Add user exit for serialize_abap_clif_source
* Document CLIF serializer exit
* Add exit redirection for CLIF serializer
* Add link to example for CLIF serialization exit
* report name of xml file in case of format error
In case of an error in the XML file, for support reason I want to know which file causes the error. The file name is mentioned if the XML itself is corrupt or if there is an XML version mismatch.
This PR fixes issue #2619.
* fix abaplint issues
fix abaplint issues
Issue #2579: diff still shown after pull of ENHO hooks (implicit enhancements i.e. code added at start/end of existing methods, etc.)
Reason: if the author has created and deleted implicit enhancements in the original system, the numbering doesn't start from 1 (this is the numbering we can see for the statement ENHANCEMENT, for instance ENHANCEMENT 1. ... ENDENHANCEMENT.) When pulling in another system, the numbering will start from 1, so it will differ from the source. As this enhancement number is serialized by abapGit in the XML, it will detect a difference.
Correction: the method SERIALIZE of class ZCL_ABAPGIT_OBJECT_ENHO_HOOK is changed so that to not serialize the enhancement number.
Three issues are corrected:
- Enhancement events are not serialized at all, nor deserialized (missing feature).
- The codeof new enhancement methods (not the implicit enhancements of existing methods, the code for methods added) are serialized but not deserialized (incomplete feature).
- DIFF may also appear after pulling ENHO objects, concerning attributes (OTR text ID being different) and method parameters (author, date, etc.)
Corrections:
- Add serialization/deserialization of events in class ZCL_ABAPGIT_OBJECT_ENHO_CLIF
- Add deserialization of method implementations in class ZCL_ABAPGIT_OBJECT_ENHO_CLASS
- I havealso moved the existing method SERIALIZE_INCLUDES from ZCL_ABAPGIT_OBJECT_ENHO_CLIF to ZCL_ABAPGIT_OBJECT_ENHO_CLASS and created DESERIALIZE_INCLUDES in the latter class because method implementations exist only for classes, not for interfaces, so it should be done in "CLASS", not in "CLIF".
- DIFF criteria cleared in method SERIALIZE of class ZCL_ABAPGIT_OBJECT_ENHO_CLIF
#2498 Two unit tests in ZCL_ABAPGIT_GUI_PAGE_DIFF failing
It concerns two test methods which test zcl_abapgit_gui_page_diff%3D>get_patch_data. The parameter IV_PATCH is passed with an incorrect value.
This issue is due to commit 389512f690 on Feb 26, 2019
Correction of method get_patch_data_add:
- Before: |add_patch_zcl_test_git_add_p.clas.abap_19|
- After: |patch_line_add_zcl_test_git_add_p.clas.abap_0_19|
Correction of method get_patch_data_remove:
- Before: |remove_patch_ztest_patch.prog.abap_39|
- After: |patch_line_remove_ztest_patch.prog.abap_0_39|
* shortdump ZCL_ABAPGIT_ZLIB->Decompress #2483
Short dump ASSERTION_FAILED while pulling from a Git repository.
It's because of block type '00' (variable `lv_btype`) not handled at all.
00 is "non-compressed blocks", see https://www.ietf.org/rfc/rfc1951.txt section 3.2.4
The issue used to happen with Azure DevOps website, for "tree" objects (100644...) but not all tree objects.
Correction : algorithm added to handle non-compressed blocks. Test method added to complete the current test for blocks with fixed Huffman codes (01). Also one test method added for testing blocks with dynamic Huffman codes (10), test data taken from ZAZLIB.
* Lint code alignment issue