mirror of
https://github.com/abapGit/abapGit.git
synced 2025-04-30 20:03:20 +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
|
||||
|
||||
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.
|
||||
|
||||
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/
|
||||
http://docs.abapgit.org/development/guidelines.html
|
||||
|
||||
## 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.
|
||||
|
||||
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.
|
||||
http://docs.abapgit.org/development/contributing.html
|
||||
|
|
|
@ -8,6 +8,83 @@ Legend
|
|||
+ : added
|
||||
- : 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
|
||||
------------------
|
||||
! Clone without pull, user has to choose pull after creating online repo
|
||||
|
|
|
@ -1,8 +1,15 @@
|
|||
title: abapGit documentation
|
||||
highlighter: rouge
|
||||
collections_dir: collections
|
||||
collections:
|
||||
development:
|
||||
output: true
|
||||
defaults:
|
||||
-
|
||||
scope:
|
||||
path: "" # an empty string here means all files in the project
|
||||
- scope:
|
||||
path: ""
|
||||
values:
|
||||
layout: "default"
|
||||
- scope:
|
||||
path: "_development"
|
||||
values:
|
||||
layout: "development"
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
<footer class="nav-footer wrap">
|
||||
<div class="nav-refs">
|
||||
<a href="https://github.com/larshp/abapGit">
|
||||
<span class="mega-octicon octicon-mark-github"></span>
|
||||
</a>
|
||||
</div>
|
||||
<div class="nav-refs">
|
||||
<a href="https://github.com/larshp/abapGit">
|
||||
<span class="mega-octicon octicon-mark-github"></span>
|
||||
</a>
|
||||
</div>
|
||||
<footer>
|
||||
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
<head>
|
||||
<meta charset="utf-8">
|
||||
<link rel="shortcut icon" type="image/png" href="favicon.png">
|
||||
<link rel="stylesheet" href="main.css">
|
||||
<link rel="stylesheet" href="highlight.css">
|
||||
<link rel="shortcut icon" type="image/png" href="/img/favicon.png">
|
||||
<link rel="stylesheet" href="/assets/main.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">
|
||||
<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 %}" />
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<div class="page-head">
|
||||
<div class="wrap">
|
||||
<a href="./"><img class="head-logo" src="img/logo.svg" height="40" alt="abapGit"></a>
|
||||
<span class="head-title"> ► documentation</span>
|
||||
</div>
|
||||
<div class="wrap">
|
||||
<a href="/"><img class="head-logo" src="/img/logo.svg" height="40" alt="abapGit"></a>
|
||||
<span class="head-title"> ► documentation</span>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -48,3 +48,5 @@
|
|||
{% endif %}
|
||||
{% endfor %}
|
||||
</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
|
||||
category: other
|
||||
title: API
|
||||
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
|
||||
category: other
|
||||
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
|
||||
category: other
|
||||
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.
|
||||
|
||||
Add parameters
|
||||
Add profile parameters:
|
||||
```
|
||||
ssl/client_ciphersuites = 150: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
|
||||
---
|
||||
|
||||
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)
|
||||
|
|
|
@ -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
|
||||
|
||||
[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)
|
||||
|
||||
Library | License
|
||||
:------------ | :------------
|
||||
[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
|
||||
Library | Version | License
|
||||
:------------ | :------------ | :------------
|
||||
[octicons](https://github.com/primer/octicons) | 4.4.0 | 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/
|
||||
|
||||
PARAMETERS: p_url TYPE swc_value DEFAULT 'https://github.com',
|
||||
p_proxy TYPE string,
|
||||
p_pxport TYPE string.
|
||||
PARAMETERS: p_url1 TYPE swc_value DEFAULT 'https://github.com',
|
||||
p_url2 TYPE swc_value DEFAULT 'https://api.github.com'.
|
||||
* 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.
|
||||
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,
|
||||
lv_url TYPE string,
|
||||
li_client TYPE REF TO if_http_client,
|
||||
lt_errors TYPE TABLE OF 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(
|
||||
EXPORTING
|
||||
url = lv_url
|
||||
|
@ -35,11 +50,12 @@ FORM run.
|
|||
IMPORTING
|
||||
client = li_client ).
|
||||
|
||||
* enter username and password for proxy authentication if needed
|
||||
* li_client->authenticate(
|
||||
* proxy_authentication = abap_true
|
||||
* username = ''
|
||||
* password = '' ).
|
||||
IF NOT p_puser IS INITIAL.
|
||||
li_client->authenticate(
|
||||
proxy_authentication = abap_true
|
||||
username = p_puser
|
||||
password = p_ppwd ).
|
||||
ENDIF.
|
||||
|
||||
li_client->send( ).
|
||||
li_client->receive(
|
||||
|
@ -49,12 +65,15 @@ FORM run.
|
|||
http_processing_failed = 3
|
||||
OTHERS = 4 ).
|
||||
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.
|
||||
li_client->get_last_error(
|
||||
IMPORTING
|
||||
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'.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
@ -62,10 +81,10 @@ FORM run.
|
|||
* if SSL Handshake fails, make sure to also check https://launchpad.support.sap.com/#/notes/510007
|
||||
|
||||
li_client->response->get_status(
|
||||
IMPORTING
|
||||
code = lv_code ).
|
||||
IMPORTING
|
||||
code = lv_code ).
|
||||
IF lv_code = 200.
|
||||
WRITE: / 'Success, it works'.
|
||||
WRITE: / lv_url, ': ok'.
|
||||
ELSE.
|
||||
WRITE: / 'Error', lv_code.
|
||||
ENDIF.
|
||||
|
|
|
@ -9,8 +9,12 @@ Type | Description | Supported
|
|||
:------------ | :------------ | ------------:
|
||||
ACID | Checkpoint Group | Yes
|
||||
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
|
||||
AVAS | Classification | [#1360](https://github.com/larshp/abapGit/issues/1360)
|
||||
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)
|
||||
CLAS | Class (ABAP Objects) | Yes
|
||||
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
|
||||
IASP | Parameters of an IAC service | 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)
|
||||
JOBD | Technical Job Definition | Yes
|
||||
LPDC | Launchpad short texts | [#107](https://github.com/larshp/abapGit/issues/107)
|
||||
MSAG | Message Class | Yes
|
||||
NROB | Number Range Objects | Yes
|
||||
OTGR | Object type group | [#1515](https://github.com/larshp/abapGit/issues/1515)
|
||||
PARA | SPA/GPA Parameters | Yes
|
||||
PDTS | Standard Task | [#153](https://github.com/larshp/abapGit/issues/153)
|
||||
PDWS | Workflow templates | [#154](https://github.com/larshp/abapGit/issues/154)
|
||||
PINF | Package interface | Yes
|
||||
PRAG | Pragma in ABAP Source Code | 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
|
||||
SAPC | ABAP Push Channels | Yes
|
||||
SCP1 | BC Set or Customizing Profile | [#1004](https://github.com/larshp/abapGit/issues/1004)
|
||||
SFBF | Business Function + Assignment | Yes
|
||||
SFBS | Business Function Set + Assignment | 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)
|
||||
SPLO | Format Types | Yes
|
||||
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
|
||||
SSFO | SAP Smart Form | Yes
|
||||
SSST | SAP Smart Style | Yes
|
||||
|
@ -98,4 +110,6 @@ WEBI | Virtual End Point | Yes
|
|||
XINX | Extension Index | 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)
|
||||
|
|
|
@ -30,9 +30,9 @@ CLASS zcl_abapgit_git_branch_list DEFINITION
|
|||
zcx_abapgit_exception .
|
||||
METHODS get_tags_only " For potential future use
|
||||
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
|
||||
zcx_abapgit_exception .
|
||||
zcx_abapgit_exception.
|
||||
CLASS-METHODS is_ignored
|
||||
IMPORTING
|
||||
!iv_branch_name TYPE clike
|
||||
|
@ -45,9 +45,11 @@ CLASS zcl_abapgit_git_branch_list DEFINITION
|
|||
VALUE(rv_display_name) TYPE string .
|
||||
CLASS-METHODS get_type
|
||||
IMPORTING
|
||||
!iv_branch_name TYPE clike
|
||||
!iv_branch_name TYPE clike
|
||||
it_result TYPE stringtab OPTIONAL
|
||||
iv_current_row_index TYPE sytabix OPTIONAL
|
||||
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
|
||||
IMPORTING
|
||||
!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 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
|
||||
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.
|
||||
|
@ -106,10 +115,16 @@ CLASS ZCL_ABAPGIT_GIT_BRANCH_LIST IMPLEMENTATION.
|
|||
zcx_abapgit_exception=>raise( 'Branch name empty' ).
|
||||
ENDIF.
|
||||
|
||||
READ TABLE mt_branches INTO rs_branch
|
||||
WITH KEY name = iv_branch_name.
|
||||
IF sy-subrc <> 0.
|
||||
zcx_abapgit_exception=>raise( 'Branch not found' ).
|
||||
IF iv_branch_name CP |refs/tags/*|.
|
||||
rs_branch = find_tag_by_name( iv_branch_name ).
|
||||
ELSE.
|
||||
|
||||
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. "find_by_name
|
||||
|
@ -157,15 +172,21 @@ CLASS ZCL_ABAPGIT_GIT_BRANCH_LIST IMPLEMENTATION.
|
|||
METHOD get_tags_only.
|
||||
FIELD-SYMBOLS <ls_branch> LIKE LINE OF mt_branches.
|
||||
|
||||
LOOP AT mt_branches ASSIGNING <ls_branch>.
|
||||
IF <ls_branch>-type = zif_abapgit_definitions=>c_git_branch_type-tag.
|
||||
APPEND <ls_branch> TO rt_branches.
|
||||
ENDIF.
|
||||
LOOP AT mt_branches ASSIGNING <ls_branch>
|
||||
WHERE type = zif_abapgit_definitions=>c_git_branch_type-lightweight_tag
|
||||
OR type = zif_abapgit_definitions=>c_git_branch_type-annotated_tag.
|
||||
APPEND <ls_branch> TO rt_tags.
|
||||
ENDLOOP.
|
||||
|
||||
ENDMETHOD. "get_tags_only
|
||||
|
||||
|
||||
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.
|
||||
|
||||
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.
|
||||
|
||||
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.
|
||||
|
||||
ENDMETHOD. "get_type
|
||||
|
@ -206,12 +237,13 @@ CLASS ZCL_ABAPGIT_GIT_BRANCH_LIST IMPLEMENTATION.
|
|||
|
||||
METHOD parse_branch_list.
|
||||
|
||||
DATA: lt_result TYPE TABLE OF string,
|
||||
lv_hash TYPE zif_abapgit_definitions=>ty_sha1,
|
||||
lv_name TYPE string,
|
||||
lv_head_params TYPE string,
|
||||
lv_char TYPE c,
|
||||
lv_data LIKE LINE OF lt_result.
|
||||
DATA: lt_result TYPE TABLE OF string,
|
||||
lv_hash TYPE zif_abapgit_definitions=>ty_sha1,
|
||||
lv_name TYPE string,
|
||||
lv_head_params TYPE string,
|
||||
lv_char TYPE c,
|
||||
lv_data LIKE LINE OF lt_result,
|
||||
lv_current_row_index TYPE syst-tabix.
|
||||
|
||||
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.
|
||||
|
||||
LOOP AT lt_result INTO lv_data.
|
||||
|
||||
lv_current_row_index = sy-tabix.
|
||||
|
||||
IF sy-tabix = 1.
|
||||
CONTINUE. " current loop
|
||||
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>-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.
|
||||
<ls_branch>-is_head = abap_true.
|
||||
ENDIF.
|
||||
|
@ -266,4 +303,25 @@ CLASS ZCL_ABAPGIT_GIT_BRANCH_LIST IMPLEMENTATION.
|
|||
ENDIF.
|
||||
|
||||
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.
|
||||
|
|
|
@ -20,7 +20,16 @@ CLASS zcl_abapgit_git_pack DEFINITION
|
|||
author TYPE string,
|
||||
committer 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:
|
||||
BEGIN OF ty_adler32,
|
||||
sha1 TYPE zif_abapgit_definitions=>ty_sha1,
|
||||
|
@ -48,6 +57,13 @@ CLASS zcl_abapgit_git_pack DEFINITION
|
|||
VALUE(rs_commit) TYPE ty_commit
|
||||
RAISING
|
||||
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
|
||||
IMPORTING
|
||||
!it_objects TYPE zif_abapgit_definitions=>ty_objects_tt
|
||||
|
@ -62,9 +78,16 @@ CLASS zcl_abapgit_git_pack DEFINITION
|
|||
VALUE(rv_data) TYPE xstring .
|
||||
CLASS-METHODS encode_commit
|
||||
IMPORTING
|
||||
!is_commit TYPE ty_commit
|
||||
is_commit TYPE ty_commit
|
||||
RETURNING
|
||||
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.
|
||||
|
||||
CONSTANTS:
|
||||
|
@ -128,7 +151,7 @@ ENDCLASS.
|
|||
|
||||
|
||||
|
||||
CLASS ZCL_ABAPGIT_GIT_PACK IMPLEMENTATION.
|
||||
CLASS zcl_abapgit_git_pack IMPLEMENTATION.
|
||||
|
||||
|
||||
METHOD decode.
|
||||
|
@ -336,6 +359,68 @@ CLASS ZCL_ABAPGIT_GIT_PACK IMPLEMENTATION.
|
|||
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.
|
||||
|
||||
CONSTANTS: lc_sha_length TYPE i VALUE 20,
|
||||
|
@ -757,6 +842,8 @@ CLASS ZCL_ABAPGIT_GIT_PACK IMPLEMENTATION.
|
|||
lv_type = 32.
|
||||
WHEN zif_abapgit_definitions=>gc_type-blob.
|
||||
lv_type = 48.
|
||||
WHEN zif_abapgit_definitions=>gc_type-tag.
|
||||
lv_type = 64.
|
||||
WHEN zif_abapgit_definitions=>gc_type-ref_d.
|
||||
lv_type = 112.
|
||||
WHEN OTHERS.
|
||||
|
@ -839,4 +926,25 @@ CLASS ZCL_ABAPGIT_GIT_PACK IMPLEMENTATION.
|
|||
zcx_abapgit_exception=>raise( 'Wrong Adler checksum' ).
|
||||
ENDIF.
|
||||
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.
|
||||
|
|
|
@ -567,3 +567,60 @@ CLASS ltcl_git_pack_decode_commit IMPLEMENTATION.
|
|||
ENDMETHOD.
|
||||
|
||||
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
|
||||
IMPORTING
|
||||
!io_repo TYPE REF TO zcl_abapgit_repo_online
|
||||
!iv_name TYPE string
|
||||
!iv_from TYPE zif_abapgit_definitions=>ty_sha1
|
||||
is_tag TYPE zif_abapgit_definitions=>ty_git_tag
|
||||
RAISING
|
||||
zcx_abapgit_exception .
|
||||
CLASS-METHODS delete_branch
|
||||
|
@ -46,7 +45,7 @@ CLASS zcl_abapgit_git_porcelain DEFINITION
|
|||
CLASS-METHODS delete_tag
|
||||
IMPORTING
|
||||
!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
|
||||
zcx_abapgit_exception .
|
||||
CLASS-METHODS full_tree
|
||||
|
@ -56,9 +55,9 @@ CLASS zcl_abapgit_git_porcelain DEFINITION
|
|||
RETURNING
|
||||
VALUE(rt_expanded) TYPE zif_abapgit_definitions=>ty_expanded_tt
|
||||
RAISING
|
||||
zcx_abapgit_exception .
|
||||
PRIVATE SECTION.
|
||||
zcx_abapgit_exception.
|
||||
|
||||
PRIVATE SECTION.
|
||||
TYPES: BEGIN OF ty_tree,
|
||||
path TYPE string,
|
||||
data TYPE xstring,
|
||||
|
@ -100,7 +99,7 @@ CLASS zcl_abapgit_git_porcelain DEFINITION
|
|||
RETURNING VALUE(rt_expanded) TYPE zif_abapgit_definitions=>ty_expanded_tt
|
||||
RAISING zcx_abapgit_exception.
|
||||
|
||||
CLASS-METHODS receive_pack
|
||||
CLASS-METHODS receive_pack_push
|
||||
IMPORTING is_comment TYPE zif_abapgit_definitions=>ty_comment
|
||||
io_repo TYPE REF TO zcl_abapgit_repo_online
|
||||
it_trees TYPE ty_trees_tt
|
||||
|
@ -108,11 +107,31 @@ CLASS zcl_abapgit_git_porcelain DEFINITION
|
|||
io_stage TYPE REF TO zcl_abapgit_stage
|
||||
RETURNING VALUE(rv_branch) TYPE zif_abapgit_definitions=>ty_sha1
|
||||
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.
|
||||
|
||||
|
||||
|
||||
CLASS ZCL_ABAPGIT_GIT_PORCELAIN IMPLEMENTATION.
|
||||
CLASS zcl_abapgit_git_porcelain IMPLEMENTATION.
|
||||
|
||||
|
||||
METHOD build_trees.
|
||||
|
@ -199,23 +218,28 @@ CLASS ZCL_ABAPGIT_GIT_PORCELAIN IMPLEMENTATION.
|
|||
|
||||
METHOD create_tag.
|
||||
|
||||
DATA: lt_objects TYPE zif_abapgit_definitions=>ty_objects_tt,
|
||||
lv_pack TYPE xstring.
|
||||
|
||||
IF iv_name CS ` `.
|
||||
IF is_tag-name CS ` `.
|
||||
zcx_abapgit_exception=>raise( 'Tag name cannot contain blank spaces' ).
|
||||
ENDIF.
|
||||
|
||||
* "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 ).
|
||||
CASE is_tag-type.
|
||||
WHEN zif_abapgit_definitions=>c_git_branch_type-annotated_tag.
|
||||
|
||||
zcl_abapgit_git_transport=>receive_pack(
|
||||
iv_url = io_repo->get_url( )
|
||||
iv_old = c_zero
|
||||
iv_new = iv_from
|
||||
iv_branch_name = iv_name
|
||||
iv_pack = lv_pack ).
|
||||
create_annotated_tag(
|
||||
is_tag = is_tag
|
||||
io_repo = io_repo ).
|
||||
|
||||
WHEN zif_abapgit_definitions=>c_git_branch_type-lightweight_tag.
|
||||
|
||||
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.
|
||||
|
||||
|
@ -435,16 +459,60 @@ CLASS ZCL_ABAPGIT_GIT_PORCELAIN IMPLEMENTATION.
|
|||
|
||||
lt_trees = build_trees( lt_expanded ).
|
||||
|
||||
ev_branch = receive_pack( is_comment = is_comment
|
||||
io_repo = io_repo
|
||||
it_trees = lt_trees
|
||||
it_blobs = lt_blobs
|
||||
io_stage = io_stage ).
|
||||
ev_branch = receive_pack_push( is_comment = is_comment
|
||||
io_repo = io_repo
|
||||
it_trees = lt_trees
|
||||
it_blobs = lt_blobs
|
||||
io_stage = io_stage ).
|
||||
|
||||
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,
|
||||
lv_commit TYPE xstring,
|
||||
|
@ -630,4 +698,32 @@ CLASS ZCL_ABAPGIT_GIT_PORCELAIN IMPLEMENTATION.
|
|||
ENDLOOP.
|
||||
|
||||
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.
|
||||
|
|
|
@ -57,7 +57,7 @@ ENDCLASS.
|
|||
|
||||
|
||||
|
||||
CLASS ZCL_ABAPGIT_GIT_TRANSPORT IMPLEMENTATION.
|
||||
CLASS zcl_abapgit_git_transport IMPLEMENTATION.
|
||||
|
||||
|
||||
METHOD branches.
|
||||
|
@ -209,6 +209,8 @@ CLASS ZCL_ABAPGIT_GIT_TRANSPORT IMPLEMENTATION.
|
|||
zcx_abapgit_exception=>raise( 'funny refname' ).
|
||||
ELSEIF lv_string CP '*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.
|
||||
|
||||
ENDMETHOD. "receive_pack
|
||||
|
|
|
@ -7,21 +7,22 @@ CLASS zcl_abapgit_tag DEFINITION
|
|||
CLASS-METHODS:
|
||||
add_tag_prefix
|
||||
IMPORTING
|
||||
!iv_text TYPE csequence
|
||||
iv_text TYPE csequence
|
||||
RETURNING
|
||||
VALUE(rv_text) TYPE string,
|
||||
|
||||
remove_tag_prefix
|
||||
IMPORTING
|
||||
!iv_text TYPE string
|
||||
iv_text TYPE string
|
||||
RETURNING
|
||||
VALUE(rv_text) TYPE string .
|
||||
VALUE(rv_text) TYPE string.
|
||||
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
|
||||
CLASS zcl_abapgit_tag IMPLEMENTATION.
|
||||
CLASS ZCL_ABAPGIT_TAG IMPLEMENTATION.
|
||||
|
||||
|
||||
METHOD add_tag_prefix.
|
||||
|
||||
|
@ -39,5 +40,4 @@ CLASS zcl_abapgit_tag IMPLEMENTATION.
|
|||
WITH ''.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS.
|
||||
|
|
|
@ -62,6 +62,7 @@ CLASS ZCL_ABAPGIT_2FA_AUTH_REGISTRY IMPLEMENTATION.
|
|||
TRY.
|
||||
lo_class ?= cl_oo_class=>get_instance( 'ZCL_ABAPGIT_2FA_AUTH_BASE' ).
|
||||
lt_sub = lo_class->get_subclasses( ).
|
||||
SORT lt_sub BY clsname ASCENDING AS TEXT.
|
||||
LOOP AT lt_sub INTO ls_sub.
|
||||
CREATE OBJECT li_authenticator TYPE (ls_sub-clsname).
|
||||
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.
|
||||
|
@ -336,6 +336,8 @@ CLASS zcl_abapgit_2fa_github_auth IMPLEMENTATION.
|
|||
|
||||
li_client->receive( EXCEPTIONS OTHERS = 1 ).
|
||||
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( ).
|
||||
ENDIF.
|
||||
|
||||
|
|
|
@ -205,7 +205,8 @@ CLASS ZCL_ABAPGIT_HTTP IMPLEMENTATION.
|
|||
METHOD get_agent.
|
||||
|
||||
* 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.
|
||||
|
||||
|
|
|
@ -28,7 +28,7 @@ ENDCLASS.
|
|||
|
||||
|
||||
|
||||
CLASS zcl_abapgit_ecatt_sp_upload IMPLEMENTATION.
|
||||
CLASS ZCL_ABAPGIT_ECATT_SP_UPLOAD IMPLEMENTATION.
|
||||
|
||||
|
||||
METHOD get_ecatt_sp.
|
||||
|
@ -46,8 +46,7 @@ CLASS zcl_abapgit_ecatt_sp_upload IMPLEMENTATION.
|
|||
FIELD-SYMBOLS: <ecatt_object> TYPE any.
|
||||
|
||||
TRY.
|
||||
li_section = template_over_all->find_from_name_ns(
|
||||
name = 'START_PROFILE' ).
|
||||
li_section = template_over_all->find_from_name_ns( 'START_PROFILE' ).
|
||||
|
||||
IF NOT li_section IS INITIAL.
|
||||
CLASS cl_ixml DEFINITION LOAD .
|
||||
|
@ -75,7 +74,7 @@ CLASS zcl_abapgit_ecatt_sp_upload IMPLEMENTATION.
|
|||
lv_exception_occurred = 'X'.
|
||||
ENDTRY.
|
||||
|
||||
IF lv_exception_occurred = 'X'.
|
||||
IF lv_exception_occurred = 'X'.
|
||||
raise_upload_exception( previous = exception_to_raise ).
|
||||
ENDIF.
|
||||
ENDMETHOD.
|
||||
|
@ -107,7 +106,7 @@ CLASS zcl_abapgit_ecatt_sp_upload IMPLEMENTATION.
|
|||
CHANGING
|
||||
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.
|
||||
IF template_over_all IS INITIAL.
|
||||
|
|
|
@ -46,7 +46,10 @@ CLASS zcl_abapgit_ecatt_val_obj_down DEFINITION
|
|||
|
||||
ENDCLASS.
|
||||
|
||||
CLASS zcl_abapgit_ecatt_val_obj_down IMPLEMENTATION.
|
||||
|
||||
|
||||
CLASS ZCL_ABAPGIT_ECATT_VAL_OBJ_DOWN IMPLEMENTATION.
|
||||
|
||||
|
||||
METHOD download.
|
||||
|
||||
|
@ -90,7 +93,7 @@ CLASS zcl_abapgit_ecatt_val_obj_down IMPLEMENTATION.
|
|||
ENDIF.
|
||||
ENDLOOP.
|
||||
|
||||
set_variants_to_dom( im_params = ecatt_vo->params ).
|
||||
set_variants_to_dom( ecatt_vo->params ).
|
||||
|
||||
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.
|
||||
|
@ -90,7 +90,7 @@ CLASS zcl_abapgit_ecatt_val_obj_upl IMPLEMENTATION.
|
|||
lv_exception_occurred = 'X'.
|
||||
ENDTRY.
|
||||
|
||||
IF lv_exception_occurred = 'X'.
|
||||
IF lv_exception_occurred = 'X'.
|
||||
raise_upload_exception( previous = exception_to_raise ).
|
||||
ENDIF.
|
||||
|
||||
|
@ -108,7 +108,7 @@ CLASS zcl_abapgit_ecatt_val_obj_upl IMPLEMENTATION.
|
|||
|
||||
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.
|
||||
CALL FUNCTION 'SDIXML_DOM_TO_DATA'
|
||||
|
@ -137,7 +137,7 @@ CLASS zcl_abapgit_ecatt_val_obj_upl IMPLEMENTATION.
|
|||
lv_exception_occurred = 'X'.
|
||||
ENDTRY.
|
||||
|
||||
IF lv_exception_occurred = 'X'.
|
||||
IF lv_exception_occurred = 'X'.
|
||||
raise_upload_exception( previous = exception_to_raise ).
|
||||
ENDIF.
|
||||
|
||||
|
@ -210,7 +210,7 @@ CLASS zcl_abapgit_ecatt_val_obj_upl IMPLEMENTATION.
|
|||
lv_exception_occurred = 'X'.
|
||||
ENDTRY.
|
||||
|
||||
IF lv_exception_occurred = 'X'.
|
||||
IF lv_exception_occurred = 'X'.
|
||||
raise_upload_exception( previous = exception_to_raise ).
|
||||
ENDIF.
|
||||
|
||||
|
@ -244,7 +244,7 @@ CLASS zcl_abapgit_ecatt_val_obj_upl IMPLEMENTATION.
|
|||
CHANGING
|
||||
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.
|
||||
IF template_over_all IS INITIAL.
|
||||
RAISE EXCEPTION ex.
|
||||
|
|
|
@ -139,4 +139,10 @@ CLASS zcl_abapgit_object_acid IMPLEMENTATION.
|
|||
CREATE OBJECT ro_comparison_result TYPE zcl_abapgit_comparison_null.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD zif_abapgit_object~is_locked.
|
||||
|
||||
rv_is_locked = abap_false.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
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.
|
||||
|
@ -127,4 +127,11 @@ CLASS ZCL_ABAPGIT_OBJECT_AUTH IMPLEMENTATION.
|
|||
ig_data = ls_authx ).
|
||||
|
||||
ENDMETHOD. "zif_abapgit_object~serialize
|
||||
|
||||
METHOD zif_abapgit_object~is_locked.
|
||||
|
||||
rv_is_locked = abap_false.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
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
|
||||
IMPORTING io_xml TYPE REF TO zcl_abapgit_xml_output
|
||||
RAISING zcx_abapgit_exception.
|
||||
PRIVATE SECTION.
|
||||
METHODS:
|
||||
is_class_locked
|
||||
RETURNING VALUE(rv_is_class_locked) TYPE abap_bool
|
||||
RAISING zcx_abapgit_exception.
|
||||
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
|
||||
CLASS ZCL_ABAPGIT_OBJECT_CLAS_OLD IMPLEMENTATION.
|
||||
CLASS zcl_abapgit_object_clas_old IMPLEMENTATION.
|
||||
|
||||
|
||||
METHOD constructor.
|
||||
|
@ -114,7 +119,7 @@ CLASS ZCL_ABAPGIT_OBJECT_CLAS_OLD IMPLEMENTATION.
|
|||
io_xml->read( EXPORTING iv_name = 'LINES'
|
||||
CHANGING cg_data = lt_lines ).
|
||||
|
||||
IF lt_lines[] IS INITIAL.
|
||||
IF lines( lt_lines ) = 0.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
|
@ -155,7 +160,7 @@ CLASS ZCL_ABAPGIT_OBJECT_CLAS_OLD IMPLEMENTATION.
|
|||
CHANGING cg_data = lt_tpool_ext ).
|
||||
lt_tpool = read_tpool( lt_tpool_ext ).
|
||||
|
||||
IF lt_tpool[] IS INITIAL.
|
||||
IF lines( lt_tpool ) = 0.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
|
@ -186,7 +191,7 @@ CLASS ZCL_ABAPGIT_OBJECT_CLAS_OLD IMPLEMENTATION.
|
|||
zcl_abapgit_language=>set_current_language( mv_language ).
|
||||
|
||||
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.
|
||||
zcl_abapgit_language=>restore_login_language( ).
|
||||
|
@ -308,7 +313,7 @@ CLASS ZCL_ABAPGIT_OBJECT_CLAS_OLD IMPLEMENTATION.
|
|||
DATA: ls_class_key TYPE seoclskey.
|
||||
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
|
||||
|
||||
|
||||
|
@ -374,7 +379,7 @@ CLASS ZCL_ABAPGIT_OBJECT_CLAS_OLD IMPLEMENTATION.
|
|||
lt_source = mo_object_oriented_object_fct->serialize_abap(
|
||||
is_class_key = ls_class_key
|
||||
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'
|
||||
it_abap = lt_source ). "#EC NOTEXT
|
||||
ENDIF.
|
||||
|
@ -382,7 +387,7 @@ CLASS ZCL_ABAPGIT_OBJECT_CLAS_OLD IMPLEMENTATION.
|
|||
lt_source = mo_object_oriented_object_fct->serialize_abap(
|
||||
is_class_key = ls_class_key
|
||||
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'
|
||||
it_abap = lt_source ). "#EC NOTEXT
|
||||
ENDIF.
|
||||
|
@ -392,7 +397,7 @@ CLASS ZCL_ABAPGIT_OBJECT_CLAS_OLD IMPLEMENTATION.
|
|||
iv_type = seop_ext_class_testclasses ).
|
||||
|
||||
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'
|
||||
it_abap = lt_source ). "#EC NOTEXT
|
||||
ENDIF.
|
||||
|
@ -400,7 +405,7 @@ CLASS ZCL_ABAPGIT_OBJECT_CLAS_OLD IMPLEMENTATION.
|
|||
lt_source = mo_object_oriented_object_fct->serialize_abap(
|
||||
is_class_key = ls_class_key
|
||||
iv_type = seop_ext_class_macros ).
|
||||
IF NOT lt_source[] IS INITIAL.
|
||||
IF lines( lt_source ) > 0.
|
||||
mo_files->add_abap( iv_extra = 'macros'
|
||||
it_abap = lt_source ). "#EC NOTEXT
|
||||
ENDIF.
|
||||
|
@ -408,4 +413,44 @@ CLASS ZCL_ABAPGIT_OBJECT_CLAS_OLD IMPLEMENTATION.
|
|||
serialize_xml( io_xml ).
|
||||
|
||||
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.
|
||||
|
|
|
@ -214,6 +214,12 @@ CLASS ZCL_ABAPGIT_OBJECT_CMPT IMPLEMENTATION.
|
|||
zcx_abapgit_exception=>raise( 'CMPT not supported' ).
|
||||
ENDTRY.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD zif_abapgit_object~is_locked.
|
||||
|
||||
rv_is_locked = abap_false.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS.
|
||||
|
|
|
@ -140,4 +140,10 @@ CLASS zcl_abapgit_object_cus0 IMPLEMENTATION.
|
|||
CREATE OBJECT ro_comparison_result TYPE zcl_abapgit_comparison_null.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD zif_abapgit_object~is_locked.
|
||||
|
||||
rv_is_locked = abap_false.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
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.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD zif_abapgit_object~is_locked.
|
||||
|
||||
rv_is_locked = abap_false.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
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.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD zif_abapgit_object~is_locked.
|
||||
|
||||
rv_is_locked = abap_false.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
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.
|
||||
|
@ -194,4 +194,12 @@ CLASS ZCL_ABAPGIT_OBJECT_DCLS IMPLEMENTATION.
|
|||
ENDTRY.
|
||||
|
||||
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.
|
||||
|
|
|
@ -238,8 +238,7 @@ CLASS ZCL_ABAPGIT_OBJECT_DDLS IMPLEMENTATION.
|
|||
|
||||
CASE lv_ddtypekind.
|
||||
WHEN 'STOB'.
|
||||
|
||||
me->open_adt_stob( iv_ddls_name = ms_item-obj_name ).
|
||||
me->open_adt_stob( ms_item-obj_name ).
|
||||
WHEN OTHERS.
|
||||
zcx_abapgit_exception=>raise( 'DDLS Jump Error' ).
|
||||
ENDCASE.
|
||||
|
@ -249,12 +248,13 @@ CLASS ZCL_ABAPGIT_OBJECT_DDLS IMPLEMENTATION.
|
|||
|
||||
METHOD zif_abapgit_object~serialize.
|
||||
|
||||
DATA: lo_ddl TYPE REF TO object,
|
||||
lr_data TYPE REF TO data,
|
||||
DATA: lo_ddl TYPE REF TO object,
|
||||
lr_data TYPE REF TO data,
|
||||
lt_clr_comps TYPE STANDARD TABLE OF fieldname WITH DEFAULT KEY.
|
||||
|
||||
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').
|
||||
|
@ -281,10 +281,11 @@ CLASS ZCL_ABAPGIT_OBJECT_DDLS IMPLEMENTATION.
|
|||
APPEND 'ACTFLAG' 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>.
|
||||
ASSERT sy-subrc = 0.
|
||||
CLEAR <lg_field>.
|
||||
IF sy-subrc = 0.
|
||||
CLEAR <lg_field>.
|
||||
ENDIF.
|
||||
ENDLOOP.
|
||||
|
||||
ASSIGN COMPONENT 'SOURCE' OF STRUCTURE <lg_data> TO <lg_field>.
|
||||
|
@ -299,4 +300,12 @@ CLASS ZCL_ABAPGIT_OBJECT_DDLS IMPLEMENTATION.
|
|||
ig_data = <lg_data> ).
|
||||
|
||||
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.
|
||||
|
|
|
@ -28,7 +28,7 @@ ENDCLASS.
|
|||
|
||||
|
||||
|
||||
CLASS ZCL_ABAPGIT_OBJECT_DDLX IMPLEMENTATION.
|
||||
CLASS zcl_abapgit_object_ddlx IMPLEMENTATION.
|
||||
|
||||
|
||||
METHOD clear_field.
|
||||
|
@ -254,4 +254,12 @@ CLASS ZCL_ABAPGIT_OBJECT_DDLX IMPLEMENTATION.
|
|||
ENDTRY.
|
||||
|
||||
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.
|
||||
|
|
|
@ -20,7 +20,16 @@ CLASS zcl_abapgit_object_devc DEFINITION PUBLIC
|
|||
RAISING zcx_abapgit_exception,
|
||||
set_lock IMPORTING ii_package TYPE REF TO if_package
|
||||
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:
|
||||
mv_local_devclass TYPE devclass.
|
||||
ENDCLASS.
|
||||
|
@ -39,24 +48,7 @@ CLASS zcl_abapgit_object_devc IMPLEMENTATION.
|
|||
|
||||
METHOD get_package.
|
||||
IF me->zif_abapgit_object~exists( ) = abap_true.
|
||||
cl_package_factory=>load_package(
|
||||
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.
|
||||
ri_package = load_package( mv_local_devclass ).
|
||||
ENDIF.
|
||||
ENDMETHOD.
|
||||
|
||||
|
@ -209,12 +201,83 @@ CLASS zcl_abapgit_object_devc IMPLEMENTATION.
|
|||
|
||||
|
||||
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
|
||||
" 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
|
||||
" also count towards the contained objects counter.
|
||||
" -> Package deletion is currently not supported by abapGit
|
||||
RETURN.
|
||||
" -> Currently we delete only empty packages
|
||||
"
|
||||
" 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.
|
||||
|
||||
|
||||
|
@ -544,4 +607,65 @@ CLASS zcl_abapgit_object_devc IMPLEMENTATION.
|
|||
io_xml->add( iv_name = 'PERMISSION' ig_data = lt_usage_data ).
|
||||
ENDIF.
|
||||
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.
|
||||
|
|
|
@ -206,4 +206,11 @@ CLASS ZCL_ABAPGIT_OBJECT_DIAL IMPLEMENTATION.
|
|||
WHERE dnam = lv_dnam.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD zif_abapgit_object~is_locked.
|
||||
|
||||
rv_is_locked = abap_false.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS.
|
||||
|
|
|
@ -191,4 +191,10 @@ CLASS zcl_abapgit_object_doct IMPLEMENTATION.
|
|||
CREATE OBJECT ro_comparison_result TYPE zcl_abapgit_comparison_null.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD zif_abapgit_object~is_locked.
|
||||
|
||||
rv_is_locked = abap_false.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
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.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD zif_abapgit_object~is_locked.
|
||||
|
||||
rv_is_locked = abap_false.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
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.
|
||||
|
@ -205,20 +205,40 @@ CLASS ZCL_ABAPGIT_OBJECT_DOMA IMPLEMENTATION.
|
|||
|
||||
lv_objname = ms_item-obj_name.
|
||||
|
||||
CALL FUNCTION 'RS_DD_DELETE_OBJ'
|
||||
EXPORTING
|
||||
no_ask = abap_true
|
||||
objname = lv_objname
|
||||
objtype = 'D'
|
||||
no_ask_delete_append = abap_true
|
||||
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.
|
||||
TRY.
|
||||
CALL FUNCTION 'RS_DD_DELETE_OBJ'
|
||||
EXPORTING
|
||||
no_ask = abap_true
|
||||
objname = lv_objname
|
||||
objtype = 'D'
|
||||
no_ask_delete_append = abap_true
|
||||
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.
|
||||
|
||||
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
|
||||
|
||||
|
@ -369,4 +389,12 @@ CLASS ZCL_ABAPGIT_OBJECT_DOMA IMPLEMENTATION.
|
|||
serialize_texts( io_xml ).
|
||||
|
||||
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.
|
||||
|
|
|
@ -162,4 +162,10 @@ CLASS zcl_abapgit_object_dsys IMPLEMENTATION.
|
|||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD zif_abapgit_object~is_locked.
|
||||
|
||||
rv_is_locked = abap_false.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
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.
|
||||
|
@ -334,4 +334,13 @@ CLASS ZCL_ABAPGIT_OBJECT_DTEL IMPLEMENTATION.
|
|||
serialize_texts( io_xml ).
|
||||
|
||||
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.
|
||||
|
|
|
@ -16,7 +16,8 @@ CLASS zcl_abapgit_object_ecat DEFINITION
|
|||
METHODS:
|
||||
get_object_type REDEFINITION,
|
||||
get_upload REDEFINITION,
|
||||
get_download REDEFINITION.
|
||||
get_download REDEFINITION,
|
||||
get_lock_object REDEFINITION.
|
||||
|
||||
ENDCLASS.
|
||||
|
||||
|
@ -51,4 +52,10 @@ CLASS zcl_abapgit_object_ecat IMPLEMENTATION.
|
|||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD get_lock_object.
|
||||
|
||||
rv_lock_object = 'E_ECATT'.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS.
|
||||
|
|
|
@ -28,7 +28,11 @@ CLASS zcl_abapgit_object_ecatt_super DEFINITION
|
|||
|
||||
get_download ABSTRACT
|
||||
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.
|
||||
TYPES:
|
||||
|
@ -144,12 +148,9 @@ CLASS zcl_abapgit_object_ecatt_super IMPLEMENTATION.
|
|||
lv_object_type = get_object_type( ).
|
||||
|
||||
lo_element = ci_document->find_from_name( |{ lv_object_type }| ).
|
||||
lo_element->set_attribute( name = |SAPRL|
|
||||
value = || ).
|
||||
lo_element->set_attribute( name = |DOWNLOADDATE|
|
||||
value = || ).
|
||||
lo_element->set_attribute( name = |DOWNLOADTIME|
|
||||
value = || ).
|
||||
lo_element->remove_attribute( |SAPRL| ).
|
||||
lo_element->remove_attribute( |DOWNLOADDATE| ).
|
||||
lo_element->remove_attribute( |DOWNLOADTIME| ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
@ -631,5 +632,18 @@ CLASS zcl_abapgit_object_ecatt_super IMPLEMENTATION.
|
|||
|
||||
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.
|
||||
|
||||
|
|
|
@ -16,7 +16,8 @@ CLASS zcl_abapgit_object_ecsd DEFINITION
|
|||
METHODS:
|
||||
get_object_type REDEFINITION,
|
||||
get_upload REDEFINITION,
|
||||
get_download REDEFINITION.
|
||||
get_download REDEFINITION,
|
||||
get_lock_object REDEFINITION.
|
||||
|
||||
ENDCLASS.
|
||||
|
||||
|
@ -51,4 +52,10 @@ CLASS zcl_abapgit_object_ecsd IMPLEMENTATION.
|
|||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD get_lock_object.
|
||||
|
||||
rv_lock_object = 'E_ECATT_SD'.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS.
|
||||
|
|
|
@ -16,7 +16,8 @@ CLASS zcl_abapgit_object_ecsp DEFINITION
|
|||
METHODS:
|
||||
get_object_type REDEFINITION,
|
||||
get_upload REDEFINITION,
|
||||
get_download REDEFINITION.
|
||||
get_download REDEFINITION,
|
||||
get_lock_object REDEFINITION.
|
||||
|
||||
ENDCLASS.
|
||||
|
||||
|
@ -53,4 +54,10 @@ CLASS zcl_abapgit_object_ecsp IMPLEMENTATION.
|
|||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD get_lock_object.
|
||||
|
||||
rv_lock_object = 'E_ECATT_SP'.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS.
|
||||
|
|
|
@ -16,7 +16,8 @@ CLASS zcl_abapgit_object_ectc DEFINITION
|
|||
METHODS:
|
||||
get_object_type REDEFINITION,
|
||||
get_upload REDEFINITION,
|
||||
get_download REDEFINITION.
|
||||
get_download REDEFINITION,
|
||||
get_lock_object REDEFINITION.
|
||||
|
||||
ENDCLASS.
|
||||
|
||||
|
@ -51,4 +52,10 @@ CLASS zcl_abapgit_object_ectc IMPLEMENTATION.
|
|||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD get_lock_object.
|
||||
|
||||
rv_lock_object = 'E_ECATT_TC'.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS.
|
||||
|
|
|
@ -16,7 +16,8 @@ CLASS zcl_abapgit_object_ectd DEFINITION
|
|||
METHODS:
|
||||
get_object_type REDEFINITION,
|
||||
get_upload REDEFINITION,
|
||||
get_download REDEFINITION.
|
||||
get_download REDEFINITION,
|
||||
get_lock_object REDEFINITION.
|
||||
|
||||
ENDCLASS.
|
||||
|
||||
|
@ -50,4 +51,10 @@ CLASS zcl_abapgit_object_ectd IMPLEMENTATION.
|
|||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD get_lock_object.
|
||||
|
||||
rv_lock_object = 'E_ECATT_TD'.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS.
|
||||
|
|
|
@ -16,7 +16,8 @@ CLASS zcl_abapgit_object_ecvo DEFINITION
|
|||
METHODS:
|
||||
get_object_type REDEFINITION,
|
||||
get_upload REDEFINITION,
|
||||
get_download REDEFINITION.
|
||||
get_download REDEFINITION,
|
||||
get_lock_object REDEFINITION.
|
||||
|
||||
ENDCLASS.
|
||||
|
||||
|
@ -53,4 +54,10 @@ CLASS zcl_abapgit_object_ecvo IMPLEMENTATION.
|
|||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD get_lock_object.
|
||||
|
||||
rv_lock_object = 'E_ECATT_TD'.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS.
|
||||
|
|
|
@ -28,8 +28,43 @@ CLASS zcl_abapgit_object_enho IMPLEMENTATION.
|
|||
ENDMETHOD. "zif_abapgit_object~get_metadata
|
||||
|
||||
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.
|
||||
|
||||
|
@ -176,4 +211,10 @@ CLASS zcl_abapgit_object_enho IMPLEMENTATION.
|
|||
CREATE OBJECT ro_comparison_result TYPE zcl_abapgit_comparison_null.
|
||||
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
|
||||
|
|
|
@ -179,4 +179,10 @@ CLASS zcl_abapgit_object_enhs IMPLEMENTATION.
|
|||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD zif_abapgit_object~is_locked.
|
||||
|
||||
rv_is_locked = abap_false.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
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.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD zif_abapgit_object~is_locked.
|
||||
|
||||
rv_is_locked = abap_false.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
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.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD zif_abapgit_object~is_locked.
|
||||
|
||||
rv_is_locked = abap_false.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS. "zcl_abapgit_object_ensc
|
||||
|
|
|
@ -39,6 +39,12 @@ CLASS zcl_abapgit_object_form DEFINITION PUBLIC INHERITING FROM zcl_abapgit_obje
|
|||
RETURNING
|
||||
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
|
||||
IMPORTING
|
||||
it_lines TYPE zcl_abapgit_object_form=>tyt_lines
|
||||
|
@ -254,6 +260,20 @@ CLASS zcl_abapgit_object_form IMPLEMENTATION.
|
|||
ENDMETHOD.
|
||||
|
||||
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.
|
||||
ENDMETHOD.
|
||||
|
||||
|
@ -307,9 +327,17 @@ CLASS zcl_abapgit_object_form IMPLEMENTATION.
|
|||
DATA lv_string TYPE string.
|
||||
DATA lo_xml TYPE REF TO zcl_abapgit_xml_input.
|
||||
|
||||
lv_string = mo_files->read_string( iv_extra =
|
||||
_build_extra_from_header( is_form_data-form_header )
|
||||
iv_ext = c_extension_xml ).
|
||||
TRY.
|
||||
lv_string = mo_files->read_string( iv_extra =
|
||||
_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.
|
||||
lo_xml->read( EXPORTING iv_name = c_objectname_tdlines
|
||||
|
@ -406,4 +434,10 @@ CLASS zcl_abapgit_object_form IMPLEMENTATION.
|
|||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD zif_abapgit_object~is_locked.
|
||||
|
||||
rv_is_locked = abap_false.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
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.
|
||||
|
||||
PRIVATE SECTION.
|
||||
TYPES: ty_rs38l_incl_tt TYPE STANDARD TABLE OF rs38l_incl WITH DEFAULT KEY.
|
||||
|
||||
TYPES: BEGIN OF ty_function,
|
||||
funcname TYPE rs38l_fnam,
|
||||
global_flag TYPE rs38l-global,
|
||||
remote_call TYPE rs38l-remote,
|
||||
update_task TYPE rs38l-utask,
|
||||
short_text TYPE tftit-stext,
|
||||
remote_basxml TYPE rs38l-basxml_enabled,
|
||||
import TYPE STANDARD TABLE OF rsimp WITH DEFAULT KEY,
|
||||
changing TYPE STANDARD TABLE OF rscha WITH DEFAULT KEY,
|
||||
export TYPE STANDARD TABLE OF rsexp WITH DEFAULT KEY,
|
||||
tables TYPE STANDARD TABLE OF rstbl WITH DEFAULT KEY,
|
||||
exception TYPE STANDARD TABLE OF rsexc WITH DEFAULT KEY,
|
||||
documentation TYPE STANDARD TABLE OF rsfdo 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.
|
||||
TYPES:
|
||||
ty_rs38l_incl_tt TYPE STANDARD TABLE OF rs38l_incl WITH DEFAULT KEY .
|
||||
TYPES:
|
||||
BEGIN OF ty_function,
|
||||
funcname TYPE rs38l_fnam,
|
||||
global_flag TYPE rs38l-global,
|
||||
remote_call TYPE rs38l-remote,
|
||||
update_task TYPE rs38l-utask,
|
||||
short_text TYPE tftit-stext,
|
||||
remote_basxml TYPE rs38l-basxml_enabled,
|
||||
import TYPE STANDARD TABLE OF rsimp WITH DEFAULT KEY,
|
||||
changing TYPE STANDARD TABLE OF rscha WITH DEFAULT KEY,
|
||||
export TYPE STANDARD TABLE OF rsexp WITH DEFAULT KEY,
|
||||
tables TYPE STANDARD TABLE OF rstbl WITH DEFAULT KEY,
|
||||
exception TYPE STANDARD TABLE OF rsexc WITH DEFAULT KEY,
|
||||
documentation TYPE STANDARD TABLE OF rsfdo 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
|
||||
RETURNING VALUE(rv_program) TYPE program
|
||||
RAISING zcx_abapgit_exception.
|
||||
|
||||
RETURNING
|
||||
VALUE(rv_program) TYPE program
|
||||
RAISING
|
||||
zcx_abapgit_exception .
|
||||
METHODS functions
|
||||
RETURNING VALUE(rt_functab) TYPE ty_rs38l_incl_tt
|
||||
RAISING zcx_abapgit_exception.
|
||||
|
||||
RETURNING
|
||||
VALUE(rt_functab) TYPE ty_rs38l_incl_tt
|
||||
RAISING
|
||||
zcx_abapgit_exception .
|
||||
METHODS includes
|
||||
RETURNING VALUE(rt_includes) TYPE rso_t_objnm
|
||||
RAISING zcx_abapgit_exception.
|
||||
|
||||
RETURNING
|
||||
VALUE(rt_includes) TYPE rso_t_objnm
|
||||
RAISING
|
||||
zcx_abapgit_exception .
|
||||
METHODS serialize_functions
|
||||
RETURNING VALUE(rt_functions) TYPE ty_function_tt
|
||||
RAISING zcx_abapgit_exception.
|
||||
|
||||
RETURNING
|
||||
VALUE(rt_functions) TYPE ty_function_tt
|
||||
RAISING
|
||||
zcx_abapgit_exception .
|
||||
METHODS deserialize_functions
|
||||
IMPORTING it_functions TYPE ty_function_tt
|
||||
RAISING zcx_abapgit_exception.
|
||||
|
||||
IMPORTING
|
||||
!it_functions TYPE ty_function_tt
|
||||
RAISING
|
||||
zcx_abapgit_exception .
|
||||
METHODS serialize_xml
|
||||
IMPORTING io_xml TYPE REF TO zcl_abapgit_xml_output
|
||||
RAISING zcx_abapgit_exception.
|
||||
|
||||
IMPORTING
|
||||
!io_xml TYPE REF TO zcl_abapgit_xml_output
|
||||
RAISING
|
||||
zcx_abapgit_exception .
|
||||
METHODS deserialize_xml
|
||||
IMPORTING io_xml TYPE REF TO zcl_abapgit_xml_input
|
||||
iv_package TYPE devclass
|
||||
RAISING zcx_abapgit_exception.
|
||||
|
||||
IMPORTING
|
||||
!io_xml TYPE REF TO zcl_abapgit_xml_input
|
||||
!iv_package TYPE devclass
|
||||
RAISING
|
||||
zcx_abapgit_exception .
|
||||
METHODS serialize_includes
|
||||
RAISING zcx_abapgit_exception.
|
||||
|
||||
RAISING
|
||||
zcx_abapgit_exception .
|
||||
METHODS deserialize_includes
|
||||
IMPORTING io_xml TYPE REF TO zcl_abapgit_xml_input
|
||||
iv_package TYPE devclass
|
||||
RAISING zcx_abapgit_exception.
|
||||
|
||||
IMPORTING
|
||||
!io_xml TYPE REF TO zcl_abapgit_xml_input
|
||||
!iv_package TYPE devclass
|
||||
RAISING
|
||||
zcx_abapgit_exception .
|
||||
METHODS are_exceptions_class_based
|
||||
IMPORTING iv_function_name TYPE rs38l_fnam
|
||||
RETURNING VALUE(rv_return) TYPE abap_bool
|
||||
RAISING zcx_abapgit_exception.
|
||||
IMPORTING
|
||||
iv_function_name TYPE rs38l_fnam
|
||||
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.
|
||||
|
||||
|
||||
|
||||
CLASS ZCL_ABAPGIT_OBJECT_FUGR IMPLEMENTATION.
|
||||
CLASS zcl_abapgit_object_fugr IMPLEMENTATION.
|
||||
|
||||
|
||||
METHOD are_exceptions_class_based.
|
||||
|
@ -122,12 +155,12 @@ CLASS ZCL_ABAPGIT_OBJECT_FUGR IMPLEMENTATION.
|
|||
|
||||
CALL FUNCTION 'FUNCTION_INCLUDE_SPLIT'
|
||||
EXPORTING
|
||||
complete_area = lv_area
|
||||
complete_area = lv_area
|
||||
IMPORTING
|
||||
namespace = lv_namespace
|
||||
group = lv_group
|
||||
namespace = lv_namespace
|
||||
group = lv_group
|
||||
EXCEPTIONS
|
||||
OTHERS = 12.
|
||||
OTHERS = 12.
|
||||
|
||||
IF sy-subrc <> 0.
|
||||
zcx_abapgit_exception=>raise( 'error from FUNCTION_INCLUDE_SPLIT' ).
|
||||
|
@ -559,6 +592,29 @@ CLASS ZCL_ABAPGIT_OBJECT_FUGR IMPLEMENTATION.
|
|||
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.
|
||||
|
||||
TYPES: BEGIN OF ty_stamps,
|
||||
|
@ -634,9 +690,12 @@ CLASS ZCL_ABAPGIT_OBJECT_FUGR IMPLEMENTATION.
|
|||
|
||||
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.
|
||||
|
||||
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' ).
|
||||
ENDIF.
|
||||
|
||||
update_where_used( lt_includes ).
|
||||
|
||||
ENDMETHOD. "delete
|
||||
|
||||
|
||||
|
@ -801,4 +862,87 @@ CLASS ZCL_ABAPGIT_OBJECT_FUGR IMPLEMENTATION.
|
|||
ENDIF.
|
||||
|
||||
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.
|
||||
|
|
|
@ -296,4 +296,10 @@ CLASS zcl_abapgit_object_iamu IMPLEMENTATION.
|
|||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD zif_abapgit_object~is_locked.
|
||||
|
||||
rv_is_locked = abap_false.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS.
|
||||
|
|
|
@ -184,4 +184,10 @@ CLASS zcl_abapgit_object_iarp IMPLEMENTATION.
|
|||
CREATE OBJECT ro_comparison_result TYPE zcl_abapgit_comparison_null.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD zif_abapgit_object~is_locked.
|
||||
|
||||
rv_is_locked = abap_false.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
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.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD zif_abapgit_object~is_locked.
|
||||
|
||||
rv_is_locked = abap_false.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
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.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD zif_abapgit_object~is_locked.
|
||||
|
||||
rv_is_locked = abap_false.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
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(
|
||||
is_item = is_item
|
||||
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.
|
||||
|
||||
|
||||
|
@ -67,7 +67,7 @@ CLASS ZCL_ABAPGIT_OBJECT_INTF IMPLEMENTATION.
|
|||
is_key = ls_clskey
|
||||
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.
|
||||
|
||||
|
||||
|
@ -79,7 +79,7 @@ CLASS ZCL_ABAPGIT_OBJECT_INTF IMPLEMENTATION.
|
|||
io_xml->read( EXPORTING iv_name = 'LINES'
|
||||
CHANGING cg_data = lt_lines ).
|
||||
|
||||
IF lt_lines[] IS INITIAL.
|
||||
IF lines( lt_lines ) = 0.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
|
@ -194,7 +194,7 @@ CLASS ZCL_ABAPGIT_OBJECT_INTF IMPLEMENTATION.
|
|||
|
||||
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.
|
||||
SELECT SINGLE category FROM seoclassdf INTO lv_category
|
||||
|
@ -265,4 +265,18 @@ CLASS ZCL_ABAPGIT_OBJECT_INTF IMPLEMENTATION.
|
|||
|
||||
serialize_xml( io_xml ).
|
||||
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.
|
||||
|
|
|
@ -205,4 +205,11 @@ CLASS ZCL_ABAPGIT_OBJECT_JOBD IMPLEMENTATION.
|
|||
ENDTRY.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD zif_abapgit_object~is_locked.
|
||||
|
||||
rv_is_locked = abap_false.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS.
|
||||
|
|
|
@ -288,4 +288,10 @@ CLASS zcl_abapgit_object_msag IMPLEMENTATION.
|
|||
CREATE OBJECT ro_comparison_result TYPE zcl_abapgit_comparison_null.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD zif_abapgit_object~is_locked.
|
||||
|
||||
rv_is_locked = abap_false.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
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.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD zif_abapgit_object~is_locked.
|
||||
|
||||
rv_is_locked = abap_false.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS. "zcl_abapgit_object_nrob IMPLEMENTATION
|
||||
|
|
|
@ -10,7 +10,7 @@ CLASS zcl_abapgit_object_para IMPLEMENTATION.
|
|||
|
||||
METHOD zif_abapgit_object~has_changed_since.
|
||||
rv_changed = abap_true.
|
||||
ENDMETHOD. "zif_abapgit_object~has_changed_since
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD zif_abapgit_object~changed_by.
|
||||
* 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.
|
||||
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.
|
||||
|
||||
|
@ -30,7 +32,7 @@ CLASS zcl_abapgit_object_para IMPLEMENTATION.
|
|||
WHERE paramid = ms_item-obj_name. "#EC CI_GENBUFF
|
||||
rv_bool = boolc( sy-subrc = 0 ).
|
||||
|
||||
ENDMETHOD. "zif_abapgit_object~exists
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD zif_abapgit_object~serialize.
|
||||
|
||||
|
@ -53,7 +55,7 @@ CLASS zcl_abapgit_object_para IMPLEMENTATION.
|
|||
io_xml->add( iv_name = 'TPARAT'
|
||||
ig_data = ls_tparat ).
|
||||
|
||||
ENDMETHOD. "serialize
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD zif_abapgit_object~deserialize.
|
||||
* 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
|
||||
ASSERT sy-subrc = 0.
|
||||
|
||||
ENDMETHOD. "deserialize
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD zif_abapgit_object~delete.
|
||||
|
||||
|
@ -117,7 +119,7 @@ CLASS zcl_abapgit_object_para IMPLEMENTATION.
|
|||
zcx_abapgit_exception=>raise( 'error from RS_PRAMETER_DELETE' ).
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD. "delete
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD zif_abapgit_object~jump.
|
||||
|
||||
|
@ -128,10 +130,16 @@ CLASS zcl_abapgit_object_para IMPLEMENTATION.
|
|||
object_type = 'PARA'
|
||||
in_new_window = abap_true.
|
||||
|
||||
ENDMETHOD. "jump
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD zif_abapgit_object~compare_to_remote_version.
|
||||
CREATE OBJECT ro_comparison_result TYPE zcl_abapgit_comparison_null.
|
||||
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.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD zif_abapgit_object~is_locked.
|
||||
|
||||
rv_is_locked = abap_false.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
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| ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD zif_abapgit_object~is_locked.
|
||||
|
||||
rv_is_locked = abap_false.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS.
|
||||
|
|
|
@ -17,13 +17,18 @@ CLASS zcl_abapgit_object_prog DEFINITION PUBLIC INHERITING FROM zcl_abapgit_obje
|
|||
RAISING zcx_abapgit_exception,
|
||||
deserialize_texts
|
||||
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.
|
||||
|
||||
|
||||
|
||||
CLASS ZCL_ABAPGIT_OBJECT_PROG IMPLEMENTATION.
|
||||
CLASS zcl_abapgit_object_prog IMPLEMENTATION.
|
||||
|
||||
|
||||
METHOD deserialize_texts.
|
||||
|
@ -148,7 +153,7 @@ CLASS ZCL_ABAPGIT_OBJECT_PROG IMPLEMENTATION.
|
|||
|
||||
io_xml->read( EXPORTING iv_name = 'DYNPROS'
|
||||
CHANGING cg_data = lt_dynpros ).
|
||||
deserialize_dynpros( it_dynpros = lt_dynpros ).
|
||||
deserialize_dynpros( lt_dynpros ).
|
||||
|
||||
io_xml->read( EXPORTING iv_name = 'CUA'
|
||||
CHANGING cg_data = ls_cua ).
|
||||
|
@ -213,4 +218,26 @@ CLASS ZCL_ABAPGIT_OBJECT_PROG IMPLEMENTATION.
|
|||
serialize_texts( io_xml ).
|
||||
|
||||
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.
|
||||
|
|
|
@ -176,6 +176,13 @@ CLASS ZCL_ABAPGIT_OBJECT_SFBF IMPLEMENTATION.
|
|||
ENDMETHOD. "zif_abapgit_object~has_changed_since
|
||||
|
||||
|
||||
METHOD zif_abapgit_object~is_locked.
|
||||
|
||||
rv_is_locked = abap_false.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD zif_abapgit_object~jump.
|
||||
|
||||
CALL FUNCTION 'RS_TOOL_ACCESS'
|
||||
|
|
|
@ -224,4 +224,11 @@ CLASS ZCL_ABAPGIT_OBJECT_SFBS IMPLEMENTATION.
|
|||
iv_name = 'PARENT_BFS' ).
|
||||
|
||||
ENDMETHOD. "serialize
|
||||
|
||||
METHOD zif_abapgit_object~is_locked.
|
||||
|
||||
rv_is_locked = abap_false.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS.
|
||||
|
|
|
@ -224,4 +224,11 @@ CLASS ZCL_ABAPGIT_OBJECT_SFPF IMPLEMENTATION.
|
|||
io_xml->set_raw( li_document->get_root_element( ) ).
|
||||
|
||||
ENDMETHOD. "serialize
|
||||
|
||||
METHOD zif_abapgit_object~is_locked.
|
||||
|
||||
rv_is_locked = abap_false.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS.
|
||||
|
|
|
@ -157,4 +157,10 @@ CLASS zcl_abapgit_object_sfpi IMPLEMENTATION.
|
|||
CREATE OBJECT ro_comparison_result TYPE zcl_abapgit_comparison_null.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD zif_abapgit_object~is_locked.
|
||||
|
||||
rv_is_locked = abap_false.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS. "zcl_abapgit_object_doma IMPLEMENTATION
|
||||
|
|
|
@ -215,4 +215,11 @@ CLASS ZCL_ABAPGIT_OBJECT_SFSW IMPLEMENTATION.
|
|||
iv_name = 'CONFLICTS' ).
|
||||
|
||||
ENDMETHOD. "serialize
|
||||
|
||||
METHOD zif_abapgit_object~is_locked.
|
||||
|
||||
rv_is_locked = abap_false.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS.
|
||||
|
|
|
@ -261,4 +261,10 @@ CLASS zcl_abapgit_object_shi3 IMPLEMENTATION.
|
|||
CREATE OBJECT ro_comparison_result TYPE zcl_abapgit_comparison_null.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD zif_abapgit_object~is_locked.
|
||||
|
||||
rv_is_locked = abap_false.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
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.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD zif_abapgit_object~is_locked.
|
||||
|
||||
rv_is_locked = abap_false.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
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.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD zif_abapgit_object~is_locked.
|
||||
|
||||
rv_is_locked = abap_false.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
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.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD zif_abapgit_object~is_locked.
|
||||
|
||||
rv_is_locked = abap_false.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS. "zcl_abapgit_object_shlp IMPLEMENTATION
|
||||
|
|
|
@ -266,4 +266,10 @@ CLASS zcl_abapgit_object_shma IMPLEMENTATION.
|
|||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD zif_abapgit_object~is_locked.
|
||||
|
||||
rv_is_locked = abap_false.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS.
|
||||
|
|
|
@ -572,4 +572,11 @@ CLASS ZCL_ABAPGIT_OBJECT_SICF IMPLEMENTATION.
|
|||
ig_data = lt_icfhandler ).
|
||||
|
||||
ENDMETHOD. "serialize
|
||||
|
||||
METHOD zif_abapgit_object~is_locked.
|
||||
|
||||
rv_is_locked = abap_false.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS.
|
||||
|
|
|
@ -330,4 +330,10 @@ CLASS zcl_abapgit_object_smim IMPLEMENTATION.
|
|||
CREATE OBJECT ro_comparison_result TYPE zcl_abapgit_comparison_null.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD zif_abapgit_object~is_locked.
|
||||
|
||||
rv_is_locked = abap_false.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
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.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD zif_abapgit_object~is_locked.
|
||||
|
||||
rv_is_locked = abap_false.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS. "zcl_abapgit_object_splo IMPLEMENTATION
|
||||
|
|
|
@ -181,4 +181,11 @@ CLASS ZCL_ABAPGIT_OBJECT_SRFC IMPLEMENTATION.
|
|||
ig_data = <lg_srfc_data> ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD zif_abapgit_object~is_locked.
|
||||
|
||||
rv_is_locked = abap_false.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS.
|
||||
|
|
|
@ -225,7 +225,9 @@ CLASS zcl_abapgit_object_ssfo IMPLEMENTATION.
|
|||
lv_name TYPE string,
|
||||
li_iterator TYPE REF TO if_ixml_node_iterator,
|
||||
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.
|
||||
|
@ -252,21 +254,28 @@ CLASS zcl_abapgit_object_ssfo IMPLEMENTATION.
|
|||
tadir_insert( iv_package ).
|
||||
|
||||
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( )
|
||||
formname = lv_formname
|
||||
language = mv_language
|
||||
CHANGING sform = lo_res ).
|
||||
TRY.
|
||||
lo_sf->enqueue( suppress_corr_check = space
|
||||
master_language = mv_language
|
||||
mode = 'INSERT'
|
||||
formname = lv_formname ).
|
||||
|
||||
lo_res->store( im_formname = lo_res->header-formname
|
||||
im_language = mv_language
|
||||
im_active = abap_true ).
|
||||
lo_sf->xml_upload( EXPORTING dom = io_xml->get_raw( )->get_root_element( )
|
||||
formname = lv_formname
|
||||
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
|
||||
|
||||
|
@ -274,4 +283,11 @@ CLASS zcl_abapgit_object_ssfo IMPLEMENTATION.
|
|||
CREATE OBJECT ro_comparison_result TYPE zcl_abapgit_comparison_null.
|
||||
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
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user