mirror of
https://github.com/abapGit/abapGit.git
synced 2025-05-01 04:08:27 +08:00
commit
7bea09ac10
|
@ -16,33 +16,8 @@ A good bug report should not leave others needing to chase you up for more infor
|
||||||
|
|
||||||
## Development Guidelines
|
## Development Guidelines
|
||||||
|
|
||||||
a. Make sure there is an open issue for the stuff that you want to work on. When starting the development add a comment in the issue. This will allow for discussing possible solutions, and avoid having multiple people look into the same issue.
|
http://docs.abapgit.org/development/guidelines.html
|
||||||
|
|
||||||
b. Keep the commits/PR as small as possible, try not to fix multiple issues in one commit/PR if possible. Smaller changes are easier to review, and are more likely to be accepted.
|
|
||||||
|
|
||||||
c. Variables are prefixed using the standard setting in Code Inspector check "Extended Naming Conventions for Programs"
|
|
||||||
|
|
||||||
d. abapGit is targeted for version 702, so the code should only contain expressions/statements that works on 702
|
|
||||||
|
|
||||||
e. 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.
|
|
||||||
|
|
||||||
f. Use pretty printer, keywords upper case + indentation
|
|
||||||
|
|
||||||
External Links:
|
|
||||||
https://guides.github.com/activities/contributing-to-open-source/
|
|
||||||
|
|
||||||
## Building/Creating a PR
|
## Building/Creating a PR
|
||||||
|
|
||||||
1: Install the development version of abapGit by cloning the repository using an online repository, or downloading the zip file and installing it using an offline repository.
|
http://docs.abapgit.org/development/contributing.html
|
||||||
|
|
||||||
2: The abapGit report installed in your system will now consist of multiple includes
|
|
||||||
|
|
||||||
3: Do the required changes to includes and/or main program
|
|
||||||
|
|
||||||
4: Create the pull request with the changes to the includes
|
|
||||||
|
|
||||||
5: After the pull request is merged, abapmerge will automatically run to build the non-include version of abapGit.
|
|
||||||
|
|
||||||
Every time a commit is pushed to the master branch, https://travis-ci.org/ will be triggered to perform the build. It will use [abapmerge](https://github.com/larshp/abapmerge) to merge all the includes into a single file, the build can be downloaded from https://raw.githubusercontent.com/abapGit/build/master/zabapgit.abap
|
|
||||||
|
|
||||||
Alternatively, use the GitHub webinterface to change the files and submit a pull request.
|
|
||||||
|
|
|
@ -8,6 +8,83 @@ Legend
|
||||||
+ : added
|
+ : added
|
||||||
- : removed
|
- : removed
|
||||||
|
|
||||||
|
2018-07-06 v1.71.0
|
||||||
|
------------------
|
||||||
|
* validate sub and super packages when installing
|
||||||
|
! delete empty packages
|
||||||
|
+ UI for editing requirements
|
||||||
|
! track user which created repo
|
||||||
|
+ new repository overview page
|
||||||
|
* delete PARA after DTEL
|
||||||
|
* TABL, check existence before SELECTing
|
||||||
|
|
||||||
|
2018-06-28 v1.70.0
|
||||||
|
------------------
|
||||||
|
+ possibility to run code inspector before staging
|
||||||
|
* WAPA better delta handling
|
||||||
|
+ Block pull if any of deserialized object is locked
|
||||||
|
+ CHAR support
|
||||||
|
|
||||||
|
2018-06-17 v1.69.1
|
||||||
|
------------------
|
||||||
|
+ new exit: change_tadir
|
||||||
|
* fix objects outside of repo
|
||||||
|
* started dependency injection for unit testing
|
||||||
|
* DDLS fix dump
|
||||||
|
* handle repair transports
|
||||||
|
* SSFO catch exception
|
||||||
|
* SEO_CS_CACHE downport
|
||||||
|
* TABL consider DD12L in changed_by
|
||||||
|
|
||||||
|
2018-06-09 v1.69.0
|
||||||
|
------------------
|
||||||
|
! FORM serialization, filenames changed
|
||||||
|
* fix gui show changes only
|
||||||
|
* fix checkout annotated tags
|
||||||
|
* set new remote: supply remote SHA1
|
||||||
|
|
||||||
|
2018-06-06 v1.68.3
|
||||||
|
------------------
|
||||||
|
* fix dump when objects are moved
|
||||||
|
* abapGit news feature now works in more cases
|
||||||
|
* FUGR force update of where-used
|
||||||
|
* tag page redesigned
|
||||||
|
* TABL, clear field RESERVEDTE
|
||||||
|
* http agent changed
|
||||||
|
|
||||||
|
2018-06-04 v1.68.2
|
||||||
|
------------------
|
||||||
|
* CLAS ignore deltion of non-existent objects
|
||||||
|
* ENHO implement changed by
|
||||||
|
* fix TOBJ diffs
|
||||||
|
* fix error in XML syntax highlighter
|
||||||
|
* ECATT remove empty attributes
|
||||||
|
* evaluate 2FA implementations alphabetically
|
||||||
|
|
||||||
|
2018-06-03 v1.68.1
|
||||||
|
------------------
|
||||||
|
* XSLT fix changed_by
|
||||||
|
* Fix dump in XML syntax highlighter
|
||||||
|
* Delivery class of database table changed
|
||||||
|
|
||||||
|
2018-05-27 v1.68.0
|
||||||
|
------------------
|
||||||
|
+ Resolve conflicts functionallity/UI (beta)
|
||||||
|
+ Annotated tags
|
||||||
|
* Locking problems fixed(?)
|
||||||
|
|
||||||
|
2018-05-19 v1.67.0
|
||||||
|
------------------
|
||||||
|
+ IDOC support
|
||||||
|
+ IEXT support
|
||||||
|
* DOMA deletion downport
|
||||||
|
* ALV popup
|
||||||
|
* DDLS downport
|
||||||
|
! default starting folder changed to "/src/"
|
||||||
|
* Author regex fixed in branch overview
|
||||||
|
! DDLS clear additional fields
|
||||||
|
! Moving an object outside main package shows up as deletion
|
||||||
|
|
||||||
2018-05-11 v1.66.0
|
2018-05-11 v1.66.0
|
||||||
------------------
|
------------------
|
||||||
! Clone without pull, user has to choose pull after creating online repo
|
! Clone without pull, user has to choose pull after creating online repo
|
||||||
|
|
|
@ -1,8 +1,15 @@
|
||||||
title: abapGit documentation
|
title: abapGit documentation
|
||||||
highlighter: rouge
|
highlighter: rouge
|
||||||
|
collections_dir: collections
|
||||||
|
collections:
|
||||||
|
development:
|
||||||
|
output: true
|
||||||
defaults:
|
defaults:
|
||||||
-
|
- scope:
|
||||||
scope:
|
path: ""
|
||||||
path: "" # an empty string here means all files in the project
|
|
||||||
values:
|
values:
|
||||||
layout: "default"
|
layout: "default"
|
||||||
|
- scope:
|
||||||
|
path: "_development"
|
||||||
|
values:
|
||||||
|
layout: "development"
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
<footer class="nav-footer wrap">
|
<footer class="nav-footer wrap">
|
||||||
<div class="nav-refs">
|
<div class="nav-refs">
|
||||||
<a href="https://github.com/larshp/abapGit">
|
<a href="https://github.com/larshp/abapGit">
|
||||||
<span class="mega-octicon octicon-mark-github"></span>
|
<span class="mega-octicon octicon-mark-github"></span>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
<footer>
|
<footer>
|
||||||
|
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
<head>
|
<head>
|
||||||
<meta charset="utf-8">
|
<meta charset="utf-8">
|
||||||
<link rel="shortcut icon" type="image/png" href="favicon.png">
|
<link rel="shortcut icon" type="image/png" href="/img/favicon.png">
|
||||||
<link rel="stylesheet" href="main.css">
|
<link rel="stylesheet" href="/assets/main.css">
|
||||||
<link rel="stylesheet" href="highlight.css">
|
<link rel="stylesheet" href="/assets/highlight.css">
|
||||||
<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/octicons/4.4.0/font/octicons.min.css">
|
<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/octicons/4.4.0/font/octicons.min.css">
|
||||||
<title>{% if page.title %}{{ site.title }} - {{ page.title }}{% else %}{{ site.title }}{% endif %}</title>
|
<title>{% if page.title %}{{ site.title }} - {{ page.title }}{% else %}{{ site.title }}{% endif %}</title>
|
||||||
<meta name="description" content="{% if page.title %}{{ site.title }} - {{ page.title }}{% else %}{{ site.title }} - Home{% endif %}" />
|
<meta name="description" content="{% if page.title %}{{ site.title }} - {{ page.title }}{% else %}{{ site.title }} - Home{% endif %}" />
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
<div class="page-head">
|
<div class="page-head">
|
||||||
<div class="wrap">
|
<div class="wrap">
|
||||||
<a href="./"><img class="head-logo" src="img/logo.svg" height="40" alt="abapGit"></a>
|
<a href="/"><img class="head-logo" src="/img/logo.svg" height="40" alt="abapGit"></a>
|
||||||
<span class="head-title"> ► documentation</span>
|
<span class="head-title"> ► documentation</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -48,3 +48,5 @@
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
|
<a href="/development">Development</a>
|
27
docs/_layouts/development.html
Normal file
27
docs/_layouts/development.html
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
{% include head.html %}
|
||||||
|
<body>
|
||||||
|
{% include header.html %}
|
||||||
|
<div class="container wrap">
|
||||||
|
|
||||||
|
<div class="nav">
|
||||||
|
<h3>Development</h3>
|
||||||
|
<ul>
|
||||||
|
{% assign pages = site.development | sort: 'order' %}
|
||||||
|
{% for doc in pages %}
|
||||||
|
{% if doc.title != "Development" %}
|
||||||
|
<li><a href="{{ doc.url }}">{{ doc.title }}</a></li>
|
||||||
|
{% endif %}
|
||||||
|
{% endfor %}
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="content">
|
||||||
|
<h1>{{ page.title }}</h1>
|
||||||
|
{{ content }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{% include footer.html %}
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -1,6 +1,5 @@
|
||||||
---
|
---
|
||||||
title: abapGit API
|
title: API
|
||||||
category: other
|
|
||||||
order: 80
|
order: 80
|
||||||
---
|
---
|
||||||
|
|
20
docs/collections/_development/contributing.md
Normal file
20
docs/collections/_development/contributing.md
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
---
|
||||||
|
title: Contributing
|
||||||
|
order: 5
|
||||||
|
---
|
||||||
|
|
||||||
|
*******************************
|
||||||
|
|
||||||
|
1: Install the development version of abapGit by cloning the repository using an online repository, or downloading the zip file and installing it using an offline repository.
|
||||||
|
|
||||||
|
2: The abapGit report installed in your system will now consist of multiple classes
|
||||||
|
|
||||||
|
3: Do the required changes to classes and/or main program
|
||||||
|
|
||||||
|
4: Create the pull request with the changes
|
||||||
|
|
||||||
|
5: After the pull request is merged, abapmerge will automatically run to build the report version of abapGit.
|
||||||
|
|
||||||
|
Every time a commit is pushed to the master branch, [Travis CI](https://travis-ci.org/) will be triggered to perform the build. It will use [abapmerge](https://github.com/larshp/abapmerge) to merge all the includes into a single file, the build can be downloaded from [https://raw.githubusercontent.com/abapGit/build/master/zabapgit.abap](https://raw.githubusercontent.com/abapGit/build/master/zabapgit.abap)
|
||||||
|
|
||||||
|
Alternatively, use the GitHub webinterface to change the files and submit a pull request.
|
13
docs/collections/_development/docs.md
Normal file
13
docs/collections/_development/docs.md
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
---
|
||||||
|
title: docs
|
||||||
|
order: 200
|
||||||
|
---
|
||||||
|
|
||||||
|
abapGit uses [github pages](https://help.github.com/articles/what-is-github-pages/) for documentation,
|
||||||
|
all pages are generated statically using [Jekyll](https://jekyllrb.com/)
|
||||||
|
|
||||||
|
Building /docs/ locally:
|
||||||
|
|
||||||
|
`bundle install`
|
||||||
|
|
||||||
|
`bundle exec jekyll serve --incremental --port $PORT --host $IP`
|
|
@ -1,6 +1,5 @@
|
||||||
---
|
---
|
||||||
title: Object File Formats
|
title: Object File Formats
|
||||||
category: other
|
|
||||||
order: 40
|
order: 40
|
||||||
---
|
---
|
||||||
|
|
27
docs/collections/_development/guidelines.md
Normal file
27
docs/collections/_development/guidelines.md
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
---
|
||||||
|
title: Development Guidelines
|
||||||
|
order: 10
|
||||||
|
---
|
||||||
|
|
||||||
|
### Practical
|
||||||
|
|
||||||
|
* For non-tivial changes make sure there is an open issue. When starting the development add a comment in the issue. This will allow for discussing possible solutions, and avoid having multiple people look into the same issue.
|
||||||
|
|
||||||
|
* Keep the commits/PR as small as possible, try not to fix multiple issues in one commit/PR if possible. Smaller changes are easier to review, and are more likely to be 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.
|
||||||
|
|
||||||
|
External Links:
|
||||||
|
[https://guides.github.com/activities/contributing-to-open-source/](https://guides.github.com/activities/contributing-to-open-source/)
|
||||||
|
|
||||||
|
### Conventions
|
||||||
|
|
||||||
|
#### Prefixing
|
||||||
|
Variables are prefixed using the standard setting in [abapOpenChecks Naming Conventions](http://docs.abapopenchecks.org/checks/69/)
|
||||||
|
|
||||||
|
#### Downport
|
||||||
|
abapGit is targeted for version 702, so the code should only contain expressions/statements that works on 702.
|
||||||
|
[abaplint](https://abaplint.org) will automatically check every PR for language syntax that is not available on 702.
|
||||||
|
|
||||||
|
#### Pretty Printer
|
||||||
|
Use pretty printer, keywords upper case + indentation, [abapOpenChecks](http://docs.abapopenchecks.org/checks/06/) can be used for checking this
|
8
docs/collections/_development/index.md
Normal file
8
docs/collections/_development/index.md
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
---
|
||||||
|
title: Development
|
||||||
|
order: 10
|
||||||
|
---
|
||||||
|
|
||||||
|
*******************************
|
||||||
|
|
||||||
|
Development related information
|
|
@ -1,6 +1,5 @@
|
||||||
---
|
---
|
||||||
title: Technical Links
|
title: Technical Links
|
||||||
category: other
|
|
||||||
order: 50
|
order: 50
|
||||||
---
|
---
|
||||||
|
|
10
docs/collections/_development/tests.md
Normal file
10
docs/collections/_development/tests.md
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
---
|
||||||
|
title: Unit Tests
|
||||||
|
order: 70
|
||||||
|
---
|
||||||
|
|
||||||
|
abapGit uses dependency lookup as an approach for writing unit tests, see example in ZCL_ABAPGIT_TADIR, ZCL_ABAPGIT_FACTORY, and ZCL_ABAPGIT_INJECTOR
|
||||||
|
|
||||||
|
Unit tests that create and delete objects in the system are categorized as dangerous, these tests can be enabled via Advanced -> Settings
|
||||||
|
|
||||||
|
Use organization https://github.com/abapGit-tests for storing serialization test cases
|
|
@ -45,7 +45,7 @@ On [Feburary 22nd](https://githubengineering.com/crypto-removal-notice/), GitHub
|
||||||
|
|
||||||
See [SAP note 510007](https://launchpad.support.sap.com/#/notes/510007), section 7, for information on how to configure SSL.
|
See [SAP note 510007](https://launchpad.support.sap.com/#/notes/510007), section 7, for information on how to configure SSL.
|
||||||
|
|
||||||
Add parameters
|
Add profile parameters:
|
||||||
```
|
```
|
||||||
ssl/client_ciphersuites = 150:PFS:HIGH::EC_P256:EC_HIGH
|
ssl/client_ciphersuites = 150:PFS:HIGH::EC_P256:EC_HIGH
|
||||||
ssl/ciphersuites = 135:PFS:HIGH::EC_P256:EC_HIGH
|
ssl/ciphersuites = 135:PFS:HIGH::EC_P256:EC_HIGH
|
||||||
|
|
Before Width: | Height: | Size: 764 B After Width: | Height: | Size: 764 B |
|
@ -1,7 +1,6 @@
|
||||||
---
|
---
|
||||||
title: Welcome
|
title: Welcome
|
||||||
---
|
---
|
||||||
|
|
||||||
abapGit is a git client for ABAP developed in ABAP. It requires SAP BASIS version 702 or higher.
|
abapGit is a git client for ABAP developed in ABAP. It requires SAP BASIS version 702 or higher.
|
||||||
|
|
||||||
Latest build: [zabapgit.abap](https://raw.githubusercontent.com/abapGit/build/master/zabapgit.abap)
|
Latest build: [zabapgit.abap](https://raw.githubusercontent.com/abapGit/build/master/zabapgit.abap)
|
||||||
|
|
|
@ -78,3 +78,11 @@ SAP Teched Barcelona
|
||||||
[ABAP Code Reviews with abapGit](https://blogs.sap.com/2018/03/23/abap-code-reviews-with-abapgit/) -Eduardo Copat
|
[ABAP Code Reviews with abapGit](https://blogs.sap.com/2018/03/23/abap-code-reviews-with-abapgit/) -Eduardo Copat
|
||||||
|
|
||||||
[Get into Git!](https://blogs.sap.com/2018/04/13/get-into-git/) - Mike Pokraka
|
[Get into Git!](https://blogs.sap.com/2018/04/13/get-into-git/) - Mike Pokraka
|
||||||
|
|
||||||
|
[ABAP – The Special Snowflake](https://blogs.sap.com/2018/07/02/abap-the-special-snowflake/) - Nigel James
|
||||||
|
|
||||||
|
[Is SAP’s ABAP a special snowflake or has a Git run it over?](https://diginomica.com/2018/07/03/is-saps-abap-a-special-snowflake-or-has-a-git-run-it-over/) - Den Howlett
|
||||||
|
|
||||||
|
[ORGANISIERE DEINE ARBEIT MIT ABAPGIT ](https://inspiricon.de/abapgit/) -Andra Atanasoaie
|
||||||
|
|
||||||
|
[Moderne ABAP Entwicklung mit abapGit](https://de.slideshare.net/ChristianGnter/moderne-abap-entwicklung-mit-abapgit) - Christian Günter
|
||||||
|
|
|
@ -6,8 +6,7 @@ order: 45
|
||||||
|
|
||||||
abapGit uses a few external libraries, these are loaded via [cdnjs](https://cdnjs.com/about)
|
abapGit uses a few external libraries, these are loaded via [cdnjs](https://cdnjs.com/about)
|
||||||
|
|
||||||
Library | License
|
Library | Version | License
|
||||||
:------------ | :------------
|
:------------ | :------------ | :------------
|
||||||
[octicons](https://github.com/primer/octicons) 4.4.0 | MIT
|
[octicons](https://github.com/primer/octicons) | 4.4.0 | MIT
|
||||||
[jquery](https://github.com/jquery/jquery) 3.2.1 | MIT
|
[gitgraph](https://github.com/nicoespeon/gitgraph.js) | 1.2.3 | MIT
|
||||||
[gitgraph](https://github.com/nicoespeon/gitgraph.js) 1.2.3 | MIT
|
|
||||||
|
|
|
@ -11,21 +11,36 @@ REPORT zabapgit_test_ssl.
|
||||||
|
|
||||||
* See https://github.com/larshp/abapGit/
|
* See https://github.com/larshp/abapGit/
|
||||||
|
|
||||||
PARAMETERS: p_url TYPE swc_value DEFAULT 'https://github.com',
|
PARAMETERS: p_url1 TYPE swc_value DEFAULT 'https://github.com',
|
||||||
p_proxy TYPE string,
|
p_url2 TYPE swc_value DEFAULT 'https://api.github.com'.
|
||||||
p_pxport TYPE string.
|
* api.github.com is used when pushing code back to github
|
||||||
|
|
||||||
|
SELECTION-SCREEN BEGIN OF BLOCK proxy WITH FRAME.
|
||||||
|
* proxy settings, fill if your system is behind a proxy
|
||||||
|
PARAMETERS: p_proxy TYPE string,
|
||||||
|
p_pxport TYPE string,
|
||||||
|
p_puser TYPE string,
|
||||||
|
p_ppwd TYPE string.
|
||||||
|
SELECTION-SCREEN END OF BLOCK proxy.
|
||||||
|
|
||||||
START-OF-SELECTION.
|
START-OF-SELECTION.
|
||||||
PERFORM run.
|
PERFORM run USING p_url1.
|
||||||
|
WRITE: /, '----', /.
|
||||||
|
PERFORM run USING p_url2.
|
||||||
|
|
||||||
FORM run.
|
FORM run USING iv_url TYPE swc_value.
|
||||||
|
|
||||||
DATA: lv_code TYPE i,
|
DATA: lv_code TYPE i,
|
||||||
lv_url TYPE string,
|
lv_url TYPE string,
|
||||||
li_client TYPE REF TO if_http_client,
|
li_client TYPE REF TO if_http_client,
|
||||||
|
lt_errors TYPE TABLE OF string,
|
||||||
lv_error_message TYPE string.
|
lv_error_message TYPE string.
|
||||||
|
|
||||||
lv_url = p_url.
|
IF iv_url IS INITIAL.
|
||||||
|
RETURN.
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
lv_url = iv_url.
|
||||||
cl_http_client=>create_by_url(
|
cl_http_client=>create_by_url(
|
||||||
EXPORTING
|
EXPORTING
|
||||||
url = lv_url
|
url = lv_url
|
||||||
|
@ -35,11 +50,12 @@ FORM run.
|
||||||
IMPORTING
|
IMPORTING
|
||||||
client = li_client ).
|
client = li_client ).
|
||||||
|
|
||||||
* enter username and password for proxy authentication if needed
|
IF NOT p_puser IS INITIAL.
|
||||||
* li_client->authenticate(
|
li_client->authenticate(
|
||||||
* proxy_authentication = abap_true
|
proxy_authentication = abap_true
|
||||||
* username = ''
|
username = p_puser
|
||||||
* password = '' ).
|
password = p_ppwd ).
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
li_client->send( ).
|
li_client->send( ).
|
||||||
li_client->receive(
|
li_client->receive(
|
||||||
|
@ -49,12 +65,15 @@ FORM run.
|
||||||
http_processing_failed = 3
|
http_processing_failed = 3
|
||||||
OTHERS = 4 ).
|
OTHERS = 4 ).
|
||||||
IF sy-subrc <> 0.
|
IF sy-subrc <> 0.
|
||||||
WRITE: / 'Error Number', sy-subrc.
|
WRITE: / 'Error Number', sy-subrc, /.
|
||||||
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
|
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
|
||||||
li_client->get_last_error(
|
li_client->get_last_error(
|
||||||
IMPORTING
|
IMPORTING
|
||||||
message = lv_error_message ).
|
message = lv_error_message ).
|
||||||
WRITE: / `Error message: ` && lv_error_message.
|
SPLIT lv_error_message AT cl_abap_char_utilities=>newline INTO TABLE lt_errors.
|
||||||
|
LOOP AT lt_errors INTO lv_error_message.
|
||||||
|
WRITE: / lv_error_message.
|
||||||
|
ENDLOOP.
|
||||||
WRITE: / 'Also check transaction SMICM -> Goto -> Trace File -> Display End'.
|
WRITE: / 'Also check transaction SMICM -> Goto -> Trace File -> Display End'.
|
||||||
RETURN.
|
RETURN.
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
@ -62,10 +81,10 @@ FORM run.
|
||||||
* if SSL Handshake fails, make sure to also check https://launchpad.support.sap.com/#/notes/510007
|
* if SSL Handshake fails, make sure to also check https://launchpad.support.sap.com/#/notes/510007
|
||||||
|
|
||||||
li_client->response->get_status(
|
li_client->response->get_status(
|
||||||
IMPORTING
|
IMPORTING
|
||||||
code = lv_code ).
|
code = lv_code ).
|
||||||
IF lv_code = 200.
|
IF lv_code = 200.
|
||||||
WRITE: / 'Success, it works'.
|
WRITE: / lv_url, ': ok'.
|
||||||
ELSE.
|
ELSE.
|
||||||
WRITE: / 'Error', lv_code.
|
WRITE: / 'Error', lv_code.
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
|
|
@ -9,8 +9,12 @@ Type | Description | Supported
|
||||||
:------------ | :------------ | ------------:
|
:------------ | :------------ | ------------:
|
||||||
ACID | Checkpoint Group | Yes
|
ACID | Checkpoint Group | Yes
|
||||||
AOBJ | Archiving Object | [#804](https://github.com/larshp/abapGit/issues/804)
|
AOBJ | Archiving Object | [#804](https://github.com/larshp/abapGit/issues/804)
|
||||||
|
ASFC | Field Catalog | [#1578](https://github.com/larshp/abapGit/issues/1578)
|
||||||
|
ASIS | Archiving Information Structure | [#1579](https://github.com/larshp/abapGit/issues/1579)
|
||||||
AUTH | Authorization Check Fields | Yes
|
AUTH | Authorization Check Fields | Yes
|
||||||
|
AVAS | Classification | [#1360](https://github.com/larshp/abapGit/issues/1360)
|
||||||
BOBF | BOPF: Business Object Model | [#165](https://github.com/larshp/abapGit/issues/165)
|
BOBF | BOPF: Business Object Model | [#165](https://github.com/larshp/abapGit/issues/165)
|
||||||
|
CHAR | Object characteristic | Yes
|
||||||
CHDO | Change Document Object | [#802](https://github.com/larshp/abapGit/issues/802)
|
CHDO | Change Document Object | [#802](https://github.com/larshp/abapGit/issues/802)
|
||||||
CLAS | Class (ABAP Objects) | Yes
|
CLAS | Class (ABAP Objects) | Yes
|
||||||
CMOD | Customer enhancement projects | [#151](https://github.com/larshp/abapGit/issues/151)
|
CMOD | Customer enhancement projects | [#151](https://github.com/larshp/abapGit/issues/151)
|
||||||
|
@ -44,19 +48,25 @@ IAMU | Language-Independent IAC Binary Data | Yes
|
||||||
IARP | Parameters of IAC Language Resource | Yes
|
IARP | Parameters of IAC Language Resource | Yes
|
||||||
IASP | Parameters of an IAC service | Yes
|
IASP | Parameters of an IAC service | Yes
|
||||||
IATU | Language-Independent IAC Templates | Yes
|
IATU | Language-Independent IAC Templates | Yes
|
||||||
|
IDOC | IDoc Type | Yes
|
||||||
|
IEXT | Enhancement | Yes
|
||||||
IWPR | Gateway Business Suite Enablement - Service Builder Project | [#75](https://github.com/larshp/abapGit/issues/75)
|
IWPR | Gateway Business Suite Enablement - Service Builder Project | [#75](https://github.com/larshp/abapGit/issues/75)
|
||||||
JOBD | Technical Job Definition | Yes
|
JOBD | Technical Job Definition | Yes
|
||||||
LPDC | Launchpad short texts | [#107](https://github.com/larshp/abapGit/issues/107)
|
LPDC | Launchpad short texts | [#107](https://github.com/larshp/abapGit/issues/107)
|
||||||
MSAG | Message Class | Yes
|
MSAG | Message Class | Yes
|
||||||
NROB | Number Range Objects | Yes
|
NROB | Number Range Objects | Yes
|
||||||
|
OTGR | Object type group | [#1515](https://github.com/larshp/abapGit/issues/1515)
|
||||||
PARA | SPA/GPA Parameters | Yes
|
PARA | SPA/GPA Parameters | Yes
|
||||||
PDTS | Standard Task | [#153](https://github.com/larshp/abapGit/issues/153)
|
PDTS | Standard Task | [#153](https://github.com/larshp/abapGit/issues/153)
|
||||||
PDWS | Workflow templates | [#154](https://github.com/larshp/abapGit/issues/154)
|
PDWS | Workflow templates | [#154](https://github.com/larshp/abapGit/issues/154)
|
||||||
PINF | Package interface | Yes
|
PINF | Package interface | Yes
|
||||||
PRAG | Pragma in ABAP Source Code | Yes
|
PRAG | Pragma in ABAP Source Code | Yes
|
||||||
PROG | Program | Yes
|
PROG | Program | Yes
|
||||||
|
SAJC | Application job catalog entry | [#1580](https://github.com/larshp/abapGit/issues/1580)
|
||||||
|
SAJT | Application job template | [1581](https://github.com/larshp/abapGit/issues/1581)
|
||||||
SAMC | ABAP Messaging Channels | Yes
|
SAMC | ABAP Messaging Channels | Yes
|
||||||
SAPC | ABAP Push Channels | Yes
|
SAPC | ABAP Push Channels | Yes
|
||||||
|
SCP1 | BC Set or Customizing Profile | [#1004](https://github.com/larshp/abapGit/issues/1004)
|
||||||
SFBF | Business Function + Assignment | Yes
|
SFBF | Business Function + Assignment | Yes
|
||||||
SFBS | Business Function Set + Assignment | Yes
|
SFBS | Business Function Set + Assignment | Yes
|
||||||
SFPF | Form Object: Form | Yes
|
SFPF | Form Object: Form | Yes
|
||||||
|
@ -72,6 +82,8 @@ SMIM | Info Object from the MIME Repository | Yes
|
||||||
SOTS | All Concepts (OTR) of a Package - Long Texts | [#792](https://github.com/larshp/abapGit/issues/792)
|
SOTS | All Concepts (OTR) of a Package - Long Texts | [#792](https://github.com/larshp/abapGit/issues/792)
|
||||||
SPLO | Format Types | Yes
|
SPLO | Format Types | Yes
|
||||||
SPRX | Proxy Object | [#87](https://github.com/larshp/abapGit/issues/87)
|
SPRX | Proxy Object | [#87](https://github.com/larshp/abapGit/issues/87)
|
||||||
|
SUCU | Authorization Groups (TBRG_AUTH) | [#1434](https://github.com/larshp/abapGit/issues/1434)
|
||||||
|
SUSH | Assignment: Service --> Authorization Objects | [#1582](https://github.com/larshp/abapGit/issues/1582)
|
||||||
SRFC | RFC Service | Yes
|
SRFC | RFC Service | Yes
|
||||||
SSFO | SAP Smart Form | Yes
|
SSFO | SAP Smart Form | Yes
|
||||||
SSST | SAP Smart Style | Yes
|
SSST | SAP Smart Style | Yes
|
||||||
|
@ -98,4 +110,6 @@ WEBI | Virtual End Point | Yes
|
||||||
XINX | Extension Index | Yes
|
XINX | Extension Index | Yes
|
||||||
XSLT | Transformation | Yes
|
XSLT | Transformation | Yes
|
||||||
|
|
||||||
|
Support for customizing planned, see [#1004](https://github.com/larshp/abapGit/issues/1004)
|
||||||
|
|
||||||
Also see [https://github.com/larshp/abapGit-Plugins](https://github.com/larshp/abapGit-Plugins)
|
Also see [https://github.com/larshp/abapGit-Plugins](https://github.com/larshp/abapGit-Plugins)
|
||||||
|
|
|
@ -30,9 +30,9 @@ CLASS zcl_abapgit_git_branch_list DEFINITION
|
||||||
zcx_abapgit_exception .
|
zcx_abapgit_exception .
|
||||||
METHODS get_tags_only " For potential future use
|
METHODS get_tags_only " For potential future use
|
||||||
RETURNING
|
RETURNING
|
||||||
VALUE(rt_branches) TYPE zif_abapgit_definitions=>ty_git_branch_list_tt
|
VALUE(rt_tags) TYPE zif_abapgit_definitions=>ty_git_branch_list_tt
|
||||||
RAISING
|
RAISING
|
||||||
zcx_abapgit_exception .
|
zcx_abapgit_exception.
|
||||||
CLASS-METHODS is_ignored
|
CLASS-METHODS is_ignored
|
||||||
IMPORTING
|
IMPORTING
|
||||||
!iv_branch_name TYPE clike
|
!iv_branch_name TYPE clike
|
||||||
|
@ -45,9 +45,11 @@ CLASS zcl_abapgit_git_branch_list DEFINITION
|
||||||
VALUE(rv_display_name) TYPE string .
|
VALUE(rv_display_name) TYPE string .
|
||||||
CLASS-METHODS get_type
|
CLASS-METHODS get_type
|
||||||
IMPORTING
|
IMPORTING
|
||||||
!iv_branch_name TYPE clike
|
!iv_branch_name TYPE clike
|
||||||
|
it_result TYPE stringtab OPTIONAL
|
||||||
|
iv_current_row_index TYPE sytabix OPTIONAL
|
||||||
RETURNING
|
RETURNING
|
||||||
VALUE(rv_type) TYPE zif_abapgit_definitions=>ty_git_branch_type .
|
VALUE(rv_type) TYPE zif_abapgit_definitions=>ty_git_branch_type .
|
||||||
CLASS-METHODS complete_heads_branch_name
|
CLASS-METHODS complete_heads_branch_name
|
||||||
IMPORTING
|
IMPORTING
|
||||||
!iv_branch_name TYPE clike
|
!iv_branch_name TYPE clike
|
||||||
|
@ -62,6 +64,13 @@ CLASS zcl_abapgit_git_branch_list DEFINITION
|
||||||
|
|
||||||
DATA mt_branches TYPE zif_abapgit_definitions=>ty_git_branch_list_tt .
|
DATA mt_branches TYPE zif_abapgit_definitions=>ty_git_branch_list_tt .
|
||||||
DATA mv_head_symref TYPE string .
|
DATA mv_head_symref TYPE string .
|
||||||
|
METHODS find_tag_by_name
|
||||||
|
IMPORTING
|
||||||
|
iv_branch_name TYPE string
|
||||||
|
RETURNING
|
||||||
|
VALUE(rs_branch) TYPE zif_abapgit_definitions=>ty_git_branch
|
||||||
|
RAISING
|
||||||
|
zcx_abapgit_exception.
|
||||||
|
|
||||||
CLASS-METHODS parse_branch_list
|
CLASS-METHODS parse_branch_list
|
||||||
IMPORTING
|
IMPORTING
|
||||||
|
@ -80,7 +89,7 @@ ENDCLASS.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
CLASS ZCL_ABAPGIT_GIT_BRANCH_LIST IMPLEMENTATION.
|
CLASS zcl_abapgit_git_branch_list IMPLEMENTATION.
|
||||||
|
|
||||||
|
|
||||||
METHOD complete_heads_branch_name.
|
METHOD complete_heads_branch_name.
|
||||||
|
@ -106,10 +115,16 @@ CLASS ZCL_ABAPGIT_GIT_BRANCH_LIST IMPLEMENTATION.
|
||||||
zcx_abapgit_exception=>raise( 'Branch name empty' ).
|
zcx_abapgit_exception=>raise( 'Branch name empty' ).
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
|
||||||
READ TABLE mt_branches INTO rs_branch
|
IF iv_branch_name CP |refs/tags/*|.
|
||||||
WITH KEY name = iv_branch_name.
|
rs_branch = find_tag_by_name( iv_branch_name ).
|
||||||
IF sy-subrc <> 0.
|
ELSE.
|
||||||
zcx_abapgit_exception=>raise( 'Branch not found' ).
|
|
||||||
|
READ TABLE mt_branches INTO rs_branch
|
||||||
|
WITH KEY name = iv_branch_name.
|
||||||
|
IF sy-subrc <> 0.
|
||||||
|
zcx_abapgit_exception=>raise( 'Branch not found' ).
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
|
||||||
ENDMETHOD. "find_by_name
|
ENDMETHOD. "find_by_name
|
||||||
|
@ -157,15 +172,21 @@ CLASS ZCL_ABAPGIT_GIT_BRANCH_LIST IMPLEMENTATION.
|
||||||
METHOD get_tags_only.
|
METHOD get_tags_only.
|
||||||
FIELD-SYMBOLS <ls_branch> LIKE LINE OF mt_branches.
|
FIELD-SYMBOLS <ls_branch> LIKE LINE OF mt_branches.
|
||||||
|
|
||||||
LOOP AT mt_branches ASSIGNING <ls_branch>.
|
LOOP AT mt_branches ASSIGNING <ls_branch>
|
||||||
IF <ls_branch>-type = zif_abapgit_definitions=>c_git_branch_type-tag.
|
WHERE type = zif_abapgit_definitions=>c_git_branch_type-lightweight_tag
|
||||||
APPEND <ls_branch> TO rt_branches.
|
OR type = zif_abapgit_definitions=>c_git_branch_type-annotated_tag.
|
||||||
ENDIF.
|
APPEND <ls_branch> TO rt_tags.
|
||||||
ENDLOOP.
|
ENDLOOP.
|
||||||
|
|
||||||
ENDMETHOD. "get_tags_only
|
ENDMETHOD. "get_tags_only
|
||||||
|
|
||||||
|
|
||||||
METHOD get_type.
|
METHOD get_type.
|
||||||
|
|
||||||
|
DATA: lv_annotated_tag_with_suffix TYPE string.
|
||||||
|
|
||||||
|
FIELD-SYMBOLS: <ls_result> TYPE LINE OF stringtab.
|
||||||
|
|
||||||
rv_type = zif_abapgit_definitions=>c_git_branch_type-other.
|
rv_type = zif_abapgit_definitions=>c_git_branch_type-other.
|
||||||
|
|
||||||
IF iv_branch_name CP 'refs/heads/*' OR iv_branch_name = zif_abapgit_definitions=>c_head_name.
|
IF iv_branch_name CP 'refs/heads/*' OR iv_branch_name = zif_abapgit_definitions=>c_head_name.
|
||||||
|
@ -174,7 +195,17 @@ CLASS ZCL_ABAPGIT_GIT_BRANCH_LIST IMPLEMENTATION.
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
|
||||||
IF iv_branch_name CP 'refs/tags/*'.
|
IF iv_branch_name CP 'refs/tags/*'.
|
||||||
rv_type = zif_abapgit_definitions=>c_git_branch_type-tag.
|
|
||||||
|
lv_annotated_tag_with_suffix = iv_branch_name && '^{}'.
|
||||||
|
|
||||||
|
READ TABLE it_result ASSIGNING <ls_result>
|
||||||
|
INDEX iv_current_row_index + 1.
|
||||||
|
IF sy-subrc = 0 AND <ls_result> CP '*' && lv_annotated_tag_with_suffix.
|
||||||
|
rv_type = zif_abapgit_definitions=>c_git_branch_type-annotated_tag.
|
||||||
|
ELSE.
|
||||||
|
rv_type = zif_abapgit_definitions=>c_git_branch_type-lightweight_tag.
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
|
||||||
ENDMETHOD. "get_type
|
ENDMETHOD. "get_type
|
||||||
|
@ -206,12 +237,13 @@ CLASS ZCL_ABAPGIT_GIT_BRANCH_LIST IMPLEMENTATION.
|
||||||
|
|
||||||
METHOD parse_branch_list.
|
METHOD parse_branch_list.
|
||||||
|
|
||||||
DATA: lt_result TYPE TABLE OF string,
|
DATA: lt_result TYPE TABLE OF string,
|
||||||
lv_hash TYPE zif_abapgit_definitions=>ty_sha1,
|
lv_hash TYPE zif_abapgit_definitions=>ty_sha1,
|
||||||
lv_name TYPE string,
|
lv_name TYPE string,
|
||||||
lv_head_params TYPE string,
|
lv_head_params TYPE string,
|
||||||
lv_char TYPE c,
|
lv_char TYPE c,
|
||||||
lv_data LIKE LINE OF lt_result.
|
lv_data LIKE LINE OF lt_result,
|
||||||
|
lv_current_row_index TYPE syst-tabix.
|
||||||
|
|
||||||
FIELD-SYMBOLS: <ls_branch> LIKE LINE OF et_list.
|
FIELD-SYMBOLS: <ls_branch> LIKE LINE OF et_list.
|
||||||
|
|
||||||
|
@ -220,6 +252,9 @@ CLASS ZCL_ABAPGIT_GIT_BRANCH_LIST IMPLEMENTATION.
|
||||||
SPLIT iv_data AT zif_abapgit_definitions=>gc_newline INTO TABLE lt_result.
|
SPLIT iv_data AT zif_abapgit_definitions=>gc_newline INTO TABLE lt_result.
|
||||||
|
|
||||||
LOOP AT lt_result INTO lv_data.
|
LOOP AT lt_result INTO lv_data.
|
||||||
|
|
||||||
|
lv_current_row_index = sy-tabix.
|
||||||
|
|
||||||
IF sy-tabix = 1.
|
IF sy-tabix = 1.
|
||||||
CONTINUE. " current loop
|
CONTINUE. " current loop
|
||||||
ELSEIF sy-tabix = 2 AND strlen( lv_data ) > 49.
|
ELSEIF sy-tabix = 2 AND strlen( lv_data ) > 49.
|
||||||
|
@ -245,7 +280,9 @@ CLASS ZCL_ABAPGIT_GIT_BRANCH_LIST IMPLEMENTATION.
|
||||||
<ls_branch>-sha1 = lv_hash.
|
<ls_branch>-sha1 = lv_hash.
|
||||||
<ls_branch>-name = lv_name.
|
<ls_branch>-name = lv_name.
|
||||||
<ls_branch>-display_name = get_display_name( lv_name ).
|
<ls_branch>-display_name = get_display_name( lv_name ).
|
||||||
<ls_branch>-type = get_type( lv_name ).
|
<ls_branch>-type = get_type( iv_branch_name = lv_name
|
||||||
|
it_result = lt_result
|
||||||
|
iv_current_row_index = lv_current_row_index ).
|
||||||
IF <ls_branch>-name = zif_abapgit_definitions=>c_head_name OR <ls_branch>-name = ev_head_symref.
|
IF <ls_branch>-name = zif_abapgit_definitions=>c_head_name OR <ls_branch>-name = ev_head_symref.
|
||||||
<ls_branch>-is_head = abap_true.
|
<ls_branch>-is_head = abap_true.
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
@ -266,4 +303,25 @@ CLASS ZCL_ABAPGIT_GIT_BRANCH_LIST IMPLEMENTATION.
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
|
||||||
ENDMETHOD. "parse_head_params
|
ENDMETHOD. "parse_head_params
|
||||||
|
|
||||||
|
METHOD find_tag_by_name.
|
||||||
|
|
||||||
|
DATA: lv_branch_name TYPE string.
|
||||||
|
|
||||||
|
lv_branch_name = iv_branch_name && '^{}'.
|
||||||
|
|
||||||
|
READ TABLE mt_branches INTO rs_branch
|
||||||
|
WITH KEY name = lv_branch_name.
|
||||||
|
IF sy-subrc <> 0.
|
||||||
|
|
||||||
|
READ TABLE mt_branches INTO rs_branch
|
||||||
|
WITH KEY name = iv_branch_name.
|
||||||
|
IF sy-subrc <> 0.
|
||||||
|
zcx_abapgit_exception=>raise( 'Branch not found' ).
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
|
@ -20,7 +20,16 @@ CLASS zcl_abapgit_git_pack DEFINITION
|
||||||
author TYPE string,
|
author TYPE string,
|
||||||
committer TYPE string,
|
committer TYPE string,
|
||||||
body TYPE string,
|
body TYPE string,
|
||||||
END OF ty_commit .
|
END OF ty_commit,
|
||||||
|
BEGIN OF ty_tag,
|
||||||
|
object TYPE string,
|
||||||
|
type TYPE string,
|
||||||
|
tag TYPE string,
|
||||||
|
tagger_name TYPE string,
|
||||||
|
tagger_email TYPE string,
|
||||||
|
message TYPE string,
|
||||||
|
body TYPE string,
|
||||||
|
END OF ty_tag .
|
||||||
TYPES:
|
TYPES:
|
||||||
BEGIN OF ty_adler32,
|
BEGIN OF ty_adler32,
|
||||||
sha1 TYPE zif_abapgit_definitions=>ty_sha1,
|
sha1 TYPE zif_abapgit_definitions=>ty_sha1,
|
||||||
|
@ -48,6 +57,13 @@ CLASS zcl_abapgit_git_pack DEFINITION
|
||||||
VALUE(rs_commit) TYPE ty_commit
|
VALUE(rs_commit) TYPE ty_commit
|
||||||
RAISING
|
RAISING
|
||||||
zcx_abapgit_exception .
|
zcx_abapgit_exception .
|
||||||
|
CLASS-METHODS decode_tag
|
||||||
|
IMPORTING
|
||||||
|
!iv_data TYPE xstring
|
||||||
|
RETURNING
|
||||||
|
VALUE(rs_tag) TYPE ty_tag
|
||||||
|
RAISING
|
||||||
|
zcx_abapgit_exception .
|
||||||
CLASS-METHODS encode
|
CLASS-METHODS encode
|
||||||
IMPORTING
|
IMPORTING
|
||||||
!it_objects TYPE zif_abapgit_definitions=>ty_objects_tt
|
!it_objects TYPE zif_abapgit_definitions=>ty_objects_tt
|
||||||
|
@ -62,9 +78,16 @@ CLASS zcl_abapgit_git_pack DEFINITION
|
||||||
VALUE(rv_data) TYPE xstring .
|
VALUE(rv_data) TYPE xstring .
|
||||||
CLASS-METHODS encode_commit
|
CLASS-METHODS encode_commit
|
||||||
IMPORTING
|
IMPORTING
|
||||||
!is_commit TYPE ty_commit
|
is_commit TYPE ty_commit
|
||||||
RETURNING
|
RETURNING
|
||||||
VALUE(rv_data) TYPE xstring .
|
VALUE(rv_data) TYPE xstring .
|
||||||
|
CLASS-METHODS encode_tag
|
||||||
|
IMPORTING
|
||||||
|
is_tag TYPE zcl_abapgit_git_pack=>ty_tag
|
||||||
|
RETURNING
|
||||||
|
VALUE(rv_data) TYPE xstring
|
||||||
|
RAISING
|
||||||
|
zcx_abapgit_exception.
|
||||||
PRIVATE SECTION.
|
PRIVATE SECTION.
|
||||||
|
|
||||||
CONSTANTS:
|
CONSTANTS:
|
||||||
|
@ -128,7 +151,7 @@ ENDCLASS.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
CLASS ZCL_ABAPGIT_GIT_PACK IMPLEMENTATION.
|
CLASS zcl_abapgit_git_pack IMPLEMENTATION.
|
||||||
|
|
||||||
|
|
||||||
METHOD decode.
|
METHOD decode.
|
||||||
|
@ -336,6 +359,68 @@ CLASS ZCL_ABAPGIT_GIT_PACK IMPLEMENTATION.
|
||||||
ENDMETHOD. "decode_deltas
|
ENDMETHOD. "decode_deltas
|
||||||
|
|
||||||
|
|
||||||
|
METHOD decode_tag.
|
||||||
|
|
||||||
|
DATA: lv_string TYPE string,
|
||||||
|
lv_word TYPE string,
|
||||||
|
lv_length TYPE i,
|
||||||
|
lv_trash TYPE string ##NEEDED,
|
||||||
|
lt_string TYPE TABLE OF string.
|
||||||
|
|
||||||
|
FIELD-SYMBOLS: <lv_string> LIKE LINE OF lt_string.
|
||||||
|
|
||||||
|
|
||||||
|
lv_string = zcl_abapgit_convert=>xstring_to_string_utf8( iv_data ).
|
||||||
|
|
||||||
|
SPLIT lv_string AT zif_abapgit_definitions=>gc_newline INTO TABLE lt_string.
|
||||||
|
|
||||||
|
LOOP AT lt_string ASSIGNING <lv_string>.
|
||||||
|
|
||||||
|
SPLIT <lv_string> AT space INTO lv_word lv_trash.
|
||||||
|
|
||||||
|
CASE lv_word.
|
||||||
|
WHEN 'object'.
|
||||||
|
rs_tag-object = lv_trash.
|
||||||
|
WHEN 'type'.
|
||||||
|
rs_tag-type = lv_trash.
|
||||||
|
WHEN 'tag'.
|
||||||
|
rs_tag-tag = lv_trash.
|
||||||
|
WHEN 'tagger'.
|
||||||
|
|
||||||
|
FIND FIRST OCCURRENCE OF REGEX `(.*)<(.*)>`
|
||||||
|
IN lv_trash
|
||||||
|
SUBMATCHES rs_tag-tagger_name
|
||||||
|
rs_tag-tagger_email.
|
||||||
|
|
||||||
|
rs_tag-tagger_name = condense( rs_tag-tagger_name ).
|
||||||
|
|
||||||
|
WHEN ''.
|
||||||
|
" ignore blank lines
|
||||||
|
CONTINUE.
|
||||||
|
WHEN OTHERS.
|
||||||
|
|
||||||
|
" these are the non empty line which don't start with a key word
|
||||||
|
" the first one is the message, the rest are cumulated to the body
|
||||||
|
|
||||||
|
IF rs_tag-message IS INITIAL.
|
||||||
|
rs_tag-message = <lv_string>.
|
||||||
|
ELSE.
|
||||||
|
|
||||||
|
IF rs_tag-body IS NOT INITIAL.
|
||||||
|
rs_tag-body = rs_tag-body && zif_abapgit_definitions=>gc_newline.
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
rs_tag-body = rs_tag-body && <lv_string>.
|
||||||
|
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
ENDCASE.
|
||||||
|
|
||||||
|
ENDLOOP.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
METHOD decode_tree.
|
METHOD decode_tree.
|
||||||
|
|
||||||
CONSTANTS: lc_sha_length TYPE i VALUE 20,
|
CONSTANTS: lc_sha_length TYPE i VALUE 20,
|
||||||
|
@ -757,6 +842,8 @@ CLASS ZCL_ABAPGIT_GIT_PACK IMPLEMENTATION.
|
||||||
lv_type = 32.
|
lv_type = 32.
|
||||||
WHEN zif_abapgit_definitions=>gc_type-blob.
|
WHEN zif_abapgit_definitions=>gc_type-blob.
|
||||||
lv_type = 48.
|
lv_type = 48.
|
||||||
|
WHEN zif_abapgit_definitions=>gc_type-tag.
|
||||||
|
lv_type = 64.
|
||||||
WHEN zif_abapgit_definitions=>gc_type-ref_d.
|
WHEN zif_abapgit_definitions=>gc_type-ref_d.
|
||||||
lv_type = 112.
|
lv_type = 112.
|
||||||
WHEN OTHERS.
|
WHEN OTHERS.
|
||||||
|
@ -839,4 +926,25 @@ CLASS ZCL_ABAPGIT_GIT_PACK IMPLEMENTATION.
|
||||||
zcx_abapgit_exception=>raise( 'Wrong Adler checksum' ).
|
zcx_abapgit_exception=>raise( 'Wrong Adler checksum' ).
|
||||||
ENDIF.
|
ENDIF.
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD encode_tag.
|
||||||
|
|
||||||
|
DATA: lv_string TYPE string,
|
||||||
|
lv_tmp TYPE string,
|
||||||
|
lv_time TYPE zcl_abapgit_time=>ty_unixtime.
|
||||||
|
|
||||||
|
lv_time = zcl_abapgit_time=>get( ).
|
||||||
|
|
||||||
|
lv_string = |object { is_tag-object }{ zif_abapgit_definitions=>gc_newline }|
|
||||||
|
&& |type { is_tag-type }{ zif_abapgit_definitions=>gc_newline }|
|
||||||
|
&& |tag { zcl_abapgit_tag=>remove_tag_prefix( is_tag-tag ) }{ zif_abapgit_definitions=>gc_newline }|
|
||||||
|
&& |tagger { is_tag-tagger_name } <{ is_tag-tagger_email }> { lv_time }|
|
||||||
|
&& |{ zif_abapgit_definitions=>gc_newline }|
|
||||||
|
&& |{ zif_abapgit_definitions=>gc_newline }|
|
||||||
|
&& |{ is_tag-message }|.
|
||||||
|
|
||||||
|
rv_data = zcl_abapgit_convert=>string_to_xstring_utf8( lv_string ).
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
|
@ -567,3 +567,60 @@ CLASS ltcl_git_pack_decode_commit IMPLEMENTATION.
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
||||||
|
CLASS ltcl_tag DEFINITION FINAL FOR TESTING
|
||||||
|
DURATION SHORT
|
||||||
|
RISK LEVEL HARMLESS.
|
||||||
|
|
||||||
|
PRIVATE SECTION.
|
||||||
|
METHODS:
|
||||||
|
decode_tag FOR TESTING RAISING cx_static_check.
|
||||||
|
ENDCLASS.
|
||||||
|
|
||||||
|
|
||||||
|
CLASS ltcl_tag IMPLEMENTATION.
|
||||||
|
|
||||||
|
METHOD decode_tag.
|
||||||
|
|
||||||
|
DATA: lv_test_data TYPE string,
|
||||||
|
lv_xstring TYPE xstring,
|
||||||
|
ls_tag TYPE zcl_abapgit_git_pack=>ty_tag.
|
||||||
|
|
||||||
|
lv_test_data = |object 175f9a21b15a9012c97a3dd15aea6d74d4204b6b\n|
|
||||||
|
&& |type commit\n|
|
||||||
|
&& |tag tag_1\n|
|
||||||
|
&& |tagger Christian Guenter <christianguenter@googlemail.com> 1526718052 +0000\n|
|
||||||
|
&& |\n|
|
||||||
|
&& |This is an annotated tag\n|.
|
||||||
|
|
||||||
|
lv_xstring = zcl_abapgit_convert=>string_to_xstring_utf8( lv_test_data ).
|
||||||
|
|
||||||
|
ls_tag = zcl_abapgit_git_pack=>decode_tag( lv_xstring ).
|
||||||
|
|
||||||
|
cl_abap_unit_assert=>assert_equals(
|
||||||
|
exp = |175f9a21b15a9012c97a3dd15aea6d74d4204b6b|
|
||||||
|
act = ls_tag-object ).
|
||||||
|
|
||||||
|
cl_abap_unit_assert=>assert_equals(
|
||||||
|
exp = 'commit'
|
||||||
|
act = ls_tag-type ).
|
||||||
|
|
||||||
|
cl_abap_unit_assert=>assert_equals(
|
||||||
|
exp = 'tag_1'
|
||||||
|
act = ls_tag-tag ).
|
||||||
|
|
||||||
|
cl_abap_unit_assert=>assert_equals(
|
||||||
|
exp = 'Christian Guenter'
|
||||||
|
act = ls_tag-tagger_name ).
|
||||||
|
|
||||||
|
cl_abap_unit_assert=>assert_equals(
|
||||||
|
exp = 'christianguenter@googlemail.com'
|
||||||
|
act = ls_tag-tagger_email ).
|
||||||
|
|
||||||
|
cl_abap_unit_assert=>assert_equals(
|
||||||
|
exp = 'This is an annotated tag'
|
||||||
|
act = ls_tag-message ).
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
ENDCLASS.
|
||||||
|
|
|
@ -33,8 +33,7 @@ CLASS zcl_abapgit_git_porcelain DEFINITION
|
||||||
CLASS-METHODS create_tag
|
CLASS-METHODS create_tag
|
||||||
IMPORTING
|
IMPORTING
|
||||||
!io_repo TYPE REF TO zcl_abapgit_repo_online
|
!io_repo TYPE REF TO zcl_abapgit_repo_online
|
||||||
!iv_name TYPE string
|
is_tag TYPE zif_abapgit_definitions=>ty_git_tag
|
||||||
!iv_from TYPE zif_abapgit_definitions=>ty_sha1
|
|
||||||
RAISING
|
RAISING
|
||||||
zcx_abapgit_exception .
|
zcx_abapgit_exception .
|
||||||
CLASS-METHODS delete_branch
|
CLASS-METHODS delete_branch
|
||||||
|
@ -46,7 +45,7 @@ CLASS zcl_abapgit_git_porcelain DEFINITION
|
||||||
CLASS-METHODS delete_tag
|
CLASS-METHODS delete_tag
|
||||||
IMPORTING
|
IMPORTING
|
||||||
!io_repo TYPE REF TO zcl_abapgit_repo_online
|
!io_repo TYPE REF TO zcl_abapgit_repo_online
|
||||||
!is_tag TYPE zif_abapgit_definitions=>ty_git_branch
|
!is_tag TYPE zif_abapgit_definitions=>ty_git_tag
|
||||||
RAISING
|
RAISING
|
||||||
zcx_abapgit_exception .
|
zcx_abapgit_exception .
|
||||||
CLASS-METHODS full_tree
|
CLASS-METHODS full_tree
|
||||||
|
@ -56,9 +55,9 @@ CLASS zcl_abapgit_git_porcelain DEFINITION
|
||||||
RETURNING
|
RETURNING
|
||||||
VALUE(rt_expanded) TYPE zif_abapgit_definitions=>ty_expanded_tt
|
VALUE(rt_expanded) TYPE zif_abapgit_definitions=>ty_expanded_tt
|
||||||
RAISING
|
RAISING
|
||||||
zcx_abapgit_exception .
|
zcx_abapgit_exception.
|
||||||
PRIVATE SECTION.
|
|
||||||
|
|
||||||
|
PRIVATE SECTION.
|
||||||
TYPES: BEGIN OF ty_tree,
|
TYPES: BEGIN OF ty_tree,
|
||||||
path TYPE string,
|
path TYPE string,
|
||||||
data TYPE xstring,
|
data TYPE xstring,
|
||||||
|
@ -100,7 +99,7 @@ CLASS zcl_abapgit_git_porcelain DEFINITION
|
||||||
RETURNING VALUE(rt_expanded) TYPE zif_abapgit_definitions=>ty_expanded_tt
|
RETURNING VALUE(rt_expanded) TYPE zif_abapgit_definitions=>ty_expanded_tt
|
||||||
RAISING zcx_abapgit_exception.
|
RAISING zcx_abapgit_exception.
|
||||||
|
|
||||||
CLASS-METHODS receive_pack
|
CLASS-METHODS receive_pack_push
|
||||||
IMPORTING is_comment TYPE zif_abapgit_definitions=>ty_comment
|
IMPORTING is_comment TYPE zif_abapgit_definitions=>ty_comment
|
||||||
io_repo TYPE REF TO zcl_abapgit_repo_online
|
io_repo TYPE REF TO zcl_abapgit_repo_online
|
||||||
it_trees TYPE ty_trees_tt
|
it_trees TYPE ty_trees_tt
|
||||||
|
@ -108,11 +107,31 @@ CLASS zcl_abapgit_git_porcelain DEFINITION
|
||||||
io_stage TYPE REF TO zcl_abapgit_stage
|
io_stage TYPE REF TO zcl_abapgit_stage
|
||||||
RETURNING VALUE(rv_branch) TYPE zif_abapgit_definitions=>ty_sha1
|
RETURNING VALUE(rv_branch) TYPE zif_abapgit_definitions=>ty_sha1
|
||||||
RAISING zcx_abapgit_exception.
|
RAISING zcx_abapgit_exception.
|
||||||
|
|
||||||
|
CLASS-METHODS receive_pack_create_tag
|
||||||
|
IMPORTING is_tag TYPE zif_abapgit_definitions=>ty_git_tag
|
||||||
|
io_repo TYPE REF TO zcl_abapgit_repo_online
|
||||||
|
RAISING zcx_abapgit_exception.
|
||||||
|
|
||||||
|
CLASS-METHODS create_annotated_tag
|
||||||
|
IMPORTING
|
||||||
|
is_tag TYPE zif_abapgit_definitions=>ty_git_tag
|
||||||
|
io_repo TYPE REF TO zcl_abapgit_repo_online
|
||||||
|
RAISING
|
||||||
|
zcx_abapgit_exception.
|
||||||
|
|
||||||
|
CLASS-METHODS create_lightweight_tag
|
||||||
|
IMPORTING
|
||||||
|
is_tag TYPE zif_abapgit_definitions=>ty_git_tag
|
||||||
|
io_repo TYPE REF TO zcl_abapgit_repo_online
|
||||||
|
RAISING
|
||||||
|
zcx_abapgit_exception.
|
||||||
|
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
CLASS ZCL_ABAPGIT_GIT_PORCELAIN IMPLEMENTATION.
|
CLASS zcl_abapgit_git_porcelain IMPLEMENTATION.
|
||||||
|
|
||||||
|
|
||||||
METHOD build_trees.
|
METHOD build_trees.
|
||||||
|
@ -199,23 +218,28 @@ CLASS ZCL_ABAPGIT_GIT_PORCELAIN IMPLEMENTATION.
|
||||||
|
|
||||||
METHOD create_tag.
|
METHOD create_tag.
|
||||||
|
|
||||||
DATA: lt_objects TYPE zif_abapgit_definitions=>ty_objects_tt,
|
IF is_tag-name CS ` `.
|
||||||
lv_pack TYPE xstring.
|
|
||||||
|
|
||||||
IF iv_name CS ` `.
|
|
||||||
zcx_abapgit_exception=>raise( 'Tag name cannot contain blank spaces' ).
|
zcx_abapgit_exception=>raise( 'Tag name cannot contain blank spaces' ).
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
|
||||||
* "client MUST send an empty packfile"
|
CASE is_tag-type.
|
||||||
* https://github.com/git/git/blob/master/Documentation/technical/pack-protocol.txt#L514
|
WHEN zif_abapgit_definitions=>c_git_branch_type-annotated_tag.
|
||||||
lv_pack = zcl_abapgit_git_pack=>encode( lt_objects ).
|
|
||||||
|
|
||||||
zcl_abapgit_git_transport=>receive_pack(
|
create_annotated_tag(
|
||||||
iv_url = io_repo->get_url( )
|
is_tag = is_tag
|
||||||
iv_old = c_zero
|
io_repo = io_repo ).
|
||||||
iv_new = iv_from
|
|
||||||
iv_branch_name = iv_name
|
WHEN zif_abapgit_definitions=>c_git_branch_type-lightweight_tag.
|
||||||
iv_pack = lv_pack ).
|
|
||||||
|
create_lightweight_tag(
|
||||||
|
is_tag = is_tag
|
||||||
|
io_repo = io_repo ).
|
||||||
|
|
||||||
|
WHEN OTHERS.
|
||||||
|
|
||||||
|
zcx_abapgit_exception=>raise( |Invalid tag type: { is_tag-type }| ).
|
||||||
|
|
||||||
|
ENDCASE.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
@ -435,16 +459,60 @@ CLASS ZCL_ABAPGIT_GIT_PORCELAIN IMPLEMENTATION.
|
||||||
|
|
||||||
lt_trees = build_trees( lt_expanded ).
|
lt_trees = build_trees( lt_expanded ).
|
||||||
|
|
||||||
ev_branch = receive_pack( is_comment = is_comment
|
ev_branch = receive_pack_push( is_comment = is_comment
|
||||||
io_repo = io_repo
|
io_repo = io_repo
|
||||||
it_trees = lt_trees
|
it_trees = lt_trees
|
||||||
it_blobs = lt_blobs
|
it_blobs = lt_blobs
|
||||||
io_stage = io_stage ).
|
io_stage = io_stage ).
|
||||||
|
|
||||||
ENDMETHOD. "push
|
ENDMETHOD. "push
|
||||||
|
|
||||||
|
|
||||||
METHOD receive_pack.
|
METHOD receive_pack_create_tag.
|
||||||
|
|
||||||
|
DATA: lv_tag TYPE xstring,
|
||||||
|
lt_objects TYPE zif_abapgit_definitions=>ty_objects_tt,
|
||||||
|
lv_pack TYPE xstring,
|
||||||
|
ls_object LIKE LINE OF lt_objects,
|
||||||
|
ls_tag TYPE zcl_abapgit_git_pack=>ty_tag,
|
||||||
|
lv_new_tag_sha1 TYPE zif_abapgit_definitions=>ty_sha1.
|
||||||
|
|
||||||
|
* new tag
|
||||||
|
ls_tag-object = is_tag-sha1.
|
||||||
|
ls_tag-type = zif_abapgit_definitions=>gc_type-commit.
|
||||||
|
ls_tag-tag = is_tag-name.
|
||||||
|
ls_tag-tagger_name = is_tag-tagger_name.
|
||||||
|
ls_tag-tagger_email = is_tag-tagger_email.
|
||||||
|
ls_tag-message = is_tag-message
|
||||||
|
&& |{ zif_abapgit_definitions=>gc_newline }|
|
||||||
|
&& |{ zif_abapgit_definitions=>gc_newline }|
|
||||||
|
&& is_tag-body.
|
||||||
|
|
||||||
|
lv_tag = zcl_abapgit_git_pack=>encode_tag( ls_tag ).
|
||||||
|
|
||||||
|
lv_new_tag_sha1 = zcl_abapgit_hash=>sha1(
|
||||||
|
iv_type = zif_abapgit_definitions=>gc_type-tag
|
||||||
|
iv_data = lv_tag ).
|
||||||
|
|
||||||
|
CLEAR ls_object.
|
||||||
|
ls_object-sha1 = lv_new_tag_sha1.
|
||||||
|
ls_object-type = zif_abapgit_definitions=>gc_type-tag.
|
||||||
|
ls_object-data = lv_tag.
|
||||||
|
APPEND ls_object TO lt_objects.
|
||||||
|
|
||||||
|
lv_pack = zcl_abapgit_git_pack=>encode( lt_objects ).
|
||||||
|
|
||||||
|
zcl_abapgit_git_transport=>receive_pack(
|
||||||
|
iv_url = io_repo->get_url( )
|
||||||
|
iv_old = c_zero
|
||||||
|
iv_new = lv_new_tag_sha1
|
||||||
|
iv_branch_name = is_tag-name
|
||||||
|
iv_pack = lv_pack ).
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD receive_pack_push.
|
||||||
|
|
||||||
DATA: lv_time TYPE zcl_abapgit_time=>ty_unixtime,
|
DATA: lv_time TYPE zcl_abapgit_time=>ty_unixtime,
|
||||||
lv_commit TYPE xstring,
|
lv_commit TYPE xstring,
|
||||||
|
@ -630,4 +698,32 @@ CLASS ZCL_ABAPGIT_GIT_PORCELAIN IMPLEMENTATION.
|
||||||
ENDLOOP.
|
ENDLOOP.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD create_annotated_tag.
|
||||||
|
|
||||||
|
receive_pack_create_tag(
|
||||||
|
is_tag = is_tag
|
||||||
|
io_repo = io_repo ).
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD create_lightweight_tag.
|
||||||
|
|
||||||
|
DATA: lt_objects TYPE zif_abapgit_definitions=>ty_objects_tt,
|
||||||
|
lv_pack TYPE xstring.
|
||||||
|
|
||||||
|
* "client MUST send an empty packfile"
|
||||||
|
* https://github.com/git/git/blob/master/Documentation/technical/pack-protocol.txt#L514
|
||||||
|
lv_pack = zcl_abapgit_git_pack=>encode( lt_objects ).
|
||||||
|
|
||||||
|
zcl_abapgit_git_transport=>receive_pack(
|
||||||
|
iv_url = io_repo->get_url( )
|
||||||
|
iv_old = c_zero
|
||||||
|
iv_new = io_repo->get_sha1_local( )
|
||||||
|
iv_branch_name = is_tag-name
|
||||||
|
iv_pack = lv_pack ).
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
|
@ -57,7 +57,7 @@ ENDCLASS.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
CLASS ZCL_ABAPGIT_GIT_TRANSPORT IMPLEMENTATION.
|
CLASS zcl_abapgit_git_transport IMPLEMENTATION.
|
||||||
|
|
||||||
|
|
||||||
METHOD branches.
|
METHOD branches.
|
||||||
|
@ -209,6 +209,8 @@ CLASS ZCL_ABAPGIT_GIT_TRANSPORT IMPLEMENTATION.
|
||||||
zcx_abapgit_exception=>raise( 'funny refname' ).
|
zcx_abapgit_exception=>raise( 'funny refname' ).
|
||||||
ELSEIF lv_string CP '*failed to update ref*'.
|
ELSEIF lv_string CP '*failed to update ref*'.
|
||||||
zcx_abapgit_exception=>raise( 'failed to update ref' ).
|
zcx_abapgit_exception=>raise( 'failed to update ref' ).
|
||||||
|
ELSEIF lv_string CP '*missing necessary objects*'.
|
||||||
|
zcx_abapgit_exception=>raise( 'missing necessary objects' ).
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
|
||||||
ENDMETHOD. "receive_pack
|
ENDMETHOD. "receive_pack
|
||||||
|
|
|
@ -7,21 +7,22 @@ CLASS zcl_abapgit_tag DEFINITION
|
||||||
CLASS-METHODS:
|
CLASS-METHODS:
|
||||||
add_tag_prefix
|
add_tag_prefix
|
||||||
IMPORTING
|
IMPORTING
|
||||||
!iv_text TYPE csequence
|
iv_text TYPE csequence
|
||||||
RETURNING
|
RETURNING
|
||||||
VALUE(rv_text) TYPE string,
|
VALUE(rv_text) TYPE string,
|
||||||
|
|
||||||
remove_tag_prefix
|
remove_tag_prefix
|
||||||
IMPORTING
|
IMPORTING
|
||||||
!iv_text TYPE string
|
iv_text TYPE string
|
||||||
RETURNING
|
RETURNING
|
||||||
VALUE(rv_text) TYPE string .
|
VALUE(rv_text) TYPE string.
|
||||||
|
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
CLASS zcl_abapgit_tag IMPLEMENTATION.
|
CLASS ZCL_ABAPGIT_TAG IMPLEMENTATION.
|
||||||
|
|
||||||
|
|
||||||
METHOD add_tag_prefix.
|
METHOD add_tag_prefix.
|
||||||
|
|
||||||
|
@ -39,5 +40,4 @@ CLASS zcl_abapgit_tag IMPLEMENTATION.
|
||||||
WITH ''.
|
WITH ''.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
|
@ -62,6 +62,7 @@ CLASS ZCL_ABAPGIT_2FA_AUTH_REGISTRY IMPLEMENTATION.
|
||||||
TRY.
|
TRY.
|
||||||
lo_class ?= cl_oo_class=>get_instance( 'ZCL_ABAPGIT_2FA_AUTH_BASE' ).
|
lo_class ?= cl_oo_class=>get_instance( 'ZCL_ABAPGIT_2FA_AUTH_BASE' ).
|
||||||
lt_sub = lo_class->get_subclasses( ).
|
lt_sub = lo_class->get_subclasses( ).
|
||||||
|
SORT lt_sub BY clsname ASCENDING AS TEXT.
|
||||||
LOOP AT lt_sub INTO ls_sub.
|
LOOP AT lt_sub INTO ls_sub.
|
||||||
CREATE OBJECT li_authenticator TYPE (ls_sub-clsname).
|
CREATE OBJECT li_authenticator TYPE (ls_sub-clsname).
|
||||||
INSERT li_authenticator INTO TABLE gt_registered_authenticators.
|
INSERT li_authenticator INTO TABLE gt_registered_authenticators.
|
||||||
|
|
|
@ -60,7 +60,7 @@ ENDCLASS.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
CLASS zcl_abapgit_2fa_github_auth IMPLEMENTATION.
|
CLASS ZCL_ABAPGIT_2FA_GITHUB_AUTH IMPLEMENTATION.
|
||||||
|
|
||||||
|
|
||||||
METHOD constructor.
|
METHOD constructor.
|
||||||
|
@ -336,6 +336,8 @@ CLASS zcl_abapgit_2fa_github_auth IMPLEMENTATION.
|
||||||
|
|
||||||
li_client->receive( EXCEPTIONS OTHERS = 1 ).
|
li_client->receive( EXCEPTIONS OTHERS = 1 ).
|
||||||
IF sy-subrc <> 0.
|
IF sy-subrc <> 0.
|
||||||
|
* if the code fails here with a SSL error, make sure STRUST is setup to
|
||||||
|
* work with https://api.github.com
|
||||||
raise_comm_error_from_sy( ).
|
raise_comm_error_from_sy( ).
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
|
||||||
|
|
|
@ -205,7 +205,8 @@ CLASS ZCL_ABAPGIT_HTTP IMPLEMENTATION.
|
||||||
METHOD get_agent.
|
METHOD get_agent.
|
||||||
|
|
||||||
* bitbucket require agent prefix = "git/"
|
* bitbucket require agent prefix = "git/"
|
||||||
rv_agent = 'git/abapGit-' && zif_abapgit_definitions=>gc_abap_version.
|
* also see https://github.com/larshp/abapGit/issues/1432
|
||||||
|
rv_agent = |git/2.0 (abapGit { zif_abapgit_definitions=>gc_abap_version })|.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
|
@ -28,7 +28,7 @@ ENDCLASS.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
CLASS zcl_abapgit_ecatt_sp_upload IMPLEMENTATION.
|
CLASS ZCL_ABAPGIT_ECATT_SP_UPLOAD IMPLEMENTATION.
|
||||||
|
|
||||||
|
|
||||||
METHOD get_ecatt_sp.
|
METHOD get_ecatt_sp.
|
||||||
|
@ -46,8 +46,7 @@ CLASS zcl_abapgit_ecatt_sp_upload IMPLEMENTATION.
|
||||||
FIELD-SYMBOLS: <ecatt_object> TYPE any.
|
FIELD-SYMBOLS: <ecatt_object> TYPE any.
|
||||||
|
|
||||||
TRY.
|
TRY.
|
||||||
li_section = template_over_all->find_from_name_ns(
|
li_section = template_over_all->find_from_name_ns( 'START_PROFILE' ).
|
||||||
name = 'START_PROFILE' ).
|
|
||||||
|
|
||||||
IF NOT li_section IS INITIAL.
|
IF NOT li_section IS INITIAL.
|
||||||
CLASS cl_ixml DEFINITION LOAD .
|
CLASS cl_ixml DEFINITION LOAD .
|
||||||
|
@ -75,7 +74,7 @@ CLASS zcl_abapgit_ecatt_sp_upload IMPLEMENTATION.
|
||||||
lv_exception_occurred = 'X'.
|
lv_exception_occurred = 'X'.
|
||||||
ENDTRY.
|
ENDTRY.
|
||||||
|
|
||||||
IF lv_exception_occurred = 'X'.
|
IF lv_exception_occurred = 'X'.
|
||||||
raise_upload_exception( previous = exception_to_raise ).
|
raise_upload_exception( previous = exception_to_raise ).
|
||||||
ENDIF.
|
ENDIF.
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
@ -107,7 +106,7 @@ CLASS zcl_abapgit_ecatt_sp_upload IMPLEMENTATION.
|
||||||
CHANGING
|
CHANGING
|
||||||
ch_object = ch_object ).
|
ch_object = ch_object ).
|
||||||
|
|
||||||
upload_data_from_stream( im_xml_file = ch_object-filename ).
|
upload_data_from_stream( ch_object-filename ).
|
||||||
|
|
||||||
CATCH cx_ecatt_apl INTO lx_ecatt.
|
CATCH cx_ecatt_apl INTO lx_ecatt.
|
||||||
IF template_over_all IS INITIAL.
|
IF template_over_all IS INITIAL.
|
||||||
|
|
|
@ -46,7 +46,10 @@ CLASS zcl_abapgit_ecatt_val_obj_down DEFINITION
|
||||||
|
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
||||||
CLASS zcl_abapgit_ecatt_val_obj_down IMPLEMENTATION.
|
|
||||||
|
|
||||||
|
CLASS ZCL_ABAPGIT_ECATT_VAL_OBJ_DOWN IMPLEMENTATION.
|
||||||
|
|
||||||
|
|
||||||
METHOD download.
|
METHOD download.
|
||||||
|
|
||||||
|
@ -90,7 +93,7 @@ CLASS zcl_abapgit_ecatt_val_obj_down IMPLEMENTATION.
|
||||||
ENDIF.
|
ENDIF.
|
||||||
ENDLOOP.
|
ENDLOOP.
|
||||||
|
|
||||||
set_variants_to_dom( im_params = ecatt_vo->params ).
|
set_variants_to_dom( ecatt_vo->params ).
|
||||||
|
|
||||||
download_data( ).
|
download_data( ).
|
||||||
|
|
||||||
|
|
|
@ -47,7 +47,7 @@ ENDCLASS.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
CLASS zcl_abapgit_ecatt_val_obj_upl IMPLEMENTATION.
|
CLASS ZCL_ABAPGIT_ECATT_VAL_OBJ_UPL IMPLEMENTATION.
|
||||||
|
|
||||||
|
|
||||||
METHOD get_business_msgs_from_dom.
|
METHOD get_business_msgs_from_dom.
|
||||||
|
@ -90,7 +90,7 @@ CLASS zcl_abapgit_ecatt_val_obj_upl IMPLEMENTATION.
|
||||||
lv_exception_occurred = 'X'.
|
lv_exception_occurred = 'X'.
|
||||||
ENDTRY.
|
ENDTRY.
|
||||||
|
|
||||||
IF lv_exception_occurred = 'X'.
|
IF lv_exception_occurred = 'X'.
|
||||||
raise_upload_exception( previous = exception_to_raise ).
|
raise_upload_exception( previous = exception_to_raise ).
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
|
||||||
|
@ -108,7 +108,7 @@ CLASS zcl_abapgit_ecatt_val_obj_upl IMPLEMENTATION.
|
||||||
|
|
||||||
FIELD-SYMBOLS: <ecatt_vo> TYPE any.
|
FIELD-SYMBOLS: <ecatt_vo> TYPE any.
|
||||||
|
|
||||||
li_section = template_over_all->find_from_name_ns( name = 'IMPL_DET' ).
|
li_section = template_over_all->find_from_name_ns( 'IMPL_DET' ).
|
||||||
|
|
||||||
IF NOT li_section IS INITIAL.
|
IF NOT li_section IS INITIAL.
|
||||||
CALL FUNCTION 'SDIXML_DOM_TO_DATA'
|
CALL FUNCTION 'SDIXML_DOM_TO_DATA'
|
||||||
|
@ -137,7 +137,7 @@ CLASS zcl_abapgit_ecatt_val_obj_upl IMPLEMENTATION.
|
||||||
lv_exception_occurred = 'X'.
|
lv_exception_occurred = 'X'.
|
||||||
ENDTRY.
|
ENDTRY.
|
||||||
|
|
||||||
IF lv_exception_occurred = 'X'.
|
IF lv_exception_occurred = 'X'.
|
||||||
raise_upload_exception( previous = exception_to_raise ).
|
raise_upload_exception( previous = exception_to_raise ).
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
|
||||||
|
@ -210,7 +210,7 @@ CLASS zcl_abapgit_ecatt_val_obj_upl IMPLEMENTATION.
|
||||||
lv_exception_occurred = 'X'.
|
lv_exception_occurred = 'X'.
|
||||||
ENDTRY.
|
ENDTRY.
|
||||||
|
|
||||||
IF lv_exception_occurred = 'X'.
|
IF lv_exception_occurred = 'X'.
|
||||||
raise_upload_exception( previous = exception_to_raise ).
|
raise_upload_exception( previous = exception_to_raise ).
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
|
||||||
|
@ -244,7 +244,7 @@ CLASS zcl_abapgit_ecatt_val_obj_upl IMPLEMENTATION.
|
||||||
CHANGING
|
CHANGING
|
||||||
ch_object = ch_object ).
|
ch_object = ch_object ).
|
||||||
|
|
||||||
upload_data_from_stream( im_xml_file = ch_object-filename ).
|
upload_data_from_stream( ch_object-filename ).
|
||||||
CATCH cx_ecatt_apl INTO ex.
|
CATCH cx_ecatt_apl INTO ex.
|
||||||
IF template_over_all IS INITIAL.
|
IF template_over_all IS INITIAL.
|
||||||
RAISE EXCEPTION ex.
|
RAISE EXCEPTION ex.
|
||||||
|
|
|
@ -139,4 +139,10 @@ CLASS zcl_abapgit_object_acid IMPLEMENTATION.
|
||||||
CREATE OBJECT ro_comparison_result TYPE zcl_abapgit_comparison_null.
|
CREATE OBJECT ro_comparison_result TYPE zcl_abapgit_comparison_null.
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD zif_abapgit_object~is_locked.
|
||||||
|
|
||||||
|
rv_is_locked = abap_false.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
ENDCLASS. "zcl_abapgit_object_acid IMPLEMENTATION
|
ENDCLASS. "zcl_abapgit_object_acid IMPLEMENTATION
|
||||||
|
|
|
@ -8,7 +8,7 @@ ENDCLASS.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
CLASS ZCL_ABAPGIT_OBJECT_AUTH IMPLEMENTATION.
|
CLASS zcl_abapgit_object_auth IMPLEMENTATION.
|
||||||
|
|
||||||
|
|
||||||
METHOD zif_abapgit_object~changed_by.
|
METHOD zif_abapgit_object~changed_by.
|
||||||
|
@ -127,4 +127,11 @@ CLASS ZCL_ABAPGIT_OBJECT_AUTH IMPLEMENTATION.
|
||||||
ig_data = ls_authx ).
|
ig_data = ls_authx ).
|
||||||
|
|
||||||
ENDMETHOD. "zif_abapgit_object~serialize
|
ENDMETHOD. "zif_abapgit_object~serialize
|
||||||
|
|
||||||
|
METHOD zif_abapgit_object~is_locked.
|
||||||
|
|
||||||
|
rv_is_locked = abap_false.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
254
src/objects/zcl_abapgit_object_char.clas.abap
Normal file
254
src/objects/zcl_abapgit_object_char.clas.abap
Normal file
|
@ -0,0 +1,254 @@
|
||||||
|
CLASS zcl_abapgit_object_char DEFINITION
|
||||||
|
PUBLIC
|
||||||
|
INHERITING FROM zcl_abapgit_objects_super
|
||||||
|
FINAL
|
||||||
|
CREATE PUBLIC .
|
||||||
|
|
||||||
|
PUBLIC SECTION.
|
||||||
|
|
||||||
|
INTERFACES zif_abapgit_object .
|
||||||
|
|
||||||
|
PRIVATE SECTION.
|
||||||
|
|
||||||
|
TYPES:
|
||||||
|
BEGIN OF ty_char,
|
||||||
|
cls_attribute TYPE cls_attribute,
|
||||||
|
cls_attributet TYPE STANDARD TABLE OF cls_attributet WITH DEFAULT KEY,
|
||||||
|
cls_attr_value TYPE STANDARD TABLE OF cls_attr_value WITH DEFAULT KEY,
|
||||||
|
cls_attr_valuet TYPE STANDARD TABLE OF cls_attr_valuet WITH DEFAULT KEY,
|
||||||
|
END OF ty_char .
|
||||||
|
|
||||||
|
METHODS instantiate_char
|
||||||
|
IMPORTING
|
||||||
|
!iv_type_group TYPE cls_object_type_group
|
||||||
|
RETURNING
|
||||||
|
VALUE(ro_char) TYPE REF TO cl_cls_attribute
|
||||||
|
RAISING
|
||||||
|
zcx_abapgit_exception .
|
||||||
|
ENDCLASS.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
CLASS ZCL_ABAPGIT_OBJECT_CHAR IMPLEMENTATION.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD instantiate_char.
|
||||||
|
|
||||||
|
DATA: lv_new TYPE abap_bool,
|
||||||
|
lv_name TYPE cls_attribute_name.
|
||||||
|
|
||||||
|
|
||||||
|
SELECT SINGLE name FROM cls_attribute INTO lv_name WHERE name = ms_item-obj_name.
|
||||||
|
lv_new = boolc( sy-subrc <> 0 ).
|
||||||
|
lv_name = ms_item-obj_name.
|
||||||
|
|
||||||
|
TRY.
|
||||||
|
CREATE OBJECT ro_char
|
||||||
|
EXPORTING
|
||||||
|
im_name = lv_name
|
||||||
|
im_type_group = iv_type_group
|
||||||
|
im_new = lv_new.
|
||||||
|
CATCH cx_pak_invalid_data
|
||||||
|
cx_pak_not_authorized
|
||||||
|
cx_pak_invalid_state
|
||||||
|
cx_pak_wb_object_locked.
|
||||||
|
zcx_abapgit_exception=>raise( 'Error while instantiating CL_CLS_ATTRIBUTE' ).
|
||||||
|
ENDTRY.
|
||||||
|
|
||||||
|
IF lv_new = abap_false.
|
||||||
|
TRY.
|
||||||
|
ro_char->if_pak_wb_object~lock_and_refresh( ).
|
||||||
|
CATCH cx_pak_wb_object_locked.
|
||||||
|
zcx_abapgit_exception=>raise( |Could not aquire lock, CHAR { lv_name }| ).
|
||||||
|
ENDTRY.
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD zif_abapgit_object~changed_by.
|
||||||
|
|
||||||
|
SELECT SINGLE changed_by FROM cls_attribute INTO rv_user
|
||||||
|
WHERE name = ms_item-obj_name
|
||||||
|
AND activation_state = 'A'.
|
||||||
|
|
||||||
|
IF rv_user IS INITIAL.
|
||||||
|
SELECT SINGLE created_by FROM cls_attribute INTO rv_user
|
||||||
|
WHERE name = ms_item-obj_name
|
||||||
|
AND activation_state = 'A'.
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
IF rv_user IS INITIAL.
|
||||||
|
rv_user = c_user_unknown.
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD zif_abapgit_object~compare_to_remote_version.
|
||||||
|
CREATE OBJECT ro_comparison_result TYPE zcl_abapgit_comparison_null.
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD zif_abapgit_object~delete.
|
||||||
|
|
||||||
|
DATA: lo_char TYPE REF TO cl_cls_attribute,
|
||||||
|
lv_type_group TYPE cls_attribute-type_group.
|
||||||
|
|
||||||
|
|
||||||
|
SELECT SINGLE type_group FROM cls_attribute INTO lv_type_group
|
||||||
|
WHERE name = ms_item-obj_name
|
||||||
|
AND activation_state = 'A'.
|
||||||
|
|
||||||
|
lo_char = instantiate_char( lv_type_group ).
|
||||||
|
|
||||||
|
lo_char->if_pak_wb_object~delete( ).
|
||||||
|
|
||||||
|
lo_char->if_pak_wb_object~save( ).
|
||||||
|
|
||||||
|
lo_char->if_pak_wb_object_internal~unlock( ).
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD zif_abapgit_object~deserialize.
|
||||||
|
|
||||||
|
DATA: ls_char TYPE ty_char,
|
||||||
|
lv_request TYPE trkorr,
|
||||||
|
ls_description LIKE LINE OF ls_char-cls_attributet,
|
||||||
|
lo_char TYPE REF TO cl_cls_attribute.
|
||||||
|
|
||||||
|
|
||||||
|
io_xml->read( EXPORTING iv_name = 'CHAR'
|
||||||
|
CHANGING cg_data = ls_char ).
|
||||||
|
|
||||||
|
tadir_insert( iv_package ).
|
||||||
|
|
||||||
|
lo_char = instantiate_char( ls_char-cls_attribute-type_group ).
|
||||||
|
|
||||||
|
lo_char->if_cls_attribute~set_kind( ls_char-cls_attribute-kind ).
|
||||||
|
lo_char->if_cls_attribute~set_single_valued( ls_char-cls_attribute-is_single_valued ).
|
||||||
|
lo_char->if_cls_attribute~set_aspect(
|
||||||
|
im_aspect_for = ls_char-cls_attribute-is_aspect_for
|
||||||
|
im_aspect_value = ls_char-cls_attribute-aspect_value ).
|
||||||
|
lo_char->if_cls_attribute~set_default_flag( ls_char-cls_attribute-default_flag ).
|
||||||
|
lo_char->if_cls_attribute~set_default_value( ls_char-cls_attribute-default_value ).
|
||||||
|
lo_char->if_cls_attribute~set_sub_object_treatment( ls_char-cls_attribute-sub_obj_treatm ).
|
||||||
|
lo_char->if_cls_attribute~set_automatic_changes_allowed( ls_char-cls_attribute-automatic_change ).
|
||||||
|
lo_char->if_cls_attribute~set_manual_changes_allowed( ls_char-cls_attribute-manu_chag_allow ).
|
||||||
|
lo_char->if_cls_attribute~set_implicit_changes_allowed( ls_char-cls_attribute-implicit_change ).
|
||||||
|
lo_char->if_cls_attribute~set_expl_values_dominate_links( ls_char-cls_attribute-weak_links ).
|
||||||
|
lo_char->if_cls_attribute~set_assignment_package_rule( ls_char-cls_attribute-assignment_devc ).
|
||||||
|
lo_char->if_cls_attribute~set_hide_remark( ls_char-cls_attribute-hide_remark ).
|
||||||
|
lo_char->if_cls_attribute~set_visible_in_customer_system( ls_char-cls_attribute-visible_for_cust ).
|
||||||
|
lo_char->if_cls_attribute~set_value_table( ls_char-cls_attribute-value_table ).
|
||||||
|
lo_char->if_cls_attribute~set_vtable_field( ls_char-cls_attribute-vtable_field ).
|
||||||
|
lo_char->if_cls_attribute~set_vtable_icon_f( ls_char-cls_attribute-vtable_icon_f ).
|
||||||
|
lo_char->if_cls_attribute~set_vtext_langu_f( ls_char-cls_attribute-vtext_langu_f ).
|
||||||
|
lo_char->if_cls_attribute~set_vtext_table( ls_char-cls_attribute-vtext_table ).
|
||||||
|
lo_char->if_cls_attribute~set_vtext_text_f( ls_char-cls_attribute-vtext_text_f ).
|
||||||
|
lo_char->if_cls_attribute~set_vtext_value_f( ls_char-cls_attribute-vtext_value_f ).
|
||||||
|
lo_char->if_cls_attribute~set_existing_objects_only( ls_char-cls_attribute-existing_objects ).
|
||||||
|
lo_char->if_cls_attribute~set_objs_of_typegr( ls_char-cls_attribute-objs_of_typegr ).
|
||||||
|
lo_char->if_cls_attribute~set_obj_values_have_subtypes( ls_char-cls_attribute-objs_w_subtype ).
|
||||||
|
lo_char->if_cls_attribute~set_arbtry_val_type( ls_char-cls_attribute-arbtry_val_type ).
|
||||||
|
|
||||||
|
READ TABLE ls_char-cls_attributet INTO ls_description WITH KEY langu = sy-langu.
|
||||||
|
IF sy-subrc <> 0.
|
||||||
|
READ TABLE ls_char-cls_attributet INTO ls_description INDEX 1.
|
||||||
|
ENDIF.
|
||||||
|
lo_char->if_cls_attribute~set_description( ls_description-text ).
|
||||||
|
|
||||||
|
lo_char->if_cls_attribute~set_values(
|
||||||
|
im_values = ls_char-cls_attr_value
|
||||||
|
im_values_t = ls_char-cls_attr_valuet ).
|
||||||
|
|
||||||
|
* set default package, see function module RS_CORR_INSERT
|
||||||
|
SET PARAMETER ID 'EUK' FIELD iv_package.
|
||||||
|
|
||||||
|
lo_char->if_pak_wb_object~save( ).
|
||||||
|
|
||||||
|
SET PARAMETER ID 'EUK' FIELD ''.
|
||||||
|
|
||||||
|
lo_char->if_pak_wb_object~activate( ).
|
||||||
|
|
||||||
|
lo_char->if_pak_wb_object_internal~unlock( ).
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD zif_abapgit_object~exists.
|
||||||
|
|
||||||
|
rv_bool = cl_cls_attribute=>exists_object_attribute( ms_item-obj_name ).
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD zif_abapgit_object~get_metadata.
|
||||||
|
rs_metadata = get_metadata( ).
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD zif_abapgit_object~has_changed_since.
|
||||||
|
rv_changed = abap_true.
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD zif_abapgit_object~is_locked.
|
||||||
|
rv_is_locked = abap_false.
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD zif_abapgit_object~jump.
|
||||||
|
|
||||||
|
CALL FUNCTION 'RS_TOOL_ACCESS'
|
||||||
|
EXPORTING
|
||||||
|
operation = 'SHOW'
|
||||||
|
object_name = ms_item-obj_name
|
||||||
|
object_type = ms_item-obj_type
|
||||||
|
EXCEPTIONS
|
||||||
|
not_executed = 1
|
||||||
|
invalid_object_type = 2
|
||||||
|
OTHERS = 3.
|
||||||
|
|
||||||
|
IF sy-subrc <> 0.
|
||||||
|
zcx_abapgit_exception=>raise( |Error from RS_TOOL_ACCESS, CHAR| ).
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD zif_abapgit_object~serialize.
|
||||||
|
|
||||||
|
DATA: ls_char TYPE ty_char.
|
||||||
|
|
||||||
|
CONSTANTS: lc_active TYPE c LENGTH 1 VALUE 'A'.
|
||||||
|
|
||||||
|
|
||||||
|
SELECT SINGLE * FROM cls_attribute INTO ls_char-cls_attribute
|
||||||
|
WHERE name = ms_item-obj_name
|
||||||
|
AND activation_state = lc_active.
|
||||||
|
* todo, ASSIGNMENT_DEVC?
|
||||||
|
|
||||||
|
CLEAR: ls_char-cls_attribute-created_by,
|
||||||
|
ls_char-cls_attribute-created_on,
|
||||||
|
ls_char-cls_attribute-changed_by,
|
||||||
|
ls_char-cls_attribute-changed_on.
|
||||||
|
|
||||||
|
SELECT * FROM cls_attributet INTO TABLE ls_char-cls_attributet
|
||||||
|
WHERE name = ms_item-obj_name
|
||||||
|
AND activation_state = lc_active.
|
||||||
|
|
||||||
|
SELECT * FROM cls_attr_value INTO TABLE ls_char-cls_attr_value
|
||||||
|
WHERE name = ms_item-obj_name
|
||||||
|
AND activation_state = lc_active.
|
||||||
|
|
||||||
|
SELECT * FROM cls_attr_valuet INTO TABLE ls_char-cls_attr_valuet
|
||||||
|
WHERE name = ms_item-obj_name
|
||||||
|
AND activation_state = lc_active.
|
||||||
|
|
||||||
|
io_xml->add( iv_name = 'CHAR'
|
||||||
|
ig_data = ls_char ).
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
ENDCLASS.
|
18
src/objects/zcl_abapgit_object_char.clas.xml
Normal file
18
src/objects/zcl_abapgit_object_char.clas.xml
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<abapGit version="v1.0.0" serializer="LCL_OBJECT_CLAS" serializer_version="v1.0.0">
|
||||||
|
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
||||||
|
<asx:values>
|
||||||
|
<VSEOCLASS>
|
||||||
|
<CLSNAME>ZCL_ABAPGIT_OBJECT_CHAR</CLSNAME>
|
||||||
|
<VERSION>1</VERSION>
|
||||||
|
<LANGU>E</LANGU>
|
||||||
|
<EXPOSURE>2</EXPOSURE>
|
||||||
|
<STATE>1</STATE>
|
||||||
|
<CLSFINAL>X</CLSFINAL>
|
||||||
|
<CLSCCINCL>X</CLSCCINCL>
|
||||||
|
<FIXPT>X</FIXPT>
|
||||||
|
<UNICODE>X</UNICODE>
|
||||||
|
</VSEOCLASS>
|
||||||
|
</asx:values>
|
||||||
|
</asx:abap>
|
||||||
|
</abapGit>
|
|
@ -30,12 +30,17 @@ CLASS zcl_abapgit_object_clas_old DEFINITION PUBLIC INHERITING FROM zcl_abapgit_
|
||||||
serialize_xml
|
serialize_xml
|
||||||
IMPORTING io_xml TYPE REF TO zcl_abapgit_xml_output
|
IMPORTING io_xml TYPE REF TO zcl_abapgit_xml_output
|
||||||
RAISING zcx_abapgit_exception.
|
RAISING zcx_abapgit_exception.
|
||||||
|
PRIVATE SECTION.
|
||||||
|
METHODS:
|
||||||
|
is_class_locked
|
||||||
|
RETURNING VALUE(rv_is_class_locked) TYPE abap_bool
|
||||||
|
RAISING zcx_abapgit_exception.
|
||||||
|
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
CLASS ZCL_ABAPGIT_OBJECT_CLAS_OLD IMPLEMENTATION.
|
CLASS zcl_abapgit_object_clas_old IMPLEMENTATION.
|
||||||
|
|
||||||
|
|
||||||
METHOD constructor.
|
METHOD constructor.
|
||||||
|
@ -114,7 +119,7 @@ CLASS ZCL_ABAPGIT_OBJECT_CLAS_OLD IMPLEMENTATION.
|
||||||
io_xml->read( EXPORTING iv_name = 'LINES'
|
io_xml->read( EXPORTING iv_name = 'LINES'
|
||||||
CHANGING cg_data = lt_lines ).
|
CHANGING cg_data = lt_lines ).
|
||||||
|
|
||||||
IF lt_lines[] IS INITIAL.
|
IF lines( lt_lines ) = 0.
|
||||||
RETURN.
|
RETURN.
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
|
||||||
|
@ -155,7 +160,7 @@ CLASS ZCL_ABAPGIT_OBJECT_CLAS_OLD IMPLEMENTATION.
|
||||||
CHANGING cg_data = lt_tpool_ext ).
|
CHANGING cg_data = lt_tpool_ext ).
|
||||||
lt_tpool = read_tpool( lt_tpool_ext ).
|
lt_tpool = read_tpool( lt_tpool_ext ).
|
||||||
|
|
||||||
IF lt_tpool[] IS INITIAL.
|
IF lines( lt_tpool ) = 0.
|
||||||
RETURN.
|
RETURN.
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
|
||||||
|
@ -186,7 +191,7 @@ CLASS ZCL_ABAPGIT_OBJECT_CLAS_OLD IMPLEMENTATION.
|
||||||
zcl_abapgit_language=>set_current_language( mv_language ).
|
zcl_abapgit_language=>set_current_language( mv_language ).
|
||||||
|
|
||||||
TRY.
|
TRY.
|
||||||
ls_vseoclass = mo_object_oriented_object_fct->get_class_properties( is_class_key = ls_clskey ).
|
ls_vseoclass = mo_object_oriented_object_fct->get_class_properties( ls_clskey ).
|
||||||
|
|
||||||
CLEANUP.
|
CLEANUP.
|
||||||
zcl_abapgit_language=>restore_login_language( ).
|
zcl_abapgit_language=>restore_login_language( ).
|
||||||
|
@ -308,7 +313,7 @@ CLASS ZCL_ABAPGIT_OBJECT_CLAS_OLD IMPLEMENTATION.
|
||||||
DATA: ls_class_key TYPE seoclskey.
|
DATA: ls_class_key TYPE seoclskey.
|
||||||
ls_class_key-clsname = ms_item-obj_name.
|
ls_class_key-clsname = ms_item-obj_name.
|
||||||
|
|
||||||
rv_bool = mo_object_oriented_object_fct->exists( iv_object_name = ls_class_key ).
|
rv_bool = mo_object_oriented_object_fct->exists( ls_class_key ).
|
||||||
ENDMETHOD. "zif_abapgit_object~exists
|
ENDMETHOD. "zif_abapgit_object~exists
|
||||||
|
|
||||||
|
|
||||||
|
@ -374,7 +379,7 @@ CLASS ZCL_ABAPGIT_OBJECT_CLAS_OLD IMPLEMENTATION.
|
||||||
lt_source = mo_object_oriented_object_fct->serialize_abap(
|
lt_source = mo_object_oriented_object_fct->serialize_abap(
|
||||||
is_class_key = ls_class_key
|
is_class_key = ls_class_key
|
||||||
iv_type = seop_ext_class_locals_def ).
|
iv_type = seop_ext_class_locals_def ).
|
||||||
IF NOT lt_source[] IS INITIAL.
|
IF lines( lt_source ) > 0.
|
||||||
mo_files->add_abap( iv_extra = 'locals_def'
|
mo_files->add_abap( iv_extra = 'locals_def'
|
||||||
it_abap = lt_source ). "#EC NOTEXT
|
it_abap = lt_source ). "#EC NOTEXT
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
@ -382,7 +387,7 @@ CLASS ZCL_ABAPGIT_OBJECT_CLAS_OLD IMPLEMENTATION.
|
||||||
lt_source = mo_object_oriented_object_fct->serialize_abap(
|
lt_source = mo_object_oriented_object_fct->serialize_abap(
|
||||||
is_class_key = ls_class_key
|
is_class_key = ls_class_key
|
||||||
iv_type = seop_ext_class_locals_imp ).
|
iv_type = seop_ext_class_locals_imp ).
|
||||||
IF NOT lt_source[] IS INITIAL.
|
IF lines( lt_source ) > 0.
|
||||||
mo_files->add_abap( iv_extra = 'locals_imp'
|
mo_files->add_abap( iv_extra = 'locals_imp'
|
||||||
it_abap = lt_source ). "#EC NOTEXT
|
it_abap = lt_source ). "#EC NOTEXT
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
@ -392,7 +397,7 @@ CLASS ZCL_ABAPGIT_OBJECT_CLAS_OLD IMPLEMENTATION.
|
||||||
iv_type = seop_ext_class_testclasses ).
|
iv_type = seop_ext_class_testclasses ).
|
||||||
|
|
||||||
mv_skip_testclass = mo_object_oriented_object_fct->get_skip_test_classes( ).
|
mv_skip_testclass = mo_object_oriented_object_fct->get_skip_test_classes( ).
|
||||||
IF NOT lt_source[] IS INITIAL AND mv_skip_testclass = abap_false.
|
IF lines( lt_source ) > 0 AND mv_skip_testclass = abap_false.
|
||||||
mo_files->add_abap( iv_extra = 'testclasses'
|
mo_files->add_abap( iv_extra = 'testclasses'
|
||||||
it_abap = lt_source ). "#EC NOTEXT
|
it_abap = lt_source ). "#EC NOTEXT
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
@ -400,7 +405,7 @@ CLASS ZCL_ABAPGIT_OBJECT_CLAS_OLD IMPLEMENTATION.
|
||||||
lt_source = mo_object_oriented_object_fct->serialize_abap(
|
lt_source = mo_object_oriented_object_fct->serialize_abap(
|
||||||
is_class_key = ls_class_key
|
is_class_key = ls_class_key
|
||||||
iv_type = seop_ext_class_macros ).
|
iv_type = seop_ext_class_macros ).
|
||||||
IF NOT lt_source[] IS INITIAL.
|
IF lines( lt_source ) > 0.
|
||||||
mo_files->add_abap( iv_extra = 'macros'
|
mo_files->add_abap( iv_extra = 'macros'
|
||||||
it_abap = lt_source ). "#EC NOTEXT
|
it_abap = lt_source ). "#EC NOTEXT
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
@ -408,4 +413,44 @@ CLASS ZCL_ABAPGIT_OBJECT_CLAS_OLD IMPLEMENTATION.
|
||||||
serialize_xml( io_xml ).
|
serialize_xml( io_xml ).
|
||||||
|
|
||||||
ENDMETHOD. "serialize
|
ENDMETHOD. "serialize
|
||||||
|
|
||||||
|
METHOD zif_abapgit_object~is_locked.
|
||||||
|
|
||||||
|
DATA: lv_classpool TYPE program.
|
||||||
|
|
||||||
|
lv_classpool = cl_oo_classname_service=>get_classpool_name( |{ ms_item-obj_name }| ).
|
||||||
|
|
||||||
|
IF is_class_locked( ) = abap_true
|
||||||
|
OR is_text_locked( lv_classpool ) = abap_true.
|
||||||
|
|
||||||
|
rv_is_locked = abap_true.
|
||||||
|
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD is_class_locked.
|
||||||
|
|
||||||
|
DATA: lv_clsname TYPE seoclsenq-clsname.
|
||||||
|
|
||||||
|
lv_clsname = ms_item-obj_name.
|
||||||
|
OVERLAY lv_clsname WITH '=============================='.
|
||||||
|
|
||||||
|
CALL FUNCTION 'ENQUEUE_ESEOCLASS'
|
||||||
|
EXPORTING
|
||||||
|
clsname = lv_clsname
|
||||||
|
EXCEPTIONS
|
||||||
|
foreign_lock = 1
|
||||||
|
system_failure = 2
|
||||||
|
OTHERS = 3.
|
||||||
|
|
||||||
|
rv_is_class_locked = boolc( sy-subrc <> 0 ).
|
||||||
|
|
||||||
|
CALL FUNCTION 'DEQUEUE_ESEOCLASS'
|
||||||
|
EXPORTING
|
||||||
|
clsname = lv_clsname.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
|
@ -214,6 +214,12 @@ CLASS ZCL_ABAPGIT_OBJECT_CMPT IMPLEMENTATION.
|
||||||
zcx_abapgit_exception=>raise( 'CMPT not supported' ).
|
zcx_abapgit_exception=>raise( 'CMPT not supported' ).
|
||||||
ENDTRY.
|
ENDTRY.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD zif_abapgit_object~is_locked.
|
||||||
|
|
||||||
|
rv_is_locked = abap_false.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
|
@ -140,4 +140,10 @@ CLASS zcl_abapgit_object_cus0 IMPLEMENTATION.
|
||||||
CREATE OBJECT ro_comparison_result TYPE zcl_abapgit_comparison_null.
|
CREATE OBJECT ro_comparison_result TYPE zcl_abapgit_comparison_null.
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD zif_abapgit_object~is_locked.
|
||||||
|
|
||||||
|
rv_is_locked = abap_false.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
ENDCLASS. "zcl_abapgit_object_cus0 IMPLEMENTATION
|
ENDCLASS. "zcl_abapgit_object_cus0 IMPLEMENTATION
|
||||||
|
|
|
@ -152,4 +152,10 @@ CLASS zcl_abapgit_object_cus1 IMPLEMENTATION.
|
||||||
CREATE OBJECT ro_comparison_result TYPE zcl_abapgit_comparison_null.
|
CREATE OBJECT ro_comparison_result TYPE zcl_abapgit_comparison_null.
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD zif_abapgit_object~is_locked.
|
||||||
|
|
||||||
|
rv_is_locked = abap_false.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
ENDCLASS. "zcl_abapgit_object_cus1 IMPLEMENTATION
|
ENDCLASS. "zcl_abapgit_object_cus1 IMPLEMENTATION
|
||||||
|
|
|
@ -145,4 +145,10 @@ CLASS zcl_abapgit_object_cus2 IMPLEMENTATION.
|
||||||
CREATE OBJECT ro_comparison_result TYPE zcl_abapgit_comparison_null.
|
CREATE OBJECT ro_comparison_result TYPE zcl_abapgit_comparison_null.
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD zif_abapgit_object~is_locked.
|
||||||
|
|
||||||
|
rv_is_locked = abap_false.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
ENDCLASS. "zcl_abapgit_object_cus2 IMPLEMENTATION
|
ENDCLASS. "zcl_abapgit_object_cus2 IMPLEMENTATION
|
||||||
|
|
|
@ -8,7 +8,7 @@ ENDCLASS.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
CLASS ZCL_ABAPGIT_OBJECT_DCLS IMPLEMENTATION.
|
CLASS zcl_abapgit_object_dcls IMPLEMENTATION.
|
||||||
|
|
||||||
|
|
||||||
METHOD zif_abapgit_object~changed_by.
|
METHOD zif_abapgit_object~changed_by.
|
||||||
|
@ -194,4 +194,12 @@ CLASS ZCL_ABAPGIT_OBJECT_DCLS IMPLEMENTATION.
|
||||||
ENDTRY.
|
ENDTRY.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD zif_abapgit_object~is_locked.
|
||||||
|
|
||||||
|
rv_is_locked = exists_a_lock_entry_for( iv_lock_object = 'E_ACMDCLSRC'
|
||||||
|
iv_argument = |{ ms_item-obj_name }| ).
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
|
@ -238,8 +238,7 @@ CLASS ZCL_ABAPGIT_OBJECT_DDLS IMPLEMENTATION.
|
||||||
|
|
||||||
CASE lv_ddtypekind.
|
CASE lv_ddtypekind.
|
||||||
WHEN 'STOB'.
|
WHEN 'STOB'.
|
||||||
|
me->open_adt_stob( ms_item-obj_name ).
|
||||||
me->open_adt_stob( iv_ddls_name = ms_item-obj_name ).
|
|
||||||
WHEN OTHERS.
|
WHEN OTHERS.
|
||||||
zcx_abapgit_exception=>raise( 'DDLS Jump Error' ).
|
zcx_abapgit_exception=>raise( 'DDLS Jump Error' ).
|
||||||
ENDCASE.
|
ENDCASE.
|
||||||
|
@ -249,12 +248,13 @@ CLASS ZCL_ABAPGIT_OBJECT_DDLS IMPLEMENTATION.
|
||||||
|
|
||||||
METHOD zif_abapgit_object~serialize.
|
METHOD zif_abapgit_object~serialize.
|
||||||
|
|
||||||
DATA: lo_ddl TYPE REF TO object,
|
DATA: lo_ddl TYPE REF TO object,
|
||||||
lr_data TYPE REF TO data,
|
lr_data TYPE REF TO data,
|
||||||
lt_clr_comps TYPE STANDARD TABLE OF fieldname WITH DEFAULT KEY.
|
lt_clr_comps TYPE STANDARD TABLE OF fieldname WITH DEFAULT KEY.
|
||||||
|
|
||||||
FIELD-SYMBOLS: <lg_data> TYPE any,
|
FIELD-SYMBOLS: <lg_data> TYPE any,
|
||||||
<lg_field> TYPE any.
|
<lg_field> TYPE any,
|
||||||
|
<lv_comp> LIKE LINE OF lt_clr_comps.
|
||||||
|
|
||||||
|
|
||||||
CREATE DATA lr_data TYPE ('DDDDLSRCV').
|
CREATE DATA lr_data TYPE ('DDDDLSRCV').
|
||||||
|
@ -281,10 +281,11 @@ CLASS ZCL_ABAPGIT_OBJECT_DDLS IMPLEMENTATION.
|
||||||
APPEND 'ACTFLAG' TO lt_clr_comps.
|
APPEND 'ACTFLAG' TO lt_clr_comps.
|
||||||
APPEND 'CHGFLAG' TO lt_clr_comps.
|
APPEND 'CHGFLAG' TO lt_clr_comps.
|
||||||
|
|
||||||
LOOP AT lt_clr_comps ASSIGNING field-symbol(<lv_comp>).
|
LOOP AT lt_clr_comps ASSIGNING <lv_comp>.
|
||||||
ASSIGN COMPONENT <lv_comp> OF STRUCTURE <lg_data> TO <lg_field>.
|
ASSIGN COMPONENT <lv_comp> OF STRUCTURE <lg_data> TO <lg_field>.
|
||||||
ASSERT sy-subrc = 0.
|
IF sy-subrc = 0.
|
||||||
CLEAR <lg_field>.
|
CLEAR <lg_field>.
|
||||||
|
ENDIF.
|
||||||
ENDLOOP.
|
ENDLOOP.
|
||||||
|
|
||||||
ASSIGN COMPONENT 'SOURCE' OF STRUCTURE <lg_data> TO <lg_field>.
|
ASSIGN COMPONENT 'SOURCE' OF STRUCTURE <lg_data> TO <lg_field>.
|
||||||
|
@ -299,4 +300,12 @@ CLASS ZCL_ABAPGIT_OBJECT_DDLS IMPLEMENTATION.
|
||||||
ig_data = <lg_data> ).
|
ig_data = <lg_data> ).
|
||||||
|
|
||||||
ENDMETHOD. "serialize
|
ENDMETHOD. "serialize
|
||||||
|
|
||||||
|
METHOD zif_abapgit_object~is_locked.
|
||||||
|
|
||||||
|
rv_is_locked = exists_a_lock_entry_for( iv_lock_object = 'ESDICT'
|
||||||
|
iv_argument = |{ ms_item-obj_type }{ ms_item-obj_name }| ).
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
|
@ -28,7 +28,7 @@ ENDCLASS.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
CLASS ZCL_ABAPGIT_OBJECT_DDLX IMPLEMENTATION.
|
CLASS zcl_abapgit_object_ddlx IMPLEMENTATION.
|
||||||
|
|
||||||
|
|
||||||
METHOD clear_field.
|
METHOD clear_field.
|
||||||
|
@ -254,4 +254,12 @@ CLASS ZCL_ABAPGIT_OBJECT_DDLX IMPLEMENTATION.
|
||||||
ENDTRY.
|
ENDTRY.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD zif_abapgit_object~is_locked.
|
||||||
|
|
||||||
|
rv_is_locked = exists_a_lock_entry_for( iv_lock_object = 'ESDICT'
|
||||||
|
iv_argument = |{ ms_item-obj_type }{ ms_item-obj_name }| ).
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
|
@ -20,7 +20,16 @@ CLASS zcl_abapgit_object_devc DEFINITION PUBLIC
|
||||||
RAISING zcx_abapgit_exception,
|
RAISING zcx_abapgit_exception,
|
||||||
set_lock IMPORTING ii_package TYPE REF TO if_package
|
set_lock IMPORTING ii_package TYPE REF TO if_package
|
||||||
iv_lock TYPE abap_bool
|
iv_lock TYPE abap_bool
|
||||||
RAISING zcx_abapgit_exception.
|
RAISING zcx_abapgit_exception,
|
||||||
|
is_empty
|
||||||
|
IMPORTING iv_package_name TYPE devclass
|
||||||
|
RETURNING VALUE(rv_is_empty) TYPE abap_bool
|
||||||
|
RAISING zcx_abapgit_exception,
|
||||||
|
load_package
|
||||||
|
IMPORTING iv_package_name TYPE devclass
|
||||||
|
RETURNING VALUE(ri_package) TYPE REF TO if_package
|
||||||
|
RAISING zcx_abapgit_exception.
|
||||||
|
|
||||||
DATA:
|
DATA:
|
||||||
mv_local_devclass TYPE devclass.
|
mv_local_devclass TYPE devclass.
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
@ -39,24 +48,7 @@ CLASS zcl_abapgit_object_devc IMPLEMENTATION.
|
||||||
|
|
||||||
METHOD get_package.
|
METHOD get_package.
|
||||||
IF me->zif_abapgit_object~exists( ) = abap_true.
|
IF me->zif_abapgit_object~exists( ) = abap_true.
|
||||||
cl_package_factory=>load_package(
|
ri_package = load_package( mv_local_devclass ).
|
||||||
EXPORTING
|
|
||||||
i_package_name = mv_local_devclass
|
|
||||||
i_force_reload = abap_true
|
|
||||||
IMPORTING
|
|
||||||
e_package = ri_package
|
|
||||||
EXCEPTIONS
|
|
||||||
object_not_existing = 1
|
|
||||||
unexpected_error = 2
|
|
||||||
intern_err = 3
|
|
||||||
no_access = 4
|
|
||||||
object_locked_and_modified = 5
|
|
||||||
OTHERS = 6 ).
|
|
||||||
IF sy-subrc = 1.
|
|
||||||
RETURN.
|
|
||||||
ELSEIF sy-subrc <> 0.
|
|
||||||
zcx_abapgit_exception=>raise_t100( ).
|
|
||||||
ENDIF.
|
|
||||||
ENDIF.
|
ENDIF.
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
@ -209,12 +201,83 @@ CLASS zcl_abapgit_object_devc IMPLEMENTATION.
|
||||||
|
|
||||||
|
|
||||||
METHOD zif_abapgit_object~delete.
|
METHOD zif_abapgit_object~delete.
|
||||||
|
|
||||||
|
DATA: li_package TYPE REF TO if_package,
|
||||||
|
lv_package TYPE devclass.
|
||||||
|
|
||||||
" Package deletion is a bit tricky. A package can only be deleted if there are no objects
|
" Package deletion is a bit tricky. A package can only be deleted if there are no objects
|
||||||
" contained in it. This includes subpackages, so first the leaf packages need to be deleted.
|
" contained in it. This includes subpackages, so first the leaf packages need to be deleted.
|
||||||
" Unfortunately deleted objects that are still contained in an unreleased transport request
|
" Unfortunately deleted objects that are still contained in an unreleased transport request
|
||||||
" also count towards the contained objects counter.
|
" also count towards the contained objects counter.
|
||||||
" -> Package deletion is currently not supported by abapGit
|
" -> Currently we delete only empty packages
|
||||||
RETURN.
|
"
|
||||||
|
" If objects are deleted, the TADIR entry is deleted when the transport request is released.
|
||||||
|
" So before we can delete the package, the transport which deletes the objects
|
||||||
|
" in the package has to be released.
|
||||||
|
|
||||||
|
lv_package = ms_item-obj_name.
|
||||||
|
|
||||||
|
IF is_empty( lv_package ) = abap_true.
|
||||||
|
|
||||||
|
li_package = load_package( lv_package ).
|
||||||
|
|
||||||
|
IF li_package IS NOT BOUND.
|
||||||
|
RETURN.
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
li_package->set_changeable(
|
||||||
|
EXPORTING
|
||||||
|
i_changeable = abap_true
|
||||||
|
i_suppress_dialog = abap_true
|
||||||
|
EXCEPTIONS
|
||||||
|
object_locked_by_other_user = 1
|
||||||
|
permission_failure = 2
|
||||||
|
object_already_changeable = 3
|
||||||
|
object_already_unlocked = 4
|
||||||
|
object_just_created = 5
|
||||||
|
object_deleted = 6
|
||||||
|
object_modified = 7
|
||||||
|
object_not_existing = 8
|
||||||
|
object_invalid = 9
|
||||||
|
unexpected_error = 10
|
||||||
|
OTHERS = 11 ).
|
||||||
|
|
||||||
|
IF sy-subrc <> 0.
|
||||||
|
zcx_abapgit_exception=>raise_t100( ).
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
li_package->delete(
|
||||||
|
EXPORTING
|
||||||
|
i_suppress_dialog = abap_true
|
||||||
|
EXCEPTIONS
|
||||||
|
object_not_empty = 1
|
||||||
|
object_not_changeable = 2
|
||||||
|
object_invalid = 3
|
||||||
|
intern_err = 4
|
||||||
|
OTHERS = 5 ).
|
||||||
|
|
||||||
|
IF sy-subrc <> 0.
|
||||||
|
zcx_abapgit_exception=>raise_t100( ).
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
li_package->save(
|
||||||
|
EXPORTING
|
||||||
|
i_suppress_dialog = abap_true
|
||||||
|
EXCEPTIONS
|
||||||
|
object_invalid = 1
|
||||||
|
object_not_changeable = 2
|
||||||
|
cancelled_in_corr = 3
|
||||||
|
permission_failure = 4
|
||||||
|
unexpected_error = 5
|
||||||
|
intern_err = 6
|
||||||
|
OTHERS = 7 ).
|
||||||
|
|
||||||
|
IF sy-subrc <> 0.
|
||||||
|
zcx_abapgit_exception=>raise_t100( ).
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
@ -544,4 +607,65 @@ CLASS zcl_abapgit_object_devc IMPLEMENTATION.
|
||||||
io_xml->add( iv_name = 'PERMISSION' ig_data = lt_usage_data ).
|
io_xml->add( iv_name = 'PERMISSION' ig_data = lt_usage_data ).
|
||||||
ENDIF.
|
ENDIF.
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD zif_abapgit_object~is_locked.
|
||||||
|
|
||||||
|
DATA: lv_object TYPE eqegraarg .
|
||||||
|
|
||||||
|
lv_object = |DV{ ms_item-obj_name }|.
|
||||||
|
OVERLAY lv_object WITH ' '.
|
||||||
|
lv_object = lv_object && '*'.
|
||||||
|
|
||||||
|
rv_is_locked = exists_a_lock_entry_for( iv_lock_object = 'EEUDB'
|
||||||
|
iv_argument = lv_object ).
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD is_empty.
|
||||||
|
|
||||||
|
DATA: lv_object_name TYPE tadir-obj_name,
|
||||||
|
lt_subpackages TYPE zif_abapgit_sap_package=>ty_devclass_tt.
|
||||||
|
|
||||||
|
lt_subpackages = zcl_abapgit_factory=>get_sap_package( iv_package_name )->list_subpackages( ).
|
||||||
|
|
||||||
|
IF lines( lt_subpackages ) > 0.
|
||||||
|
rv_is_empty = abap_false.
|
||||||
|
RETURN.
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
SELECT SINGLE obj_name
|
||||||
|
FROM tadir
|
||||||
|
INTO lv_object_name
|
||||||
|
WHERE pgmid = 'R3TR'
|
||||||
|
AND NOT ( object = 'DEVC' AND obj_name = iv_package_name )
|
||||||
|
AND devclass = iv_package_name.
|
||||||
|
rv_is_empty = boolc( sy-subrc <> 0 ).
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD load_package.
|
||||||
|
|
||||||
|
cl_package_factory=>load_package(
|
||||||
|
EXPORTING
|
||||||
|
i_package_name = iv_package_name
|
||||||
|
i_force_reload = abap_true
|
||||||
|
IMPORTING
|
||||||
|
e_package = ri_package
|
||||||
|
EXCEPTIONS
|
||||||
|
object_not_existing = 1
|
||||||
|
unexpected_error = 2
|
||||||
|
intern_err = 3
|
||||||
|
no_access = 4
|
||||||
|
object_locked_and_modified = 5
|
||||||
|
OTHERS = 6 ).
|
||||||
|
IF sy-subrc = 1.
|
||||||
|
RETURN.
|
||||||
|
ELSEIF sy-subrc <> 0.
|
||||||
|
zcx_abapgit_exception=>raise_t100( ).
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
|
@ -206,4 +206,11 @@ CLASS ZCL_ABAPGIT_OBJECT_DIAL IMPLEMENTATION.
|
||||||
WHERE dnam = lv_dnam.
|
WHERE dnam = lv_dnam.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD zif_abapgit_object~is_locked.
|
||||||
|
|
||||||
|
rv_is_locked = abap_false.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
|
@ -191,4 +191,10 @@ CLASS zcl_abapgit_object_doct IMPLEMENTATION.
|
||||||
CREATE OBJECT ro_comparison_result TYPE zcl_abapgit_comparison_null.
|
CREATE OBJECT ro_comparison_result TYPE zcl_abapgit_comparison_null.
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD zif_abapgit_object~is_locked.
|
||||||
|
|
||||||
|
rv_is_locked = abap_false.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
ENDCLASS. "zcl_abapgit_object_msag IMPLEMENTATION
|
ENDCLASS. "zcl_abapgit_object_msag IMPLEMENTATION
|
||||||
|
|
|
@ -153,4 +153,10 @@ CLASS zcl_abapgit_object_docv IMPLEMENTATION.
|
||||||
CREATE OBJECT ro_comparison_result TYPE zcl_abapgit_comparison_null.
|
CREATE OBJECT ro_comparison_result TYPE zcl_abapgit_comparison_null.
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD zif_abapgit_object~is_locked.
|
||||||
|
|
||||||
|
rv_is_locked = abap_false.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
ENDCLASS. "zcl_abapgit_object_msag IMPLEMENTATION
|
ENDCLASS. "zcl_abapgit_object_msag IMPLEMENTATION
|
||||||
|
|
|
@ -36,7 +36,7 @@ ENDCLASS.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
CLASS ZCL_ABAPGIT_OBJECT_DOMA IMPLEMENTATION.
|
CLASS zcl_abapgit_object_doma IMPLEMENTATION.
|
||||||
|
|
||||||
|
|
||||||
METHOD deserialize_texts.
|
METHOD deserialize_texts.
|
||||||
|
@ -205,20 +205,40 @@ CLASS ZCL_ABAPGIT_OBJECT_DOMA IMPLEMENTATION.
|
||||||
|
|
||||||
lv_objname = ms_item-obj_name.
|
lv_objname = ms_item-obj_name.
|
||||||
|
|
||||||
CALL FUNCTION 'RS_DD_DELETE_OBJ'
|
TRY.
|
||||||
EXPORTING
|
CALL FUNCTION 'RS_DD_DELETE_OBJ'
|
||||||
no_ask = abap_true
|
EXPORTING
|
||||||
objname = lv_objname
|
no_ask = abap_true
|
||||||
objtype = 'D'
|
objname = lv_objname
|
||||||
no_ask_delete_append = abap_true
|
objtype = 'D'
|
||||||
EXCEPTIONS
|
no_ask_delete_append = abap_true
|
||||||
not_executed = 1
|
EXCEPTIONS
|
||||||
object_not_found = 2
|
not_executed = 1
|
||||||
object_not_specified = 3
|
object_not_found = 2
|
||||||
permission_failure = 4.
|
object_not_specified = 3
|
||||||
IF sy-subrc <> 0.
|
permission_failure = 4.
|
||||||
zcx_abapgit_exception=>raise( 'error from RS_DD_DELETE_OBJ, DOMA' ).
|
IF sy-subrc <> 0.
|
||||||
ENDIF.
|
zcx_abapgit_exception=>raise( 'error from RS_DD_DELETE_OBJ, DOMA' ).
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
CATCH cx_sy_dyn_call_param_not_found.
|
||||||
|
|
||||||
|
CALL FUNCTION 'RS_DD_DELETE_OBJ'
|
||||||
|
EXPORTING
|
||||||
|
no_ask = abap_true
|
||||||
|
objname = lv_objname
|
||||||
|
objtype = 'D'
|
||||||
|
* no_ask_delete_append = abap_true parameter not available in lower NW versions
|
||||||
|
EXCEPTIONS
|
||||||
|
not_executed = 1
|
||||||
|
object_not_found = 2
|
||||||
|
object_not_specified = 3
|
||||||
|
permission_failure = 4.
|
||||||
|
IF sy-subrc <> 0.
|
||||||
|
zcx_abapgit_exception=>raise( 'error from RS_DD_DELETE_OBJ, DOMA' ).
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
ENDTRY.
|
||||||
|
|
||||||
ENDMETHOD. "delete
|
ENDMETHOD. "delete
|
||||||
|
|
||||||
|
@ -369,4 +389,12 @@ CLASS ZCL_ABAPGIT_OBJECT_DOMA IMPLEMENTATION.
|
||||||
serialize_texts( io_xml ).
|
serialize_texts( io_xml ).
|
||||||
|
|
||||||
ENDMETHOD. "serialize
|
ENDMETHOD. "serialize
|
||||||
|
|
||||||
|
METHOD zif_abapgit_object~is_locked.
|
||||||
|
|
||||||
|
rv_is_locked = exists_a_lock_entry_for( iv_lock_object = 'ESDICT'
|
||||||
|
iv_argument = |{ ms_item-obj_type }{ ms_item-obj_name }| ).
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
|
@ -162,4 +162,10 @@ CLASS zcl_abapgit_object_dsys IMPLEMENTATION.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD zif_abapgit_object~is_locked.
|
||||||
|
|
||||||
|
rv_is_locked = abap_false.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
ENDCLASS. "zcl_abapgit_object_dsys IMPLEMENTATION
|
ENDCLASS. "zcl_abapgit_object_dsys IMPLEMENTATION
|
||||||
|
|
|
@ -29,7 +29,7 @@ ENDCLASS.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
CLASS ZCL_ABAPGIT_OBJECT_DTEL IMPLEMENTATION.
|
CLASS zcl_abapgit_object_dtel IMPLEMENTATION.
|
||||||
|
|
||||||
|
|
||||||
METHOD deserialize_texts.
|
METHOD deserialize_texts.
|
||||||
|
@ -334,4 +334,13 @@ CLASS ZCL_ABAPGIT_OBJECT_DTEL IMPLEMENTATION.
|
||||||
serialize_texts( io_xml ).
|
serialize_texts( io_xml ).
|
||||||
|
|
||||||
ENDMETHOD. "serialize
|
ENDMETHOD. "serialize
|
||||||
|
|
||||||
|
METHOD zif_abapgit_object~is_locked.
|
||||||
|
|
||||||
|
rv_is_locked = exists_a_lock_entry_for( iv_lock_object = 'ESDICT'
|
||||||
|
iv_argument = |{ ms_item-obj_type }{ ms_item-obj_name }| ).
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
|
@ -16,7 +16,8 @@ CLASS zcl_abapgit_object_ecat DEFINITION
|
||||||
METHODS:
|
METHODS:
|
||||||
get_object_type REDEFINITION,
|
get_object_type REDEFINITION,
|
||||||
get_upload REDEFINITION,
|
get_upload REDEFINITION,
|
||||||
get_download REDEFINITION.
|
get_download REDEFINITION,
|
||||||
|
get_lock_object REDEFINITION.
|
||||||
|
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
||||||
|
@ -51,4 +52,10 @@ CLASS zcl_abapgit_object_ecat IMPLEMENTATION.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD get_lock_object.
|
||||||
|
|
||||||
|
rv_lock_object = 'E_ECATT'.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
|
@ -28,7 +28,11 @@ CLASS zcl_abapgit_object_ecatt_super DEFINITION
|
||||||
|
|
||||||
get_download ABSTRACT
|
get_download ABSTRACT
|
||||||
RETURNING
|
RETURNING
|
||||||
VALUE(ro_download) TYPE REF TO cl_apl_ecatt_download.
|
VALUE(ro_download) TYPE REF TO cl_apl_ecatt_download,
|
||||||
|
|
||||||
|
get_lock_object ABSTRACT
|
||||||
|
RETURNING
|
||||||
|
VALUE(rv_lock_object) TYPE eqeobj.
|
||||||
|
|
||||||
PRIVATE SECTION.
|
PRIVATE SECTION.
|
||||||
TYPES:
|
TYPES:
|
||||||
|
@ -144,12 +148,9 @@ CLASS zcl_abapgit_object_ecatt_super IMPLEMENTATION.
|
||||||
lv_object_type = get_object_type( ).
|
lv_object_type = get_object_type( ).
|
||||||
|
|
||||||
lo_element = ci_document->find_from_name( |{ lv_object_type }| ).
|
lo_element = ci_document->find_from_name( |{ lv_object_type }| ).
|
||||||
lo_element->set_attribute( name = |SAPRL|
|
lo_element->remove_attribute( |SAPRL| ).
|
||||||
value = || ).
|
lo_element->remove_attribute( |DOWNLOADDATE| ).
|
||||||
lo_element->set_attribute( name = |DOWNLOADDATE|
|
lo_element->remove_attribute( |DOWNLOADTIME| ).
|
||||||
value = || ).
|
|
||||||
lo_element->set_attribute( name = |DOWNLOADTIME|
|
|
||||||
value = || ).
|
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
@ -631,5 +632,18 @@ CLASS zcl_abapgit_object_ecatt_super IMPLEMENTATION.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD zif_abapgit_object~is_locked.
|
||||||
|
|
||||||
|
DATA: lv_object TYPE seqg3-garg.
|
||||||
|
|
||||||
|
lv_object = ms_item-obj_name.
|
||||||
|
OVERLAY lv_object WITH ' '.
|
||||||
|
lv_object = lv_object && '*'.
|
||||||
|
|
||||||
|
rv_is_locked = exists_a_lock_entry_for( iv_lock_object = get_lock_object( )
|
||||||
|
iv_argument = lv_object ).
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
||||||
|
|
|
@ -16,7 +16,8 @@ CLASS zcl_abapgit_object_ecsd DEFINITION
|
||||||
METHODS:
|
METHODS:
|
||||||
get_object_type REDEFINITION,
|
get_object_type REDEFINITION,
|
||||||
get_upload REDEFINITION,
|
get_upload REDEFINITION,
|
||||||
get_download REDEFINITION.
|
get_download REDEFINITION,
|
||||||
|
get_lock_object REDEFINITION.
|
||||||
|
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
||||||
|
@ -51,4 +52,10 @@ CLASS zcl_abapgit_object_ecsd IMPLEMENTATION.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD get_lock_object.
|
||||||
|
|
||||||
|
rv_lock_object = 'E_ECATT_SD'.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
|
@ -16,7 +16,8 @@ CLASS zcl_abapgit_object_ecsp DEFINITION
|
||||||
METHODS:
|
METHODS:
|
||||||
get_object_type REDEFINITION,
|
get_object_type REDEFINITION,
|
||||||
get_upload REDEFINITION,
|
get_upload REDEFINITION,
|
||||||
get_download REDEFINITION.
|
get_download REDEFINITION,
|
||||||
|
get_lock_object REDEFINITION.
|
||||||
|
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
||||||
|
@ -53,4 +54,10 @@ CLASS zcl_abapgit_object_ecsp IMPLEMENTATION.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD get_lock_object.
|
||||||
|
|
||||||
|
rv_lock_object = 'E_ECATT_SP'.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
|
@ -16,7 +16,8 @@ CLASS zcl_abapgit_object_ectc DEFINITION
|
||||||
METHODS:
|
METHODS:
|
||||||
get_object_type REDEFINITION,
|
get_object_type REDEFINITION,
|
||||||
get_upload REDEFINITION,
|
get_upload REDEFINITION,
|
||||||
get_download REDEFINITION.
|
get_download REDEFINITION,
|
||||||
|
get_lock_object REDEFINITION.
|
||||||
|
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
||||||
|
@ -51,4 +52,10 @@ CLASS zcl_abapgit_object_ectc IMPLEMENTATION.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD get_lock_object.
|
||||||
|
|
||||||
|
rv_lock_object = 'E_ECATT_TC'.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
|
@ -16,7 +16,8 @@ CLASS zcl_abapgit_object_ectd DEFINITION
|
||||||
METHODS:
|
METHODS:
|
||||||
get_object_type REDEFINITION,
|
get_object_type REDEFINITION,
|
||||||
get_upload REDEFINITION,
|
get_upload REDEFINITION,
|
||||||
get_download REDEFINITION.
|
get_download REDEFINITION,
|
||||||
|
get_lock_object REDEFINITION.
|
||||||
|
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
||||||
|
@ -50,4 +51,10 @@ CLASS zcl_abapgit_object_ectd IMPLEMENTATION.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD get_lock_object.
|
||||||
|
|
||||||
|
rv_lock_object = 'E_ECATT_TD'.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
|
@ -16,7 +16,8 @@ CLASS zcl_abapgit_object_ecvo DEFINITION
|
||||||
METHODS:
|
METHODS:
|
||||||
get_object_type REDEFINITION,
|
get_object_type REDEFINITION,
|
||||||
get_upload REDEFINITION,
|
get_upload REDEFINITION,
|
||||||
get_download REDEFINITION.
|
get_download REDEFINITION,
|
||||||
|
get_lock_object REDEFINITION.
|
||||||
|
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
||||||
|
@ -53,4 +54,10 @@ CLASS zcl_abapgit_object_ecvo IMPLEMENTATION.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD get_lock_object.
|
||||||
|
|
||||||
|
rv_lock_object = 'E_ECATT_TD'.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
|
@ -28,8 +28,43 @@ CLASS zcl_abapgit_object_enho IMPLEMENTATION.
|
||||||
ENDMETHOD. "zif_abapgit_object~get_metadata
|
ENDMETHOD. "zif_abapgit_object~get_metadata
|
||||||
|
|
||||||
METHOD zif_abapgit_object~changed_by.
|
METHOD zif_abapgit_object~changed_by.
|
||||||
rv_user = c_user_unknown. " todo
|
|
||||||
ENDMETHOD. "zif_abapgit_object~changed_by
|
DATA: lv_enh_id TYPE enhname,
|
||||||
|
li_enho TYPE REF TO zif_abapgit_object_enho,
|
||||||
|
lt_log TYPE enh_log_it,
|
||||||
|
li_log_obj TYPE REF TO if_enh_log,
|
||||||
|
ls_enhlog TYPE enhlog,
|
||||||
|
lv_lines TYPE i,
|
||||||
|
lt_enhlog TYPE STANDARD TABLE OF enhlog WITH DEFAULT KEY,
|
||||||
|
li_enh_tool TYPE REF TO if_enh_tool.
|
||||||
|
|
||||||
|
|
||||||
|
lv_enh_id = ms_item-obj_name.
|
||||||
|
TRY.
|
||||||
|
li_enh_tool = cl_enh_factory=>get_enhancement(
|
||||||
|
enhancement_id = lv_enh_id
|
||||||
|
bypassing_buffer = abap_true ).
|
||||||
|
CATCH cx_enh_root.
|
||||||
|
rv_user = c_user_unknown.
|
||||||
|
RETURN.
|
||||||
|
ENDTRY.
|
||||||
|
|
||||||
|
lt_log = li_enh_tool->get_log( ).
|
||||||
|
|
||||||
|
LOOP AT lt_log INTO li_log_obj.
|
||||||
|
ls_enhlog = li_log_obj->get_enhlog( ).
|
||||||
|
APPEND ls_enhlog TO lt_enhlog.
|
||||||
|
ENDLOOP.
|
||||||
|
|
||||||
|
lv_lines = lines( lt_enhlog ).
|
||||||
|
READ TABLE lt_enhlog INTO ls_enhlog INDEX lv_lines.
|
||||||
|
IF sy-subrc = 0.
|
||||||
|
rv_user = ls_enhlog-loguser.
|
||||||
|
ELSE.
|
||||||
|
rv_user = c_user_unknown.
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
METHOD zif_abapgit_object~exists.
|
METHOD zif_abapgit_object~exists.
|
||||||
|
|
||||||
|
@ -176,4 +211,10 @@ CLASS zcl_abapgit_object_enho IMPLEMENTATION.
|
||||||
CREATE OBJECT ro_comparison_result TYPE zcl_abapgit_comparison_null.
|
CREATE OBJECT ro_comparison_result TYPE zcl_abapgit_comparison_null.
|
||||||
ENDMETHOD. "zif_abapgit_object~compare_to_remote_version
|
ENDMETHOD. "zif_abapgit_object~compare_to_remote_version
|
||||||
|
|
||||||
|
METHOD zif_abapgit_object~is_locked.
|
||||||
|
|
||||||
|
rv_is_locked = abap_false.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
ENDCLASS. "zcl_abapgit_object_enho IMPLEMENTATION
|
ENDCLASS. "zcl_abapgit_object_enho IMPLEMENTATION
|
||||||
|
|
|
@ -179,4 +179,10 @@ CLASS zcl_abapgit_object_enhs IMPLEMENTATION.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD zif_abapgit_object~is_locked.
|
||||||
|
|
||||||
|
rv_is_locked = abap_false.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
ENDCLASS. "zcl_abapgit_object_enhs
|
ENDCLASS. "zcl_abapgit_object_enhs
|
||||||
|
|
|
@ -175,4 +175,10 @@ CLASS zcl_abapgit_object_enqu IMPLEMENTATION.
|
||||||
CREATE OBJECT ro_comparison_result TYPE zcl_abapgit_comparison_null.
|
CREATE OBJECT ro_comparison_result TYPE zcl_abapgit_comparison_null.
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD zif_abapgit_object~is_locked.
|
||||||
|
|
||||||
|
rv_is_locked = abap_false.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
ENDCLASS. "zcl_abapgit_object_enqu IMPLEMENTATION
|
ENDCLASS. "zcl_abapgit_object_enqu IMPLEMENTATION
|
||||||
|
|
|
@ -187,4 +187,10 @@ CLASS zcl_abapgit_object_ensc IMPLEMENTATION.
|
||||||
CREATE OBJECT ro_comparison_result TYPE zcl_abapgit_comparison_null.
|
CREATE OBJECT ro_comparison_result TYPE zcl_abapgit_comparison_null.
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD zif_abapgit_object~is_locked.
|
||||||
|
|
||||||
|
rv_is_locked = abap_false.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
ENDCLASS. "zcl_abapgit_object_ensc
|
ENDCLASS. "zcl_abapgit_object_ensc
|
||||||
|
|
|
@ -39,6 +39,12 @@ CLASS zcl_abapgit_object_form DEFINITION PUBLIC INHERITING FROM zcl_abapgit_obje
|
||||||
RETURNING
|
RETURNING
|
||||||
VALUE(r_result) TYPE string.
|
VALUE(r_result) TYPE string.
|
||||||
|
|
||||||
|
METHODS _build_extra_from_header_old
|
||||||
|
IMPORTING
|
||||||
|
ls_header TYPE tys_form_header
|
||||||
|
RETURNING
|
||||||
|
VALUE(r_result) TYPE string.
|
||||||
|
|
||||||
METHODS _save_form
|
METHODS _save_form
|
||||||
IMPORTING
|
IMPORTING
|
||||||
it_lines TYPE zcl_abapgit_object_form=>tyt_lines
|
it_lines TYPE zcl_abapgit_object_form=>tyt_lines
|
||||||
|
@ -254,6 +260,20 @@ CLASS zcl_abapgit_object_form IMPLEMENTATION.
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
METHOD _build_extra_from_header.
|
METHOD _build_extra_from_header.
|
||||||
|
|
||||||
|
DATA: lv_tdspras type laiso.
|
||||||
|
|
||||||
|
CALL FUNCTION 'CONVERSION_EXIT_ISOLA_OUTPUT'
|
||||||
|
EXPORTING
|
||||||
|
input = ls_header-tdspras
|
||||||
|
IMPORTING
|
||||||
|
output = lv_tdspras.
|
||||||
|
|
||||||
|
r_result = c_objectname_tdlines && '_' && lv_tdspras.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD _build_extra_from_header_old.
|
||||||
r_result = c_objectname_tdlines && '_' && ls_header-tdspras.
|
r_result = c_objectname_tdlines && '_' && ls_header-tdspras.
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
@ -307,9 +327,17 @@ CLASS zcl_abapgit_object_form IMPLEMENTATION.
|
||||||
DATA lv_string TYPE string.
|
DATA lv_string TYPE string.
|
||||||
DATA lo_xml TYPE REF TO zcl_abapgit_xml_input.
|
DATA lo_xml TYPE REF TO zcl_abapgit_xml_input.
|
||||||
|
|
||||||
lv_string = mo_files->read_string( iv_extra =
|
TRY.
|
||||||
_build_extra_from_header( is_form_data-form_header )
|
lv_string = mo_files->read_string( iv_extra =
|
||||||
iv_ext = c_extension_xml ).
|
_build_extra_from_header( is_form_data-form_header )
|
||||||
|
iv_ext = c_extension_xml ).
|
||||||
|
CATCH zcx_abapgit_exception.
|
||||||
|
|
||||||
|
lv_string = mo_files->read_string( iv_extra =
|
||||||
|
_build_extra_from_header_old( is_form_data-form_header )
|
||||||
|
iv_ext = c_extension_xml ).
|
||||||
|
|
||||||
|
ENDTRY.
|
||||||
|
|
||||||
CREATE OBJECT lo_xml EXPORTING iv_xml = lv_string.
|
CREATE OBJECT lo_xml EXPORTING iv_xml = lv_string.
|
||||||
lo_xml->read( EXPORTING iv_name = c_objectname_tdlines
|
lo_xml->read( EXPORTING iv_name = c_objectname_tdlines
|
||||||
|
@ -406,4 +434,10 @@ CLASS zcl_abapgit_object_form IMPLEMENTATION.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD zif_abapgit_object~is_locked.
|
||||||
|
|
||||||
|
rv_is_locked = abap_false.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
ENDCLASS. "zcl_abapgit_object_FORM IMPLEMENTATION
|
ENDCLASS. "zcl_abapgit_object_FORM IMPLEMENTATION
|
||||||
|
|
|
@ -5,73 +5,106 @@ CLASS zcl_abapgit_object_fugr DEFINITION PUBLIC INHERITING FROM zcl_abapgit_obje
|
||||||
ALIASES mo_files FOR zif_abapgit_object~mo_files.
|
ALIASES mo_files FOR zif_abapgit_object~mo_files.
|
||||||
|
|
||||||
PRIVATE SECTION.
|
PRIVATE SECTION.
|
||||||
TYPES: ty_rs38l_incl_tt TYPE STANDARD TABLE OF rs38l_incl WITH DEFAULT KEY.
|
|
||||||
|
|
||||||
TYPES: BEGIN OF ty_function,
|
TYPES:
|
||||||
funcname TYPE rs38l_fnam,
|
ty_rs38l_incl_tt TYPE STANDARD TABLE OF rs38l_incl WITH DEFAULT KEY .
|
||||||
global_flag TYPE rs38l-global,
|
TYPES:
|
||||||
remote_call TYPE rs38l-remote,
|
BEGIN OF ty_function,
|
||||||
update_task TYPE rs38l-utask,
|
funcname TYPE rs38l_fnam,
|
||||||
short_text TYPE tftit-stext,
|
global_flag TYPE rs38l-global,
|
||||||
remote_basxml TYPE rs38l-basxml_enabled,
|
remote_call TYPE rs38l-remote,
|
||||||
import TYPE STANDARD TABLE OF rsimp WITH DEFAULT KEY,
|
update_task TYPE rs38l-utask,
|
||||||
changing TYPE STANDARD TABLE OF rscha WITH DEFAULT KEY,
|
short_text TYPE tftit-stext,
|
||||||
export TYPE STANDARD TABLE OF rsexp WITH DEFAULT KEY,
|
remote_basxml TYPE rs38l-basxml_enabled,
|
||||||
tables TYPE STANDARD TABLE OF rstbl WITH DEFAULT KEY,
|
import TYPE STANDARD TABLE OF rsimp WITH DEFAULT KEY,
|
||||||
exception TYPE STANDARD TABLE OF rsexc WITH DEFAULT KEY,
|
changing TYPE STANDARD TABLE OF rscha WITH DEFAULT KEY,
|
||||||
documentation TYPE STANDARD TABLE OF rsfdo WITH DEFAULT KEY,
|
export TYPE STANDARD TABLE OF rsexp WITH DEFAULT KEY,
|
||||||
exception_classes TYPE abap_bool,
|
tables TYPE STANDARD TABLE OF rstbl WITH DEFAULT KEY,
|
||||||
END OF ty_function.
|
exception TYPE STANDARD TABLE OF rsexc WITH DEFAULT KEY,
|
||||||
|
documentation TYPE STANDARD TABLE OF rsfdo WITH DEFAULT KEY,
|
||||||
TYPES: ty_function_tt TYPE STANDARD TABLE OF ty_function WITH DEFAULT KEY.
|
exception_classes TYPE abap_bool,
|
||||||
|
END OF ty_function .
|
||||||
|
TYPES:
|
||||||
|
ty_function_tt TYPE STANDARD TABLE OF ty_function WITH DEFAULT KEY .
|
||||||
|
|
||||||
|
METHODS update_where_used
|
||||||
|
IMPORTING
|
||||||
|
!it_includes TYPE rso_t_objnm .
|
||||||
METHODS main_name
|
METHODS main_name
|
||||||
RETURNING VALUE(rv_program) TYPE program
|
RETURNING
|
||||||
RAISING zcx_abapgit_exception.
|
VALUE(rv_program) TYPE program
|
||||||
|
RAISING
|
||||||
|
zcx_abapgit_exception .
|
||||||
METHODS functions
|
METHODS functions
|
||||||
RETURNING VALUE(rt_functab) TYPE ty_rs38l_incl_tt
|
RETURNING
|
||||||
RAISING zcx_abapgit_exception.
|
VALUE(rt_functab) TYPE ty_rs38l_incl_tt
|
||||||
|
RAISING
|
||||||
|
zcx_abapgit_exception .
|
||||||
METHODS includes
|
METHODS includes
|
||||||
RETURNING VALUE(rt_includes) TYPE rso_t_objnm
|
RETURNING
|
||||||
RAISING zcx_abapgit_exception.
|
VALUE(rt_includes) TYPE rso_t_objnm
|
||||||
|
RAISING
|
||||||
|
zcx_abapgit_exception .
|
||||||
METHODS serialize_functions
|
METHODS serialize_functions
|
||||||
RETURNING VALUE(rt_functions) TYPE ty_function_tt
|
RETURNING
|
||||||
RAISING zcx_abapgit_exception.
|
VALUE(rt_functions) TYPE ty_function_tt
|
||||||
|
RAISING
|
||||||
|
zcx_abapgit_exception .
|
||||||
METHODS deserialize_functions
|
METHODS deserialize_functions
|
||||||
IMPORTING it_functions TYPE ty_function_tt
|
IMPORTING
|
||||||
RAISING zcx_abapgit_exception.
|
!it_functions TYPE ty_function_tt
|
||||||
|
RAISING
|
||||||
|
zcx_abapgit_exception .
|
||||||
METHODS serialize_xml
|
METHODS serialize_xml
|
||||||
IMPORTING io_xml TYPE REF TO zcl_abapgit_xml_output
|
IMPORTING
|
||||||
RAISING zcx_abapgit_exception.
|
!io_xml TYPE REF TO zcl_abapgit_xml_output
|
||||||
|
RAISING
|
||||||
|
zcx_abapgit_exception .
|
||||||
METHODS deserialize_xml
|
METHODS deserialize_xml
|
||||||
IMPORTING io_xml TYPE REF TO zcl_abapgit_xml_input
|
IMPORTING
|
||||||
iv_package TYPE devclass
|
!io_xml TYPE REF TO zcl_abapgit_xml_input
|
||||||
RAISING zcx_abapgit_exception.
|
!iv_package TYPE devclass
|
||||||
|
RAISING
|
||||||
|
zcx_abapgit_exception .
|
||||||
METHODS serialize_includes
|
METHODS serialize_includes
|
||||||
RAISING zcx_abapgit_exception.
|
RAISING
|
||||||
|
zcx_abapgit_exception .
|
||||||
METHODS deserialize_includes
|
METHODS deserialize_includes
|
||||||
IMPORTING io_xml TYPE REF TO zcl_abapgit_xml_input
|
IMPORTING
|
||||||
iv_package TYPE devclass
|
!io_xml TYPE REF TO zcl_abapgit_xml_input
|
||||||
RAISING zcx_abapgit_exception.
|
!iv_package TYPE devclass
|
||||||
|
RAISING
|
||||||
|
zcx_abapgit_exception .
|
||||||
METHODS are_exceptions_class_based
|
METHODS are_exceptions_class_based
|
||||||
IMPORTING iv_function_name TYPE rs38l_fnam
|
IMPORTING
|
||||||
RETURNING VALUE(rv_return) TYPE abap_bool
|
iv_function_name TYPE rs38l_fnam
|
||||||
RAISING zcx_abapgit_exception.
|
RETURNING
|
||||||
|
VALUE(rv_return) TYPE abap_bool
|
||||||
|
RAISING
|
||||||
|
zcx_abapgit_exception .
|
||||||
|
METHODS is_function_group_locked
|
||||||
|
RETURNING
|
||||||
|
VALUE(rv_is_functions_group_locked) TYPE abap_bool
|
||||||
|
RAISING
|
||||||
|
zcx_abapgit_exception.
|
||||||
|
METHODS is_any_include_locked
|
||||||
|
RETURNING
|
||||||
|
VALUE(rv_is_any_include_locked) TYPE abap_bool
|
||||||
|
RAISING
|
||||||
|
zcx_abapgit_exception.
|
||||||
|
METHODS is_any_function_module_locked
|
||||||
|
RETURNING
|
||||||
|
VALUE(rv_any_function_module_locked) TYPE abap_bool
|
||||||
|
RAISING
|
||||||
|
zcx_abapgit_exception.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
CLASS ZCL_ABAPGIT_OBJECT_FUGR IMPLEMENTATION.
|
CLASS zcl_abapgit_object_fugr IMPLEMENTATION.
|
||||||
|
|
||||||
|
|
||||||
METHOD are_exceptions_class_based.
|
METHOD are_exceptions_class_based.
|
||||||
|
@ -122,12 +155,12 @@ CLASS ZCL_ABAPGIT_OBJECT_FUGR IMPLEMENTATION.
|
||||||
|
|
||||||
CALL FUNCTION 'FUNCTION_INCLUDE_SPLIT'
|
CALL FUNCTION 'FUNCTION_INCLUDE_SPLIT'
|
||||||
EXPORTING
|
EXPORTING
|
||||||
complete_area = lv_area
|
complete_area = lv_area
|
||||||
IMPORTING
|
IMPORTING
|
||||||
namespace = lv_namespace
|
namespace = lv_namespace
|
||||||
group = lv_group
|
group = lv_group
|
||||||
EXCEPTIONS
|
EXCEPTIONS
|
||||||
OTHERS = 12.
|
OTHERS = 12.
|
||||||
|
|
||||||
IF sy-subrc <> 0.
|
IF sy-subrc <> 0.
|
||||||
zcx_abapgit_exception=>raise( 'error from FUNCTION_INCLUDE_SPLIT' ).
|
zcx_abapgit_exception=>raise( 'error from FUNCTION_INCLUDE_SPLIT' ).
|
||||||
|
@ -559,6 +592,29 @@ CLASS ZCL_ABAPGIT_OBJECT_FUGR IMPLEMENTATION.
|
||||||
ENDMETHOD. "serialize_xml
|
ENDMETHOD. "serialize_xml
|
||||||
|
|
||||||
|
|
||||||
|
METHOD update_where_used.
|
||||||
|
* make extra sure the where-used list is updated after deletion
|
||||||
|
* Experienced some problems with the T00 include
|
||||||
|
* this method just tries to update everything
|
||||||
|
|
||||||
|
DATA: lv_include LIKE LINE OF it_includes,
|
||||||
|
lo_cross TYPE REF TO cl_wb_crossreference.
|
||||||
|
|
||||||
|
|
||||||
|
LOOP AT it_includes INTO lv_include.
|
||||||
|
|
||||||
|
CREATE OBJECT lo_cross
|
||||||
|
EXPORTING
|
||||||
|
p_name = lv_include
|
||||||
|
p_include = lv_include.
|
||||||
|
|
||||||
|
lo_cross->index_actualize( ).
|
||||||
|
|
||||||
|
ENDLOOP.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
METHOD zif_abapgit_object~changed_by.
|
METHOD zif_abapgit_object~changed_by.
|
||||||
|
|
||||||
TYPES: BEGIN OF ty_stamps,
|
TYPES: BEGIN OF ty_stamps,
|
||||||
|
@ -634,9 +690,12 @@ CLASS ZCL_ABAPGIT_OBJECT_FUGR IMPLEMENTATION.
|
||||||
|
|
||||||
METHOD zif_abapgit_object~delete.
|
METHOD zif_abapgit_object~delete.
|
||||||
|
|
||||||
DATA: lv_area TYPE rs38l-area.
|
DATA: lv_area TYPE rs38l-area,
|
||||||
|
lt_includes TYPE rso_t_objnm.
|
||||||
|
|
||||||
|
|
||||||
|
lt_includes = includes( ).
|
||||||
|
|
||||||
lv_area = ms_item-obj_name.
|
lv_area = ms_item-obj_name.
|
||||||
|
|
||||||
CALL FUNCTION 'RS_FUNCTION_POOL_DELETE'
|
CALL FUNCTION 'RS_FUNCTION_POOL_DELETE'
|
||||||
|
@ -659,6 +718,8 @@ CLASS ZCL_ABAPGIT_OBJECT_FUGR IMPLEMENTATION.
|
||||||
zcx_abapgit_exception=>raise( 'error from RS_FUNCTION_POOL_DELETE' ).
|
zcx_abapgit_exception=>raise( 'error from RS_FUNCTION_POOL_DELETE' ).
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
|
||||||
|
update_where_used( lt_includes ).
|
||||||
|
|
||||||
ENDMETHOD. "delete
|
ENDMETHOD. "delete
|
||||||
|
|
||||||
|
|
||||||
|
@ -801,4 +862,87 @@ CLASS ZCL_ABAPGIT_OBJECT_FUGR IMPLEMENTATION.
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
|
||||||
ENDMETHOD. "serialize
|
ENDMETHOD. "serialize
|
||||||
|
|
||||||
|
METHOD zif_abapgit_object~is_locked.
|
||||||
|
|
||||||
|
DATA: lv_program TYPE program.
|
||||||
|
|
||||||
|
lv_program = main_name( ).
|
||||||
|
|
||||||
|
IF is_function_group_locked( ) = abap_true
|
||||||
|
OR is_any_include_locked( ) = abap_true
|
||||||
|
OR is_any_function_module_locked( ) = abap_true
|
||||||
|
OR is_any_dynpro_locked( lv_program ) = abap_true
|
||||||
|
OR is_cua_locked( lv_program ) = abap_true
|
||||||
|
OR is_text_locked( lv_program ) = abap_true.
|
||||||
|
|
||||||
|
rv_is_locked = abap_true.
|
||||||
|
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD is_function_group_locked.
|
||||||
|
|
||||||
|
DATA: lv_object TYPE eqegraarg .
|
||||||
|
|
||||||
|
lv_object = |FG{ ms_item-obj_name }|.
|
||||||
|
OVERLAY lv_object WITH ' '.
|
||||||
|
lv_object = lv_object && '*'.
|
||||||
|
|
||||||
|
rv_is_functions_group_locked = exists_a_lock_entry_for( iv_lock_object = 'EEUDB'
|
||||||
|
iv_argument = lv_object ).
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD is_any_include_locked.
|
||||||
|
|
||||||
|
DATA: lt_includes TYPE rso_t_objnm.
|
||||||
|
FIELD-SYMBOLS: <lv_include> TYPE sobj_name.
|
||||||
|
|
||||||
|
TRY.
|
||||||
|
lt_includes = includes( ).
|
||||||
|
CATCH zcx_abapgit_exception.
|
||||||
|
RETURN.
|
||||||
|
ENDTRY.
|
||||||
|
|
||||||
|
LOOP AT lt_includes ASSIGNING <lv_include>.
|
||||||
|
|
||||||
|
IF exists_a_lock_entry_for( iv_lock_object = 'ESRDIRE'
|
||||||
|
iv_argument = |{ <lv_include> }| ) = abap_true.
|
||||||
|
rv_is_any_include_locked = abap_true.
|
||||||
|
EXIT.
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
ENDLOOP.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD is_any_function_module_locked.
|
||||||
|
|
||||||
|
DATA: lt_functions TYPE zcl_abapgit_object_fugr=>ty_rs38l_incl_tt.
|
||||||
|
|
||||||
|
FIELD-SYMBOLS: <ls_function> TYPE rs38l_incl.
|
||||||
|
|
||||||
|
TRY.
|
||||||
|
lt_functions = functions( ).
|
||||||
|
CATCH zcx_abapgit_exception.
|
||||||
|
RETURN.
|
||||||
|
ENDTRY.
|
||||||
|
|
||||||
|
LOOP AT lt_functions ASSIGNING <ls_function>.
|
||||||
|
|
||||||
|
IF exists_a_lock_entry_for( iv_lock_object = 'ESFUNCTION'
|
||||||
|
iv_argument = |{ <ls_function>-funcname }| ) = abap_true.
|
||||||
|
rv_any_function_module_locked = abap_true.
|
||||||
|
EXIT.
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
ENDLOOP.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
|
@ -296,4 +296,10 @@ CLASS zcl_abapgit_object_iamu IMPLEMENTATION.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD zif_abapgit_object~is_locked.
|
||||||
|
|
||||||
|
rv_is_locked = abap_false.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
|
@ -184,4 +184,10 @@ CLASS zcl_abapgit_object_iarp IMPLEMENTATION.
|
||||||
CREATE OBJECT ro_comparison_result TYPE zcl_abapgit_comparison_null.
|
CREATE OBJECT ro_comparison_result TYPE zcl_abapgit_comparison_null.
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD zif_abapgit_object~is_locked.
|
||||||
|
|
||||||
|
rv_is_locked = abap_false.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
ENDCLASS. "zcl_abapgit_object_iarp IMPLEMENTATION
|
ENDCLASS. "zcl_abapgit_object_iarp IMPLEMENTATION
|
||||||
|
|
|
@ -184,4 +184,10 @@ CLASS zcl_abapgit_object_iasp IMPLEMENTATION.
|
||||||
CREATE OBJECT ro_comparison_result TYPE zcl_abapgit_comparison_null.
|
CREATE OBJECT ro_comparison_result TYPE zcl_abapgit_comparison_null.
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD zif_abapgit_object~is_locked.
|
||||||
|
|
||||||
|
rv_is_locked = abap_false.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
ENDCLASS. "zcl_abapgit_object_iasp IMPLEMENTATION
|
ENDCLASS. "zcl_abapgit_object_iasp IMPLEMENTATION
|
||||||
|
|
|
@ -201,4 +201,10 @@ CLASS zcl_abapgit_object_iatu IMPLEMENTATION.
|
||||||
CREATE OBJECT ro_comparison_result TYPE zcl_abapgit_comparison_null.
|
CREATE OBJECT ro_comparison_result TYPE zcl_abapgit_comparison_null.
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD zif_abapgit_object~is_locked.
|
||||||
|
|
||||||
|
rv_is_locked = abap_false.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
ENDCLASS. "zcl_abapgit_object_iatu IMPLEMENTATION
|
ENDCLASS. "zcl_abapgit_object_iatu IMPLEMENTATION
|
||||||
|
|
235
src/objects/zcl_abapgit_object_idoc.clas.abap
Normal file
235
src/objects/zcl_abapgit_object_idoc.clas.abap
Normal file
|
@ -0,0 +1,235 @@
|
||||||
|
CLASS zcl_abapgit_object_idoc DEFINITION PUBLIC INHERITING FROM zcl_abapgit_objects_super FINAL.
|
||||||
|
|
||||||
|
PUBLIC SECTION.
|
||||||
|
INTERFACES zif_abapgit_object.
|
||||||
|
ALIASES mo_files FOR zif_abapgit_object~mo_files.
|
||||||
|
METHODS:
|
||||||
|
constructor
|
||||||
|
IMPORTING
|
||||||
|
is_item TYPE zif_abapgit_definitions=>ty_item
|
||||||
|
iv_language TYPE spras.
|
||||||
|
|
||||||
|
PRIVATE SECTION.
|
||||||
|
TYPES:
|
||||||
|
BEGIN OF ty_idoc,
|
||||||
|
attributes TYPE edi_iapi01,
|
||||||
|
t_syntax TYPE STANDARD TABLE OF edi_iapi02 WITH NON-UNIQUE DEFAULT KEY,
|
||||||
|
END OF ty_idoc.
|
||||||
|
|
||||||
|
DATA:
|
||||||
|
mv_idoctyp TYPE edi_iapi00-idoctyp.
|
||||||
|
|
||||||
|
ENDCLASS.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
CLASS ZCL_ABAPGIT_OBJECT_IDOC IMPLEMENTATION.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD constructor.
|
||||||
|
|
||||||
|
super->constructor( is_item = is_item
|
||||||
|
iv_language = iv_language ).
|
||||||
|
|
||||||
|
mv_idoctyp = ms_item-obj_name.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD zif_abapgit_object~changed_by.
|
||||||
|
|
||||||
|
DATA: ls_attributes TYPE edi_iapi01.
|
||||||
|
|
||||||
|
CALL FUNCTION 'IDOCTYPE_READ'
|
||||||
|
EXPORTING
|
||||||
|
pi_idoctyp = mv_idoctyp
|
||||||
|
IMPORTING
|
||||||
|
pe_attributes = ls_attributes
|
||||||
|
EXCEPTIONS
|
||||||
|
object_not_found = 1
|
||||||
|
db_error = 2
|
||||||
|
no_authority = 3
|
||||||
|
OTHERS = 4.
|
||||||
|
|
||||||
|
IF sy-subrc <> 0.
|
||||||
|
zcx_abapgit_exception=>raise_t100( ).
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
rv_user = ls_attributes-plast.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD zif_abapgit_object~compare_to_remote_version.
|
||||||
|
CREATE OBJECT ro_comparison_result TYPE zcl_abapgit_comparison_null.
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD zif_abapgit_object~delete.
|
||||||
|
|
||||||
|
CALL FUNCTION 'IDOCTYPE_DELETE'
|
||||||
|
EXPORTING
|
||||||
|
pi_idoctyp = mv_idoctyp
|
||||||
|
EXCEPTIONS
|
||||||
|
object_not_found = 1
|
||||||
|
lock_error = 2
|
||||||
|
action_not_possible = 3
|
||||||
|
transport_error = 4
|
||||||
|
db_error = 5
|
||||||
|
no_authority = 6
|
||||||
|
OTHERS = 7.
|
||||||
|
|
||||||
|
IF sy-subrc <> 0.
|
||||||
|
zcx_abapgit_exception=>raise_t100( ).
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD zif_abapgit_object~deserialize.
|
||||||
|
|
||||||
|
DATA: ls_idoc TYPE ty_idoc,
|
||||||
|
ls_attributes TYPE edi_iapi05.
|
||||||
|
|
||||||
|
io_xml->read(
|
||||||
|
EXPORTING
|
||||||
|
iv_name = 'IDOC'
|
||||||
|
CHANGING
|
||||||
|
cg_data = ls_idoc ).
|
||||||
|
|
||||||
|
MOVE-CORRESPONDING ls_idoc-attributes TO ls_attributes.
|
||||||
|
|
||||||
|
CALL FUNCTION 'IDOCTYPE_CREATE'
|
||||||
|
EXPORTING
|
||||||
|
pi_idoctyp = mv_idoctyp
|
||||||
|
pi_devclass = iv_package
|
||||||
|
pi_attributes = ls_attributes
|
||||||
|
TABLES
|
||||||
|
pt_syntax = ls_idoc-t_syntax
|
||||||
|
EXCEPTIONS
|
||||||
|
object_not_found = 1
|
||||||
|
object_exists = 2
|
||||||
|
action_not_possible = 3
|
||||||
|
syntax_error = 4
|
||||||
|
segment_error = 5
|
||||||
|
transport_error = 6
|
||||||
|
db_error = 7
|
||||||
|
no_authority = 8
|
||||||
|
OTHERS = 9.
|
||||||
|
|
||||||
|
IF sy-subrc <> 0.
|
||||||
|
zcx_abapgit_exception=>raise_t100( ).
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD zif_abapgit_object~exists.
|
||||||
|
|
||||||
|
CALL FUNCTION 'IDOCTYPE_READ'
|
||||||
|
EXPORTING
|
||||||
|
pi_idoctyp = mv_idoctyp
|
||||||
|
EXCEPTIONS
|
||||||
|
object_not_found = 1
|
||||||
|
db_error = 2
|
||||||
|
no_authority = 3
|
||||||
|
OTHERS = 4.
|
||||||
|
|
||||||
|
rv_bool = boolc( sy-subrc = 0 ).
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD zif_abapgit_object~get_metadata.
|
||||||
|
rs_metadata = get_metadata( ).
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD zif_abapgit_object~has_changed_since.
|
||||||
|
rv_changed = abap_true.
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD zif_abapgit_object~jump.
|
||||||
|
|
||||||
|
DATA: lt_bdcdata TYPE TABLE OF bdcdata.
|
||||||
|
|
||||||
|
FIELD-SYMBOLS: <ls_bdcdata> LIKE LINE OF lt_bdcdata.
|
||||||
|
|
||||||
|
APPEND INITIAL LINE TO lt_bdcdata ASSIGNING <ls_bdcdata>.
|
||||||
|
<ls_bdcdata>-program = 'SAPMSED5'.
|
||||||
|
<ls_bdcdata>-dynpro = '0010'.
|
||||||
|
<ls_bdcdata>-dynbegin = abap_true.
|
||||||
|
|
||||||
|
APPEND INITIAL LINE TO lt_bdcdata ASSIGNING <ls_bdcdata>.
|
||||||
|
<ls_bdcdata>-fnam = 'SED5STRUC-OBJECT'.
|
||||||
|
<ls_bdcdata>-fval = ms_item-obj_name.
|
||||||
|
|
||||||
|
APPEND INITIAL LINE TO lt_bdcdata ASSIGNING <ls_bdcdata>.
|
||||||
|
<ls_bdcdata>-fnam = 'SED5STRUC-SELECT_ORG'.
|
||||||
|
<ls_bdcdata>-fval = abap_true.
|
||||||
|
|
||||||
|
APPEND INITIAL LINE TO lt_bdcdata ASSIGNING <ls_bdcdata>.
|
||||||
|
<ls_bdcdata>-fnam = 'BDC_OKCODE'.
|
||||||
|
<ls_bdcdata>-fval = '=DISP'.
|
||||||
|
|
||||||
|
CALL FUNCTION 'ABAP4_CALL_TRANSACTION'
|
||||||
|
STARTING NEW TASK 'GIT'
|
||||||
|
EXPORTING
|
||||||
|
tcode = 'WE30'
|
||||||
|
mode_val = 'E'
|
||||||
|
TABLES
|
||||||
|
using_tab = lt_bdcdata
|
||||||
|
EXCEPTIONS
|
||||||
|
system_failure = 1
|
||||||
|
communication_failure = 2
|
||||||
|
resource_failure = 3
|
||||||
|
OTHERS = 4.
|
||||||
|
|
||||||
|
IF sy-subrc <> 0.
|
||||||
|
zcx_abapgit_exception=>raise_t100( ).
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD zif_abapgit_object~serialize.
|
||||||
|
|
||||||
|
DATA: ls_idoc TYPE ty_idoc.
|
||||||
|
|
||||||
|
CALL FUNCTION 'IDOCTYPE_READ'
|
||||||
|
EXPORTING
|
||||||
|
pi_idoctyp = mv_idoctyp
|
||||||
|
IMPORTING
|
||||||
|
pe_attributes = ls_idoc-attributes
|
||||||
|
TABLES
|
||||||
|
pt_syntax = ls_idoc-t_syntax
|
||||||
|
EXCEPTIONS
|
||||||
|
object_not_found = 1
|
||||||
|
db_error = 2
|
||||||
|
no_authority = 3
|
||||||
|
OTHERS = 4.
|
||||||
|
|
||||||
|
IF sy-subrc <> 0.
|
||||||
|
zcx_abapgit_exception=>raise_t100( ).
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
CLEAR: ls_idoc-attributes-devc,
|
||||||
|
ls_idoc-attributes-plast,
|
||||||
|
ls_idoc-attributes-credate,
|
||||||
|
ls_idoc-attributes-cretime,
|
||||||
|
ls_idoc-attributes-ldate,
|
||||||
|
ls_idoc-attributes-ltime.
|
||||||
|
|
||||||
|
io_xml->add( iv_name = 'IDOC'
|
||||||
|
ig_data = ls_idoc ).
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD zif_abapgit_object~is_locked.
|
||||||
|
|
||||||
|
rv_is_locked = abap_false.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
ENDCLASS.
|
18
src/objects/zcl_abapgit_object_idoc.clas.xml
Normal file
18
src/objects/zcl_abapgit_object_idoc.clas.xml
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<abapGit version="v1.0.0" serializer="LCL_OBJECT_CLAS" serializer_version="v1.0.0">
|
||||||
|
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
||||||
|
<asx:values>
|
||||||
|
<VSEOCLASS>
|
||||||
|
<CLSNAME>ZCL_ABAPGIT_OBJECT_IDOC</CLSNAME>
|
||||||
|
<VERSION>1</VERSION>
|
||||||
|
<LANGU>E</LANGU>
|
||||||
|
<EXPOSURE>2</EXPOSURE>
|
||||||
|
<STATE>1</STATE>
|
||||||
|
<CLSFINAL>X</CLSFINAL>
|
||||||
|
<CLSCCINCL>X</CLSCCINCL>
|
||||||
|
<FIXPT>X</FIXPT>
|
||||||
|
<UNICODE>X</UNICODE>
|
||||||
|
</VSEOCLASS>
|
||||||
|
</asx:values>
|
||||||
|
</asx:abap>
|
||||||
|
</abapGit>
|
231
src/objects/zcl_abapgit_object_iext.clas.abap
Normal file
231
src/objects/zcl_abapgit_object_iext.clas.abap
Normal file
|
@ -0,0 +1,231 @@
|
||||||
|
CLASS zcl_abapgit_object_iext DEFINITION PUBLIC INHERITING FROM zcl_abapgit_objects_super FINAL.
|
||||||
|
|
||||||
|
PUBLIC SECTION.
|
||||||
|
INTERFACES zif_abapgit_object.
|
||||||
|
ALIASES mo_files FOR zif_abapgit_object~mo_files.
|
||||||
|
METHODS:
|
||||||
|
constructor
|
||||||
|
IMPORTING
|
||||||
|
is_item TYPE zif_abapgit_definitions=>ty_item
|
||||||
|
iv_language TYPE spras.
|
||||||
|
|
||||||
|
PRIVATE SECTION.
|
||||||
|
TYPES:
|
||||||
|
BEGIN OF ty_extention,
|
||||||
|
attributes TYPE edi_iapi01,
|
||||||
|
t_syntax TYPE STANDARD TABLE OF edi_iapi03 WITH NON-UNIQUE DEFAULT KEY,
|
||||||
|
END OF ty_extention.
|
||||||
|
|
||||||
|
DATA:
|
||||||
|
mv_extension TYPE edi_cimtyp.
|
||||||
|
|
||||||
|
ENDCLASS.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
CLASS zcl_abapgit_object_iext IMPLEMENTATION.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD constructor.
|
||||||
|
|
||||||
|
super->constructor( is_item = is_item
|
||||||
|
iv_language = iv_language ).
|
||||||
|
|
||||||
|
mv_extension = ms_item-obj_name.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD zif_abapgit_object~changed_by.
|
||||||
|
|
||||||
|
DATA: ls_attributes TYPE edi_iapi01.
|
||||||
|
|
||||||
|
CALL FUNCTION 'EXTTYPE_READ'
|
||||||
|
EXPORTING
|
||||||
|
pi_cimtyp = mv_extension
|
||||||
|
IMPORTING
|
||||||
|
pe_attributes = ls_attributes
|
||||||
|
EXCEPTIONS
|
||||||
|
object_not_found = 1
|
||||||
|
db_error = 2
|
||||||
|
no_authority = 3
|
||||||
|
OTHERS = 4.
|
||||||
|
|
||||||
|
rv_user = ls_attributes-plast.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD zif_abapgit_object~compare_to_remote_version.
|
||||||
|
CREATE OBJECT ro_comparison_result TYPE zcl_abapgit_comparison_null.
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD zif_abapgit_object~delete.
|
||||||
|
|
||||||
|
CALL FUNCTION 'EXTTYPE_DELETE'
|
||||||
|
EXPORTING
|
||||||
|
pi_cimtyp = mv_extension
|
||||||
|
EXCEPTIONS
|
||||||
|
object_not_found = 1
|
||||||
|
lock_error = 2
|
||||||
|
action_not_possible = 3
|
||||||
|
transport_error = 4
|
||||||
|
db_error = 5
|
||||||
|
no_authority = 6
|
||||||
|
OTHERS = 7.
|
||||||
|
|
||||||
|
IF sy-subrc <> 0.
|
||||||
|
zcx_abapgit_exception=>raise_t100( ).
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD zif_abapgit_object~deserialize.
|
||||||
|
|
||||||
|
DATA: ls_extension TYPE ty_extention,
|
||||||
|
ls_attributes TYPE edi_iapi05.
|
||||||
|
|
||||||
|
io_xml->read(
|
||||||
|
EXPORTING
|
||||||
|
iv_name = 'IEXT'
|
||||||
|
CHANGING
|
||||||
|
cg_data = ls_extension ).
|
||||||
|
|
||||||
|
MOVE-CORRESPONDING ls_extension-attributes TO ls_attributes.
|
||||||
|
|
||||||
|
CALL FUNCTION 'EXTTYPE_CREATE'
|
||||||
|
EXPORTING
|
||||||
|
pi_cimtyp = mv_extension
|
||||||
|
pi_devclass = iv_package
|
||||||
|
pi_attributes = ls_attributes
|
||||||
|
TABLES
|
||||||
|
pt_syntax = ls_extension-t_syntax
|
||||||
|
EXCEPTIONS
|
||||||
|
object_not_found = 1
|
||||||
|
object_exists = 2
|
||||||
|
action_not_possible = 3
|
||||||
|
syntax_error = 4
|
||||||
|
segment_error = 5
|
||||||
|
transport_error = 6
|
||||||
|
db_error = 7
|
||||||
|
no_authority = 8
|
||||||
|
OTHERS = 9.
|
||||||
|
|
||||||
|
IF sy-subrc <> 0.
|
||||||
|
zcx_abapgit_exception=>raise_t100( ).
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD zif_abapgit_object~exists.
|
||||||
|
|
||||||
|
CALL FUNCTION 'EXTTYPE_READ'
|
||||||
|
EXPORTING
|
||||||
|
pi_cimtyp = mv_extension
|
||||||
|
EXCEPTIONS
|
||||||
|
object_not_found = 1
|
||||||
|
db_error = 2
|
||||||
|
no_authority = 3
|
||||||
|
OTHERS = 4.
|
||||||
|
|
||||||
|
rv_bool = boolc( sy-subrc = 0 ).
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD zif_abapgit_object~get_metadata.
|
||||||
|
rs_metadata = get_metadata( ).
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD zif_abapgit_object~has_changed_since.
|
||||||
|
rv_changed = abap_true.
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD zif_abapgit_object~jump.
|
||||||
|
|
||||||
|
DATA: lt_bdcdata TYPE TABLE OF bdcdata.
|
||||||
|
|
||||||
|
FIELD-SYMBOLS: <ls_bdcdata> LIKE LINE OF lt_bdcdata.
|
||||||
|
|
||||||
|
APPEND INITIAL LINE TO lt_bdcdata ASSIGNING <ls_bdcdata>.
|
||||||
|
<ls_bdcdata>-program = 'SAPMSED5'.
|
||||||
|
<ls_bdcdata>-dynpro = '0010'.
|
||||||
|
<ls_bdcdata>-dynbegin = abap_true.
|
||||||
|
|
||||||
|
APPEND INITIAL LINE TO lt_bdcdata ASSIGNING <ls_bdcdata>.
|
||||||
|
<ls_bdcdata>-fnam = 'SED5STRUC-OBJECT'.
|
||||||
|
<ls_bdcdata>-fval = ms_item-obj_name.
|
||||||
|
|
||||||
|
APPEND INITIAL LINE TO lt_bdcdata ASSIGNING <ls_bdcdata>.
|
||||||
|
<ls_bdcdata>-fnam = 'SED5STRUC-SELECT_EXT'.
|
||||||
|
<ls_bdcdata>-fval = abap_true.
|
||||||
|
|
||||||
|
APPEND INITIAL LINE TO lt_bdcdata ASSIGNING <ls_bdcdata>.
|
||||||
|
<ls_bdcdata>-fnam = 'BDC_OKCODE'.
|
||||||
|
<ls_bdcdata>-fval = '=DISP'.
|
||||||
|
|
||||||
|
CALL FUNCTION 'ABAP4_CALL_TRANSACTION'
|
||||||
|
STARTING NEW TASK 'GIT'
|
||||||
|
EXPORTING
|
||||||
|
tcode = 'WE30'
|
||||||
|
mode_val = 'E'
|
||||||
|
TABLES
|
||||||
|
using_tab = lt_bdcdata
|
||||||
|
EXCEPTIONS
|
||||||
|
system_failure = 1
|
||||||
|
communication_failure = 2
|
||||||
|
resource_failure = 3
|
||||||
|
OTHERS = 4.
|
||||||
|
|
||||||
|
IF sy-subrc <> 0.
|
||||||
|
zcx_abapgit_exception=>raise_t100( ).
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD zif_abapgit_object~serialize.
|
||||||
|
|
||||||
|
DATA: ls_extension TYPE ty_extention.
|
||||||
|
|
||||||
|
CALL FUNCTION 'EXTTYPE_READ'
|
||||||
|
EXPORTING
|
||||||
|
pi_cimtyp = mv_extension
|
||||||
|
IMPORTING
|
||||||
|
pe_attributes = ls_extension-attributes
|
||||||
|
TABLES
|
||||||
|
pt_syntax = ls_extension-t_syntax
|
||||||
|
EXCEPTIONS
|
||||||
|
object_not_found = 1
|
||||||
|
db_error = 2
|
||||||
|
no_authority = 3
|
||||||
|
OTHERS = 4.
|
||||||
|
|
||||||
|
IF sy-subrc <> 0.
|
||||||
|
zcx_abapgit_exception=>raise_t100( ).
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
CLEAR: ls_extension-attributes-devc,
|
||||||
|
ls_extension-attributes-plast,
|
||||||
|
ls_extension-attributes-credate,
|
||||||
|
ls_extension-attributes-cretime,
|
||||||
|
ls_extension-attributes-ldate,
|
||||||
|
ls_extension-attributes-ltime.
|
||||||
|
|
||||||
|
io_xml->add( iv_name = 'IEXT'
|
||||||
|
ig_data = ls_extension ).
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD zif_abapgit_object~is_locked.
|
||||||
|
|
||||||
|
rv_is_locked = abap_false.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
ENDCLASS.
|
18
src/objects/zcl_abapgit_object_iext.clas.xml
Normal file
18
src/objects/zcl_abapgit_object_iext.clas.xml
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<abapGit version="v1.0.0" serializer="LCL_OBJECT_CLAS" serializer_version="v1.0.0">
|
||||||
|
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
||||||
|
<asx:values>
|
||||||
|
<VSEOCLASS>
|
||||||
|
<CLSNAME>ZCL_ABAPGIT_OBJECT_IEXT</CLSNAME>
|
||||||
|
<VERSION>1</VERSION>
|
||||||
|
<LANGU>E</LANGU>
|
||||||
|
<EXPOSURE>2</EXPOSURE>
|
||||||
|
<STATE>1</STATE>
|
||||||
|
<CLSFINAL>X</CLSFINAL>
|
||||||
|
<CLSCCINCL>X</CLSCCINCL>
|
||||||
|
<FIXPT>X</FIXPT>
|
||||||
|
<UNICODE>X</UNICODE>
|
||||||
|
</VSEOCLASS>
|
||||||
|
</asx:values>
|
||||||
|
</asx:abap>
|
||||||
|
</abapGit>
|
|
@ -34,7 +34,7 @@ CLASS ZCL_ABAPGIT_OBJECT_INTF IMPLEMENTATION.
|
||||||
super->constructor(
|
super->constructor(
|
||||||
is_item = is_item
|
is_item = is_item
|
||||||
iv_language = iv_language ).
|
iv_language = iv_language ).
|
||||||
mo_object_oriented_object_fct = zcl_abapgit_oo_factory=>make( iv_object_type = ms_item-obj_type ).
|
mo_object_oriented_object_fct = zcl_abapgit_oo_factory=>make( ms_item-obj_type ).
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
@ -67,7 +67,7 @@ CLASS ZCL_ABAPGIT_OBJECT_INTF IMPLEMENTATION.
|
||||||
is_key = ls_clskey
|
is_key = ls_clskey
|
||||||
it_descriptions = lt_descriptions ).
|
it_descriptions = lt_descriptions ).
|
||||||
|
|
||||||
mo_object_oriented_object_fct->add_to_activation_list( is_item = ms_item ).
|
mo_object_oriented_object_fct->add_to_activation_list( ms_item ).
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
@ -79,7 +79,7 @@ CLASS ZCL_ABAPGIT_OBJECT_INTF IMPLEMENTATION.
|
||||||
io_xml->read( EXPORTING iv_name = 'LINES'
|
io_xml->read( EXPORTING iv_name = 'LINES'
|
||||||
CHANGING cg_data = lt_lines ).
|
CHANGING cg_data = lt_lines ).
|
||||||
|
|
||||||
IF lt_lines[] IS INITIAL.
|
IF lines( lt_lines ) = 0.
|
||||||
RETURN.
|
RETURN.
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
|
||||||
|
@ -194,7 +194,7 @@ CLASS ZCL_ABAPGIT_OBJECT_INTF IMPLEMENTATION.
|
||||||
|
|
||||||
ls_class_key-clsname = ms_item-obj_name.
|
ls_class_key-clsname = ms_item-obj_name.
|
||||||
|
|
||||||
rv_bool = mo_object_oriented_object_fct->exists( iv_object_name = ls_class_key ).
|
rv_bool = mo_object_oriented_object_fct->exists( ls_class_key ).
|
||||||
|
|
||||||
IF rv_bool = abap_true.
|
IF rv_bool = abap_true.
|
||||||
SELECT SINGLE category FROM seoclassdf INTO lv_category
|
SELECT SINGLE category FROM seoclassdf INTO lv_category
|
||||||
|
@ -265,4 +265,18 @@ CLASS ZCL_ABAPGIT_OBJECT_INTF IMPLEMENTATION.
|
||||||
|
|
||||||
serialize_xml( io_xml ).
|
serialize_xml( io_xml ).
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD zif_abapgit_object~is_locked.
|
||||||
|
|
||||||
|
DATA: lv_object TYPE eqegraarg.
|
||||||
|
|
||||||
|
lv_object = |{ ms_item-obj_name }|.
|
||||||
|
OVERLAY lv_object WITH '==============================P'.
|
||||||
|
lv_object = lv_object && '*'.
|
||||||
|
|
||||||
|
rv_is_locked = exists_a_lock_entry_for( iv_lock_object = 'ESEOCLASS'
|
||||||
|
iv_argument = lv_object ).
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
|
@ -205,4 +205,11 @@ CLASS ZCL_ABAPGIT_OBJECT_JOBD IMPLEMENTATION.
|
||||||
ENDTRY.
|
ENDTRY.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD zif_abapgit_object~is_locked.
|
||||||
|
|
||||||
|
rv_is_locked = abap_false.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
|
@ -288,4 +288,10 @@ CLASS zcl_abapgit_object_msag IMPLEMENTATION.
|
||||||
CREATE OBJECT ro_comparison_result TYPE zcl_abapgit_comparison_null.
|
CREATE OBJECT ro_comparison_result TYPE zcl_abapgit_comparison_null.
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD zif_abapgit_object~is_locked.
|
||||||
|
|
||||||
|
rv_is_locked = abap_false.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
ENDCLASS. "zcl_abapgit_object_msag IMPLEMENTATION
|
ENDCLASS. "zcl_abapgit_object_msag IMPLEMENTATION
|
||||||
|
|
|
@ -274,4 +274,10 @@ CLASS zcl_abapgit_object_nrob IMPLEMENTATION.
|
||||||
CREATE OBJECT ro_comparison_result TYPE zcl_abapgit_comparison_null.
|
CREATE OBJECT ro_comparison_result TYPE zcl_abapgit_comparison_null.
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD zif_abapgit_object~is_locked.
|
||||||
|
|
||||||
|
rv_is_locked = abap_false.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
ENDCLASS. "zcl_abapgit_object_nrob IMPLEMENTATION
|
ENDCLASS. "zcl_abapgit_object_nrob IMPLEMENTATION
|
||||||
|
|
|
@ -10,7 +10,7 @@ CLASS zcl_abapgit_object_para IMPLEMENTATION.
|
||||||
|
|
||||||
METHOD zif_abapgit_object~has_changed_since.
|
METHOD zif_abapgit_object~has_changed_since.
|
||||||
rv_changed = abap_true.
|
rv_changed = abap_true.
|
||||||
ENDMETHOD. "zif_abapgit_object~has_changed_since
|
ENDMETHOD.
|
||||||
|
|
||||||
METHOD zif_abapgit_object~changed_by.
|
METHOD zif_abapgit_object~changed_by.
|
||||||
* looks like "changed by user" is not stored in the database
|
* looks like "changed by user" is not stored in the database
|
||||||
|
@ -19,7 +19,9 @@ CLASS zcl_abapgit_object_para IMPLEMENTATION.
|
||||||
|
|
||||||
METHOD zif_abapgit_object~get_metadata.
|
METHOD zif_abapgit_object~get_metadata.
|
||||||
rs_metadata = get_metadata( ).
|
rs_metadata = get_metadata( ).
|
||||||
ENDMETHOD. "zif_abapgit_object~get_metadata
|
* Data elements can refer to PARA objects
|
||||||
|
rs_metadata-ddic = abap_true.
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
METHOD zif_abapgit_object~exists.
|
METHOD zif_abapgit_object~exists.
|
||||||
|
|
||||||
|
@ -30,7 +32,7 @@ CLASS zcl_abapgit_object_para IMPLEMENTATION.
|
||||||
WHERE paramid = ms_item-obj_name. "#EC CI_GENBUFF
|
WHERE paramid = ms_item-obj_name. "#EC CI_GENBUFF
|
||||||
rv_bool = boolc( sy-subrc = 0 ).
|
rv_bool = boolc( sy-subrc = 0 ).
|
||||||
|
|
||||||
ENDMETHOD. "zif_abapgit_object~exists
|
ENDMETHOD.
|
||||||
|
|
||||||
METHOD zif_abapgit_object~serialize.
|
METHOD zif_abapgit_object~serialize.
|
||||||
|
|
||||||
|
@ -53,7 +55,7 @@ CLASS zcl_abapgit_object_para IMPLEMENTATION.
|
||||||
io_xml->add( iv_name = 'TPARAT'
|
io_xml->add( iv_name = 'TPARAT'
|
||||||
ig_data = ls_tparat ).
|
ig_data = ls_tparat ).
|
||||||
|
|
||||||
ENDMETHOD. "serialize
|
ENDMETHOD.
|
||||||
|
|
||||||
METHOD zif_abapgit_object~deserialize.
|
METHOD zif_abapgit_object~deserialize.
|
||||||
* see fm RS_PARAMETER_ADD and RS_PARAMETER_EDIT
|
* see fm RS_PARAMETER_ADD and RS_PARAMETER_EDIT
|
||||||
|
@ -99,7 +101,7 @@ CLASS zcl_abapgit_object_para IMPLEMENTATION.
|
||||||
MODIFY tparat FROM ls_tparat. "#EC CI_SUBRC
|
MODIFY tparat FROM ls_tparat. "#EC CI_SUBRC
|
||||||
ASSERT sy-subrc = 0.
|
ASSERT sy-subrc = 0.
|
||||||
|
|
||||||
ENDMETHOD. "deserialize
|
ENDMETHOD.
|
||||||
|
|
||||||
METHOD zif_abapgit_object~delete.
|
METHOD zif_abapgit_object~delete.
|
||||||
|
|
||||||
|
@ -117,7 +119,7 @@ CLASS zcl_abapgit_object_para IMPLEMENTATION.
|
||||||
zcx_abapgit_exception=>raise( 'error from RS_PRAMETER_DELETE' ).
|
zcx_abapgit_exception=>raise( 'error from RS_PRAMETER_DELETE' ).
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
|
||||||
ENDMETHOD. "delete
|
ENDMETHOD.
|
||||||
|
|
||||||
METHOD zif_abapgit_object~jump.
|
METHOD zif_abapgit_object~jump.
|
||||||
|
|
||||||
|
@ -128,10 +130,16 @@ CLASS zcl_abapgit_object_para IMPLEMENTATION.
|
||||||
object_type = 'PARA'
|
object_type = 'PARA'
|
||||||
in_new_window = abap_true.
|
in_new_window = abap_true.
|
||||||
|
|
||||||
ENDMETHOD. "jump
|
ENDMETHOD.
|
||||||
|
|
||||||
METHOD zif_abapgit_object~compare_to_remote_version.
|
METHOD zif_abapgit_object~compare_to_remote_version.
|
||||||
CREATE OBJECT ro_comparison_result TYPE zcl_abapgit_comparison_null.
|
CREATE OBJECT ro_comparison_result TYPE zcl_abapgit_comparison_null.
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
ENDCLASS. "zcl_abapgit_object_para IMPLEMENTATION
|
METHOD zif_abapgit_object~is_locked.
|
||||||
|
|
||||||
|
rv_is_locked = abap_false.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
ENDCLASS.
|
||||||
|
|
|
@ -345,4 +345,10 @@ CLASS zcl_abapgit_object_pinf IMPLEMENTATION.
|
||||||
CREATE OBJECT ro_comparison_result TYPE zcl_abapgit_comparison_null.
|
CREATE OBJECT ro_comparison_result TYPE zcl_abapgit_comparison_null.
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD zif_abapgit_object~is_locked.
|
||||||
|
|
||||||
|
rv_is_locked = abap_false.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
ENDCLASS. "zcl_abapgit_object_PINF IMPLEMENTATION
|
ENDCLASS. "zcl_abapgit_object_PINF IMPLEMENTATION
|
||||||
|
|
|
@ -182,4 +182,11 @@ CLASS ZCL_ABAPGIT_OBJECT_PRAG IMPLEMENTATION.
|
||||||
zcx_abapgit_exception=>raise( |Pragma { ms_item-obj_name } doesn't exist| ).
|
zcx_abapgit_exception=>raise( |Pragma { ms_item-obj_name } doesn't exist| ).
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD zif_abapgit_object~is_locked.
|
||||||
|
|
||||||
|
rv_is_locked = abap_false.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
|
@ -17,13 +17,18 @@ CLASS zcl_abapgit_object_prog DEFINITION PUBLIC INHERITING FROM zcl_abapgit_obje
|
||||||
RAISING zcx_abapgit_exception,
|
RAISING zcx_abapgit_exception,
|
||||||
deserialize_texts
|
deserialize_texts
|
||||||
IMPORTING io_xml TYPE REF TO zcl_abapgit_xml_input
|
IMPORTING io_xml TYPE REF TO zcl_abapgit_xml_input
|
||||||
RAISING zcx_abapgit_exception.
|
RAISING zcx_abapgit_exception,
|
||||||
|
is_program_locked
|
||||||
|
RETURNING
|
||||||
|
VALUE(rv_is_program_locked) TYPE abap_bool
|
||||||
|
RAISING
|
||||||
|
zcx_abapgit_exception.
|
||||||
|
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
CLASS ZCL_ABAPGIT_OBJECT_PROG IMPLEMENTATION.
|
CLASS zcl_abapgit_object_prog IMPLEMENTATION.
|
||||||
|
|
||||||
|
|
||||||
METHOD deserialize_texts.
|
METHOD deserialize_texts.
|
||||||
|
@ -148,7 +153,7 @@ CLASS ZCL_ABAPGIT_OBJECT_PROG IMPLEMENTATION.
|
||||||
|
|
||||||
io_xml->read( EXPORTING iv_name = 'DYNPROS'
|
io_xml->read( EXPORTING iv_name = 'DYNPROS'
|
||||||
CHANGING cg_data = lt_dynpros ).
|
CHANGING cg_data = lt_dynpros ).
|
||||||
deserialize_dynpros( it_dynpros = lt_dynpros ).
|
deserialize_dynpros( lt_dynpros ).
|
||||||
|
|
||||||
io_xml->read( EXPORTING iv_name = 'CUA'
|
io_xml->read( EXPORTING iv_name = 'CUA'
|
||||||
CHANGING cg_data = ls_cua ).
|
CHANGING cg_data = ls_cua ).
|
||||||
|
@ -213,4 +218,26 @@ CLASS ZCL_ABAPGIT_OBJECT_PROG IMPLEMENTATION.
|
||||||
serialize_texts( io_xml ).
|
serialize_texts( io_xml ).
|
||||||
|
|
||||||
ENDMETHOD. "zif_abapgit_serialize~serialize
|
ENDMETHOD. "zif_abapgit_serialize~serialize
|
||||||
|
|
||||||
|
METHOD zif_abapgit_object~is_locked.
|
||||||
|
|
||||||
|
IF is_program_locked( ) = abap_true
|
||||||
|
OR is_any_dynpro_locked( ms_item-obj_name ) = abap_true
|
||||||
|
OR is_cua_locked( ms_item-obj_name ) = abap_true
|
||||||
|
OR is_text_locked( ms_item-obj_name ) = abap_true.
|
||||||
|
|
||||||
|
rv_is_locked = abap_true.
|
||||||
|
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD is_program_locked.
|
||||||
|
|
||||||
|
rv_is_program_locked = exists_a_lock_entry_for( iv_lock_object = 'ESRDIRE'
|
||||||
|
iv_argument = |{ ms_item-obj_name }| ).
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
|
@ -176,6 +176,13 @@ CLASS ZCL_ABAPGIT_OBJECT_SFBF IMPLEMENTATION.
|
||||||
ENDMETHOD. "zif_abapgit_object~has_changed_since
|
ENDMETHOD. "zif_abapgit_object~has_changed_since
|
||||||
|
|
||||||
|
|
||||||
|
METHOD zif_abapgit_object~is_locked.
|
||||||
|
|
||||||
|
rv_is_locked = abap_false.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
METHOD zif_abapgit_object~jump.
|
METHOD zif_abapgit_object~jump.
|
||||||
|
|
||||||
CALL FUNCTION 'RS_TOOL_ACCESS'
|
CALL FUNCTION 'RS_TOOL_ACCESS'
|
||||||
|
|
|
@ -224,4 +224,11 @@ CLASS ZCL_ABAPGIT_OBJECT_SFBS IMPLEMENTATION.
|
||||||
iv_name = 'PARENT_BFS' ).
|
iv_name = 'PARENT_BFS' ).
|
||||||
|
|
||||||
ENDMETHOD. "serialize
|
ENDMETHOD. "serialize
|
||||||
|
|
||||||
|
METHOD zif_abapgit_object~is_locked.
|
||||||
|
|
||||||
|
rv_is_locked = abap_false.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
|
@ -224,4 +224,11 @@ CLASS ZCL_ABAPGIT_OBJECT_SFPF IMPLEMENTATION.
|
||||||
io_xml->set_raw( li_document->get_root_element( ) ).
|
io_xml->set_raw( li_document->get_root_element( ) ).
|
||||||
|
|
||||||
ENDMETHOD. "serialize
|
ENDMETHOD. "serialize
|
||||||
|
|
||||||
|
METHOD zif_abapgit_object~is_locked.
|
||||||
|
|
||||||
|
rv_is_locked = abap_false.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
|
@ -157,4 +157,10 @@ CLASS zcl_abapgit_object_sfpi IMPLEMENTATION.
|
||||||
CREATE OBJECT ro_comparison_result TYPE zcl_abapgit_comparison_null.
|
CREATE OBJECT ro_comparison_result TYPE zcl_abapgit_comparison_null.
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD zif_abapgit_object~is_locked.
|
||||||
|
|
||||||
|
rv_is_locked = abap_false.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
ENDCLASS. "zcl_abapgit_object_doma IMPLEMENTATION
|
ENDCLASS. "zcl_abapgit_object_doma IMPLEMENTATION
|
||||||
|
|
|
@ -215,4 +215,11 @@ CLASS ZCL_ABAPGIT_OBJECT_SFSW IMPLEMENTATION.
|
||||||
iv_name = 'CONFLICTS' ).
|
iv_name = 'CONFLICTS' ).
|
||||||
|
|
||||||
ENDMETHOD. "serialize
|
ENDMETHOD. "serialize
|
||||||
|
|
||||||
|
METHOD zif_abapgit_object~is_locked.
|
||||||
|
|
||||||
|
rv_is_locked = abap_false.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
|
@ -261,4 +261,10 @@ CLASS zcl_abapgit_object_shi3 IMPLEMENTATION.
|
||||||
CREATE OBJECT ro_comparison_result TYPE zcl_abapgit_comparison_null.
|
CREATE OBJECT ro_comparison_result TYPE zcl_abapgit_comparison_null.
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD zif_abapgit_object~is_locked.
|
||||||
|
|
||||||
|
rv_is_locked = abap_false.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
ENDCLASS. "zcl_abapgit_object_shi3 IMPLEMENTATION
|
ENDCLASS. "zcl_abapgit_object_shi3 IMPLEMENTATION
|
||||||
|
|
|
@ -126,4 +126,10 @@ CLASS zcl_abapgit_object_shi5 IMPLEMENTATION.
|
||||||
CREATE OBJECT ro_comparison_result TYPE zcl_abapgit_comparison_null.
|
CREATE OBJECT ro_comparison_result TYPE zcl_abapgit_comparison_null.
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD zif_abapgit_object~is_locked.
|
||||||
|
|
||||||
|
rv_is_locked = abap_false.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
ENDCLASS. "zcl_abapgit_object_shi5 IMPLEMENTATION
|
ENDCLASS. "zcl_abapgit_object_shi5 IMPLEMENTATION
|
||||||
|
|
|
@ -132,4 +132,10 @@ CLASS zcl_abapgit_object_shi8 IMPLEMENTATION.
|
||||||
CREATE OBJECT ro_comparison_result TYPE zcl_abapgit_comparison_null.
|
CREATE OBJECT ro_comparison_result TYPE zcl_abapgit_comparison_null.
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD zif_abapgit_object~is_locked.
|
||||||
|
|
||||||
|
rv_is_locked = abap_false.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
ENDCLASS. "zcl_abapgit_object_shi8 IMPLEMENTATION
|
ENDCLASS. "zcl_abapgit_object_shi8 IMPLEMENTATION
|
||||||
|
|
|
@ -196,4 +196,10 @@ CLASS zcl_abapgit_object_shlp IMPLEMENTATION.
|
||||||
CREATE OBJECT ro_comparison_result TYPE zcl_abapgit_comparison_null.
|
CREATE OBJECT ro_comparison_result TYPE zcl_abapgit_comparison_null.
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD zif_abapgit_object~is_locked.
|
||||||
|
|
||||||
|
rv_is_locked = abap_false.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
ENDCLASS. "zcl_abapgit_object_shlp IMPLEMENTATION
|
ENDCLASS. "zcl_abapgit_object_shlp IMPLEMENTATION
|
||||||
|
|
|
@ -266,4 +266,10 @@ CLASS zcl_abapgit_object_shma IMPLEMENTATION.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD zif_abapgit_object~is_locked.
|
||||||
|
|
||||||
|
rv_is_locked = abap_false.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
|
@ -572,4 +572,11 @@ CLASS ZCL_ABAPGIT_OBJECT_SICF IMPLEMENTATION.
|
||||||
ig_data = lt_icfhandler ).
|
ig_data = lt_icfhandler ).
|
||||||
|
|
||||||
ENDMETHOD. "serialize
|
ENDMETHOD. "serialize
|
||||||
|
|
||||||
|
METHOD zif_abapgit_object~is_locked.
|
||||||
|
|
||||||
|
rv_is_locked = abap_false.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
|
@ -330,4 +330,10 @@ CLASS zcl_abapgit_object_smim IMPLEMENTATION.
|
||||||
CREATE OBJECT ro_comparison_result TYPE zcl_abapgit_comparison_null.
|
CREATE OBJECT ro_comparison_result TYPE zcl_abapgit_comparison_null.
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD zif_abapgit_object~is_locked.
|
||||||
|
|
||||||
|
rv_is_locked = abap_false.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
ENDCLASS. "zcl_abapgit_object_smim IMPLEMENTATION
|
ENDCLASS. "zcl_abapgit_object_smim IMPLEMENTATION
|
||||||
|
|
|
@ -109,4 +109,10 @@ CLASS zcl_abapgit_object_splo IMPLEMENTATION.
|
||||||
CREATE OBJECT ro_comparison_result TYPE zcl_abapgit_comparison_null.
|
CREATE OBJECT ro_comparison_result TYPE zcl_abapgit_comparison_null.
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD zif_abapgit_object~is_locked.
|
||||||
|
|
||||||
|
rv_is_locked = abap_false.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
ENDCLASS. "zcl_abapgit_object_splo IMPLEMENTATION
|
ENDCLASS. "zcl_abapgit_object_splo IMPLEMENTATION
|
||||||
|
|
|
@ -181,4 +181,11 @@ CLASS ZCL_ABAPGIT_OBJECT_SRFC IMPLEMENTATION.
|
||||||
ig_data = <lg_srfc_data> ).
|
ig_data = <lg_srfc_data> ).
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD zif_abapgit_object~is_locked.
|
||||||
|
|
||||||
|
rv_is_locked = abap_false.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
|
@ -225,7 +225,9 @@ CLASS zcl_abapgit_object_ssfo IMPLEMENTATION.
|
||||||
lv_name TYPE string,
|
lv_name TYPE string,
|
||||||
li_iterator TYPE REF TO if_ixml_node_iterator,
|
li_iterator TYPE REF TO if_ixml_node_iterator,
|
||||||
lo_sf TYPE REF TO cl_ssf_fb_smart_form,
|
lo_sf TYPE REF TO cl_ssf_fb_smart_form,
|
||||||
lo_res TYPE REF TO cl_ssf_fb_smart_form.
|
lo_res TYPE REF TO cl_ssf_fb_smart_form,
|
||||||
|
lx_error TYPE REF TO cx_ssf_fb,
|
||||||
|
lv_text TYPE string.
|
||||||
|
|
||||||
|
|
||||||
CREATE OBJECT lo_sf.
|
CREATE OBJECT lo_sf.
|
||||||
|
@ -252,21 +254,28 @@ CLASS zcl_abapgit_object_ssfo IMPLEMENTATION.
|
||||||
tadir_insert( iv_package ).
|
tadir_insert( iv_package ).
|
||||||
|
|
||||||
lv_formname = ms_item-obj_name.
|
lv_formname = ms_item-obj_name.
|
||||||
lo_sf->enqueue( suppress_corr_check = space
|
|
||||||
master_language = mv_language
|
|
||||||
mode = 'INSERT'
|
|
||||||
formname = lv_formname ).
|
|
||||||
|
|
||||||
lo_sf->xml_upload( EXPORTING dom = io_xml->get_raw( )->get_root_element( )
|
TRY.
|
||||||
formname = lv_formname
|
lo_sf->enqueue( suppress_corr_check = space
|
||||||
language = mv_language
|
master_language = mv_language
|
||||||
CHANGING sform = lo_res ).
|
mode = 'INSERT'
|
||||||
|
formname = lv_formname ).
|
||||||
|
|
||||||
lo_res->store( im_formname = lo_res->header-formname
|
lo_sf->xml_upload( EXPORTING dom = io_xml->get_raw( )->get_root_element( )
|
||||||
im_language = mv_language
|
formname = lv_formname
|
||||||
im_active = abap_true ).
|
language = mv_language
|
||||||
|
CHANGING sform = lo_res ).
|
||||||
|
|
||||||
lo_sf->dequeue( lv_formname ).
|
lo_res->store( im_formname = lo_res->header-formname
|
||||||
|
im_language = mv_language
|
||||||
|
im_active = abap_true ).
|
||||||
|
|
||||||
|
lo_sf->dequeue( lv_formname ).
|
||||||
|
|
||||||
|
CATCH cx_ssf_fb INTO lx_error.
|
||||||
|
lv_text = lx_error->get_text( ).
|
||||||
|
zcx_abapgit_exception=>raise( |{ ms_item-obj_type } { ms_item-obj_name }: { lv_text } | ).
|
||||||
|
ENDTRY.
|
||||||
|
|
||||||
ENDMETHOD. "deserialize
|
ENDMETHOD. "deserialize
|
||||||
|
|
||||||
|
@ -274,4 +283,11 @@ CLASS zcl_abapgit_object_ssfo IMPLEMENTATION.
|
||||||
CREATE OBJECT ro_comparison_result TYPE zcl_abapgit_comparison_null.
|
CREATE OBJECT ro_comparison_result TYPE zcl_abapgit_comparison_null.
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD zif_abapgit_object~is_locked.
|
||||||
|
|
||||||
|
rv_is_locked = exists_a_lock_entry_for( iv_lock_object = 'E_SMFORM'
|
||||||
|
iv_argument = |{ ms_item-obj_name }| ).
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
ENDCLASS. "zcl_abapgit_object_ssfo IMPLEMENTATION
|
ENDCLASS. "zcl_abapgit_object_ssfo IMPLEMENTATION
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user