Compare commits

..

No commits in common. "main" and "v1.125.0" have entirely different histories.

754 changed files with 11603 additions and 37066 deletions

View File

@ -1,10 +1,6 @@
{ {
"name": "abapGit", "name": "abapGit",
"image": "mcr.microsoft.com/vscode/devcontainers/javascript-node:0-20", "image": "mcr.microsoft.com/vscode/devcontainers/javascript-node:0-12",
"customizations": { "extensions": ["larshp.vscode-abaplint"],
"vscode": {
"extensions": ["larshp.vscode-abaplint"]
}
},
"postCreateCommand": "npm install" "postCreateCommand": "npm install"
} }

View File

@ -12,10 +12,6 @@ trim_trailing_whitespace = true
indent_style = space indent_style = space
indent_size = 1 indent_size = 1
# XSLT source code must have CR LF to be deserialized correctly by SAP code
[*.xslt.source.xml]
end_of_line = crlf
# match the format used by abapGit # match the format used by abapGit
[*.{abap,js,json,html,css}] [*.{abap,js,json,html,css}]
charset = utf-8 charset = utf-8

14
.eslintrc.yaml Normal file
View File

@ -0,0 +1,14 @@
---
parserOptions:
ecmaVersion: 5
env:
browser: true
extends:
- eslint:recommended
rules:
quotes: ['error', 'double', { 'avoidEscape': true }]
semi: ['error', 'always', { 'omitLastInOneLineBlock': true}]
no-console: off
indent: ['error', 2]
no-trailing-spaces: ['error']
no-unused-vars: ['warn']

View File

@ -19,8 +19,11 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v3
- uses: actions/setup-node@v4 - name: Use Node.js
uses: actions/setup-node@v3
with:
node-version: '20'
- name: run - name: run
run: | run: |
git clone https://github.com/abapGit/ajson_mirror.git git clone https://github.com/abapGit/ajson_mirror.git

View File

@ -9,8 +9,11 @@ jobs:
build-merged: build-merged:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v3
- uses: actions/setup-node@v4 - name: Use Node.js
uses: actions/setup-node@v3
with:
node-version: '16'
- name: Run npm steps - name: Run npm steps
run: | run: |
npm install npm install
@ -41,10 +44,12 @@ jobs:
outputs: outputs:
pushedTag: ${{ steps.deploy-release-tag.outputs.pushedTag }} pushedTag: ${{ steps.deploy-release-tag.outputs.pushedTag }}
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v3
with: with:
fetch-depth: 2 fetch-depth: 2
- uses: actions/setup-node@v4 - uses: actions/setup-node@v3
with:
node-version: '16'
- name: deploy-release-tag - name: deploy-release-tag
id: deploy-release-tag id: deploy-release-tag
if: github.ref == 'refs/heads/main' && github.repository == 'abapGit/abapGit' if: github.ref == 'refs/heads/main' && github.repository == 'abapGit/abapGit'
@ -59,12 +64,12 @@ jobs:
needs: [build-merged, auto-tag] needs: [build-merged, auto-tag]
if: github.ref == 'refs/heads/main' && github.repository == 'abapGit/abapGit' && !!needs.auto-tag.outputs.pushedTag if: github.ref == 'refs/heads/main' && github.repository == 'abapGit/abapGit' && !!needs.auto-tag.outputs.pushedTag
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v3
with: with:
repository: abapGit/build repository: abapGit/build
path: build path: build
ssh-key: ${{ secrets.DEPLOY_ABAPGIT_BUILD }} ssh-key: ${{ secrets.DEPLOY_ABAPGIT_BUILD }}
- uses: actions/checkout@v4 - uses: actions/checkout@v3
with: with:
path: abapGit path: abapGit
- name: mirror tag to the artifact - name: mirror tag to the artifact
@ -79,8 +84,10 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
timeout-minutes: 5 timeout-minutes: 5
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v3
- uses: actions/setup-node@v4 - uses: actions/setup-node@v3
with:
node-version: '16'
- name: npm run unit - name: npm run unit
run: | run: |
npm install npm install

View File

@ -6,6 +6,6 @@ jobs:
test: test:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v3
- name: REUSE Compliance Check - name: REUSE Compliance Check
uses: fsfe/reuse-action@v5 uses: fsfe/reuse-action@v1

View File

@ -11,9 +11,12 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
timeout-minutes: 10 timeout-minutes: 10
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v3
- uses: actions/setup-node@v4 - uses: actions/setup-node@v3
- run: | with:
node-version: '20'
- name: npm install
run: |
npm install npm install
npm run eslint npm run eslint
npm run merge npm run merge
@ -29,21 +32,15 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
timeout-minutes: 10 timeout-minutes: 10
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v3
- uses: actions/setup-node@v4 - uses: actions/setup-node@v3
- run: npm install with:
- run: npm run unit node-version: '20'
- run: npm run coverage - name: npm install
run: npm install
integration: - name: npm run unit
runs-on: ubuntu-latest run: npm run unit
needs: unit-tests - name: npm run coverage
timeout-minutes: 10 run: npm run coverage
steps: - name: npm run integration
- uses: actions/checkout@v4 run: npm run integration
- uses: actions/setup-node@v4
- run: npm install
- name: start gitea
working-directory: test/gitea/
run: npm install && npm run gitea
- run: npm run integration

6
.gitignore vendored
View File

@ -8,9 +8,3 @@ ci/*.abap
allure-report allure-report
coverage coverage
Heap.* Heap.*
list.txt
/test-results/
/playwright-report/
/blob-report/
/playwright/.cache/
.DS_Store

View File

@ -3,7 +3,8 @@
[![License](https://img.shields.io/github/license/abapGit/abapGit?label=License&color=green)](LICENSE) [![License](https://img.shields.io/github/license/abapGit/abapGit?label=License&color=green)](LICENSE)
[![REUSE Status](https://api.reuse.software/badge/github.com/abapGit/abapGit?color=success)](https://api.reuse.software/info/github.com/abapGit/abapGit) [![REUSE Status](https://api.reuse.software/badge/github.com/abapGit/abapGit?color=success)](https://api.reuse.software/info/github.com/abapGit/abapGit)
[![Slack](https://img.shields.io/badge/Join-Slack-blue)](https://communityinviter.com/apps/abapgit/abap) [![Slack](https://img.shields.io/badge/Join-Slack-blue)](https://communityinviter.com/apps/abapgit/abap)
[![abap package version](https://img.shields.io/endpoint?url=https://shield.abappm.com/github/abapGit/abapGit/-main/src/zif_abapgit_version.intf.abap/c_abap_version&label=version)](https://github.com/abapGit/abapGit/blob/main/src/zif_abapgit_version.intf.abap) [![abap package version](https://img.shields.io/endpoint?url=https://shield.abap.space/version-shield-json/github/abapGit/abapGit/src/zif_abapgit_version.intf.abap/c_abap_version&label=version)](https://github.com/abapGit/abapGit/blob/main/src/zif_abapgit_version.intf.abap)
<!-- <!--
<picture> <picture>
@ -48,8 +49,6 @@ It is recommended to use SAP GUI for Windows, since there are known issues relat
https://docs.abapgit.org https://docs.abapgit.org
[Join Slack channel](https://communityinviter.com/apps/abapgit/abap)
## Contributing ## Contributing
You can find the contribution guidelines [here](CONTRIBUTING.md). You can find the contribution guidelines [here](CONTRIBUTING.md).
@ -68,5 +67,4 @@ For questions/comments/bugs/feature requests/wishes please create an [issue](htt
- Icons used in abapGit are created from [Font Awesome](https://fontawesome.com/) free icon set ([CC-BY-4.0](LICENSES/CC-BY-4.0.txt)) - Icons used in abapGit are created from [Font Awesome](https://fontawesome.com/) free icon set ([CC-BY-4.0](LICENSES/CC-BY-4.0.txt))
- [AJSON](https://github.com/sbcgua/ajson) and [String-Map](https://github.com/sbcgua/abap-string-map) are developed by Alexander Tsybulsky ([MIT](LICENSES/MIT.txt)) - [AJSON](https://github.com/sbcgua/ajson) and [String-Map](https://github.com/sbcgua/abap-string-map) are developed by Alexander Tsybulsky ([MIT](LICENSES/MIT.txt))
- [AFF](https://github.com/SAP/abap-file-formats) formats are by SAP ([MIT](LICENSES/MIT.txt))

View File

@ -1,3 +0,0 @@
# Reporting Security Issues
To report a security issue, please use the GitHub Security Advisory ["Report a Vulnerability"](https://github.com/abapGit/abapGit/security/advisories/new) tab.

View File

@ -1,23 +1,24 @@
{ {
"global": { "global": {
"files": "/{test/src,src}/**/*.*", "files": "/{test,src}/**/*.*",
"skipGeneratedFunctionGroups": true,
"skipGeneratedGatewayClasses": true, "skipGeneratedGatewayClasses": true,
"skipGeneratedPersistentClasses": true "skipGeneratedPersistentClasses": true,
"skipGeneratedFunctionGroups": true
}, },
"dependencies": [ "dependencies": [
{ {
"files": "/**/*.*", "folder": "/deps",
"folder": "/deps" "files": "/**/*.*"
}, },
{ {
"url": "https://github.com/abaplint/deps", "url": "https://github.com/abaplint/deps",
"files": "/src/**/*.*", "folder": "/lint_deps",
"folder": "/lint_deps" "files": "/src/**/*.*"
} }
], ],
"syntax": { "syntax": {
"errorNamespace": "^(Z|Y|LT?CL_|TY_|LIF_|C_|.*ABAPGIT)", "version": "v702",
"errorNamespace": "^(Z|Y|LT?CL_|TY_|LIF_|.*ABAPGIT)",
"globalConstants": [ "globalConstants": [
"abap_func_exporting", "abap_func_exporting",
"abap_func_tables", "abap_func_tables",
@ -28,8 +29,6 @@
"skwfc_obtype_folder", "skwfc_obtype_folder",
"skwfc_obtype_loio", "skwfc_obtype_loio",
"so2_controller", "so2_controller",
"srext_ext_class_pool",
"srext_ext_interface_pool",
"ststc_c_type_dialog", "ststc_c_type_dialog",
"ststc_c_type_object", "ststc_c_type_object",
"ststc_c_type_parameters", "ststc_c_type_parameters",
@ -45,154 +44,108 @@
"wdyn_limu_component_controller", "wdyn_limu_component_controller",
"wdyn_limu_component_definition", "wdyn_limu_component_definition",
"wdyn_limu_component_view" "wdyn_limu_component_view"
], ]
"version": "v702"
}, },
"rules": { "rules": {
"7bit_ascii": { "select_single_full_key": false,
"exclude": [ "strict_sql": false,
"zcl_abapgit_git_commit.clas.testclasses.abap",
"zcl_abapgit_gui_event.clas.testclasses.abap",
"zcl_abapgit_html_action_utils.clas.testclasses.abap"
]
},
"abapdoc": false,
"align_type_expressions": true,
"align_pseudo_comments": false,
"invalid_table_index": true,
"tables_declared_locally": true,
"unused_macros": true,
"align_parameters": false,
"allowed_object_naming": true,
"allowed_object_types": {
"exclude": ["test/src/"],
"allowed": [
"CLAS",
"DEVC",
"FUGR",
"INTF",
"PROG",
"TRAN",
"W3MI"
]
},
"ambiguous_statement": true,
"avoid_use": {
"break": true,
"defaultKey": false,
"define": true,
"describeLines": true,
"exportToDatabase": true,
"exportToMemory": false,
"statics": true,
"testSeams": true
},
"begin_end_names": true,
"begin_single_include": true,
"call_transaction_authority_check": true,
"cds_comment_style": true, "cds_comment_style": true,
"cds_legacy_view": true,
"cds_parser_error": true,
"chain_mainly_declarations": {
"check": true,
"clear": true,
"definitions": true,
"free": true,
"hide": true,
"include": true,
"move": true,
"refresh": true,
"sort": true,
"unassign": true,
"write": true
},
"change_if_to_case": false, "change_if_to_case": false,
"check_abstract": true, "expand_macros": true,
"check_comments": false, "unnecessary_return": false,
"check_ddic": true, "easy_to_find_messages": true,
"check_include": true, "prefer_pragmas": false,
"check_subrc": false, "smim_consistency": true,
"check_syntax": true, "sql_value_conversion": true,
"check_text_elements": true, "fully_type_itabs": false,
"check_transformation_exists": true, "cds_legacy_view": true,
"class_attribute_names": { "superfluous_value": true,
"constants": "^C_.*$", "classic_exceptions_overlap": true,
"local_testclass_consistency": true,
"no_external_form_calls": false,
"no_inline_in_optional_branches": true,
"pragma_style": true,
"slow_parameter_passing": false,
"unnecessary_pragma": false,
"align_parameters": false,
"cds_parser_error": true,
"constant_classes": true,
"no_aliases": {
"exclude": [ "exclude": [
"/json/", "/json/",
"zif_abapgit_objects" "zcl_abapgit_repo.clas.abap",
], "zcl_abapgit_repo_online.clas.abap"
"ignoreExceptions": true,
"ignoreInterfaces": false,
"ignoreLocal": false,
"instance": "^M._.*$",
"statics": "^G._.*$"
},
"classic_exceptions_overlap": true,
"cloud_types": true,
"colon_missing_space": true,
"commented_code": {
"allowIncludeInFugr": false,
"exclude": [
"intf",
"otgr"
] ]
}, },
"constant_classes": true, "nrob_consistency": true,
"constructor_visibility_public": true, "omit_preceding_zeros": true,
"contains_tab": true, "prefer_corresponding": true,
"cyclic_oo": false, "static_call_via_instance": false,
"unnecessary_chaining": false,
"unsecure_fae": false,
"identical_descriptions": false,
"modify_only_own_db_tables": false,
"no_yoda_conditions": false,
"no_chained_assignment": true,
"select_add_order_by": false,
"dangerous_statement": false,
"db_operation_in_loop": false,
"select_performance": false,
"max_one_method_parameter_per_line": true,
"unused_ddic": true,
"prefer_raise_exception_new": true,
"use_class_based_exceptions": {
"exclude": ["zcl_abapgit_convert.clas.abap"]
},
"uncaught_exception": true,
"intf_referencing_clas": false,
"method_implemented_twice": true,
"parser_702_chaining": true,
"sy_modification": {
"exclude": [
"zcl_abapgit_objects_program.clas.abap"
]
},
"call_transaction_authority_check": true,
"function_module_recommendations": false,
"method_overwrites_builtin": {
"exclude": [
"zcl_abapgit_stage.clas.abap",
"zif_abapgit_log.intf.abap"
]
},
"omit_parameter_name": false,
"omit_receiving": true,
"unused_methods": true,
"identical_contents": false,
"many_parentheses": true,
"prefer_xsdbool": true,
"prefer_is_not": false,
"use_bool_expression": true,
"check_subrc": false,
"cyclomatic_complexity": { "cyclomatic_complexity": {
"max": 25 "max": 25
}, },
"dangerous_statement": false, "identical_conditions": true,
"db_operation_in_loop": false, "use_line_exists": true,
"definitions_top": { "line_break_style": true,
"exclude": [
"/json/"
]
},
"description_empty": {
"exclude": [
"/test/"
]
},
"double_space": true,
"downport": false,
"add_test_attributes": true,
"implicit_start_of_selection": true,
"empty_event": true,
"dynpro_checks": false,
"easy_to_find_messages": false,
"empty_line_in_statement": {
"allowChained": true
},
"empty_statement": true,
"empty_structure": {
"at": true,
"case": true,
"do": true,
"loopAllowIfSubrc": false,
"if": false,
"loop": true,
"select": true,
"try": true,
"when": false,
"while": true
},
"exit_or_check": true,
"expand_macros": true,
"exporting": true,
"forbidden_identifier": true,
"forbidden_pseudo_and_pragma": { "forbidden_pseudo_and_pragma": {
"ignoreGlobalClassDefinition": true, "ignoreGlobalClassDefinition": true,
"ignoreGlobalInterface": true, "ignoreGlobalInterface": true,
"pragmas": [ "pragmas": ["##NO_TEXT"],
"##NO_TEXT" "pseudo": ["#EC NOTEXT"]
],
"pseudo": [
"#EC NOTEXT"
]
}, },
"unused_types": {
"exclude": ["/aff_types/"]
},
"begin_single_include": true,
"names_no_dash": true,
"parser_missing_space": true,
"prefer_inline": false,
"reduce_string_templates": true,
"downport": false,
"line_break_multiple_parameters": true,
"unknown_types": true,
"forbidden_void_type": { "forbidden_void_type": {
"check": [ "check": [
"^boole_d$", "^boole_d$",
@ -216,84 +169,176 @@
"^cl_srvd_wb_object_data$", "^cl_srvd_wb_object_data$",
"^cl_wb_object_operator_factory$", "^cl_wb_object_operator_factory$",
"^cl_wer_const$", "^cl_wer_const$",
"^cl_xco_",
"^cx_aff_", "^cx_aff_",
"^cx_wb_object_operation_error$", "^cx_wb_object_operation_error$",
"^cx_xco_", "^cx_xco_",
"^flag$", "^flag$",
"^i18_a_langiso2$", "^i18_a_langiso2$",
"^if_satc_ci_variant_access$",
"^if_adt_lock_handle$", "^if_adt_lock_handle$",
"^if_aff_", "^if_aff_",
"^if_satc_ci_variant_access$",
"^if_saunit_internal_result_type$", "^if_saunit_internal_result_type$",
"^if_saunit_internal_result$", "^if_saunit_internal_result$",
"^if_srvd_types$", "^if_srvd_types$",
"^if_wb_adt_plugin_resource_co$", "^if_wb_adt_plugin_resource_co$",
"^if_wb_object_data_selection_co$", "^if_wb_object_data_selection_co$",
"^if_wb_object_operator$", "^if_wb_object_operator$",
"^if_xco_",
"^int4$", "^int4$",
"^numc2$", "^numc2$",
"^pgmid$",
"^sabp_t_tadir_keys$", "^sabp_t_tadir_keys$",
"^sap_bool$", "^sap_bool$",
"^srcsystem$",
"^stringtab$", "^stringtab$",
"^sychar01$", "^sychar01$",
"^sychar10$", "^sychar10$",
"^sychar70$", "^sychar70$",
"^sydatum$", "^sydatum$",
"^sylangu$", "^sylangu$",
"^syst_langu$",
"^syst_title$", "^syst_title$",
"^syuzeit$", "^syuzeit$",
"^xubname$" "^xubname$"
] ]
}, },
"form_tables_obsolete": true, "forbidden_identifier": true,
"try_without_catch": true,
"prefix_is_current_class": true,
"allowed_object_naming": true,
"check_comments": false,
"cyclic_oo": false,
"fully_type_constants": true, "fully_type_constants": true,
"fully_type_itabs": false, "keep_single_parameter_on_one_line": true,
"function_module_recommendations": false, "prefer_returning_to_exporting": {
"exclude": ["/json/"]
},
"selection_screen_naming": true,
"sicf_consistency": true,
"sql_escape_host_variables": true,
"xml_consistency": true,
"newline_between_methods": false,
"chain_mainly_declarations": {
"definitions": true,
"write": true,
"move": true,
"refresh": true,
"unassign": true,
"sort": true,
"clear": true,
"hide": true,
"free": true,
"include": true,
"check": true
},
"check_abstract": true,
"check_text_elements": true,
"types_naming": {
"pattern": "^TY_.+$",
"exclude": ["/json/"]
},
"7bit_ascii": {
"exclude": [
"zcl_abapgit_git_commit.clas.testclasses.abap",
"zcl_abapgit_gui_event.clas.testclasses.abap",
"zcl_abapgit_html_action_utils.clas.testclasses.abap"
]
},
"abapdoc": false,
"check_ddic": true,
"check_include": true,
"allowed_object_types": {
"allowed": [
"PROG",
"CLAS",
"INTF",
"FUGR",
"DEVC",
"TRAN",
"W3MI"
]
},
"ambiguous_statement": true,
"avoid_use": {
"define": true,
"testSeams": true,
"defaultKey": false,
"exportToDatabase": true,
"exportToMemory": false,
"describeLines": true,
"break": true,
"statics": true
},
"begin_end_names": true,
"check_transformation_exists": true,
"check_syntax": true,
"class_attribute_names": {
"ignoreExceptions": true,
"ignoreInterfaces": false,
"statics": "^G._.*$",
"ignoreLocal": false,
"constants": "",
"instance": "^M._.*$"
},
"cloud_types": true,
"colon_missing_space": true,
"commented_code": {
"allowIncludeInFugr": false,
"exclude": ["otgr", "intf"]
},
"constructor_visibility_public": true,
"contains_tab": true,
"definitions_top": {
"exclude": ["/json/"]
},
"description_empty": {
"exclude": ["/test/"]
},
"double_space": false,
"empty_line_in_statement": {
"allowChained": true
},
"empty_statement": true,
"empty_structure": {
"loop": true,
"if": false,
"try": true,
"while": true,
"case": true,
"select": true,
"when": false,
"do": true,
"at": true
},
"exit_or_check": true,
"exporting": true,
"form_tables_obsolete": false,
"functional_writing": { "functional_writing": {
"ignoreExceptions": true "ignoreExceptions": true
}, },
"global_class": true, "global_class": true,
"identical_conditions": true,
"identical_contents": false,
"identical_descriptions": false,
"identical_form_names": true, "identical_form_names": true,
"if_in_if": true, "if_in_if": true,
"implement_methods": true, "implement_methods": true,
"in_statement_indentation": false, "in_statement_indentation": false,
"indentation": { "indentation": {
"alignTryCatch": false,
"globalClassSkipFirst": false,
"ignoreExceptions": true, "ignoreExceptions": true,
"alignTryCatch": false,
"selectionScreenBlockIndentation": false,
"globalClassSkipFirst": false,
"ignoreGlobalClassDefinition": false, "ignoreGlobalClassDefinition": false,
"ignoreGlobalInterface": false, "ignoreGlobalInterface": false
"selectionScreenBlockIndentation": false
}, },
"inline_data_old_versions": true, "inline_data_old_versions": true,
"intf_referencing_clas": false,
"keep_single_parameter_on_one_line": true,
"keyword_case": { "keyword_case": {
"style": "upper",
"ignoreExceptions": true, "ignoreExceptions": true,
"ignoreFunctionModuleName": false, "ignoreLowerClassImplmentationStatement": true,
"ignoreGlobalClassBoundaries": false,
"ignoreGlobalClassDefinition": false, "ignoreGlobalClassDefinition": false,
"ignoreGlobalInterface": false, "ignoreGlobalInterface": false,
"ignoreKeywords": [], "ignoreKeywords": [],
"ignoreLowerClassImplmentationStatement": true, "ignoreGlobalClassBoundaries": false,
"style": "upper" "ignoreFunctionModuleName": false
}, },
"line_break_multiple_parameters": true,
"line_break_style": true,
"line_length": { "line_length": {
"exclude": [ "length": 120,
"/json/", "exclude": ["zcl_abapgit_object_pdts.clas.testclasses.abap", "/json/"]
"zcl_abapgit_object_pdts.clas.testclasses.abap"
],
"length": 125
}, },
"line_only_punc": { "line_only_punc": {
"ignoreExceptions": true "ignoreExceptions": true
@ -303,207 +348,103 @@
"local": "^LCL_.*$", "local": "^LCL_.*$",
"test": "^LT.+$" "test": "^LT.+$"
}, },
"local_testclass_consistency": true,
"local_variable_names": { "local_variable_names": {
"exclude": [
"/json/"
],
"expectedConstant": "^LC_.*$",
"expectedData": "^L._.*$", "expectedData": "^L._.*$",
"expectedFS": "^<L._.*>$" "expectedConstant": "^LC_.*$",
"expectedFS": "^<L._.*>$",
"exclude": ["/json/"]
}, },
"main_file_contents": true, "main_file_contents": true,
"many_parentheses": true,
"max_one_method_parameter_per_line": true,
"max_one_statement": true, "max_one_statement": true,
"message_exists": true, "message_exists": false,
"method_implemented_twice": true,
"method_length": { "method_length": {
"exclude": [ "statements": 110,
"zcl_abapgit_convert.clas.locals_imp.abap"
],
"checkForms": true, "checkForms": true,
"errorWhenEmpty": false,
"ignoreTestClasses": false, "ignoreTestClasses": false,
"statements": 110 "errorWhenEmpty": false
},
"method_overwrites_builtin": {
"exclude": [
"zcl_abapgit_stage.clas.abap",
"zif_abapgit_log.intf.abap"
]
}, },
"method_parameter_names": { "method_parameter_names": {
"changing": "^C._.*$",
"exclude": [
"/json/"
],
"exporting": "^E._.*$",
"ignoreExceptions": true, "ignoreExceptions": true,
"importing": "^I._.*$",
"returning": "^R._.*$",
"changing": "^C._.*$",
"exporting": "^E._.*$",
"ignoreNames": [ "ignoreNames": [
"P_TASK" "P_TASK"
], ],
"importing": "^I._.*$", "exclude": ["/json/"]
"returning": "^R._.*$"
}, },
"mix_returning": true, "mix_returning": true,
"modify_only_own_db_tables": false,
"msag_consistency": true, "msag_consistency": true,
"names_no_dash": true,
"nesting": { "nesting": {
"depth": 6 "depth": 6
}, },
"newline_between_methods": false,
"no_aliases": {
"exclude": [
"/json/",
"zcl_abapgit_repo.clas.abap",
"zcl_abapgit_repo_online.clas.abap"
]
},
"no_chained_assignment": true,
"no_external_form_calls": false,
"no_inline_in_optional_branches": true,
"no_public_attributes": false, "no_public_attributes": false,
"no_yoda_conditions": false,
"nrob_consistency": true,
"object_naming": { "object_naming": {
"auth": "^Z",
"clas": "^ZC(L|X)\\_ABAPGIT\\_", "clas": "^ZC(L|X)\\_ABAPGIT\\_",
"doma": "^Z",
"dtel": "^Z",
"enqu": "^EZ",
"fugr": "^ZABAPGIT",
"idoc": "^Z",
"intf": "^ZIF\\_ABAPGIT\\_", "intf": "^ZIF\\_ABAPGIT\\_",
"msag": "^Z",
"pinf": "^Z",
"prog": "^ZABAPGIT", "prog": "^ZABAPGIT",
"shlp": "^Z", "fugr": "^ZABAPGIT",
"tabl": "^Z",
"ttyp": "^Z",
"dtel": "^Z",
"doma": "^Z",
"msag": "^Z",
"tran": "^Z",
"enqu": "^EZ",
"auth": "^Z",
"pinf": "^Z",
"idoc": "^Z",
"ssfo": "^Z", "ssfo": "^Z",
"ssst": "^Z", "ssst": "^Z",
"tabl": "^Z", "shlp": "^Z",
"tran": "^Z",
"ttyp": "^Z",
"xslt": "^Z" "xslt": "^Z"
}, },
"obsolete_statement": true, "obsolete_statement": true,
"omit_parameter_name": {
"exclude": [
"/json/"
]
},
"omit_preceding_zeros": true,
"omit_receiving": true,
"parser_702_chaining": true,
"parser_error": true, "parser_error": true,
"parser_missing_space": true,
"pragma_style": true,
"prefer_corresponding": true,
"prefer_inline": false,
"prefer_is_not": false,
"prefer_pragmas": false,
"prefer_raise_exception_new": true,
"prefer_returning_to_exporting": {
"exclude": [
"/json/"
]
},
"prefer_xsdbool": true,
"preferred_compare_operator": { "preferred_compare_operator": {
"badOperators": [ "badOperators": [
"><",
"EQ", "EQ",
"><",
"NE",
"GE", "GE",
"GT", "GT",
"LE",
"LT", "LT",
"NE" "LE"
] ]
}, },
"prefix_is_current_class": true,
"reduce_string_templates": true,
"release_idoc": true, "release_idoc": true,
"remove_descriptions": { "remove_descriptions": {
"exclude": [ "ignoreWorkflow": false,
"/json/"
],
"ignoreExceptions": false, "ignoreExceptions": false,
"ignoreWorkflow": false "exclude": ["/json/"]
}, },
"rfc_error_handling": false, "rfc_error_handling": false,
"select_add_order_by": {
"skipForAllEntries": true
},
"select_performance": false,
"select_single_full_key": true,
"selection_screen_naming": true,
"sequential_blank": { "sequential_blank": {
"lines": 4 "lines": 4
}, },
"short_case": { "short_case": {
"length": 1,
"allow": [ "allow": [
"iv_action", "iv_action",
"sy" "sy"
], ]
"length": 1
}, },
"sicf_consistency": true,
"slow_parameter_passing": true,
"smim_consistency": true,
"space_before_colon": true, "space_before_colon": true,
"space_before_dot": { "space_before_dot": {
"ignoreExceptions": true, "ignoreGlobalDefinition": true,
"ignoreGlobalDefinition": true "ignoreExceptions": true
}, },
"sql_escape_host_variables": true,
"sql_value_conversion": true,
"start_at_tab": true, "start_at_tab": true,
"static_call_via_instance": false,
"strict_sql": false,
"superclass_final": true, "superclass_final": true,
"superfluous_value": true,
"sy_modification": {
"exclude": [
"zcl_abapgit_objects_program.clas.abap"
]
},
"tabl_enhancement_category": true, "tabl_enhancement_category": true,
"try_without_catch": true,
"type_form_parameters": true, "type_form_parameters": true,
"types_naming": {
"exclude": [
"/json/"
],
"pattern": "^TY_.+$"
},
"uncaught_exception": true,
"unknown_types": true,
"unnecessary_chaining": false,
"unnecessary_pragma": {
"allowNoTextGlobal": true
},
"unnecessary_return": false,
"unreachable_code": true, "unreachable_code": true,
"unsecure_fae": false,
"unused_ddic": true,
"unused_methods": true,
"unused_types": {
"exclude": [
"/aff_types/"
]
},
"unused_variables": true,
"use_bool_expression": true,
"use_class_based_exceptions": {
"exclude": [
"zcl_abapgit_convert.clas.abap"
]
},
"use_line_exists": true,
"use_new": true, "use_new": true,
"when_others_last": true, "when_others_last": true,
"whitespace_end": true, "whitespace_end": true
"xml_consistency": true },
"targetRules": {
"unused_variables": false
} }
} }

View File

@ -8,236 +8,6 @@ Legend
+ : added + : added
- : removed - : removed
2025-01-01 v1.131.0
-------------------
! Remove need to `parallel_generators` server group (#7119)
+ VIEW: save `tddat` entries to transport (#7042)
+ Support for HTTP Destination (#7100)
+ Enhance logging with message id and number (#7111)
* Fix language conversion for language A (#7076)
* longtexts: workaround strange object names dump (#7077)
* SRVB: Clear fields and fix deserialize order (#7085)
* MSAG: Fix error handling during deletion (#7093)
* Fix error handling in exception viewer (#7095)
* Fix dark theme CSS whitespace (#7104)
* MSAG: Fix deletion of message longtexts (#7109)
* Fix RFC error handling (#7102)
* IDOC/IEXT: Fix deserialize in background (#7113)
* USCA: Fix missing transport entry (#7110)
* FUGS: Fix activation error (#7115)
* Limit number of GUI sessions (#7080)
* Fix dump when converting `xstring` to `bintab` (#7120)
2024-11-04 v1.130.0
-------------------
! PROG: Store flow logic as separate ABAP files (#7066)
! WDYN: Store controller code as separate ABAP files (#7069)
! SSFO: Store smartform code as separate ABAP files (#7071)
+ CLIF: Add missing translations for classes and interfaces (#6963)
+ UIAD: Add support for Launchpad App Descriptor Item (#6969)
+ BGQC: Add support for Background Processing Context (#6974)
+ DSFD: CDS Scalar Function Definition (#6951)
+ DRAS: CDS Aspect (#6953)
+ DSFI: CDS Scalar Function Implementation (#6952)
+ Add support for Software Component Relations (#7012)
* ENHO: Fix diff in generated comments of class enhancements (#6962)
* SXSD: Fix check if BADI exists (#6961)
* CDBO: Fix missing parameters in `constructor` (#6966)
* Fix dump in activation error handling (#6967)
* Fix deserialize SEOCLASSTX for INTF [AFF] (#6983)
* Allow staging for empty repositories (#6981)
* fix: syst_langu does not exist on older releases (#6999)
* fix sticky header with browser control warning (#6997)
* DSFI: Updated object handler to match the latest AFF definition (#7013)
* Filenames for translation are case sensitive (#6995)
* Enable deserialization of DSFD, DSFI and DRAS (#7029)
* PROG: Support dynpros with splitter control (#7035, #7038)
* Fix `CX_SY_ZERODIVIDE` dump in progress bar (#7036)
* JOBD: Clear `changedby` field (#7039)
* SFPF: Add syntax highlighting for `xdp` files (#7040)
* SFPF: Fix check if object exists (#7041)
* Add package check when creating repository (#7037)
* FUGS: serialization (#7045)
* Enable CDS types (#7048)
* Don't discard includes of nonexistent FUGR (#7053)
* Added enhanced method resolution for background exit (#7059)
* TABU: Display transport requests (#7063)
* Show diffs in case of trailing spaces (#7062)
- remove 200% icon scaling (#7003)
2024-07-01 v1.129.0
-------------------
+ DEVC,NSPC: Serialize software component for add-ons (#6891)
+ Where-used page (#6897)
+ CDBO: Customer Data Browser Object (#6930)
+ VIEW: Add authorization group to serialize and deserialize (#6918)
+ Exclude files from remote (#6942)
+ Read-only support for SXSD - Classic BAdI definition (#6958)
* Change message if local packages got lost (#6905)
* SOTS: Remove from TADIR selection (#6906)
* Fix bug in "Object to Files" Page. (#6908)
* DEVC: Fix "Package must be assigned to the software component LOCAL" (#6912)
* Improve error message for SUSH objects not being supported. (#6916)
* Use bcp47 language code for AFF (#6915)
* Suppress popup when using background API (#6926)
* Fix Issue Encountered on "Data Config" Page. (#6913)
* Bugfix, new pull page: decide package warnings (#6932)
* Set Character Limit for "Table" Field in Data Config page (#6934)
* ENHO: workaround dump during serialization (#6935)
* HOOK: catch exception (#6937)
* Sync UI theme in dark mode (#6940)
* Set Default Git User Details (#6920)
* Small performance improvement in folder logic (#6941)
* Fix folder logic buffer (#6945)
* Fix yank mode - copy to clipboad (#6946)
* Data serializer: fix carriage return problem (#6957)
* TABL: Clear DBINCLEXCL and DBSYSSELx fields (#6960)
2024-04-05 v1.128.0
-------------------
! Make HTTP/1.1 new default in abapGit (#6902)
! Distinguish between "Global Settings" and "Repository Settings" (#6759)
+ Add support for DRTY - CDS Type (#6767)
+ Add support for DTEB - CDS Entity Buffer (#6769)
+ Add "ignore sub-packages" option to package export (#6815)
+ HTTP connection check and improved error messages (#6806)
+ UIPG, UIST: Add support for Launchpad Page and Space Templates (#6873)
+ ENHO/ENHS: Add missing longtexts (#6890)
* Fix typos and adjust comments (#6778, #6779, #6780, #6783, #6785, #6786m #6858, #6864)
* User exit: include settings parameters in change_tadir() (#6775)
* Remove Duplicate Entries in Command Palette (#6763)
* Ignore macOS "Desktop Services Store" files (#6787)
* Fix ABAP Language Version Handling for Repository Setting "Any" for AFF Object Types (#6793)
* Fix bug in Command Palette (#6799)
* DIAL: Prefill package popup (#6805)
* XSLT: Add check for correct EOL separator (#6803)
* Update the text "Submit Query" in the Command Palette. (#6810)
* CLAS/INTF-SYNTAX_CHECK: Suppress status message (#6812)
* Improve error messages when checking branches/tags (#6814)
* Improve form validation of text fields (#6813)
* Fix bug in Personal settings page (#6818)
* Fix Navigation Issue in "Config Display" and "Config Edit" pages. (#6820)
* Fix Filter Application Bug (#6824)
* Change transport type when setting original system (#6816)
* FORM: Fix existence check (#6832)
* Apack: fix namespace problem (#6841)
* Remove duplicate labels from Command Palette. (#6821)
* IDOC: Fix MOVE_TO_LIT_NOTALLOWED_NODATA (#6852)
* SICF: Include alternate service name (#6853)
* Apack: additional namespace case (#6851)
* SFPI: exists() also look for inactive objects (#6867)
* Code inspector pages improvements (#6862)
* AFF: deserialize translation files (#6830)
* Fix Unexpected Functionality for "Maximum Length of Comment" Field (#6871)
* Avoid popup on exit after saving remote settings (#6875)
* Fix Hint for "Maximum Length of Comment" Field (#6877)
* Fix changing transport type when setting original system (#6870)
* Limit Package Name to 30 characters (#6889)
* Item graph: performance (#6885)
* Add specific error message for 426 http error (#6901)
2024-01-24 v1.127.0
-------------------
+ Flow Page (beta, https://docs.abapgit.org/user-guide/reference/flow.html)
+ Repo List: Make labels clickable (#6651)
+ Support short/long timestamps in field rules (#6666)
+ Add "Ignore" option for ABAP Language Version (#6663)
+ Add some stats for DB view (#6675)
+ Remember last used folder (#6677)
+ Debug info: Show exits coded in exit super class (#6708)
+ New feature: Original system (#6715)
* Prevent calls to exit implementations in tests (#6653)
* Disable superfluous check for offline repos (#6662)
* Fix filename for export to ZIP (#6664, #6665)
* DDLX: Set "Changed At" and "Changed By" (#6661)
* Fix home and back again (#6670)
* Debug page: open external links in new window (#6671)
* Fix running multiple instances of abapGit (#6679)
* CLAS: Fix deserializing child exception classes (#6682)
* IOBJ: Fix uninstall (#6685)
* TABU: Fix staging in background process (#6683)
* TABU: Fix deserializing data config (#6684)
* Check for ABAP language version during serialize (#6681)
* TSTC select, ABAP Cloud/Steampunk compatibility (#6695)
* Fix ABAP language version check (#6693)
* CLAS: Avoid popups in lower releases (#6709)
* FUGR: Fix check if include belong to function grp (#6711)
* Add object type to error message (#6714)
* Fix abapGit popups external call (#6716)
* Refresh repository to reduce memory usage in background mode (#6728)
* Remove exception when deleting files (#6729)
* Do a syntax check before accessing version constant (#6733)
* Avoid loss of log during background processing (#6736)
* Fix APACK issues (#6743)
* DDLS: deletes remaining TADIR entry during delete (#6745)
* Fix: Cannot change repo settings without version constant (#6753)
* Create package popup: Fix prefill package name (#6752)
* BG: Ensure auth buffer is cleared even in error case (#6756)
* Fix empty JSON file for AFF based objects (#6766)
2023-11-16 v1.126.0
-------------------
! Add ABAP Language Version to repo settings (experimental feature) (#6476,#6484,#6486,#6487,#6488,#6525,#6603)
! IAMU v2: Serialize MIMEs as separate file + fixes (#6515)
! SRVB: Clear metadata links (#6550)
! Change the order of popups on pull; first check prerequisites and dependencies (#6613)
! Add "name" to repository settings (#6633,#6634,#6635,#6637)
+ Add option to remove all objects but keep repository (#6499)
+ Diff View: Collapse/expand all diffs (#6511)
+ Add back button to DB page (#6521)
+ unit test page: add re-run button (#6533)
+ Improve unit test page (#6543)
+ DB edit+display page: add back button (#6545)
+ Add exit to adjust rfc server group for parallel serialization (#6503)
+ Implement changed_by for several objects (#6554)
+ Repo View: Shorten URL display (#6555)
+ Pass repo metadata to adjust_display_filename exit (#6556)
+ Improve Backup (#6617)
+ Enhance repo labels (#6442)
* Repo view: Fix display of original system (#6478)
* Consider filter at zcl_abapgit_repo_status=>calculate (#6480)
* Escape display name for javascript repo catalog (#6482)
* Remove test data container variants on pull that do not exist on the remote (#6493)
* ECTD: Fix diff after import based on sort order (#6494)
* CMPT: Remove redundant and admin fields from XML (#6502)
* Fix dump in when using namespaced package for repo (#6500)
* Do not assign T packages to a transport request (#6506)
* Fix command palette default form action with edge (#6508)
* Fix link hints for radio buttons with edge control (#6509)
* Fix unit tests in zcl_abapgit_abap_language_vers (#6516)
* SFxx: Fix missing lock checks and unlocking (#6519)
* Diff: Fix refresh of single file (#6524)
* CUS2: Add missing tadir and transport entries (#6527)
* CMPT: Fix missing transport entry on deletion (#6526)
* Fix ignoring sub-packages when adding offline repo (#6538)
* TOBJ: Serialization shows diffs on an HANA database (#6547)
* Fix 'determine_max_processes' for disabled Parallel Processing and Merged abapGit (#6559)
* PROG, FUGR: Fix handling of inactive code (#6557)
* TABL: Drop secondary indexes on pull (#6578)
* PR ENUM: fix for private repos (#6592)
* Add version constant back to repo settings (#6596)
* zlib performance optimizations (#6597)
* FUGR: Fix import of template screens (#6582)
* Show object type in activation log (#6611)
* Fix "Open in Main Language" if language is not installed (#6610)
* APACK: Manifest interface in sub-package (#6614)
* SSFO: Fix order of T_CAPTION data (#6609)
* Fix dump restoring abapGit backup (#6621)
* Fix typo in "orange" label (#6622)
* Sort pull request popup (#6623)
* SAP GUI for HTML: Fix dialog buttons (#6566)
* APACK: Allow overwriting missing dependencies (#6612)
* INTF: Fix file format feature switch (#6628)
* Fix text field when switching to offline (#6632)
* Fix APACK for namespaces (#6639)
* Fix deletion/uninstall when using local settings (#6640)
* Fix APACK performance (#6649)
2023-09-06 v1.125.0 2023-09-06 v1.125.0
------------------- -------------------
@ -255,10 +25,10 @@ Legend
+ APIS: API Release State (#6403) + APIS: API Release State (#6403)
+ IWOM/IWPR/TRAN: Implement changed_by (#6411) + IWOM/IWPR/TRAN: Implement changed_by (#6411)
+ Add online/offline filter option for repo list (#6449) + Add online/offline filter option for repo list (#6449)
* Don't dump for unknown frontend (#6302) * Dont dump for unknown frontend (#6302)
* IDOC, TABL: Set released and closed status (#6306) * IDOC, TABL: Set released and closed status (#6306)
* Fix is_dirty check for Repo Settings (#6309) * Fix is_dirty check for Repo Settings (#6309)
* Unit test page: don't show SAUNIT_NO_TEST_CLASS err (#6310) * Unit test page: dont show SAUNIT_NO_TEST_CLASS err (#6310)
* Fixed links to new documentation (#6319) * Fixed links to new documentation (#6319)
* Fix "Data" page: On back go back (#6322) * Fix "Data" page: On back go back (#6322)
* OO serializer: skip includes not found (#6324) * OO serializer: skip includes not found (#6324)
@ -1703,7 +1473,7 @@ Legend
------------------ ------------------
* minor fixes for tags * minor fixes for tags
* downport * downport
* fix serialization of SXCI in background mode * fix serilization of SXCI in background mode
2018-01-03 v1.51.0 2018-01-03 v1.51.0
------------------ ------------------

View File

@ -68,8 +68,6 @@
"skwfc_obtype_folder", "skwfc_obtype_folder",
"skwfc_obtype_loio", "skwfc_obtype_loio",
"so2_controller", "so2_controller",
"srext_ext_class_pool",
"srext_ext_interface_pool",
"ststc_c_type_dialog", "ststc_c_type_dialog",
"ststc_c_type_object", "ststc_c_type_object",
"ststc_c_type_parameters", "ststc_c_type_parameters",

61
deps/cdnames.tabl.xml vendored
View File

@ -1,61 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<abapGit version="v1.0.0" serializer="LCL_OBJECT_TABL" serializer_version="v1.0.0">
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
<asx:values>
<DD02V>
<TABNAME>CDNAMES</TABNAME>
<DDLANGUAGE>E</DDLANGUAGE>
<TABCLASS>INTTAB</TABCLASS>
<DDTEXT>CDNAMES</DDTEXT>
<EXCLASS>1</EXCLASS>
</DD02V>
<DD03P_TABLE>
<DD03P>
<FIELDNAME>REPNAMEC</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000002</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000001</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>REPNAMET</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000002</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000001</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>REPNAMEFIX</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000002</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000001</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>REPNAMEVAR</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000002</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000001</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>FGRP</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000002</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000001</LENG>
<MASK> CHAR</MASK>
</DD03P>
</DD03P_TABLE>
</asx:values>
</asx:abap>
</abapGit>

View File

@ -1,24 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<abapGit version="v1.0.0" serializer="LCL_OBJECT_DTEL" serializer_version="v1.0.0">
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
<asx:values>
<DD04V>
<ROLLNAME>CDOBJECTCL</ROLLNAME>
<DDLANGUAGE>E</DDLANGUAGE>
<HEADLEN>15</HEADLEN>
<SCRLEN1>10</SCRLEN1>
<SCRLEN2>20</SCRLEN2>
<SCRLEN3>40</SCRLEN3>
<DDTEXT>CDOBJECTCL</DDTEXT>
<REPTEXT>CDOBJECTCL</REPTEXT>
<SCRTEXT_S>CDOBJECTCL</SCRTEXT_S>
<SCRTEXT_M>CDOBJECTCL</SCRTEXT_M>
<SCRTEXT_L>CDOBJECTCL</SCRTEXT_L>
<DTELMASTER>E</DTELMASTER>
<DATATYPE>CHAR</DATATYPE>
<LENG>000015</LENG>
<OUTPUTLEN>000015</OUTPUTLEN>
</DD04V>
</asx:values>
</asx:abap>
</abapGit>

View File

@ -2,10 +2,10 @@ CLASS cl_package_factory DEFINITION PUBLIC.
PUBLIC SECTION. PUBLIC SECTION.
CLASS-METHODS load_package CLASS-METHODS load_package
IMPORTING IMPORTING
i_package_name TYPE devclass i_package_name TYPE devclass
VALUE(i_force_reload) TYPE abap_bool OPTIONAL VALUE(i_force_reload) TYPE abap_bool OPTIONAL
EXPORTING EXPORTING
VALUE(e_package) TYPE REF TO if_package VALUE(e_package) TYPE REF TO if_package
EXCEPTIONS EXCEPTIONS
object_not_existing object_not_existing
unexpected_error unexpected_error
@ -19,9 +19,9 @@ CLASS cl_package_factory DEFINITION PUBLIC.
!i_suppress_dialog TYPE abap_bool DEFAULT abap_false !i_suppress_dialog TYPE abap_bool DEFAULT abap_false
!i_suppress_access_permission TYPE abap_bool DEFAULT abap_false !i_suppress_access_permission TYPE abap_bool DEFAULT abap_false
EXPORTING EXPORTING
VALUE(e_package) TYPE REF TO if_package VALUE(e_package) TYPE REF TO if_package
CHANGING CHANGING
c_package_data TYPE any. c_package_data TYPE any.
ENDCLASS. ENDCLASS.
CLASS cl_package_factory IMPLEMENTATION. CLASS cl_package_factory IMPLEMENTATION.

View File

@ -1,25 +0,0 @@
CLASS cl_package_helper DEFINITION PUBLIC.
PUBLIC SECTION.
CLASS-METHODS check_package_name
IMPORTING
i_package_name TYPE any.
CLASS-METHODS check_package_existence
IMPORTING
i_package_name TYPE any
EXPORTING
e_package_exists TYPE abap_bool.
ENDCLASS.
CLASS cl_package_helper IMPLEMENTATION.
METHOD check_package_name.
ASSERT i_package_name IS NOT INITIAL.
ENDMETHOD.
METHOD check_package_existence.
ASSERT i_package_name IS NOT INITIAL.
e_package_exists = abap_true.
ENDMETHOD.
ENDCLASS.

61
deps/cvers.tabl.xml vendored
View File

@ -1,61 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<abapGit version="v1.0.0" serializer="LCL_OBJECT_TABL" serializer_version="v1.0.0">
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
<asx:values>
<DD02V>
<TABNAME>CVERS</TABNAME>
<DDLANGUAGE>E</DDLANGUAGE>
<TABCLASS>TRANSP</TABCLASS>
<CONTFLAG>W</CONTFLAG>
</DD02V>
<DD09L>
<TABNAME>CVERS</TABNAME>
<AS4LOCAL>A</AS4LOCAL>
<TABKAT>0</TABKAT>
<TABART>APPL0</TABART>
<PUFFERUNG>X</PUFFERUNG>
<BUFALLOW>X</BUFALLOW>
</DD09L>
<DD03P_TABLE>
<DD03P>
<FIELDNAME>COMPONENT</FIELDNAME>
<KEYFLAG>X</KEYFLAG>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000060</INTLEN>
<NOTNULL>X</NOTNULL>
<DATATYPE>CHAR</DATATYPE>
<LENG>000030</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>RELEASE</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000020</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000010</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>EXTRELEASE</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000020</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000010</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>COMP_TYPE</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000002</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000001</LENG>
<MASK> CHAR</MASK>
</DD03P>
</DD03P_TABLE>
</asx:values>
</asx:abap>
</abapGit>

View File

@ -1,54 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<abapGit version="v1.0.0" serializer="LCL_OBJECT_TABL" serializer_version="v1.0.0">
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
<asx:values>
<DD02V>
<TABNAME>CVERS_REF</TABNAME>
<DDLANGUAGE>E</DDLANGUAGE>
<TABCLASS>TRANSP</TABCLASS>
<CONTFLAG>W</CONTFLAG>
</DD02V>
<DD09L>
<TABNAME>CVERS</TABNAME>
<AS4LOCAL>A</AS4LOCAL>
<TABKAT>0</TABKAT>
<TABART>APPL0</TABART>
<PUFFERUNG>X</PUFFERUNG>
<BUFALLOW>X</BUFALLOW>
</DD09L>
<DD03P_TABLE>
<DD03P>
<FIELDNAME>COMPONENT</FIELDNAME>
<KEYFLAG>X</KEYFLAG>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000060</INTLEN>
<NOTNULL>X</NOTNULL>
<DATATYPE>CHAR</DATATYPE>
<LENG>000030</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>LANGU</FIELDNAME>
<KEYFLAG>X</KEYFLAG>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000002</INTLEN>
<NOTNULL>X</NOTNULL>
<DATATYPE>CHAR</DATATYPE>
<LENG>000001</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>DESC_TEXT</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000160</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000080</LENG>
<MASK> CHAR</MASK>
</DD03P>
</DD03P_TABLE>
</asx:values>
</asx:abap>
</abapGit>

62
deps/dd02t.tabl.xml vendored
View File

@ -1,62 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<abapGit version="v1.0.0" serializer="LCL_OBJECT_TABL" serializer_version="v1.0.0">
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
<asx:values>
<DD02V>
<TABNAME>DD02T</TABNAME>
<DDLANGUAGE>E</DDLANGUAGE>
<TABCLASS>INTTAB</TABCLASS>
<DDTEXT>DD02T</DDTEXT>
<EXCLASS>1</EXCLASS>
</DD02V>
<DD03P_TABLE>
<DD03P>
<FIELDNAME>TABNAME</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000060</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000030</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>DDLANGUAGE</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000002</INTLEN>
<DATATYPE>LANG</DATATYPE>
<LENG>000001</LENG>
<MASK> LANG</MASK>
<LANGUFLAG>X</LANGUFLAG>
</DD03P>
<DD03P>
<FIELDNAME>AS4LOCAL</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000002</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000001</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>AS4VERS</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>N</INTTYPE>
<INTLEN>000008</INTLEN>
<DATATYPE>NUMC</DATATYPE>
<LENG>000004</LENG>
<MASK> NUMC</MASK>
</DD03P>
<DD03P>
<FIELDNAME>DDTEXT</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000120</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000060</LENG>
<MASK> CHAR</MASK>
</DD03P>
</DD03P_TABLE>
</asx:values>
</asx:abap>
</abapGit>

460
deps/dd02v.tabl.xml vendored
View File

@ -1,460 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<abapGit version="v1.0.0" serializer="LCL_OBJECT_TABL" serializer_version="v1.0.0">
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
<asx:values>
<DD02V>
<TABNAME>DD02V</TABNAME>
<DDLANGUAGE>E</DDLANGUAGE>
<TABCLASS>INTTAB</TABCLASS>
<DDTEXT>DD02V</DDTEXT>
<EXCLASS>1</EXCLASS>
</DD02V>
<DD03P_TABLE>
<DD03P>
<FIELDNAME>TABNAME</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000060</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000030</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>DDLANGUAGE</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000002</INTLEN>
<DATATYPE>LANG</DATATYPE>
<LENG>000001</LENG>
<MASK> LANG</MASK>
<LANGUFLAG>X</LANGUFLAG>
</DD03P>
<DD03P>
<FIELDNAME>TABCLASS</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000016</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000008</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>SQLTAB</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000060</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000030</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>DATMIN</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>N</INTTYPE>
<INTLEN>000020</INTLEN>
<DATATYPE>NUMC</DATATYPE>
<LENG>000010</LENG>
<MASK> NUMC</MASK>
</DD03P>
<DD03P>
<FIELDNAME>DATMAX</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>N</INTTYPE>
<INTLEN>000020</INTLEN>
<DATATYPE>NUMC</DATATYPE>
<LENG>000010</LENG>
<MASK> NUMC</MASK>
</DD03P>
<DD03P>
<FIELDNAME>DATAVG</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>N</INTTYPE>
<INTLEN>000020</INTLEN>
<DATATYPE>NUMC</DATATYPE>
<LENG>000010</LENG>
<MASK> NUMC</MASK>
</DD03P>
<DD03P>
<FIELDNAME>CLIDEP</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000002</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000001</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>BUFFERED</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000002</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000001</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>COMPRFLAG</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000002</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000001</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>LANGDEP</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000002</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000001</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>DDTEXT</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000120</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000060</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>ACTFLAG</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000002</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000001</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>APPLCLASS</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000008</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000004</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>AUTHCLASS</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>N</INTTYPE>
<INTLEN>000004</INTLEN>
<DATATYPE>NUMC</DATATYPE>
<LENG>000002</LENG>
<MASK> NUMC</MASK>
</DD03P>
<DD03P>
<FIELDNAME>AS4USER</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000024</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000012</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>AS4DATE</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>D</INTTYPE>
<INTLEN>000016</INTLEN>
<DATATYPE>DATS</DATATYPE>
<LENG>000008</LENG>
<MASK> DATS</MASK>
<SHLPORIGIN>T</SHLPORIGIN>
</DD03P>
<DD03P>
<FIELDNAME>AS4TIME</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>T</INTTYPE>
<INTLEN>000012</INTLEN>
<DATATYPE>TIMS</DATATYPE>
<LENG>000006</LENG>
<MASK> TIMS</MASK>
<SHLPORIGIN>T</SHLPORIGIN>
</DD03P>
<DD03P>
<FIELDNAME>MASTERLANG</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000002</INTLEN>
<DATATYPE>LANG</DATATYPE>
<LENG>000001</LENG>
<MASK> LANG</MASK>
</DD03P>
<DD03P>
<FIELDNAME>MAINFLAG</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000002</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000001</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>CONTFLAG</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000002</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000001</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>RESERVETAB</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000008</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000004</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>GLOBALFLAG</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000002</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000001</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>PROZPUFF</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>N</INTTYPE>
<INTLEN>000006</INTLEN>
<DATATYPE>NUMC</DATATYPE>
<LENG>000003</LENG>
<MASK> NUMC</MASK>
</DD03P>
<DD03P>
<FIELDNAME>VIEWCLASS</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000002</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000001</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>VIEWGRANT</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000002</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000001</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>MULTIPLEX</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000002</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000001</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>SHLPEXI</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000002</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000001</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>PROXYTYPE</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000002</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000001</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>EXCLASS</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>N</INTTYPE>
<INTLEN>000002</INTLEN>
<DATATYPE>NUMC</DATATYPE>
<LENG>000001</LENG>
<MASK> NUMC</MASK>
</DD03P>
<DD03P>
<FIELDNAME>WRONGCL</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000002</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000001</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>ALWAYSTRP</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000002</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000001</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>ALLDATAINCL</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000002</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000001</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>WITH_PARAMETERS</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000002</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000001</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>EXVIEW_INCLUDED</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000002</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000001</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>KEYMAX_FEATURE</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000002</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000001</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>KEYLEN_FEATURE</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000002</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000001</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>TABLEN_FEATURE</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000002</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000001</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>NONTRP_INCLUDED</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000002</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000001</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>VIEWREF</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000060</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000030</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>VIEWREF_ERR</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000002</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000001</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>VIEWREF_POS_CHG</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000002</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000001</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>TBFUNC_INCLUDED</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000002</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000001</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>IS_GTT</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000002</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000001</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>SESSION_VAR_EX</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000002</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000001</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>FROM_ENTITY</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000002</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000001</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>PK_IS_INVHASH</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000002</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000001</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>USED_SESSION_VARS</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000010</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000005</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>HDB_ONLY_ENTITY_INCLUDED</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000002</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000001</LENG>
<MASK> CHAR</MASK>
</DD03P>
</DD03P_TABLE>
</asx:values>
</asx:abap>
</abapGit>

691
deps/dd03p.tabl.xml vendored
View File

@ -1,691 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<abapGit version="v1.0.0" serializer="LCL_OBJECT_TABL" serializer_version="v1.0.0">
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
<asx:values>
<DD02V>
<TABNAME>DD03P</TABNAME>
<DDLANGUAGE>E</DDLANGUAGE>
<TABCLASS>INTTAB</TABCLASS>
<DDTEXT>DD03P</DDTEXT>
<EXCLASS>1</EXCLASS>
</DD02V>
<DD03P_TABLE>
<DD03P>
<FIELDNAME>TABNAME</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000060</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000030</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>FIELDNAME</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000060</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000030</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>DDLANGUAGE</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000002</INTLEN>
<DATATYPE>LANG</DATATYPE>
<LENG>000001</LENG>
<MASK> LANG</MASK>
</DD03P>
<DD03P>
<FIELDNAME>POSITION</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>N</INTTYPE>
<INTLEN>000008</INTLEN>
<DATATYPE>NUMC</DATATYPE>
<LENG>000004</LENG>
<MASK> NUMC</MASK>
</DD03P>
<DD03P>
<FIELDNAME>KEYFLAG</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000002</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000001</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>MANDATORY</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000002</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000001</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>ROLLNAME</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000060</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000030</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>CHECKTABLE</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000060</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000030</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>ADMINFIELD</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000002</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000001</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>INTTYPE</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000002</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000001</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>INTLEN</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>N</INTTYPE>
<INTLEN>000012</INTLEN>
<DATATYPE>NUMC</DATATYPE>
<LENG>000006</LENG>
<MASK> NUMC</MASK>
</DD03P>
<DD03P>
<FIELDNAME>REFTABLE</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000060</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000030</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>PRECFIELD</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000060</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000030</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>REFFIELD</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000060</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000030</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>CONROUT</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000020</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000010</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>NOTNULL</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000002</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000001</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>DOMNAME</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000060</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000030</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>ROUTPUTLEN</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>N</INTTYPE>
<INTLEN>000012</INTLEN>
<DATATYPE>NUMC</DATATYPE>
<LENG>000006</LENG>
<MASK> NUMC</MASK>
</DD03P>
<DD03P>
<FIELDNAME>MEMORYID</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000040</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000020</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>LOGFLAG</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000002</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000001</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>HEADLEN</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>N</INTTYPE>
<INTLEN>000004</INTLEN>
<DATATYPE>NUMC</DATATYPE>
<LENG>000002</LENG>
<MASK> NUMC</MASK>
</DD03P>
<DD03P>
<FIELDNAME>SCRLEN1</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>N</INTTYPE>
<INTLEN>000004</INTLEN>
<DATATYPE>NUMC</DATATYPE>
<LENG>000002</LENG>
<MASK> NUMC</MASK>
</DD03P>
<DD03P>
<FIELDNAME>SCRLEN2</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>N</INTTYPE>
<INTLEN>000004</INTLEN>
<DATATYPE>NUMC</DATATYPE>
<LENG>000002</LENG>
<MASK> NUMC</MASK>
</DD03P>
<DD03P>
<FIELDNAME>SCRLEN3</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>N</INTTYPE>
<INTLEN>000004</INTLEN>
<DATATYPE>NUMC</DATATYPE>
<LENG>000002</LENG>
<MASK> NUMC</MASK>
</DD03P>
<DD03P>
<FIELDNAME>DTELGLOBAL</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000002</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000001</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>DTELMASTER</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000002</INTLEN>
<DATATYPE>LANG</DATATYPE>
<LENG>000001</LENG>
<MASK> LANG</MASK>
</DD03P>
<DD03P>
<FIELDNAME>RESERVEDTE</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000008</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000004</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>DATATYPE</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000008</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000004</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>LENG</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>N</INTTYPE>
<INTLEN>000012</INTLEN>
<DATATYPE>NUMC</DATATYPE>
<LENG>000006</LENG>
<MASK> NUMC</MASK>
</DD03P>
<DD03P>
<FIELDNAME>OUTPUTLEN</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>N</INTTYPE>
<INTLEN>000012</INTLEN>
<DATATYPE>NUMC</DATATYPE>
<LENG>000006</LENG>
<MASK> NUMC</MASK>
</DD03P>
<DD03P>
<FIELDNAME>DECIMALS</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>N</INTTYPE>
<INTLEN>000012</INTLEN>
<DATATYPE>NUMC</DATATYPE>
<LENG>000006</LENG>
<MASK> NUMC</MASK>
</DD03P>
<DD03P>
<FIELDNAME>LOWERCASE</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000002</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000001</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>SIGNFLAG</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000002</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000001</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>LANGFLAG</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000002</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000001</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>VALEXI</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000002</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000001</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>ENTITYTAB</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000060</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000030</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>CONVEXIT</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000010</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000005</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>MASK</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000040</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000020</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>MASKLEN</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>N</INTTYPE>
<INTLEN>000008</INTLEN>
<DATATYPE>NUMC</DATATYPE>
<LENG>000004</LENG>
<MASK> NUMC</MASK>
</DD03P>
<DD03P>
<FIELDNAME>ACTFLAG</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000002</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000001</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>DDTEXT</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000120</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000060</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>REPTEXT</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000110</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000055</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>SCRTEXT_S</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000020</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000010</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>SCRTEXT_M</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000040</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000020</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>SCRTEXT_L</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000080</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000040</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>DOMMASTER</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000002</INTLEN>
<DATATYPE>LANG</DATATYPE>
<LENG>000001</LENG>
<MASK> LANG</MASK>
</DD03P>
<DD03P>
<FIELDNAME>RESERVEDOM</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000008</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000004</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>DOMGLOBAL</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000002</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000001</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>DOMNAME3L</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000060</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000030</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>SHLPORIGIN</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000002</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000001</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>SHLPNAME</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000060</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000030</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>SHLPFIELD</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000060</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000030</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>TABLETYPE</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000002</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000001</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>DEPTH</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>N</INTTYPE>
<INTLEN>000004</INTLEN>
<DATATYPE>NUMC</DATATYPE>
<LENG>000002</LENG>
<MASK> NUMC</MASK>
</DD03P>
<DD03P>
<FIELDNAME>COMPTYPE</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000002</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000001</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>DEFFDNAME</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000060</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000030</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>GROUPNAME</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000060</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000030</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>REFTYPE</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000002</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000001</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>PROXYTYPE</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000002</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000001</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>LANGUFLAG</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000002</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000001</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>EXCLASS</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>N</INTTYPE>
<INTLEN>000002</INTLEN>
<DATATYPE>NUMC</DATATYPE>
<LENG>000001</LENG>
<MASK> NUMC</MASK>
</DD03P>
<DD03P>
<FIELDNAME>LTRFLDDIS</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000002</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000001</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>BIDICTRLC</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000002</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000001</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>DBPOSITION</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>N</INTTYPE>
<INTLEN>000008</INTLEN>
<DATATYPE>NUMC</DATATYPE>
<LENG>000004</LENG>
<MASK> NUMC</MASK>
</DD03P>
<DD03P>
<FIELDNAME>ANONYMOUS</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000002</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000001</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>OUTPUTSTYLE</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>N</INTTYPE>
<INTLEN>000004</INTLEN>
<DATATYPE>NUMC</DATATYPE>
<LENG>000002</LENG>
<MASK> NUMC</MASK>
</DD03P>
<DD03P>
<FIELDNAME>NOHISTORY</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000002</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000001</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>AMPMFORMAT</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000002</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000001</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>STREAMORLOC</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000002</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000001</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>STRORLOCPOS</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>N</INTTYPE>
<INTLEN>000004</INTLEN>
<DATATYPE>NUMC</DATATYPE>
<LENG>000002</LENG>
<MASK> NUMC</MASK>
</DD03P>
<DD03P>
<FIELDNAME>SQL_PASSVALUE</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000002</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000001</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>IS_VIRTUAL</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000002</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000001</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>IS_CALCULATED</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000002</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000001</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>EXTENDNAME</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000060</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000030</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>SRS_ID</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>N</INTTYPE>
<INTLEN>000020</INTLEN>
<DATATYPE>NUMC</DATATYPE>
<LENG>000010</LENG>
<MASK> NUMC</MASK>
</DD03P>
</DD03P_TABLE>
</asx:values>
</asx:abap>
</abapGit>

115
deps/dd05m.tabl.xml vendored
View File

@ -1,115 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<abapGit version="v1.0.0" serializer="LCL_OBJECT_TABL" serializer_version="v1.0.0">
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
<asx:values>
<DD02V>
<TABNAME>DD05M</TABNAME>
<DDLANGUAGE>E</DDLANGUAGE>
<TABCLASS>INTTAB</TABCLASS>
<DDTEXT>DD05M</DDTEXT>
<EXCLASS>1</EXCLASS>
</DD02V>
<DD03P_TABLE>
<DD03P>
<FIELDNAME>TABNAME</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000060</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000030</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>FIELDNAME</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000060</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000030</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>FORTABLE</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000060</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000030</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>FORKEY</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000060</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000030</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>CHECKTABLE</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000060</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000030</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>CHECKFIELD</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000060</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000030</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>PRIMPOS</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>N</INTTYPE>
<INTLEN>000008</INTLEN>
<DATATYPE>NUMC</DATATYPE>
<LENG>000004</LENG>
<MASK> NUMC</MASK>
</DD03P>
<DD03P>
<FIELDNAME>DOMNAME</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000060</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000030</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>DATATYPE</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000008</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000004</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>LENG</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>N</INTTYPE>
<INTLEN>000012</INTLEN>
<DATATYPE>NUMC</DATATYPE>
<LENG>000006</LENG>
<MASK> NUMC</MASK>
</DD03P>
<DD03P>
<FIELDNAME>FORSTRING</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000120</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000060</LENG>
<MASK> CHAR</MASK>
</DD03P>
</DD03P_TABLE>
</asx:values>
</asx:abap>
</abapGit>

143
deps/dd08v.tabl.xml vendored
View File

@ -1,143 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<abapGit version="v1.0.0" serializer="LCL_OBJECT_TABL" serializer_version="v1.0.0">
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
<asx:values>
<DD02V>
<TABNAME>DD08V</TABNAME>
<DDLANGUAGE>E</DDLANGUAGE>
<TABCLASS>INTTAB</TABCLASS>
<DDTEXT>DD08V</DDTEXT>
<EXCLASS>1</EXCLASS>
</DD02V>
<DD03P_TABLE>
<DD03P>
<FIELDNAME>TABNAME</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000060</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000030</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>FIELDNAME</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000060</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000030</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>DDLANGUAGE</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000002</INTLEN>
<DATATYPE>LANG</DATATYPE>
<LENG>000001</LENG>
<MASK> LANG</MASK>
<LANGUFLAG>X</LANGUFLAG>
</DD03P>
<DD03P>
<FIELDNAME>CHECKTABLE</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000060</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000030</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>FRKART</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000008</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000004</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>CLASFIELD</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000060</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000030</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>CLASVALUE</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000020</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000010</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>CARD</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000004</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000002</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>CHECKFLAG</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000002</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000001</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>DDTEXT</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000120</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000060</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>ARBGB</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000040</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000020</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>MSGNR</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000006</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000003</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>NOINHERIT</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000002</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000001</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>CARDLEFT</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000004</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000002</LENG>
<MASK> CHAR</MASK>
</DD03P>
</DD03P_TABLE>
</asx:values>
</asx:abap>
</abapGit>

316
deps/dd12v.tabl.xml vendored
View File

@ -1,316 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<abapGit version="v1.0.0" serializer="LCL_OBJECT_TABL" serializer_version="v1.0.0">
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
<asx:values>
<DD02V>
<TABNAME>DD12V</TABNAME>
<DDLANGUAGE>E</DDLANGUAGE>
<TABCLASS>INTTAB</TABCLASS>
<DDTEXT>DD12V</DDTEXT>
<EXCLASS>1</EXCLASS>
</DD02V>
<DD03P_TABLE>
<DD03P>
<FIELDNAME>SQLTAB</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000060</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000030</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>INDEXNAME</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000006</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000003</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>AS4LOCAL</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000002</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000001</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>AS4VERS</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>N</INTTYPE>
<INTLEN>000008</INTLEN>
<DATATYPE>NUMC</DATATYPE>
<LENG>000004</LENG>
<MASK> NUMC</MASK>
</DD03P>
<DD03P>
<FIELDNAME>DDLANGUAGE</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000002</INTLEN>
<DATATYPE>LANG</DATATYPE>
<LENG>000001</LENG>
<MASK> LANG</MASK>
<LANGUFLAG>X</LANGUFLAG>
</DD03P>
<DD03P>
<FIELDNAME>AUTHCLASS</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>N</INTTYPE>
<INTLEN>000004</INTLEN>
<DATATYPE>NUMC</DATATYPE>
<LENG>000002</LENG>
<MASK> NUMC</MASK>
</DD03P>
<DD03P>
<FIELDNAME>UNIQUEFLAG</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000002</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000001</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>AS4USER</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000024</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000012</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>AS4DATE</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>D</INTTYPE>
<INTLEN>000016</INTLEN>
<DATATYPE>DATS</DATATYPE>
<LENG>000008</LENG>
<MASK> DATS</MASK>
<SHLPORIGIN>T</SHLPORIGIN>
</DD03P>
<DD03P>
<FIELDNAME>AS4TIME</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>T</INTTYPE>
<INTLEN>000012</INTLEN>
<DATATYPE>TIMS</DATATYPE>
<LENG>000006</LENG>
<MASK> TIMS</MASK>
<SHLPORIGIN>T</SHLPORIGIN>
</DD03P>
<DD03P>
<FIELDNAME>ACTFLAG</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000002</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000001</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>DBINDEX</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000080</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000040</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>DBSTATE</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000002</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000001</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>DBINCLEXCL</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000002</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000001</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>DBSYSSEL1</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000006</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000003</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>DBSYSSEL2</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000006</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000003</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>DBSYSSEL3</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000006</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000003</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>DBSYSSEL4</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000006</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000003</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>DDTEXT</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000120</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000060</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>ISEXTIND</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000002</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000001</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>FULL_TEXT</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000002</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000001</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>LANGU_COLUMN</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000060</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000030</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>MIME_TYPE_COL</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000060</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000030</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>MIME_TYPE</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000254</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000127</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>LANGU_DETECTION</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000400</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000200</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>FAST_PREPROCESS</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000002</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000001</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>FUZZY_SEARCH_INDX</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000002</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000001</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>SEARCH_ONLY</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000002</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000001</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>UPDATE_MODE</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000020</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000010</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>CONFIGURATION</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000002</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000001</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>PHRASE_INDX_RATIO</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>N</INTTYPE>
<INTLEN>000006</INTLEN>
<DATATYPE>NUMC</DATATYPE>
<LENG>000003</LENG>
<MASK> NUMC</MASK>
</DD03P>
<DD03P>
<FIELDNAME>TEXT_ANALYSIS</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000002</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000001</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>TOKEN_SEPARATORS</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000100</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000050</LENG>
<MASK> CHAR</MASK>
</DD03P>
</DD03P_TABLE>
</asx:values>
</asx:abap>
</abapGit>

89
deps/dd17v.tabl.xml vendored
View File

@ -1,89 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<abapGit version="v1.0.0" serializer="LCL_OBJECT_TABL" serializer_version="v1.0.0">
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
<asx:values>
<DD02V>
<TABNAME>DD17V</TABNAME>
<DDLANGUAGE>E</DDLANGUAGE>
<TABCLASS>INTTAB</TABCLASS>
<DDTEXT>DD17V</DDTEXT>
<EXCLASS>1</EXCLASS>
</DD02V>
<DD03P_TABLE>
<DD03P>
<FIELDNAME>DDLANGUAGE</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000002</INTLEN>
<DATATYPE>LANG</DATATYPE>
<LENG>000001</LENG>
<MASK> LANG</MASK>
<LANGUFLAG>X</LANGUFLAG>
</DD03P>
<DD03P>
<FIELDNAME>SQLTAB</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000060</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000030</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>INDEXNAME</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000006</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000003</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>POSITION</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>N</INTTYPE>
<INTLEN>000008</INTLEN>
<DATATYPE>NUMC</DATATYPE>
<LENG>000004</LENG>
<MASK> NUMC</MASK>
</DD03P>
<DD03P>
<FIELDNAME>AS4LOCAL</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000002</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000001</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>AS4VERS</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>N</INTTYPE>
<INTLEN>000008</INTLEN>
<DATATYPE>NUMC</DATATYPE>
<LENG>000004</LENG>
<MASK> NUMC</MASK>
</DD03P>
<DD03P>
<FIELDNAME>FIELDNAME</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000060</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000030</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>DESCFLAG</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000002</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000001</LENG>
<MASK> CHAR</MASK>
</DD03P>
</DD03P_TABLE>
</asx:values>
</asx:abap>
</abapGit>

52
deps/dd35v.tabl.xml vendored
View File

@ -1,52 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<abapGit version="v1.0.0" serializer="LCL_OBJECT_TABL" serializer_version="v1.0.0">
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
<asx:values>
<DD02V>
<TABNAME>DD35V</TABNAME>
<DDLANGUAGE>E</DDLANGUAGE>
<TABCLASS>INTTAB</TABCLASS>
<DDTEXT>DD35V</DDTEXT>
<EXCLASS>1</EXCLASS>
</DD02V>
<DD03P_TABLE>
<DD03P>
<FIELDNAME>TABNAME</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000060</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000030</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>FIELDNAME</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000060</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000030</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>SHLPNAME</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000060</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000030</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>SHLPINHER</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000002</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000001</LENG>
<MASK> CHAR</MASK>
</DD03P>
</DD03P_TABLE>
</asx:values>
</asx:abap>
</abapGit>

169
deps/dd36m.tabl.xml vendored
View File

@ -1,169 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<abapGit version="v1.0.0" serializer="LCL_OBJECT_TABL" serializer_version="v1.0.0">
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
<asx:values>
<DD02V>
<TABNAME>DD36M</TABNAME>
<DDLANGUAGE>E</DDLANGUAGE>
<TABCLASS>INTTAB</TABCLASS>
<DDTEXT>DD36M</DDTEXT>
<EXCLASS>1</EXCLASS>
</DD02V>
<DD03P_TABLE>
<DD03P>
<FIELDNAME>TABNAME</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000060</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000030</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>FIELDNAME</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000060</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000030</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>SHLPNAME</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000060</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000030</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>SHLPFIELD</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000060</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000030</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>FLPOSITION</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>N</INTTYPE>
<INTLEN>000008</INTLEN>
<DATATYPE>NUMC</DATATYPE>
<LENG>000004</LENG>
<MASK> NUMC</MASK>
</DD03P>
<DD03P>
<FIELDNAME>SHTYPE</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000002</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000001</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>SHTABLE</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000060</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000030</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>SHFIELD</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000060</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000030</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>SHLPINPUT</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000002</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000001</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>SHLPOUTPUT</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000002</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000001</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>ROLLNAME</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000060</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000030</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>DOMNAME</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000060</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000030</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>DATATYPE</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000008</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000004</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>LENG</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>N</INTTYPE>
<INTLEN>000012</INTLEN>
<DATATYPE>NUMC</DATATYPE>
<LENG>000006</LENG>
<MASK> NUMC</MASK>
</DD03P>
<DD03P>
<FIELDNAME>DECIMALS</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>N</INTTYPE>
<INTLEN>000012</INTLEN>
<DATATYPE>NUMC</DATATYPE>
<LENG>000006</LENG>
<MASK> NUMC</MASK>
</DD03P>
<DD03P>
<FIELDNAME>DEFAULTVAL</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000042</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000021</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>DEFAULTTYP</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000002</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000001</LENG>
<MASK> CHAR</MASK>
</DD03P>
</DD03P_TABLE>
</asx:values>
</asx:abap>
</abapGit>

105
deps/e070.tabl.xml vendored
View File

@ -1,105 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<abapGit version="v1.0.0" serializer="LCL_OBJECT_TABL" serializer_version="v1.0.0">
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
<asx:values>
<DD02V>
<TABNAME>E070</TABNAME>
<DDLANGUAGE>E</DDLANGUAGE>
<TABCLASS>TRANSP</TABCLASS>
<DDTEXT>E070</DDTEXT>
<CONTFLAG>A</CONTFLAG>
<EXCLASS>1</EXCLASS>
</DD02V>
<DD09L>
<TABNAME>ZE070</TABNAME>
<AS4LOCAL>A</AS4LOCAL>
<TABKAT>0</TABKAT>
<TABART>APPL0</TABART>
<BUFALLOW>N</BUFALLOW>
</DD09L>
<DD03P_TABLE>
<DD03P>
<FIELDNAME>TRKORR</FIELDNAME>
<KEYFLAG>X</KEYFLAG>
<ROLLNAME>TRKORR</ROLLNAME>
<ADMINFIELD>0</ADMINFIELD>
<NOTNULL>X</NOTNULL>
<COMPTYPE>E</COMPTYPE>
</DD03P>
<DD03P>
<FIELDNAME>TRFUNCTION</FIELDNAME>
<ROLLNAME>TRFUNCTION</ROLLNAME>
<ADMINFIELD>0</ADMINFIELD>
<VALEXI>X</VALEXI>
<SHLPORIGIN>F</SHLPORIGIN>
<COMPTYPE>E</COMPTYPE>
</DD03P>
<DD03P>
<FIELDNAME>TRSTATUS</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000002</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000001</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>TARSYSTEM</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000020</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000010</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>KORRDEV</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000008</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000004</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>AS4USER</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000024</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000012</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>AS4DATE</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>D</INTTYPE>
<INTLEN>000016</INTLEN>
<DATATYPE>DATS</DATATYPE>
<LENG>000008</LENG>
<MASK> DATS</MASK>
<SHLPORIGIN>T</SHLPORIGIN>
</DD03P>
<DD03P>
<FIELDNAME>AS4TIME</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>T</INTTYPE>
<INTLEN>000012</INTLEN>
<DATATYPE>TIMS</DATATYPE>
<LENG>000006</LENG>
<MASK> TIMS</MASK>
<SHLPORIGIN>T</SHLPORIGIN>
</DD03P>
<DD03P>
<FIELDNAME>STRKORR</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000040</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000020</LENG>
<MASK> CHAR</MASK>
</DD03P>
</DD03P_TABLE>
</asx:values>
</asx:abap>
</abapGit>

116
deps/e071.tabl.xml vendored
View File

@ -1,116 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<abapGit version="v1.0.0" serializer="LCL_OBJECT_TABL" serializer_version="v1.0.0">
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
<asx:values>
<DD02V>
<TABNAME>E071</TABNAME>
<DDLANGUAGE>E</DDLANGUAGE>
<TABCLASS>TRANSP</TABCLASS>
<DDTEXT>E071</DDTEXT>
<CONTFLAG>A</CONTFLAG>
<EXCLASS>1</EXCLASS>
</DD02V>
<DD09L>
<TABNAME>ZE071</TABNAME>
<AS4LOCAL>A</AS4LOCAL>
<TABKAT>0</TABKAT>
<TABART>APPL0</TABART>
<BUFALLOW>N</BUFALLOW>
</DD09L>
<DD03P_TABLE>
<DD03P>
<FIELDNAME>TRKORR</FIELDNAME>
<KEYFLAG>X</KEYFLAG>
<ROLLNAME>TRKORR</ROLLNAME>
<ADMINFIELD>0</ADMINFIELD>
<NOTNULL>X</NOTNULL>
<COMPTYPE>E</COMPTYPE>
</DD03P>
<DD03P>
<FIELDNAME>AS4POS</FIELDNAME>
<KEYFLAG>X</KEYFLAG>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>N</INTTYPE>
<INTLEN>000012</INTLEN>
<NOTNULL>X</NOTNULL>
<DATATYPE>NUMC</DATATYPE>
<LENG>000006</LENG>
<MASK> NUMC</MASK>
</DD03P>
<DD03P>
<FIELDNAME>PGMID</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000008</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000004</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>OBJECT</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000008</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000004</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>OBJ_NAME</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000240</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000120</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>OBJFUNC</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000002</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000001</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>LOCKFLAG</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000002</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000001</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>GENNUM</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000006</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000003</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>LANG</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000002</INTLEN>
<DATATYPE>LANG</DATATYPE>
<LENG>000001</LENG>
<MASK> LANG</MASK>
<LANGUFLAG>X</LANGUFLAG>
</DD03P>
<DD03P>
<FIELDNAME>ACTIVITY</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000040</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000020</LENG>
<MASK> CHAR</MASK>
</DD03P>
</DD03P_TABLE>
</asx:values>
</asx:abap>
</abapGit>

158
deps/e071k.tabl.xml vendored
View File

@ -1,158 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<abapGit version="v1.0.0" serializer="LCL_OBJECT_TABL" serializer_version="v1.0.0">
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
<asx:values>
<DD02V>
<TABNAME>E071K</TABNAME>
<DDLANGUAGE>E</DDLANGUAGE>
<TABCLASS>TRANSP</TABCLASS>
<DDTEXT>E071K</DDTEXT>
<CONTFLAG>A</CONTFLAG>
<EXCLASS>1</EXCLASS>
</DD02V>
<DD09L>
<TABNAME>ZE071K</TABNAME>
<AS4LOCAL>A</AS4LOCAL>
<TABKAT>0</TABKAT>
<TABART>APPL0</TABART>
<BUFALLOW>N</BUFALLOW>
</DD09L>
<DD03P_TABLE>
<DD03P>
<FIELDNAME>TRKORR</FIELDNAME>
<KEYFLAG>X</KEYFLAG>
<ROLLNAME>TRKORR</ROLLNAME>
<ADMINFIELD>0</ADMINFIELD>
<NOTNULL>X</NOTNULL>
<COMPTYPE>E</COMPTYPE>
</DD03P>
<DD03P>
<FIELDNAME>PGMID</FIELDNAME>
<KEYFLAG>X</KEYFLAG>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000008</INTLEN>
<NOTNULL>X</NOTNULL>
<DATATYPE>CHAR</DATATYPE>
<LENG>000004</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>OBJECT</FIELDNAME>
<KEYFLAG>X</KEYFLAG>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000008</INTLEN>
<NOTNULL>X</NOTNULL>
<DATATYPE>CHAR</DATATYPE>
<LENG>000004</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>OBJNAME</FIELDNAME>
<KEYFLAG>X</KEYFLAG>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000060</INTLEN>
<NOTNULL>X</NOTNULL>
<DATATYPE>CHAR</DATATYPE>
<LENG>000030</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>AS4POS</FIELDNAME>
<KEYFLAG>X</KEYFLAG>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>N</INTTYPE>
<INTLEN>000012</INTLEN>
<NOTNULL>X</NOTNULL>
<DATATYPE>NUMC</DATATYPE>
<LENG>000006</LENG>
<MASK> NUMC</MASK>
</DD03P>
<DD03P>
<FIELDNAME>MASTERTYPE</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000008</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000004</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>MASTERNAME</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000080</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000040</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>VIEWNAME</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000060</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000030</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>OBJFUNC</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000002</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000001</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>TABKEY</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000240</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000120</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>SORTFLAG</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000002</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000001</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>FLAG</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000002</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000001</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>LANG</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000002</INTLEN>
<DATATYPE>LANG</DATATYPE>
<LENG>000001</LENG>
<MASK> LANG</MASK>
<LANGUFLAG>X</LANGUFLAG>
</DD03P>
<DD03P>
<FIELDNAME>ACTIVITY</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000040</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000020</LENG>
<MASK> CHAR</MASK>
</DD03P>
</DD03P_TABLE>
</asx:values>
</asx:abap>
</abapGit>

54
deps/e07t.tabl.xml vendored
View File

@ -1,54 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<abapGit version="v1.0.0" serializer="LCL_OBJECT_TABL" serializer_version="v1.0.0">
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
<asx:values>
<DD02V>
<TABNAME>E07T</TABNAME>
<DDLANGUAGE>E</DDLANGUAGE>
<TABCLASS>TRANSP</TABCLASS>
<DDTEXT>E07T</DDTEXT>
<CONTFLAG>A</CONTFLAG>
<EXCLASS>1</EXCLASS>
</DD02V>
<DD09L>
<TABNAME>ZE07T</TABNAME>
<AS4LOCAL>A</AS4LOCAL>
<TABKAT>0</TABKAT>
<TABART>APPL0</TABART>
<UEBERSETZ>N</UEBERSETZ>
<BUFALLOW>N</BUFALLOW>
</DD09L>
<DD03P_TABLE>
<DD03P>
<FIELDNAME>TRKORR</FIELDNAME>
<KEYFLAG>X</KEYFLAG>
<ROLLNAME>TRKORR</ROLLNAME>
<ADMINFIELD>0</ADMINFIELD>
<NOTNULL>X</NOTNULL>
<COMPTYPE>E</COMPTYPE>
</DD03P>
<DD03P>
<FIELDNAME>LANGU</FIELDNAME>
<KEYFLAG>X</KEYFLAG>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000002</INTLEN>
<NOTNULL>X</NOTNULL>
<DATATYPE>LANG</DATATYPE>
<LENG>000001</LENG>
<MASK> LANG</MASK>
<LANGUFLAG>X</LANGUFLAG>
</DD03P>
<DD03P>
<FIELDNAME>AS4TEXT</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000120</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000060</LENG>
<MASK> CHAR</MASK>
</DD03P>
</DD03P_TABLE>
</asx:values>
</asx:abap>
</abapGit>

View File

@ -1,128 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<abapGit version="v1.0.0" serializer="LCL_OBJECT_TABL" serializer_version="v1.0.0">
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
<asx:values>
<DD02V>
<TABNAME>EDISEGMDEF</TABNAME>
<DDLANGUAGE>E</DDLANGUAGE>
<TABCLASS>INTTAB</TABCLASS>
<DDTEXT>EDISEGMDEF</DDTEXT>
<EXCLASS>1</EXCLASS>
</DD02V>
<DD03P_TABLE>
<DD03P>
<FIELDNAME>SEGTYP</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000054</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000027</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>VERSION</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>N</INTTYPE>
<INTLEN>000006</INTLEN>
<DATATYPE>NUMC</DATATYPE>
<LENG>000003</LENG>
<MASK> NUMC</MASK>
</DD03P>
<DD03P>
<FIELDNAME>SEGDEF</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000060</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000030</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>RELEASED</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000008</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000004</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>CLOSED</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000002</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000001</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>CREDATE</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>D</INTTYPE>
<INTLEN>000016</INTLEN>
<DATATYPE>DATS</DATATYPE>
<LENG>000008</LENG>
<MASK> DATS</MASK>
<SHLPORIGIN>T</SHLPORIGIN>
</DD03P>
<DD03P>
<FIELDNAME>CRETIME</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>T</INTTYPE>
<INTLEN>000012</INTLEN>
<DATATYPE>TIMS</DATATYPE>
<LENG>000006</LENG>
<MASK> TIMS</MASK>
<SHLPORIGIN>T</SHLPORIGIN>
</DD03P>
<DD03P>
<FIELDNAME>LDATE</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>D</INTTYPE>
<INTLEN>000016</INTLEN>
<DATATYPE>DATS</DATATYPE>
<LENG>000008</LENG>
<MASK> DATS</MASK>
<SHLPORIGIN>T</SHLPORIGIN>
</DD03P>
<DD03P>
<FIELDNAME>LTIME</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>T</INTTYPE>
<INTLEN>000012</INTLEN>
<DATATYPE>TIMS</DATATYPE>
<LENG>000006</LENG>
<MASK> TIMS</MASK>
<SHLPORIGIN>T</SHLPORIGIN>
</DD03P>
<DD03P>
<FIELDNAME>FIELDNUM</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>N</INTTYPE>
<INTLEN>000008</INTLEN>
<DATATYPE>NUMC</DATATYPE>
<LENG>000004</LENG>
<MASK> NUMC</MASK>
</DD03P>
<DD03P>
<FIELDNAME>EXPLENG</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>N</INTTYPE>
<INTLEN>000008</INTLEN>
<DATATYPE>NUMC</DATATYPE>
<LENG>000004</LENG>
<MASK> NUMC</MASK>
</DD03P>
<DD03P>
<FIELDNAME>APPLREL</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000020</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000010</LENG>
<MASK> CHAR</MASK>
</DD03P>
</DD03P_TABLE>
</asx:values>
</asx:abap>
</abapGit>

View File

@ -1,119 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<abapGit version="v1.0.0" serializer="LCL_OBJECT_TABL" serializer_version="v1.0.0">
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
<asx:values>
<DD02V>
<TABNAME>EDISEGMHD</TABNAME>
<DDLANGUAGE>E</DDLANGUAGE>
<TABCLASS>INTTAB</TABCLASS>
<DDTEXT>EDISEGMHD</DDTEXT>
<EXCLASS>1</EXCLASS>
</DD02V>
<DD03P_TABLE>
<DD03P>
<FIELDNAME>SEGTYP</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000054</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000027</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>QUALIFIER</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000002</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000001</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>GENERATED</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000002</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000001</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>PRESP</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000060</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000030</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>PWORK</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000060</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000030</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>PLAST</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000024</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000012</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>CREDATE</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>D</INTTYPE>
<INTLEN>000016</INTLEN>
<DATATYPE>DATS</DATATYPE>
<LENG>000008</LENG>
<MASK> DATS</MASK>
<SHLPORIGIN>T</SHLPORIGIN>
</DD03P>
<DD03P>
<FIELDNAME>CRETIME</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>T</INTTYPE>
<INTLEN>000012</INTLEN>
<DATATYPE>TIMS</DATATYPE>
<LENG>000006</LENG>
<MASK> TIMS</MASK>
<SHLPORIGIN>T</SHLPORIGIN>
</DD03P>
<DD03P>
<FIELDNAME>LDATE</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>D</INTTYPE>
<INTLEN>000016</INTLEN>
<DATATYPE>DATS</DATATYPE>
<LENG>000008</LENG>
<MASK> DATS</MASK>
<SHLPORIGIN>T</SHLPORIGIN>
</DD03P>
<DD03P>
<FIELDNAME>LTIME</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>T</INTTYPE>
<INTLEN>000012</INTLEN>
<DATATYPE>TIMS</DATATYPE>
<LENG>000006</LENG>
<MASK> TIMS</MASK>
<SHLPORIGIN>T</SHLPORIGIN>
</DD03P>
<DD03P>
<FIELDNAME>DESCRP</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000120</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000060</LENG>
<MASK> CHAR</MASK>
</DD03P>
</DD03P_TABLE>
</asx:values>
</asx:abap>
</abapGit>

View File

@ -1,70 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<abapGit version="v1.0.0" serializer="LCL_OBJECT_TABL" serializer_version="v1.0.0">
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
<asx:values>
<DD02V>
<TABNAME>EDISEGSTRU</TABNAME>
<DDLANGUAGE>E</DDLANGUAGE>
<TABCLASS>INTTAB</TABCLASS>
<DDTEXT>EDISEGSTRU</DDTEXT>
<EXCLASS>1</EXCLASS>
</DD02V>
<DD03P_TABLE>
<DD03P>
<FIELDNAME>SEGTYP</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000054</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000027</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>POS</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>N</INTTYPE>
<INTLEN>000008</INTLEN>
<DATATYPE>NUMC</DATATYPE>
<LENG>000004</LENG>
<MASK> NUMC</MASK>
</DD03P>
<DD03P>
<FIELDNAME>FIELDNAME</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000060</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000030</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>ROLLNAME</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000060</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000030</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>ISOCODE</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000002</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000001</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>EXPLENG</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>N</INTTYPE>
<INTLEN>000008</INTLEN>
<DATATYPE>NUMC</DATATYPE>
<LENG>000004</LENG>
<MASK> NUMC</MASK>
</DD03P>
</DD03P_TABLE>
</asx:values>
</asx:abap>
</abapGit>

24
deps/enqmode.dtel.xml vendored
View File

@ -1,24 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<abapGit version="v1.0.0" serializer="LCL_OBJECT_DTEL" serializer_version="v1.0.0">
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
<asx:values>
<DD04V>
<ROLLNAME>ENQMODE</ROLLNAME>
<DDLANGUAGE>E</DDLANGUAGE>
<HEADLEN>55</HEADLEN>
<SCRLEN1>10</SCRLEN1>
<SCRLEN2>20</SCRLEN2>
<SCRLEN3>40</SCRLEN3>
<DDTEXT>ENQMODE</DDTEXT>
<REPTEXT>ENQMODE</REPTEXT>
<SCRTEXT_S>ENQMODE</SCRTEXT_S>
<SCRTEXT_M>ENQMODE</SCRTEXT_M>
<SCRTEXT_L>ENQMODE</SCRTEXT_L>
<DTELMASTER>E</DTELMASTER>
<DATATYPE>CHAR</DATATYPE>
<LENG>000001</LENG>
<OUTPUTLEN>000001</OUTPUTLEN>
</DD04V>
</asx:values>
</asx:abap>
</abapGit>

View File

@ -1,8 +1,5 @@
INTERFACE if_package PUBLIC. INTERFACE if_package PUBLIC.
DATA wbo_korr_flag TYPE c LENGTH 1 READ-ONLY. DATA wbo_korr_flag TYPE c LENGTH 1 READ-ONLY.
DATA package_name TYPE string READ-ONLY.
DATA short_text TYPE string READ-ONLY.
DATA super_package_name TYPE string READ-ONLY.
DATA software_component TYPE string READ-ONLY. DATA software_component TYPE string READ-ONLY.
DATA application_component TYPE string READ-ONLY. DATA application_component TYPE string READ-ONLY.
DATA transport_layer TYPE string READ-ONLY. DATA transport_layer TYPE string READ-ONLY.

43
deps/ko100.tabl.xml vendored
View File

@ -1,43 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<abapGit version="v1.0.0" serializer="LCL_OBJECT_TABL" serializer_version="v1.0.0">
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
<asx:values>
<DD02V>
<TABNAME>KO100</TABNAME>
<DDLANGUAGE>E</DDLANGUAGE>
<TABCLASS>INTTAB</TABCLASS>
<DDTEXT>KO100</DDTEXT>
<EXCLASS>1</EXCLASS>
</DD02V>
<DD03P_TABLE>
<DD03P>
<FIELDNAME>PGMID</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000008</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000004</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>OBJECT</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000008</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000004</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>TEXT</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000120</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000060</LENG>
<MASK> CHAR</MASK>
</DD03P>
</DD03P_TABLE>
</asx:values>
</asx:abap>
</abapGit>

24
deps/r3state.dtel.xml vendored
View File

@ -1,24 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<abapGit version="v1.0.0" serializer="LCL_OBJECT_DTEL" serializer_version="v1.0.0">
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
<asx:values>
<DD04V>
<ROLLNAME>R3STATE</ROLLNAME>
<DDLANGUAGE>E</DDLANGUAGE>
<HEADLEN>55</HEADLEN>
<SCRLEN1>10</SCRLEN1>
<SCRLEN2>20</SCRLEN2>
<SCRLEN3>40</SCRLEN3>
<DDTEXT>R3STATE</DDTEXT>
<REPTEXT>R3STATE</REPTEXT>
<SCRTEXT_S>R3STATE</SCRTEXT_S>
<SCRTEXT_M>R3STATE</SCRTEXT_M>
<SCRTEXT_L>R3STATE</SCRTEXT_L>
<DTELMASTER>E</DTELMASTER>
<DATATYPE>CHAR</DATATYPE>
<LENG>000001</LENG>
<OUTPUTLEN>000001</OUTPUTLEN>
</DD04V>
</asx:values>
</asx:abap>
</abapGit>

View File

@ -1,48 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<abapGit version="v1.0.0" serializer="LCL_OBJECT_TABL" serializer_version="v1.0.0">
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
<asx:values>
<DD02V>
<TABNAME>SEOCLASSTX</TABNAME>
<DDLANGUAGE>E</DDLANGUAGE>
<TABCLASS>TRANSP</TABCLASS>
<DDTEXT>SEOCLASSTX</DDTEXT>
<CONTFLAG>A</CONTFLAG>
<EXCLASS>1</EXCLASS>
</DD02V>
<DD09L>
<TABNAME>SEOCLASSTX</TABNAME>
<AS4LOCAL>A</AS4LOCAL>
<TABKAT>0</TABKAT>
<TABART>APPL0</TABART>
<UEBERSETZ>N</UEBERSETZ>
<BUFALLOW>N</BUFALLOW>
</DD09L>
<DD03P_TABLE>
<DD03P>
<FIELDNAME>CLSNAME</FIELDNAME>
<KEYFLAG>X</KEYFLAG>
<ROLLNAME>SEOCLSNAME</ROLLNAME>
<ADMINFIELD>0</ADMINFIELD>
<NOTNULL>X</NOTNULL>
<COMPTYPE>E</COMPTYPE>
</DD03P>
<DD03P>
<FIELDNAME>LANGU</FIELDNAME>
<KEYFLAG>X</KEYFLAG>
<ROLLNAME>LANGU</ROLLNAME>
<ADMINFIELD>0</ADMINFIELD>
<NOTNULL>X</NOTNULL>
<COMPTYPE>E</COMPTYPE>
<LANGUFLAG>X</LANGUFLAG>
</DD03P>
<DD03P>
<FIELDNAME>DESCRIPT</FIELDNAME>
<ROLLNAME>SEODESCR</ROLLNAME>
<ADMINFIELD>0</ADMINFIELD>
<COMPTYPE>E</COMPTYPE>
</DD03P>
</DD03P_TABLE>
</asx:values>
</asx:abap>
</abapGit>

View File

@ -1,57 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<abapGit version="v1.0.0" serializer="LCL_OBJECT_TABL" serializer_version="v1.0.0">
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
<asx:values>
<DD02V>
<TABNAME>SEOMETAREL</TABNAME>
<DDLANGUAGE>E</DDLANGUAGE>
<TABCLASS>TRANSP</TABCLASS>
<DDTEXT>SEOMETAREL</DDTEXT>
<CONTFLAG>A</CONTFLAG>
<EXCLASS>1</EXCLASS>
</DD02V>
<DD09L>
<TABNAME>SEOMETAREL</TABNAME>
<AS4LOCAL>A</AS4LOCAL>
<TABKAT>0</TABKAT>
<TABART>APPL0</TABART>
<BUFALLOW>N</BUFALLOW>
</DD09L>
<DD03P_TABLE>
<DD03P>
<FIELDNAME>CLSNAME</FIELDNAME>
<KEYFLAG>X</KEYFLAG>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000060</INTLEN>
<NOTNULL>X</NOTNULL>
<DATATYPE>CHAR</DATATYPE>
<LENG>000030</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>REFCLSNAME</FIELDNAME>
<KEYFLAG>X</KEYFLAG>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000060</INTLEN>
<NOTNULL>X</NOTNULL>
<DATATYPE>CHAR</DATATYPE>
<LENG>000030</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>VERSION</FIELDNAME>
<KEYFLAG>X</KEYFLAG>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000002</INTLEN>
<NOTNULL>X</NOTNULL>
<DATATYPE>CHAR</DATATYPE>
<LENG>000001</LENG>
<MASK> CHAR</MASK>
</DD03P>
</DD03P_TABLE>
</asx:values>
</asx:abap>
</abapGit>

View File

@ -1,4 +0,0 @@
TYPE-POOL srext.
CONSTANTS srext_ext_class_pool TYPE c LENGTH 2 VALUE 'CP'.
CONSTANTS srext_ext_interface_pool TYPE c LENGTH 2 VALUE 'IP'.

25
deps/tcdrs.tabl.xml vendored
View File

@ -1,25 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<abapGit version="v1.0.0" serializer="LCL_OBJECT_TABL" serializer_version="v1.0.0">
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
<asx:values>
<DD02V>
<TABNAME>TCDRS</TABNAME>
<DDLANGUAGE>E</DDLANGUAGE>
<TABCLASS>INTTAB</TABCLASS>
<DDTEXT>TCDRS</DDTEXT>
<EXCLASS>1</EXCLASS>
</DD02V>
<DD03P_TABLE>
<DD03P>
<FIELDNAME>TABNAME</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000060</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000030</LENG>
<MASK> CHAR</MASK>
</DD03P>
</DD03P_TABLE>
</asx:values>
</asx:abap>
</abapGit>

62
deps/tddat.tabl.xml vendored
View File

@ -1,62 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<abapGit version="v1.0.0" serializer="LCL_OBJECT_TABL" serializer_version="v1.0.0">
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
<asx:values>
<DD02V>
<TABNAME>TDDAT</TABNAME>
<DDLANGUAGE>E</DDLANGUAGE>
<TABCLASS>TRANSP</TABCLASS>
<DDTEXT>TDDAT</DDTEXT>
<CONTFLAG>A</CONTFLAG>
<EXCLASS>1</EXCLASS>
</DD02V>
<DD09L>
<TABNAME>TDDAT</TABNAME>
<AS4LOCAL>A</AS4LOCAL>
<TABKAT>0</TABKAT>
<TABART>APPL1</TABART>
<BUFALLOW>N</BUFALLOW>
</DD09L>
<DD03P_TABLE>
<DD03P>
<FIELDNAME>TABNAME</FIELDNAME>
<KEYFLAG>X</KEYFLAG>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000060</INTLEN>
<NOTNULL>X</NOTNULL>
<DATATYPE>CHAR</DATATYPE>
<LENG>000030</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>MCLASS</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000008</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000004</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>CCLASS</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000028</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000014</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>FLAG</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000002</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000001</LENG>
<MASK> CHAR</MASK>
</DD03P>
</DD03P_TABLE>
</asx:values>
</asx:abap>
</abapGit>

24
deps/uccheck.dtel.xml vendored
View File

@ -1,24 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<abapGit version="v1.0.0" serializer="LCL_OBJECT_DTEL" serializer_version="v1.0.0">
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
<asx:values>
<DD04V>
<ROLLNAME>UCCHECK</ROLLNAME>
<DDLANGUAGE>E</DDLANGUAGE>
<HEADLEN>55</HEADLEN>
<SCRLEN1>10</SCRLEN1>
<SCRLEN2>20</SCRLEN2>
<SCRLEN3>40</SCRLEN3>
<DDTEXT>UCCHECK</DDTEXT>
<REPTEXT>UCCHECK</REPTEXT>
<SCRTEXT_S>UCCHECK</SCRTEXT_S>
<SCRTEXT_M>UCCHECK</SCRTEXT_M>
<SCRTEXT_L>UCCHECK</SCRTEXT_L>
<DTELMASTER>E</DTELMASTER>
<DATATYPE>CHAR</DATATYPE>
<LENG>000001</LENG>
<OUTPUTLEN>000001</OUTPUTLEN>
</DD04V>
</asx:values>
</asx:abap>
</abapGit>

View File

@ -1,54 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<abapGit version="v1.0.0" serializer="LCL_OBJECT_TABL" serializer_version="v1.0.0">
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
<asx:values>
<DD02V>
<TABNAME>ZABAPGIT</TABNAME>
<DDLANGUAGE>E</DDLANGUAGE>
<TABCLASS>TRANSP</TABCLASS>
<DDTEXT>Generated by abapGit</DDTEXT>
<CONTFLAG>L</CONTFLAG>
<EXCLASS>1</EXCLASS>
</DD02V>
<DD09L>
<TABNAME>ZABAPGIT</TABNAME>
<AS4LOCAL>A</AS4LOCAL>
<TABKAT>1</TABKAT>
<TABART>APPL1</TABART>
<BUFALLOW>N</BUFALLOW>
</DD09L>
<DD03P_TABLE>
<DD03P>
<FIELDNAME>TYPE</FIELDNAME>
<KEYFLAG>X</KEYFLAG>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000024</INTLEN>
<NOTNULL>X</NOTNULL>
<DATATYPE>CHAR</DATATYPE>
<LENG>000012</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>VALUE</FIELDNAME>
<KEYFLAG>X</KEYFLAG>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000024</INTLEN>
<NOTNULL>X</NOTNULL>
<DATATYPE>CHAR</DATATYPE>
<LENG>000012</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>DATA_STR</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>g</INTTYPE>
<INTLEN>000008</INTLEN>
<DATATYPE>STRG</DATATYPE>
<MASK> STRG</MASK>
</DD03P>
</DD03P_TABLE>
</asx:values>
</asx:abap>
</abapGit>

View File

@ -1,42 +0,0 @@
import js from "@eslint/js";
import globals from "globals";
export default [
js.configs.recommended,
{
"languageOptions": {
"parserOptions": {
"ecmaVersion": 2015
},
"sourceType": "script",
"globals": globals.browser,
},
"rules": {
"quotes": [
"error",
"double",
{
"avoidEscape": true
}
],
"semi": [
"error",
"always",
{
"omitLastInOneLineBlock": true
}
],
"no-console": "off",
"indent": [
"error",
2
],
"no-trailing-spaces": [
"error"
],
"no-unused-vars": [
"warn"
]
}
}
];

View File

@ -5,12 +5,16 @@
"test": "npm run eslint && npm run abaplint", "test": "npm run eslint && npm run abaplint",
"merge": "abapmerge -f src/zabapgit.prog.abap -c zabapgit_standalone -o zabapgit.abap", "merge": "abapmerge -f src/zabapgit.prog.abap -c zabapgit_standalone -o zabapgit.abap",
"merge.ci": "cp zabapgit.abap ci/zabapgit_standalone.prog.abap && cd ci && abaplint --format codeframe && cd ..", "merge.ci": "cp zabapgit.abap ci/zabapgit_standalone.prog.abap && cd ci && abaplint --format codeframe && cd ..",
"build": "rm -rf output && abap_transpile test/abap_transpile.json && cp -f src/ui/zabapgit_icon_font.w3mi.data.woff output/", "build": "rm -rf output && abap_transpile test/abap_transpile.json",
"unit": "npm run build && echo RUNNING && node output/index.mjs --skip-critical", "unit": "npm run build && echo RUNNING && node output/index.mjs",
"coverage": "npm run unit && c8 node output/index.mjs --skip-critical && c8 report --reporter=html", "coverage": "npm run unit && c8 node output/index.mjs && c8 report --reporter=html",
"integration": "npm run build && echo RUNNING && node output/index.mjs --only-critical", "integration": "rm -rf output && cp test/abap_transpile.json test/abap_transpile_int.json && sed -i 's/zcl_abapgit_auth/zcl_abapgit_integration_git/g' test/abap_transpile_int.json && abap_transpile test/abap_transpile_int.json && echo RUNNING && node output/index.mjs",
"abaplint": "abaplint --format codeframe", "abaplint": "abaplint --format codeframe",
"eslint": "eslint src" "eslint": "eslint src",
"docker-build": "docker-compose -f test/docker-compose.yml build",
"docker-up": "docker-compose -f test/docker-compose.yml up",
"docker-unit": "docker-compose -f test/docker-compose.yml run --workdir=\"/home/node/abapGit\" abapgit npm run-script unit",
"docker-down": "docker-compose -f test/docker-compose.yml down"
}, },
"repository": { "repository": {
"type": "git", "type": "git",
@ -23,14 +27,12 @@
] ]
}, },
"devDependencies": { "devDependencies": {
"@abaplint/cli": "^2.113.110", "@abaplint/cli": "^2.102.34",
"@abaplint/database-sqlite": "^2.10.24", "@abaplint/database-sqlite": "^2.7.74",
"@abaplint/runtime": "^2.10.44", "@abaplint/runtime": "^2.7.92",
"express": "^4.21.2", "@abaplint/transpiler-cli": "^2.7.92",
"@abaplint/transpiler-cli": "^2.10.44", "abapmerge": "^0.16.0",
"globals": "^16.0.0", "c8": "^8.0.1",
"abapmerge": "^0.16.6", "eslint": "^8.48.0"
"c8": "^10.1.3",
"eslint": "^9.25.1"
} }
} }

View File

@ -24,14 +24,16 @@ CLASS zcl_abapgit_apack_helper DEFINITION
VALUE(rs_file) TYPE zif_abapgit_git_definitions=>ty_file VALUE(rs_file) TYPE zif_abapgit_git_definitions=>ty_file
RAISING RAISING
zcx_abapgit_exception . zcx_abapgit_exception .
CLASS-METHODS get_manifest_implementations
RETURNING
VALUE(rt_manifest_implementations) TYPE zif_abapgit_apack_definitions=>ty_manifest_declarations.
PROTECTED SECTION. PROTECTED SECTION.
PRIVATE SECTION. PRIVATE SECTION.
TYPES:
BEGIN OF ty_manifest_declaration,
clsname TYPE seometarel-clsname,
devclass TYPE devclass,
END OF ty_manifest_declaration .
TYPES:
ty_manifest_declarations TYPE STANDARD TABLE OF ty_manifest_declaration WITH NON-UNIQUE DEFAULT KEY .
TYPES: TYPES:
BEGIN OF ty_dependency_status, BEGIN OF ty_dependency_status,
met TYPE zif_abapgit_definitions=>ty_yes_no_partial. met TYPE zif_abapgit_definitions=>ty_yes_no_partial.
@ -78,7 +80,7 @@ ENDCLASS.
CLASS zcl_abapgit_apack_helper IMPLEMENTATION. CLASS ZCL_ABAPGIT_APACK_HELPER IMPLEMENTATION.
METHOD are_dependencies_met. METHOD are_dependencies_met.
@ -107,21 +109,12 @@ CLASS zcl_abapgit_apack_helper IMPLEMENTATION.
METHOD dependencies_popup. METHOD dependencies_popup.
DATA: lt_met_status TYPE ty_dependency_statuses, DATA: lt_met_status TYPE ty_dependency_statuses.
lv_answer TYPE c LENGTH 1.
lt_met_status = get_dependencies_met_status( it_dependencies ). lt_met_status = get_dependencies_met_status( it_dependencies ).
show_dependencies_popup( lt_met_status ). show_dependencies_popup( lt_met_status ).
lv_answer = zcl_abapgit_ui_factory=>get_popups( )->popup_to_confirm(
iv_titlebar = 'Warning'
iv_text_question = 'The project has unmet dependencies. Do you want to continue?' ).
IF lv_answer <> '1'.
zcx_abapgit_exception=>raise( 'Cancelling because of unmet dependencies.' ).
ENDIF.
ENDMETHOD. ENDMETHOD.
@ -233,12 +226,19 @@ CLASS zcl_abapgit_apack_helper IMPLEMENTATION.
METHOD get_installed_packages. METHOD get_installed_packages.
DATA: lo_apack_reader TYPE REF TO zcl_abapgit_apack_reader, DATA: lo_apack_reader TYPE REF TO zcl_abapgit_apack_reader,
lt_manifest_implementation TYPE zif_abapgit_apack_definitions=>ty_manifest_declarations, lt_manifest_implementation TYPE ty_manifest_declarations,
ls_manifest_implementation TYPE zif_abapgit_apack_definitions=>ty_manifest_declaration, ls_manifest_implementation TYPE ty_manifest_declaration,
lo_manifest_provider TYPE REF TO object, lo_manifest_provider TYPE REF TO object,
ls_descriptor TYPE zif_abapgit_apack_definitions=>ty_descriptor. ls_descriptor TYPE zif_abapgit_apack_definitions=>ty_descriptor.
lt_manifest_implementation = get_manifest_implementations( ). SELECT seometarel~clsname tadir~devclass FROM seometarel "#EC CI_NOORDER
INNER JOIN tadir ON seometarel~clsname = tadir~obj_name "#EC CI_BUFFJOIN
INTO TABLE lt_manifest_implementation
WHERE tadir~pgmid = 'R3TR'
AND tadir~object = 'CLAS'
AND seometarel~version = '1'
AND ( seometarel~refclsname = zif_abapgit_apack_definitions=>c_apack_interface_cust
OR seometarel~refclsname = zif_abapgit_apack_definitions=>c_apack_interface_sap ).
LOOP AT lt_manifest_implementation INTO ls_manifest_implementation. LOOP AT lt_manifest_implementation INTO ls_manifest_implementation.
CLEAR: lo_manifest_provider, lo_apack_reader. CLEAR: lo_manifest_provider, lo_apack_reader.
@ -266,39 +266,6 @@ CLASS zcl_abapgit_apack_helper IMPLEMENTATION.
ENDMETHOD. ENDMETHOD.
METHOD get_manifest_implementations.
DATA lt_refclsname TYPE RANGE OF abap_classname.
DATA ls_refclsname LIKE LINE OF lt_refclsname.
ls_refclsname-sign = 'I'.
ls_refclsname-option = 'EQ'.
ls_refclsname-low = zif_abapgit_apack_definitions=>c_apack_interface_cust.
INSERT ls_refclsname INTO TABLE lt_refclsname.
ls_refclsname-sign = 'I'.
ls_refclsname-option = 'EQ'.
ls_refclsname-low = zif_abapgit_apack_definitions=>c_apack_interface_sap.
INSERT ls_refclsname INTO TABLE lt_refclsname.
ls_refclsname-sign = 'I'.
ls_refclsname-option = 'CP'.
ls_refclsname-low = zif_abapgit_apack_definitions=>c_apack_interface_nspc.
INSERT ls_refclsname INTO TABLE lt_refclsname.
" Find all classes that implement customer or SAP version of APACK interface
SELECT seometarel~clsname tadir~devclass FROM seometarel "#EC CI_NOORDER
INNER JOIN tadir ON seometarel~clsname = tadir~obj_name "#EC CI_BUFFJOIN
INTO TABLE rt_manifest_implementations
WHERE tadir~pgmid = 'R3TR'
AND tadir~object = 'CLAS'
AND seometarel~version = '1'
AND seometarel~refclsname IN lt_refclsname
ORDER BY clsname devclass ##SUBRC_OK.
ENDMETHOD.
METHOD show_dependencies_popup. METHOD show_dependencies_popup.
DATA: lo_alv TYPE REF TO cl_salv_table, DATA: lo_alv TYPE REF TO cl_salv_table,

View File

@ -178,7 +178,7 @@ CLASS zcl_abapgit_apack_migration IMPLEMENTATION.
component_error = 4 component_error = 4
no_access = 5 no_access = 5
other = 6 other = 6
OTHERS = 7 ##FM_SUBRC_OK. OTHERS = 7.
CATCH cx_sy_dyn_call_param_not_found. CATCH cx_sy_dyn_call_param_not_found.
CALL FUNCTION 'SEO_INTERFACE_CREATE_COMPLETE' CALL FUNCTION 'SEO_INTERFACE_CREATE_COMPLETE'
EXPORTING EXPORTING

View File

@ -43,18 +43,14 @@ CLASS zcl_abapgit_apack_reader DEFINITION
METHODS constructor METHODS constructor
IMPORTING IMPORTING
!iv_package_name TYPE ty_package_name . !iv_package_name TYPE ty_package_name .
METHODS refresh.
PROTECTED SECTION. PROTECTED SECTION.
PRIVATE SECTION. PRIVATE SECTION.
TYPES: TYPES:
BEGIN OF ty_instance, BEGIN OF ty_s_manifest_declaration,
package TYPE ty_package_name, clsname TYPE seoclsname,
instance TYPE REF TO zcl_abapgit_apack_reader, devclass TYPE devclass,
END OF ty_instance, END OF ty_s_manifest_declaration .
ty_instances TYPE HASHED TABLE OF ty_instance WITH UNIQUE KEY package.
CLASS-DATA gt_instances TYPE ty_instances.
DATA mv_package_name TYPE ty_package_name . DATA mv_package_name TYPE ty_package_name .
DATA ms_cached_descriptor TYPE zif_abapgit_apack_definitions=>ty_descriptor . DATA ms_cached_descriptor TYPE zif_abapgit_apack_definitions=>ty_descriptor .
@ -78,7 +74,6 @@ CLASS zcl_abapgit_apack_reader IMPLEMENTATION.
METHOD constructor. METHOD constructor.
ASSERT iv_package_name IS NOT INITIAL.
mv_package_name = iv_package_name. mv_package_name = iv_package_name.
ENDMETHOD. ENDMETHOD.
@ -89,11 +84,7 @@ CLASS zcl_abapgit_apack_reader IMPLEMENTATION.
ls_my_dependency TYPE zif_abapgit_apack_definitions=>ty_dependency, ls_my_dependency TYPE zif_abapgit_apack_definitions=>ty_dependency,
ls_descriptor TYPE zif_abapgit_apack_definitions=>ty_descriptor, ls_descriptor TYPE zif_abapgit_apack_definitions=>ty_descriptor,
lv_descriptor_cust TYPE string, lv_descriptor_cust TYPE string,
lv_descriptor_sap TYPE string, lv_descriptor_sap TYPE string.
lv_descriptor_nspc TYPE string,
lv_class_name TYPE abap_abstypename,
lv_empty TYPE string,
ls_namespace TYPE zif_abapgit_definitions=>ty_obj_namespace.
FIELD-SYMBOLS: <lg_descriptor> TYPE any, FIELD-SYMBOLS: <lg_descriptor> TYPE any,
<lt_dependencies> TYPE ANY TABLE, <lt_dependencies> TYPE ANY TABLE,
@ -102,20 +93,9 @@ CLASS zcl_abapgit_apack_reader IMPLEMENTATION.
lv_descriptor_cust = zif_abapgit_apack_definitions=>c_apack_interface_cust && '~DESCRIPTOR'. lv_descriptor_cust = zif_abapgit_apack_definitions=>c_apack_interface_cust && '~DESCRIPTOR'.
lv_descriptor_sap = zif_abapgit_apack_definitions=>c_apack_interface_sap && '~DESCRIPTOR'. lv_descriptor_sap = zif_abapgit_apack_definitions=>c_apack_interface_sap && '~DESCRIPTOR'.
lv_class_name = cl_abap_classdescr=>get_class_name( io_manifest_provider ).
SPLIT lv_class_name AT '\CLASS=' INTO lv_empty lv_class_name.
ls_namespace = zcl_abapgit_factory=>get_sap_namespace( )->split_by_name( lv_class_name ).
IF ls_namespace-namespace IS NOT INITIAL.
lv_descriptor_nspc = |{ ls_namespace-namespace }{ lv_descriptor_sap }|.
ENDIF.
ASSIGN io_manifest_provider->(lv_descriptor_cust) TO <lg_descriptor>. ASSIGN io_manifest_provider->(lv_descriptor_cust) TO <lg_descriptor>.
IF <lg_descriptor> IS NOT ASSIGNED. IF <lg_descriptor> IS NOT ASSIGNED.
ASSIGN io_manifest_provider->(lv_descriptor_sap) TO <lg_descriptor>. ASSIGN io_manifest_provider->(lv_descriptor_sap) TO <lg_descriptor>.
IF <lg_descriptor> IS NOT ASSIGNED AND lv_descriptor_nspc IS NOT INITIAL.
ASSIGN io_manifest_provider->(lv_descriptor_nspc) TO <lg_descriptor>.
ENDIF.
ENDIF. ENDIF.
IF <lg_descriptor> IS ASSIGNED. IF <lg_descriptor> IS ASSIGNED.
" A little more complex than a normal MOVE-CORRSPONDING " A little more complex than a normal MOVE-CORRSPONDING
@ -137,23 +117,9 @@ CLASS zcl_abapgit_apack_reader IMPLEMENTATION.
METHOD create_instance. METHOD create_instance.
CREATE OBJECT ro_manifest_reader
DATA ls_instance TYPE ty_instance. EXPORTING
iv_package_name = iv_package_name.
" One instance per package
READ TABLE gt_instances INTO ls_instance WITH TABLE KEY package = iv_package_name.
IF sy-subrc <> 0.
ls_instance-package = iv_package_name.
CREATE OBJECT ls_instance-instance
EXPORTING
iv_package_name = iv_package_name.
INSERT ls_instance INTO TABLE gt_instances.
ENDIF.
ro_manifest_reader = ls_instance-instance.
ENDMETHOD. ENDMETHOD.
@ -180,7 +146,6 @@ CLASS zcl_abapgit_apack_reader IMPLEMENTATION.
ms_cached_descriptor-sem_version = zcl_abapgit_version=>conv_str_to_version( ms_cached_descriptor-version ). ms_cached_descriptor-sem_version = zcl_abapgit_version=>conv_str_to_version( ms_cached_descriptor-version ).
LOOP AT ms_cached_descriptor-dependencies ASSIGNING <ls_dependency>. LOOP AT ms_cached_descriptor-dependencies ASSIGNING <ls_dependency>.
TRANSLATE <ls_dependency>-version TO LOWER CASE.
<ls_dependency>-sem_version = zcl_abapgit_version=>conv_str_to_version( <ls_dependency>-version ). <ls_dependency>-sem_version = zcl_abapgit_version=>conv_str_to_version( <ls_dependency>-version ).
ENDLOOP. ENDLOOP.
@ -204,24 +169,27 @@ CLASS zcl_abapgit_apack_reader IMPLEMENTATION.
METHOD get_manifest_descriptor. METHOD get_manifest_descriptor.
DATA: lo_manifest_provider TYPE REF TO object, DATA: lo_manifest_provider TYPE REF TO object,
lv_package TYPE devclass, ls_manifest_implementation TYPE ty_s_manifest_declaration.
lt_packages TYPE zif_abapgit_sap_package=>ty_devclass_tt,
ls_manifest_implementation TYPE zif_abapgit_apack_definitions=>ty_manifest_declaration,
lt_manifest_implementation TYPE zif_abapgit_apack_definitions=>ty_manifest_declarations.
IF mv_is_cached IS INITIAL. IF mv_is_cached IS INITIAL AND mv_package_name IS NOT INITIAL.
SELECT SINGLE seometarel~clsname tadir~devclass FROM seometarel "#EC CI_NOORDER
lt_packages = zcl_abapgit_factory=>get_sap_package( mv_package_name )->list_subpackages( ). INNER JOIN tadir ON seometarel~clsname = tadir~obj_name "#EC CI_BUFFJOIN
INSERT mv_package_name INTO TABLE lt_packages. INTO ls_manifest_implementation
WHERE tadir~pgmid = 'R3TR' AND
lt_manifest_implementation = zcl_abapgit_apack_helper=>get_manifest_implementations( ). tadir~object = 'CLAS' AND
seometarel~version = '1' AND
LOOP AT lt_packages INTO lv_package. seometarel~refclsname = zif_abapgit_apack_definitions=>c_apack_interface_cust AND
READ TABLE lt_manifest_implementation INTO ls_manifest_implementation WITH KEY devclass = lv_package. tadir~devclass = mv_package_name.
IF sy-subrc = 0. IF ls_manifest_implementation IS INITIAL.
EXIT. SELECT SINGLE seometarel~clsname tadir~devclass FROM seometarel "#EC CI_NOORDER
ENDIF. INNER JOIN tadir ON seometarel~clsname = tadir~obj_name "#EC CI_BUFFJOIN
ENDLOOP. INTO ls_manifest_implementation
WHERE tadir~pgmid = 'R3TR' AND
tadir~object = 'CLAS' AND
seometarel~version = '1' AND
seometarel~refclsname = zif_abapgit_apack_definitions=>c_apack_interface_sap AND
tadir~devclass = mv_package_name.
ENDIF.
IF ls_manifest_implementation IS NOT INITIAL. IF ls_manifest_implementation IS NOT INITIAL.
TRY. TRY.
CREATE OBJECT lo_manifest_provider TYPE (ls_manifest_implementation-clsname). CREATE OBJECT lo_manifest_provider TYPE (ls_manifest_implementation-clsname).
@ -247,16 +215,14 @@ CLASS zcl_abapgit_apack_reader IMPLEMENTATION.
ls_returned_manifest = get_manifest_descriptor( ). ls_returned_manifest = get_manifest_descriptor( ).
rv_has_manifest = boolc( ls_returned_manifest IS NOT INITIAL ). rv_has_manifest = abap_false.
IF ls_returned_manifest IS NOT INITIAL.
rv_has_manifest = abap_true.
ENDIF.
ENDMETHOD. ENDMETHOD.
METHOD refresh.
CLEAR: mv_is_cached, ms_cached_descriptor.
ENDMETHOD.
METHOD set_manifest_descriptor. METHOD set_manifest_descriptor.
mv_is_cached = abap_true. mv_is_cached = abap_true.
ms_cached_descriptor = is_manifest_descriptor. ms_cached_descriptor = is_manifest_descriptor.

View File

@ -1,3 +1,4 @@
*"* use this source file for your ABAP unit test classes
CLASS ltcl_apack_manifest_reader DEFINITION FOR TESTING RISK LEVEL HARMLESS DURATION SHORT. CLASS ltcl_apack_manifest_reader DEFINITION FOR TESTING RISK LEVEL HARMLESS DURATION SHORT.
PRIVATE SECTION. PRIVATE SECTION.
METHODS: METHODS:

View File

@ -1,3 +1,4 @@
*"* use this source file for your ABAP unit test classes
CLASS ltcl_apack_manifest_writer DEFINITION FOR TESTING RISK LEVEL HARMLESS DURATION SHORT. CLASS ltcl_apack_manifest_writer DEFINITION FOR TESTING RISK LEVEL HARMLESS DURATION SHORT.
PRIVATE SECTION. PRIVATE SECTION.
METHODS: the_serializator FOR TESTING RAISING cx_static_check. METHODS: the_serializator FOR TESTING RAISING cx_static_check.

View File

@ -27,21 +27,13 @@ INTERFACE zif_abapgit_apack_definitions PUBLIC .
BEGIN OF ty_descriptor. BEGIN OF ty_descriptor.
INCLUDE TYPE ty_descriptor_wo_dependencies. INCLUDE TYPE ty_descriptor_wo_dependencies.
TYPES: TYPES:
dependencies TYPE ty_dependencies, dependencies TYPE ty_dependencies,
END OF ty_descriptor, END OF ty_descriptor,
ty_descriptors TYPE STANDARD TABLE OF ty_descriptor WITH NON-UNIQUE DEFAULT KEY. ty_descriptors TYPE STANDARD TABLE OF ty_descriptor WITH NON-UNIQUE DEFAULT KEY.
TYPES:
BEGIN OF ty_manifest_declaration,
clsname TYPE seoclsname,
devclass TYPE devclass,
END OF ty_manifest_declaration,
ty_manifest_declarations TYPE STANDARD TABLE OF ty_manifest_declaration WITH DEFAULT KEY.
CONSTANTS c_dot_apack_manifest TYPE string VALUE '.apack-manifest.xml' ##NO_TEXT. CONSTANTS c_dot_apack_manifest TYPE string VALUE '.apack-manifest.xml' ##NO_TEXT.
CONSTANTS c_repository_type_abapgit TYPE ty_repository_type VALUE 'abapGit' ##NO_TEXT. CONSTANTS c_repository_type_abapgit TYPE ty_repository_type VALUE 'abapGit' ##NO_TEXT.
CONSTANTS c_apack_interface_sap TYPE seoclsname VALUE 'IF_APACK_MANIFEST' ##NO_TEXT. CONSTANTS c_apack_interface_sap TYPE seoclsname VALUE 'IF_APACK_MANIFEST' ##NO_TEXT.
CONSTANTS c_apack_interface_cust TYPE seoclsname VALUE 'ZIF_APACK_MANIFEST' ##NO_TEXT. CONSTANTS c_apack_interface_cust TYPE seoclsname VALUE 'ZIF_APACK_MANIFEST' ##NO_TEXT.
CONSTANTS c_apack_interface_nspc TYPE seoclsname VALUE '/*/IF_APACK_MANIFEST' ##NO_TEXT.
ENDINTERFACE. ENDINTERFACE.

View File

@ -14,115 +14,49 @@ CLASS zcl_abapgit_background DEFINITION
CLASS-METHODS run CLASS-METHODS run
RAISING RAISING
zcx_abapgit_exception . zcx_abapgit_exception .
CLASS-METHODS list_methods CLASS-METHODS list_methods
RETURNING VALUE(rt_methods) TYPE ty_methods. RETURNING VALUE(rt_methods) TYPE ty_methods.
CLASS-METHODS enqueue
RAISING
zcx_abapgit_exception.
CLASS-METHODS dequeue.
PROTECTED SECTION. PROTECTED SECTION.
PRIVATE SECTION. PRIVATE SECTION.
CONSTANTS c_enq_type TYPE c LENGTH 12 VALUE 'BACKGROUND'.
CONSTANTS c_interface TYPE seoclskey VALUE 'ZIF_ABAPGIT_BACKGROUND'.
ENDCLASS. ENDCLASS.
CLASS zcl_abapgit_background IMPLEMENTATION. CLASS ZCL_ABAPGIT_BACKGROUND IMPLEMENTATION.
METHOD dequeue.
CALL FUNCTION 'DEQUEUE_EZABAPGIT'
EXPORTING
type = c_enq_type.
ENDMETHOD.
METHOD enqueue.
CALL FUNCTION 'ENQUEUE_EZABAPGIT'
EXPORTING
mode_zabapgit = 'E'
type = c_enq_type
_scope = '3'
EXCEPTIONS
foreign_lock = 1
system_failure = 2
OTHERS = 3.
IF sy-subrc <> 0.
zcx_abapgit_exception=>raise_t100( ).
ENDIF.
ENDMETHOD.
METHOD list_methods. METHOD list_methods.
DATA: ls_method LIKE LINE OF rt_methods, DATA: ls_method LIKE LINE OF rt_methods,
lt_implementing TYPE seor_implementing_keys, ls_key TYPE seoclskey,
ls_implementing LIKE LINE OF lt_implementing, lt_implementing TYPE seor_implementing_keys,
lt_interf TYPE abap_intfdescr_tab, ls_implementing LIKE LINE OF lt_implementing.
lt_local_classes TYPE STANDARD TABLE OF scompo,
lv_classname TYPE string,
lr_typedescr TYPE REF TO cl_abap_typedescr,
lr_typedescr_class TYPE REF TO cl_abap_classdescr.
FIELD-SYMBOLS: <ls_local_class> LIKE LINE OF lt_local_classes, FIELD-SYMBOLS: <ls_method> LIKE LINE OF rt_methods.
<ls_method> LIKE LINE OF rt_methods.
IF zcl_abapgit_factory=>get_environment( )->is_merged( ) = abap_true.
" Assume the standalone version runs.
CALL FUNCTION 'WB_TREE_GET_OBJECTS'
EXPORTING
include = ' '
otype = 'L'
program = sy-repid
TABLES
olist = lt_local_classes.
LOOP AT lt_local_classes ASSIGNING <ls_local_class>. * in order to handle local classes in the compiled report
lv_classname = |\\PROGRAM={ sy-repid }\\CLASS={ <ls_local_class>-name }|. ls_method-class = 'ZCL_ABAPGIT_BACKGROUND_PULL'.
cl_abap_typedescr=>describe_by_name( INSERT ls_method INTO TABLE rt_methods.
EXPORTING ls_method-class = 'ZCL_ABAPGIT_BACKGROUND_PUSH_AU'.
p_name = lv_classname INSERT ls_method INTO TABLE rt_methods.
RECEIVING ls_method-class = 'ZCL_ABAPGIT_BACKGROUND_PUSH_FI'.
p_descr_ref = lr_typedescr INSERT ls_method INTO TABLE rt_methods.
EXCEPTIONS
type_not_found = 1
OTHERS = 2 ).
IF sy-subrc = 0 AND lr_typedescr IS BOUND. ls_key-clsname = 'ZIF_ABAPGIT_BACKGROUND'.
lr_typedescr_class ?= lr_typedescr.
IF lr_typedescr_class IS BOUND.
lt_interf = lr_typedescr_class->interfaces.
READ TABLE lt_interf WITH TABLE KEY name = c_interface TRANSPORTING NO FIELDS.
IF sy-subrc = 0.
ls_method-class = <ls_local_class>-name.
INSERT ls_method INTO TABLE rt_methods.
ENDIF.
ENDIF.
ENDIF.
ENDLOOP.
ELSE. CALL FUNCTION 'SEO_INTERFACE_IMPLEM_GET_ALL'
" Assume the developer version runs. EXPORTING
CALL FUNCTION 'SEO_INTERFACE_IMPLEM_GET_ALL' intkey = ls_key
EXPORTING IMPORTING
intkey = c_interface impkeys = lt_implementing
IMPORTING EXCEPTIONS
impkeys = lt_implementing not_existing = 1
EXCEPTIONS OTHERS = 2 ##FM_SUBRC_OK.
not_existing = 1 LOOP AT lt_implementing INTO ls_implementing.
OTHERS = 2. ls_method-class = ls_implementing-clsname.
IF sy-subrc = 0. INSERT ls_method INTO TABLE rt_methods.
LOOP AT lt_implementing INTO ls_implementing. ENDLOOP.
ls_method-class = ls_implementing-clsname.
INSERT ls_method INTO TABLE rt_methods.
ENDLOOP.
ENDIF.
ENDIF.
LOOP AT rt_methods ASSIGNING <ls_method>. LOOP AT rt_methods ASSIGNING <ls_method>.
CALL METHOD (<ls_method>-class)=>zif_abapgit_background~get_description CALL METHOD (<ls_method>-class)=>zif_abapgit_background~get_description
@ -135,25 +69,35 @@ CLASS zcl_abapgit_background IMPLEMENTATION.
METHOD run. METHOD run.
DATA: CONSTANTS: lc_enq_type TYPE c LENGTH 12 VALUE 'BACKGROUND'.
li_repo TYPE REF TO zif_abapgit_repo,
li_repo_online TYPE REF TO zif_abapgit_repo_online, DATA: lo_per TYPE REF TO zcl_abapgit_persist_background,
lt_list TYPE zif_abapgit_persist_background=>ty_background_keys, lo_repo TYPE REF TO zcl_abapgit_repo_online,
li_background TYPE REF TO zif_abapgit_background, lt_list TYPE zcl_abapgit_persist_background=>ty_background_keys,
li_log TYPE REF TO zif_abapgit_log, li_background TYPE REF TO zif_abapgit_background,
lx_error TYPE REF TO zcx_abapgit_exception, li_log TYPE REF TO zif_abapgit_log,
lv_repo_name TYPE string. lx_error TYPE REF TO zcx_abapgit_exception,
lv_repo_name TYPE string.
FIELD-SYMBOLS: <ls_list> LIKE LINE OF lt_list. FIELD-SYMBOLS: <ls_list> LIKE LINE OF lt_list.
TRY.
enqueue( ).
CATCH zcx_abapgit_exception.
WRITE: / 'Another instance of the program is already running'.
RETURN.
ENDTRY.
lt_list = zcl_abapgit_persist_factory=>get_background( )->list( ). CALL FUNCTION 'ENQUEUE_EZABAPGIT'
EXPORTING
mode_zabapgit = 'E'
type = lc_enq_type
_scope = '3'
EXCEPTIONS
foreign_lock = 1
system_failure = 2
OTHERS = 3.
IF sy-subrc <> 0.
WRITE: / 'Another intance of the program is already running'.
RETURN.
ENDIF.
CREATE OBJECT lo_per.
lt_list = lo_per->list( ).
WRITE: / 'Background mode'. WRITE: / 'Background mode'.
@ -161,39 +105,29 @@ CLASS zcl_abapgit_background IMPLEMENTATION.
CREATE OBJECT li_log TYPE zcl_abapgit_log. CREATE OBJECT li_log TYPE zcl_abapgit_log.
TRY. TRY.
li_repo = zcl_abapgit_repo_srv=>get_instance( )->get( <ls_list>-key ). lo_repo ?= zcl_abapgit_repo_srv=>get_instance( )->get( <ls_list>-key ).
li_repo_online ?= li_repo. lv_repo_name = lo_repo->get_name( ).
lv_repo_name = li_repo->get_name( ).
WRITE: / <ls_list>-method, lv_repo_name. WRITE: / <ls_list>-method, lv_repo_name.
zcl_abapgit_login_manager=>set( zcl_abapgit_login_manager=>set(
iv_uri = li_repo_online->get_url( ) iv_uri = lo_repo->get_url( )
iv_username = <ls_list>-username iv_username = <ls_list>-username
iv_password = <ls_list>-password ). iv_password = <ls_list>-password ).
TRY. CREATE OBJECT li_background TYPE (<ls_list>-method).
CREATE OBJECT li_background TYPE (<ls_list>-method).
li_background->run( li_background->run(
ii_repo_online = li_repo_online io_repo = lo_repo
ii_log = li_log ii_log = li_log
it_settings = <ls_list>-settings ). it_settings = <ls_list>-settings ).
CATCH cx_sy_create_object_error.
li_log->add_warning( |{ <ls_list>-method } could not be executed,| " Clear auth buffer to allow different user/password per repository in background mode
& | as it is not accessible (local/global class).| ). zcl_abapgit_login_manager=>clear( ).
ENDTRY.
" Decrease memory usage for repository already processed (but keep log)
li_repo->refresh(
iv_drop_cache = abap_true
iv_drop_log = abap_false ).
CATCH zcx_abapgit_exception INTO lx_error. CATCH zcx_abapgit_exception INTO lx_error.
li_log->add_exception( lx_error ). li_log->add_exception( lx_error ).
ENDTRY. ENDTRY.
" Clear auth buffer to allow different user/password per repository in background mode
zcl_abapgit_login_manager=>clear( ).
zcl_abapgit_log_viewer=>write_log( li_log ). zcl_abapgit_log_viewer=>write_log( li_log ).
ENDLOOP. ENDLOOP.
@ -201,7 +135,9 @@ CLASS zcl_abapgit_background IMPLEMENTATION.
WRITE: / 'Nothing configured'. WRITE: / 'Nothing configured'.
ENDIF. ENDIF.
dequeue( ). CALL FUNCTION 'DEQUEUE_EZABAPGIT'
EXPORTING
type = lc_enq_type.
ENDMETHOD. ENDMETHOD.
ENDCLASS. ENDCLASS.

View File

@ -28,37 +28,19 @@ CLASS zcl_abapgit_background_pull IMPLEMENTATION.
METHOD zif_abapgit_background~run. METHOD zif_abapgit_background~run.
DATA: ls_checks TYPE zif_abapgit_definitions=>ty_deserialize_checks, DATA: ls_checks TYPE zif_abapgit_definitions=>ty_deserialize_checks.
lo_settings TYPE REF TO zcl_abapgit_settings,
li_repo TYPE REF TO zif_abapgit_repo,
lv_activation_setting TYPE zif_abapgit_definitions=>ty_s_user_settings-activate_wo_popup.
FIELD-SYMBOLS: <ls_overwrite> LIKE LINE OF ls_checks-overwrite. FIELD-SYMBOLS: <ls_overwrite> LIKE LINE OF ls_checks-overwrite.
li_repo = ii_repo_online.
ls_checks = li_repo->deserialize_checks( ). ls_checks = io_repo->deserialize_checks( ).
LOOP AT ls_checks-overwrite ASSIGNING <ls_overwrite>. LOOP AT ls_checks-overwrite ASSIGNING <ls_overwrite>.
<ls_overwrite>-decision = zif_abapgit_definitions=>c_yes. <ls_overwrite>-decision = zif_abapgit_definitions=>c_yes.
ENDLOOP. ENDLOOP.
lo_settings = zcl_abapgit_persist_factory=>get_settings( )->read( ). io_repo->deserialize( is_checks = ls_checks
lv_activation_setting = lo_settings->get_activate_wo_popup( ).
lo_settings->set_activate_wo_popup( abap_true ).
" pass decisions to delete
zcl_abapgit_services_repo=>delete_unnecessary_objects(
ii_repo = li_repo
is_checks = ls_checks
ii_log = ii_log ).
li_repo->deserialize( is_checks = ls_checks
ii_log = ii_log ). ii_log = ii_log ).
lo_settings->set_activate_wo_popup( lv_activation_setting ).
ENDMETHOD. ENDMETHOD.
ENDCLASS. ENDCLASS.

View File

@ -17,7 +17,7 @@ CLASS zcl_abapgit_background_push_au DEFINITION
VALUE(rv_comment) TYPE string . VALUE(rv_comment) TYPE string .
METHODS push_auto METHODS push_auto
IMPORTING IMPORTING
!ii_repo_online TYPE REF TO zif_abapgit_repo_online !io_repo TYPE REF TO zcl_abapgit_repo_online
RAISING RAISING
zcx_abapgit_exception . zcx_abapgit_exception .
METHODS determine_user_details METHODS determine_user_details
@ -27,8 +27,8 @@ CLASS zcl_abapgit_background_push_au DEFINITION
VALUE(rs_user) TYPE zif_abapgit_git_definitions=>ty_git_user . VALUE(rs_user) TYPE zif_abapgit_git_definitions=>ty_git_user .
METHODS push_deletions METHODS push_deletions
IMPORTING IMPORTING
!ii_repo_online TYPE REF TO zif_abapgit_repo_online !io_repo TYPE REF TO zcl_abapgit_repo_online
!is_files TYPE zif_abapgit_definitions=>ty_stage_files !is_files TYPE zif_abapgit_definitions=>ty_stage_files
RAISING RAISING
zcx_abapgit_exception . zcx_abapgit_exception .
PRIVATE SECTION. PRIVATE SECTION.
@ -69,12 +69,12 @@ CLASS zcl_abapgit_background_push_au IMPLEMENTATION.
METHOD determine_user_details. METHOD determine_user_details.
DATA li_user_record TYPE REF TO zif_abapgit_user_record. DATA: lo_user_record TYPE REF TO zcl_abapgit_user_record.
li_user_record = zcl_abapgit_env_factory=>get_user_record( ). lo_user_record = zcl_abapgit_user_record=>get_instance( iv_changed_by ).
rs_user-name = li_user_record->get_name( iv_changed_by ). rs_user-name = lo_user_record->get_name( ).
rs_user-email = li_user_record->get_email( iv_changed_by ). rs_user-email = lo_user_record->get_email( ).
* If no email, fall back to localhost/default email * If no email, fall back to localhost/default email
IF rs_user-email IS INITIAL. IF rs_user-email IS INITIAL.
@ -110,7 +110,7 @@ CLASS zcl_abapgit_background_push_au IMPLEMENTATION.
<ls_local> LIKE LINE OF ls_files-local. <ls_local> LIKE LINE OF ls_files-local.
ls_files = zcl_abapgit_stage_logic=>get_stage_logic( )->get( ii_repo_online ). ls_files = zcl_abapgit_factory=>get_stage_logic( )->get( io_repo ).
LOOP AT ls_files-local ASSIGNING <ls_local>. LOOP AT ls_files-local ASSIGNING <ls_local>.
lv_changed_by = zcl_abapgit_objects=>changed_by( lv_changed_by = zcl_abapgit_objects=>changed_by(
@ -172,13 +172,13 @@ CLASS zcl_abapgit_background_push_au IMPLEMENTATION.
ls_comment-comment = build_comment( ls_user_files ). ls_comment-comment = build_comment( ls_user_files ).
ii_repo_online->push( is_comment = ls_comment io_repo->push( is_comment = ls_comment
io_stage = lo_stage ). io_stage = lo_stage ).
ENDLOOP. ENDLOOP.
IF lines( ls_files-remote ) > 0. IF lines( ls_files-remote ) > 0.
push_deletions( ii_repo_online = ii_repo_online push_deletions( io_repo = io_repo
is_files = ls_files ). is_files = ls_files ).
ENDIF. ENDIF.
ENDMETHOD. ENDMETHOD.
@ -212,8 +212,8 @@ CLASS zcl_abapgit_background_push_au IMPLEMENTATION.
ls_comment-committer-name = 'Deletion'. ls_comment-committer-name = 'Deletion'.
ls_comment-committer-email = 'deletion@localhost'. ls_comment-committer-email = 'deletion@localhost'.
ii_repo_online->push( is_comment = ls_comment io_repo->push( is_comment = ls_comment
io_stage = lo_stage ). io_stage = lo_stage ).
ENDMETHOD. ENDMETHOD.
@ -237,14 +237,14 @@ CLASS zcl_abapgit_background_push_au IMPLEMENTATION.
DATA: ls_files TYPE zif_abapgit_definitions=>ty_stage_files. DATA: ls_files TYPE zif_abapgit_definitions=>ty_stage_files.
mi_log = ii_log. mi_log = ii_log.
ls_files = zcl_abapgit_stage_logic=>get_stage_logic( )->get( ii_repo_online ). ls_files = zcl_abapgit_factory=>get_stage_logic( )->get( io_repo ).
IF lines( ls_files-local ) = 0 AND lines( ls_files-remote ) = 0. IF lines( ls_files-local ) = 0 AND lines( ls_files-remote ) = 0.
ii_log->add_info( 'Nothing to stage' ). ii_log->add_info( 'Nothing to stage' ).
RETURN. RETURN.
ENDIF. ENDIF.
push_auto( ii_repo_online ). push_auto( io_repo ).
ENDMETHOD. ENDMETHOD.
ENDCLASS. ENDCLASS.

View File

@ -22,9 +22,9 @@ CLASS zcl_abapgit_background_push_fi DEFINITION
VALUE(rv_comment) TYPE string . VALUE(rv_comment) TYPE string .
METHODS push_fixed METHODS push_fixed
IMPORTING IMPORTING
!ii_repo_online TYPE REF TO zif_abapgit_repo_online !io_repo TYPE REF TO zcl_abapgit_repo_online
!iv_name TYPE string !iv_name TYPE string
!iv_email TYPE string !iv_email TYPE string
RAISING RAISING
zcx_abapgit_exception . zcx_abapgit_exception .
PRIVATE SECTION. PRIVATE SECTION.
@ -73,7 +73,7 @@ CLASS zcl_abapgit_background_push_fi IMPLEMENTATION.
<ls_remote> LIKE LINE OF ls_files-remote. <ls_remote> LIKE LINE OF ls_files-remote.
ls_files = zcl_abapgit_stage_logic=>get_stage_logic( )->get( ii_repo_online ). ls_files = zcl_abapgit_factory=>get_stage_logic( )->get( io_repo ).
ASSERT lines( ls_files-local ) > 0 ASSERT lines( ls_files-local ) > 0
OR lines( ls_files-remote ) > 0. OR lines( ls_files-remote ) > 0.
@ -99,8 +99,8 @@ CLASS zcl_abapgit_background_push_fi IMPLEMENTATION.
ls_comment-committer-email = iv_email. ls_comment-committer-email = iv_email.
ls_comment-comment = build_comment( ls_files ). ls_comment-comment = build_comment( ls_files ).
ii_repo_online->push( is_comment = ls_comment io_repo->push( is_comment = ls_comment
io_stage = lo_stage ). io_stage = lo_stage ).
ENDMETHOD. ENDMETHOD.
@ -142,7 +142,7 @@ CLASS zcl_abapgit_background_push_fi IMPLEMENTATION.
lv_email TYPE string. lv_email TYPE string.
mi_log = ii_log. mi_log = ii_log.
ls_files = zcl_abapgit_stage_logic=>get_stage_logic( )->get( ii_repo_online ). ls_files = zcl_abapgit_factory=>get_stage_logic( )->get( io_repo ).
IF lines( ls_files-local ) = 0 AND lines( ls_files-remote ) = 0. IF lines( ls_files-local ) = 0 AND lines( ls_files-remote ) = 0.
ii_log->add_info( 'Nothing to stage' ). ii_log->add_info( 'Nothing to stage' ).
@ -156,9 +156,9 @@ CLASS zcl_abapgit_background_push_fi IMPLEMENTATION.
lv_email = ls_setting-value. lv_email = ls_setting-value.
push_fixed( push_fixed(
ii_repo_online = ii_repo_online io_repo = io_repo
iv_name = lv_name iv_name = lv_name
iv_email = lv_email ). iv_email = lv_email ).
ENDMETHOD. ENDMETHOD.
ENDCLASS. ENDCLASS.

View File

@ -15,12 +15,12 @@ INTERFACE zif_abapgit_background
VALUE(rv_description) TYPE string . VALUE(rv_description) TYPE string .
CLASS-METHODS get_settings CLASS-METHODS get_settings
CHANGING CHANGING
ct_settings TYPE ty_settings_tt . VALUE(ct_settings) TYPE ty_settings_tt .
METHODS run METHODS run
IMPORTING IMPORTING
!ii_repo_online TYPE REF TO zif_abapgit_repo_online !io_repo TYPE REF TO zcl_abapgit_repo_online
!ii_log TYPE REF TO zif_abapgit_log !ii_log TYPE REF TO zif_abapgit_log
!it_settings TYPE ty_settings_tt OPTIONAL !it_settings TYPE ty_settings_tt OPTIONAL
RAISING RAISING
zcx_abapgit_exception . zcx_abapgit_exception .
ENDINTERFACE. ENDINTERFACE.

View File

@ -11,7 +11,7 @@ CLASS zcl_abapgit_cts_api DEFINITION
PROTECTED SECTION. PROTECTED SECTION.
PRIVATE SECTION. PRIVATE SECTION.
DATA mv_confirm_transp_msgs_called TYPE abap_bool. DATA: mv_confirm_transp_msgs_called TYPE abap_bool.
"! Returns the transport request / task the object is currently locked in "! Returns the transport request / task the object is currently locked in
"! @parameter iv_program_id | Program ID "! @parameter iv_program_id | Program ID
@ -21,7 +21,7 @@ CLASS zcl_abapgit_cts_api DEFINITION
"! @raising zcx_abapgit_exception | Object is not locked in a transport "! @raising zcx_abapgit_exception | Object is not locked in a transport
METHODS get_current_transport_for_obj METHODS get_current_transport_for_obj
IMPORTING IMPORTING
!iv_program_id TYPE tadir-pgmid DEFAULT 'R3TR' !iv_program_id TYPE pgmid DEFAULT 'R3TR'
!iv_object_type TYPE trobjtype !iv_object_type TYPE trobjtype
!iv_object_name TYPE sobj_name !iv_object_name TYPE sobj_name
RETURNING RETURNING
@ -36,7 +36,7 @@ CLASS zcl_abapgit_cts_api DEFINITION
"! @raising zcx_abapgit_exception | Object is not locked in a transport "! @raising zcx_abapgit_exception | Object is not locked in a transport
METHODS get_current_transport_from_db METHODS get_current_transport_from_db
IMPORTING IMPORTING
!iv_program_id TYPE tadir-pgmid DEFAULT 'R3TR' !iv_program_id TYPE pgmid DEFAULT 'R3TR'
!iv_object_type TYPE trobjtype !iv_object_type TYPE trobjtype
!iv_object_name TYPE sobj_name !iv_object_name TYPE sobj_name
RETURNING RETURNING
@ -51,7 +51,7 @@ CLASS zcl_abapgit_cts_api DEFINITION
"! @raising zcx_abapgit_exception | Object type is not lockable "! @raising zcx_abapgit_exception | Object type is not lockable
METHODS is_object_locked_in_transport METHODS is_object_locked_in_transport
IMPORTING IMPORTING
!iv_program_id TYPE tadir-pgmid DEFAULT 'R3TR' !iv_program_id TYPE pgmid DEFAULT 'R3TR'
!iv_object_type TYPE trobjtype !iv_object_type TYPE trobjtype
!iv_object_name TYPE sobj_name !iv_object_name TYPE sobj_name
RETURNING RETURNING
@ -64,7 +64,7 @@ CLASS zcl_abapgit_cts_api DEFINITION
"! @parameter rv_lockable | Lockable "! @parameter rv_lockable | Lockable
METHODS is_object_type_lockable METHODS is_object_type_lockable
IMPORTING IMPORTING
!iv_program_id TYPE tadir-pgmid DEFAULT 'R3TR' !iv_program_id TYPE pgmid DEFAULT 'R3TR'
!iv_object_type TYPE trobjtype !iv_object_type TYPE trobjtype
RETURNING RETURNING
VALUE(rv_lockable) TYPE abap_bool . VALUE(rv_lockable) TYPE abap_bool .
@ -74,7 +74,7 @@ CLASS zcl_abapgit_cts_api DEFINITION
"! @parameter rv_transportable | Transportable "! @parameter rv_transportable | Transportable
METHODS is_object_type_transportable METHODS is_object_type_transportable
IMPORTING IMPORTING
!iv_program_id TYPE tadir-pgmid DEFAULT 'R3TR' !iv_program_id TYPE pgmid DEFAULT 'R3TR'
!iv_object_type TYPE trobjtype !iv_object_type TYPE trobjtype
RETURNING RETURNING
VALUE(rv_transportable) TYPE abap_bool . VALUE(rv_transportable) TYPE abap_bool .
@ -89,9 +89,6 @@ CLASS zcl_abapgit_cts_api IMPLEMENTATION.
DATA: lv_object_lockable TYPE abap_bool, DATA: lv_object_lockable TYPE abap_bool,
lv_locked TYPE abap_bool, lv_locked TYPE abap_bool,
lv_transport_request TYPE trkorr, lv_transport_request TYPE trkorr,
ls_tlock TYPE tlock,
lt_tlock TYPE STANDARD TABLE OF tlock WITH DEFAULT KEY,
lt_transports TYPE STANDARD TABLE OF trkorr WITH DEFAULT KEY,
lv_task TYPE trkorr, lv_task TYPE trkorr,
lv_tr_object_name TYPE trobj_name. lv_tr_object_name TYPE trobj_name.
@ -107,8 +104,6 @@ CLASS zcl_abapgit_cts_api IMPLEMENTATION.
we_locked = lv_locked we_locked = lv_locked
we_lock_order = lv_transport_request we_lock_order = lv_transport_request
we_lock_task = lv_task we_lock_task = lv_task
TABLES
wt_tlock = lt_tlock
EXCEPTIONS EXCEPTIONS
empty_key = 1 empty_key = 1
no_systemname = 2 no_systemname = 2
@ -127,15 +122,7 @@ CLASS zcl_abapgit_cts_api IMPLEMENTATION.
zcx_abapgit_exception=>raise( |Object type { iv_program_id }-{ iv_object_type } not lockable| ). zcx_abapgit_exception=>raise( |Object type { iv_program_id }-{ iv_object_type } not lockable| ).
ENDIF. ENDIF.
LOOP AT lt_tlock INTO ls_tlock. rv_transport = lv_transport_request.
COLLECT ls_tlock-trkorr INTO lt_transports.
ENDLOOP.
IF lines( lt_transports ) = 1.
rv_transport = lv_transport_request.
ELSE.
rv_transport = zif_abapgit_definitions=>c_multiple_transports.
ENDIF.
ENDMETHOD. ENDMETHOD.
@ -222,133 +209,7 @@ CLASS zcl_abapgit_cts_api IMPLEMENTATION.
IMPORTING IMPORTING
pe_result = lv_type_check_result. pe_result = lv_type_check_result.
rv_transportable = boolc( lv_type_check_result CA 'RTL' OR iv_object_type = 'TABU' ). rv_transportable = boolc( lv_type_check_result CA 'RTL' ).
ENDMETHOD.
METHOD zif_abapgit_cts_api~change_transport_type.
DATA:
ls_request_header TYPE trwbo_request_header,
lt_request_headers TYPE trwbo_request_headers.
CALL FUNCTION 'ENQUEUE_E_TRKORR'
EXPORTING
trkorr = iv_transport_request
EXCEPTIONS
foreign_lock = 1
system_failure = 2
OTHERS = 3.
IF sy-subrc <> 0.
zcx_abapgit_exception=>raise_t100( ).
ENDIF.
CALL FUNCTION 'TR_READ_REQUEST_WITH_TASKS'
EXPORTING
iv_trkorr = iv_transport_request
IMPORTING
et_request_headers = lt_request_headers
EXCEPTIONS
invalid_input = 1
OTHERS = 2.
IF sy-subrc <> 0.
zcx_abapgit_exception=>raise_t100( ).
ENDIF.
LOOP AT lt_request_headers INTO ls_request_header WHERE trfunction = iv_transport_type_from.
CALL FUNCTION 'TRINT_READ_REQUEST_HEADER'
EXPORTING
iv_read_e070 = abap_true
iv_read_e070c = abap_true
CHANGING
cs_request = ls_request_header
EXCEPTIONS
empty_trkorr = 1
not_exist_e070 = 2
OTHERS = 3.
IF sy-subrc <> 0.
zcx_abapgit_exception=>raise_t100( ).
ENDIF.
CALL FUNCTION 'TRINT_CHANGE_TRFUNCTION'
EXPORTING
iv_new_trfunction = iv_transport_type_to
CHANGING
cs_request_header = ls_request_header
EXCEPTIONS
action_aborted_by_user = 1
change_not_allowed = 2
db_access_error = 3
OTHERS = 4.
IF sy-subrc <> 0.
zcx_abapgit_exception=>raise_t100( ).
ENDIF.
ENDLOOP.
CALL FUNCTION 'DEQUEUE_E_TRKORR'
EXPORTING
trkorr = iv_transport_request.
ENDMETHOD.
METHOD zif_abapgit_cts_api~confirm_transport_messages.
TYPES: BEGIN OF ty_s_message,
id TYPE symsgid,
ty TYPE symsgty,
no TYPE symsgno,
v1 TYPE symsgv,
v2 TYPE symsgv,
v3 TYPE symsgv,
v4 TYPE symsgv,
END OF ty_s_message.
DATA ls_message TYPE ty_s_message.
FIELD-SYMBOLS: <lt_confirmed_messages> TYPE STANDARD TABLE.
IF mv_confirm_transp_msgs_called = abap_true.
RETURN.
ENDIF.
" remember the call to avoid duplicates in GT_CONFIRMED_MESSAGES
mv_confirm_transp_msgs_called = abap_true.
" Auto-confirm certain messages (requires SAP Note 1609940)
PERFORM dummy IN PROGRAM saplstrd IF FOUND. "load function group STRD once into memory
ASSIGN ('(SAPLSTRD)GT_CONFIRMED_MESSAGES') TO <lt_confirmed_messages>.
IF sy-subrc <> 0.
RETURN.
ENDIF.
" Object can only be created in package of namespace
ls_message-id = 'TR'.
ls_message-no = '007'.
INSERT ls_message INTO TABLE <lt_confirmed_messages>.
" Original system set to "SAP"
ls_message-id = 'TR'.
ls_message-no = '013'.
INSERT ls_message INTO TABLE <lt_confirmed_messages>.
" Make repairs in foreign namespaces only if they are urgent
ls_message-id = 'TR'.
ls_message-no = '852'.
INSERT ls_message INTO TABLE <lt_confirmed_messages>.
" Make repairs in foreign namespaces only if they are urgent
ls_message-id = 'TK'.
ls_message-no = '016'.
INSERT ls_message INTO TABLE <lt_confirmed_messages>.
rv_messages_confirmed = abap_true.
ENDMETHOD. ENDMETHOD.
@ -358,9 +219,6 @@ CLASS zcl_abapgit_cts_api IMPLEMENTATION.
DATA lt_table_keys TYPE STANDARD TABLE OF e071k. DATA lt_table_keys TYPE STANDARD TABLE OF e071k.
DATA lv_with_dialog TYPE abap_bool. DATA lv_with_dialog TYPE abap_bool.
FIELD-SYMBOLS <ls_table> LIKE LINE OF lt_tables.
FIELD-SYMBOLS <ls_table_key> LIKE LINE OF lt_table_keys.
cl_table_utilities_brf=>create_transport_entries( cl_table_utilities_brf=>create_transport_entries(
EXPORTING EXPORTING
it_table_ins = it_table_ins it_table_ins = it_table_ins
@ -376,7 +234,6 @@ CLASS zcl_abapgit_cts_api IMPLEMENTATION.
CALL FUNCTION 'TR_OBJECTS_CHECK' CALL FUNCTION 'TR_OBJECTS_CHECK'
TABLES TABLES
wt_ko200 = lt_tables wt_ko200 = lt_tables
wt_e071k = lt_table_keys
EXCEPTIONS EXCEPTIONS
cancel_edit_other_error = 1 cancel_edit_other_error = 1
show_only_other_error = 2 show_only_other_error = 2
@ -389,24 +246,15 @@ CLASS zcl_abapgit_cts_api IMPLEMENTATION.
lv_with_dialog = abap_true. lv_with_dialog = abap_true.
ENDIF. ENDIF.
READ TABLE lt_tables ASSIGNING <ls_table> INDEX 1. CALL FUNCTION 'TRINT_OBJECTS_CHECK_AND_INSERT'
ASSERT sy-subrc = 0.
LOOP AT lt_table_keys ASSIGNING <ls_table_key>.
<ls_table_key>-objfunc = <ls_table>-objfunc.
ENDLOOP.
CALL FUNCTION 'TR_OBJECT_INSERT'
EXPORTING EXPORTING
wi_order = iv_transport iv_order = iv_transport
wi_ko200 = <ls_table> iv_with_dialog = lv_with_dialog
iv_no_show_option = abap_true CHANGING
TABLES ct_ko200 = lt_tables
wt_e071k = lt_table_keys ct_e071k = lt_table_keys
EXCEPTIONS EXCEPTIONS
cancel_edit_other_error = 1 OTHERS = 1.
show_only_other_error = 2
OTHERS = 3.
IF sy-subrc <> 0. IF sy-subrc <> 0.
zcx_abapgit_exception=>raise_t100( ). zcx_abapgit_exception=>raise_t100( ).
ENDIF. ENDIF.
@ -419,13 +267,6 @@ CLASS zcl_abapgit_cts_api IMPLEMENTATION.
CLEAR ev_object. CLEAR ev_object.
CLEAR ev_obj_name. CLEAR ev_obj_name.
IF iv_object = 'MESS'.
ev_object = 'MSAG'.
ev_obj_name = substring( val = iv_obj_name
len = strlen( iv_obj_name ) - 3 ).
RETURN.
ENDIF.
CALL FUNCTION 'GET_R3TR_OBJECT_FROM_LIMU_OBJ' CALL FUNCTION 'GET_R3TR_OBJECT_FROM_LIMU_OBJ'
EXPORTING EXPORTING
p_limu_objtype = iv_object p_limu_objtype = iv_object
@ -480,15 +321,11 @@ CLASS zcl_abapgit_cts_api IMPLEMENTATION.
IF lv_type_check_result = 'L'. IF lv_type_check_result = 'L'.
LOOP AT lt_tlock ASSIGNING <ls_tlock> LOOP AT lt_tlock ASSIGNING <ls_tlock>
WHERE object = ls_lock_key-obj WHERE object = ls_lock_key-obj
AND hikey >= ls_lock_key-low AND hikey >= ls_lock_key-low
AND lokey <= ls_lock_key-hi. "#EC PORTABLE AND lokey <= ls_lock_key-hi. "#EC PORTABLE
IF lv_request IS INITIAL. lv_request = <ls_tlock>-trkorr.
lv_request = <ls_tlock>-trkorr. EXIT.
ELSE.
lv_request = zif_abapgit_definitions=>c_multiple_transports.
EXIT.
ENDIF.
ENDLOOP. ENDLOOP.
ELSEIF is_object_type_transportable( <ls_item>-obj_type ) = abap_true. ELSEIF is_object_type_transportable( <ls_item>-obj_type ) = abap_true.
lv_request = get_current_transport_from_db( lv_request = get_current_transport_from_db(
@ -564,131 +401,6 @@ CLASS zcl_abapgit_cts_api IMPLEMENTATION.
ENDMETHOD. ENDMETHOD.
METHOD zif_abapgit_cts_api~list_open_requests_by_user.
TYPES: BEGIN OF ty_e070,
trkorr TYPE e070-trkorr,
trfunction TYPE e070-trfunction,
strkorr TYPE e070-strkorr,
END OF ty_e070.
DATA lt_e070 TYPE STANDARD TABLE OF ty_e070 WITH DEFAULT KEY.
* find all tasks first
SELECT trkorr trfunction strkorr
FROM e070 INTO TABLE lt_e070
WHERE as4user = sy-uname
AND trstatus = zif_abapgit_cts_api=>c_transport_status-modifiable
AND strkorr <> ''
ORDER BY PRIMARY KEY.
IF lines( lt_e070 ) > 0.
SELECT trkorr FROM e070
INTO TABLE rt_trkorr
FOR ALL ENTRIES IN lt_e070
WHERE trkorr = lt_e070-strkorr
AND trfunction = zif_abapgit_cts_api=>c_transport_type-wb_request.
ENDIF.
ENDMETHOD.
METHOD zif_abapgit_cts_api~list_r3tr_by_request.
TYPES: BEGIN OF ty_contents,
trkorr TYPE e071-trkorr,
as4pos TYPE e071-as4pos,
pgmid TYPE e071-pgmid,
object TYPE e071-object,
obj_name TYPE e071-obj_name,
END OF ty_contents.
DATA lt_tasks TYPE STANDARD TABLE OF trkorr WITH DEFAULT KEY.
DATA lt_contents TYPE STANDARD TABLE OF ty_contents WITH DEFAULT KEY.
DATA ls_contents LIKE LINE OF lt_contents.
DATA ls_list LIKE LINE OF rt_list.
SELECT trkorr FROM e070 INTO TABLE lt_tasks
WHERE strkorr = iv_request
ORDER BY PRIMARY KEY.
IF sy-subrc <> 0.
RETURN.
ENDIF.
SELECT trkorr as4pos pgmid object obj_name FROM e071
INTO TABLE lt_contents
FOR ALL ENTRIES IN lt_tasks
WHERE trkorr = lt_tasks-table_line
ORDER BY PRIMARY KEY.
IF sy-subrc <> 0.
RETURN.
ENDIF.
LOOP AT lt_contents INTO ls_contents.
CASE ls_contents-pgmid.
WHEN 'R3TR'.
ls_list-object = ls_contents-object.
ls_list-obj_name = ls_contents-obj_name.
INSERT ls_list INTO TABLE rt_list.
WHEN 'LIMU'.
TRY.
zif_abapgit_cts_api~get_r3tr_obj_for_limu_obj(
EXPORTING
iv_object = ls_contents-object
iv_obj_name = ls_contents-obj_name
IMPORTING
ev_object = ls_list-object
ev_obj_name = ls_list-obj_name ).
INSERT ls_list INTO TABLE rt_list.
CATCH zcx_abapgit_exception ##NO_HANDLER.
ENDTRY.
ENDCASE.
ENDLOOP.
SORT rt_list BY object obj_name.
DELETE ADJACENT DUPLICATES FROM rt_list COMPARING object obj_name.
ENDMETHOD.
METHOD zif_abapgit_cts_api~read.
DATA ls_request TYPE trwbo_request.
DATA ls_key LIKE LINE OF ls_request-keys.
FIELD-SYMBOLS <ls_key> LIKE LINE OF rs_request-keys.
ls_request-h-trkorr = iv_trkorr.
CALL FUNCTION 'TRINT_READ_REQUEST'
EXPORTING
iv_read_e070 = abap_true
iv_read_e07t = abap_true
iv_read_e070c = abap_true
iv_read_e070m = abap_true
iv_read_objs_keys = abap_true
iv_read_objs = abap_true
iv_read_attributes = abap_true
CHANGING
cs_request = ls_request
EXCEPTIONS
error_occured = 1
OTHERS = 2.
IF sy-subrc <> 0.
zcx_abapgit_exception=>raise_t100( ).
ENDIF.
* move to output structure
rs_request-trstatus = ls_request-h-trstatus.
LOOP AT ls_request-keys INTO ls_key.
APPEND INITIAL LINE TO rs_request-keys ASSIGNING <ls_key>.
MOVE-CORRESPONDING ls_key TO <ls_key>.
ENDLOOP.
ENDMETHOD.
METHOD zif_abapgit_cts_api~read_description. METHOD zif_abapgit_cts_api~read_description.
SELECT SINGLE as4text FROM e07t SELECT SINGLE as4text FROM e07t
@ -707,24 +419,60 @@ CLASS zcl_abapgit_cts_api IMPLEMENTATION.
ENDMETHOD. ENDMETHOD.
METHOD zif_abapgit_cts_api~validate_transport_request. METHOD zif_abapgit_cts_api~confirm_transport_messages.
CONSTANTS: TYPES: BEGIN OF ty_s_message,
BEGIN OF c_tr_status, id TYPE symsgid,
modifiable TYPE trstatus VALUE 'D', ty TYPE symsgty,
modifiable_protected TYPE trstatus VALUE 'L', no TYPE symsgno,
END OF c_tr_status. v1 TYPE symsgv,
v2 TYPE symsgv,
v3 TYPE symsgv,
v4 TYPE symsgv,
END OF ty_s_message.
DATA ls_request TYPE zif_abapgit_cts_api=>ty_transport_data. DATA ls_message TYPE ty_s_message.
ls_request = zif_abapgit_cts_api~read( iv_transport_request ). FIELD-SYMBOLS: <lt_confirmed_messages> TYPE STANDARD TABLE.
IF ls_request-trstatus <> c_tr_status-modifiable IF mv_confirm_transp_msgs_called = abap_true.
AND ls_request-trstatus <> c_tr_status-modifiable_protected. RETURN.
" Task/request &1 has already been released
MESSAGE e064(tk) WITH iv_transport_request INTO zcx_abapgit_exception=>null.
zcx_abapgit_exception=>raise_t100( ).
ENDIF. ENDIF.
" remember the call to avoid duplicates in GT_CONFIRMED_MESSAGES
mv_confirm_transp_msgs_called = abap_true.
" Auto-confirm certain messages (requires SAP Note 1609940)
PERFORM dummy IN PROGRAM saplstrd IF FOUND. "load function group STRD once into memory
ASSIGN ('(SAPLSTRD)GT_CONFIRMED_MESSAGES') TO <lt_confirmed_messages>.
IF sy-subrc <> 0.
RETURN.
ENDIF.
" Object can only be created in package of namespace
ls_message-id = 'TR'.
ls_message-no = '007'.
INSERT ls_message INTO TABLE <lt_confirmed_messages>.
" Original system set to "SAP"
ls_message-id = 'TR'.
ls_message-no = '013'.
INSERT ls_message INTO TABLE <lt_confirmed_messages>.
" Make repairs in foreign namespaces only if they are urgent
ls_message-id = 'TR'.
ls_message-no = '852'.
INSERT ls_message INTO TABLE <lt_confirmed_messages>.
" Make repairs in foreign namespaces only if they are urgent
ls_message-id = 'TK'.
ls_message-no = '016'.
INSERT ls_message INTO TABLE <lt_confirmed_messages>.
rv_messages_confirmed = abap_true.
ENDMETHOD. ENDMETHOD.
ENDCLASS. ENDCLASS.

View File

@ -1,18 +1,46 @@
CLASS zcl_abapgit_default_transport DEFINITION CLASS zcl_abapgit_default_transport DEFINITION
PUBLIC PUBLIC
CREATE PUBLIC . CREATE PRIVATE .
PUBLIC SECTION. PUBLIC SECTION.
INTERFACES zif_abapgit_default_transport. CLASS-METHODS:
get_instance
RETURNING
VALUE(ro_instance) TYPE REF TO zcl_abapgit_default_transport
RAISING
zcx_abapgit_exception.
METHODS:
constructor
RAISING
zcx_abapgit_exception,
set
IMPORTING
iv_transport TYPE trkorr
RAISING
zcx_abapgit_exception,
reset
RAISING
zcx_abapgit_exception,
get
RETURNING
VALUE(rs_default_task) TYPE e070use
RAISING
zcx_abapgit_exception .
METHODS constructor.
PROTECTED SECTION. PROTECTED SECTION.
PRIVATE SECTION. PRIVATE SECTION.
CLASS-DATA go_instance TYPE REF TO zcl_abapgit_default_transport .
DATA mv_is_set_by_abapgit TYPE abap_bool . DATA mv_is_set_by_abapgit TYPE abap_bool .
DATA ms_save TYPE e070use . DATA ms_save TYPE e070use .
METHODS store. METHODS store
RAISING
zcx_abapgit_exception .
METHODS restore METHODS restore
RAISING RAISING
zcx_abapgit_exception . zcx_abapgit_exception .
@ -60,6 +88,64 @@ CLASS zcl_abapgit_default_transport IMPLEMENTATION.
ENDMETHOD. ENDMETHOD.
METHOD get.
DATA: lt_e070use TYPE STANDARD TABLE OF e070use.
CALL FUNCTION 'TR_TASK_GET'
TABLES
tt_e070use = lt_e070use
EXCEPTIONS
invalid_username = 1
invalid_category = 2
invalid_client = 3
OTHERS = 4.
IF sy-subrc <> 0.
zcx_abapgit_exception=>raise_t100( ).
ENDIF.
READ TABLE lt_e070use INTO rs_default_task
INDEX 1.
ENDMETHOD.
METHOD get_instance.
IF go_instance IS NOT BOUND.
CREATE OBJECT go_instance.
ENDIF.
ro_instance = go_instance.
ENDMETHOD.
METHOD reset.
DATA: ls_default_task TYPE e070use.
IF mv_is_set_by_abapgit = abap_false.
" if the default transport request task isn't set
" by us there is nothing to do.
RETURN.
ENDIF.
CLEAR mv_is_set_by_abapgit.
ls_default_task = get( ).
IF ls_default_task IS NOT INITIAL.
clear( ls_default_task ).
ENDIF.
restore( ).
ENDMETHOD.
METHOD restore. METHOD restore.
IF ms_save IS INITIAL. IF ms_save IS INITIAL.
@ -87,6 +173,29 @@ CLASS zcl_abapgit_default_transport IMPLEMENTATION.
ENDMETHOD. ENDMETHOD.
METHOD set.
" checks whether object changes of the package are rerorded in transport
" requests. If true then we set the default task, so that no annoying
" transport request popups are shown while deserializing.
IF mv_is_set_by_abapgit = abap_true.
" the default transport request task is already set by us
" -> no reason to do it again.
RETURN.
ENDIF.
IF iv_transport IS INITIAL.
zcx_abapgit_exception=>raise( |No transport request was supplied| ).
ENDIF.
set_internal( iv_transport ).
mv_is_set_by_abapgit = abap_true.
ENDMETHOD.
METHOD set_internal. METHOD set_internal.
CALL FUNCTION 'TR_TASK_SET' CALL FUNCTION 'TR_TASK_SET'
@ -111,84 +220,7 @@ CLASS zcl_abapgit_default_transport IMPLEMENTATION.
METHOD store. METHOD store.
TRY. ms_save = get( ).
ms_save = zif_abapgit_default_transport~get( ).
CATCH zcx_abapgit_exception.
CLEAR ms_save.
ENDTRY.
ENDMETHOD.
METHOD zif_abapgit_default_transport~get.
DATA lt_e070use TYPE STANDARD TABLE OF e070use WITH DEFAULT KEY.
DATA ls_line LIKE LINE OF lt_e070use.
CALL FUNCTION 'TR_TASK_GET'
TABLES
tt_e070use = lt_e070use
EXCEPTIONS
invalid_username = 1
invalid_category = 2
invalid_client = 3
OTHERS = 4.
IF sy-subrc <> 0.
zcx_abapgit_exception=>raise_t100( ).
ENDIF.
READ TABLE lt_e070use INTO ls_line INDEX 1.
IF sy-subrc = 0.
MOVE-CORRESPONDING ls_line TO rs_default_task.
ENDIF.
ENDMETHOD.
METHOD zif_abapgit_default_transport~reset.
DATA: ls_default_task TYPE e070use.
IF mv_is_set_by_abapgit = abap_false.
" if the default transport request task isn't set
" by us there is nothing to do.
RETURN.
ENDIF.
CLEAR mv_is_set_by_abapgit.
ls_default_task = zif_abapgit_default_transport~get( ).
IF ls_default_task IS NOT INITIAL.
clear( ls_default_task ).
ENDIF.
restore( ).
ENDMETHOD.
METHOD zif_abapgit_default_transport~set.
" checks whether object changes of the package are reordered in transport
" requests. If true then we set the default task, so that no annoying
" transport request popups are shown while deserializing.
IF mv_is_set_by_abapgit = abap_true.
" the default transport request task is already set by us
" -> no reason to do it again.
RETURN.
ENDIF.
IF iv_transport IS INITIAL.
zcx_abapgit_exception=>raise( |No transport request was supplied| ).
ENDIF.
set_internal( iv_transport ).
mv_is_set_by_abapgit = abap_true.
ENDMETHOD. ENDMETHOD.
ENDCLASS. ENDCLASS.

View File

@ -16,10 +16,10 @@ CLASS zcl_abapgit_transport DEFINITION
CLASS-METHODS to_tadir CLASS-METHODS to_tadir
IMPORTING IMPORTING
!iv_trkorr TYPE trkorr !it_transport_headers TYPE trwbo_request_headers
!iv_deleted_objects TYPE abap_bool DEFAULT abap_false !iv_deleted_objects TYPE abap_bool DEFAULT abap_false
RETURNING RETURNING
VALUE(rt_tadir) TYPE zif_abapgit_definitions=>ty_tadir_tt VALUE(rt_tadir) TYPE zif_abapgit_definitions=>ty_tadir_tt
RAISING RAISING
zcx_abapgit_exception . zcx_abapgit_exception .
@ -29,13 +29,25 @@ CLASS zcl_abapgit_transport DEFINITION
RAISING RAISING
zcx_abapgit_exception . zcx_abapgit_exception .
PROTECTED SECTION. CLASS-METHODS read
IMPORTING
!is_trkorr TYPE trwbo_request_header OPTIONAL
RETURNING
VALUE(rs_request) TYPE trwbo_request
RAISING
zcx_abapgit_exception .
TYPES ty_trkorr_tt TYPE STANDARD TABLE OF trkorr. CLASS-METHODS validate_transport_request
IMPORTING
iv_transport_request TYPE trkorr
RAISING
zcx_abapgit_exception.
PROTECTED SECTION.
CLASS-METHODS read_requests CLASS-METHODS read_requests
IMPORTING IMPORTING
!it_trkorr TYPE ty_trkorr_tt !it_trkorr TYPE trwbo_request_headers
RETURNING RETURNING
VALUE(rt_requests) TYPE trwbo_requests VALUE(rt_requests) TYPE trwbo_requests
RAISING RAISING
@ -103,7 +115,7 @@ CLASS zcl_abapgit_transport IMPLEMENTATION.
" We used TR_REQUEST_CHOICE before, but it issues its error log with " We used TR_REQUEST_CHOICE before, but it issues its error log with
" write lists which are not compatible with abapGit. " write lists which are not compatible with abapGit.
" There we user TRINT_REQUEST_CHOICE which returns the error log " There we user TRINT_REQUEST_CHOICE which returns the error log
" and display the log ourselves. " and display the log ourselve.
CALL FUNCTION 'TRINT_REQUEST_CHOICE' CALL FUNCTION 'TRINT_REQUEST_CHOICE'
EXPORTING EXPORTING
iv_request_types = 'FTCOK' iv_request_types = 'FTCOK'
@ -146,7 +158,7 @@ CLASS zcl_abapgit_transport IMPLEMENTATION.
lt_objects TYPE scts_tadir, lt_objects TYPE scts_tadir,
lt_objects_all LIKE lt_objects, lt_objects_all LIKE lt_objects,
ls_e071 LIKE LINE OF rt_objects, ls_e071 LIKE LINE OF rt_objects,
li_repo TYPE REF TO zif_abapgit_repo, lo_repo TYPE REF TO zcl_abapgit_repo,
lv_package TYPE zif_abapgit_persistence=>ty_repo-package, lv_package TYPE zif_abapgit_persistence=>ty_repo-package,
lt_packages TYPE zif_abapgit_sap_package=>ty_devclass_tt. lt_packages TYPE zif_abapgit_sap_package=>ty_devclass_tt.
@ -154,8 +166,8 @@ CLASS zcl_abapgit_transport IMPLEMENTATION.
<lv_package> TYPE devclass, <lv_package> TYPE devclass,
<ls_object> TYPE tadir. <ls_object> TYPE tadir.
li_repo = zcl_abapgit_repo_srv=>get_instance( )->get( iv_key ). lo_repo ?= zcl_abapgit_repo_srv=>get_instance( )->get( iv_key ).
lv_package = li_repo->get_package( ). lv_package = lo_repo->get_package( ).
lt_packages = zcl_abapgit_factory=>get_sap_package( lv_package )->list_subpackages( ). lt_packages = zcl_abapgit_factory=>get_sap_package( lv_package )->list_subpackages( ).
INSERT lv_package INTO TABLE lt_packages. INSERT lv_package INTO TABLE lt_packages.
@ -230,14 +242,39 @@ CLASS zcl_abapgit_transport IMPLEMENTATION.
ENDMETHOD. ENDMETHOD.
METHOD read.
rs_request-h-trkorr = is_trkorr-trkorr.
CALL FUNCTION 'TRINT_READ_REQUEST'
EXPORTING
iv_read_e070 = abap_true
iv_read_e07t = abap_true
iv_read_e070c = abap_true
iv_read_e070m = abap_true
iv_read_objs_keys = abap_true
iv_read_objs = abap_true
iv_read_attributes = abap_true
CHANGING
cs_request = rs_request
EXCEPTIONS
error_occured = 1
OTHERS = 2.
IF sy-subrc <> 0.
zcx_abapgit_exception=>raise_t100( ).
ENDIF.
ENDMETHOD.
METHOD read_requests. METHOD read_requests.
DATA lt_requests LIKE rt_requests. DATA lt_requests LIKE rt_requests.
FIELD-SYMBOLS <lv_trkorr> LIKE LINE OF it_trkorr. FIELD-SYMBOLS <ls_trkorr> LIKE LINE OF it_trkorr.
LOOP AT it_trkorr ASSIGNING <lv_trkorr>. LOOP AT it_trkorr ASSIGNING <ls_trkorr>.
CALL FUNCTION 'TR_READ_REQUEST_WITH_TASKS' CALL FUNCTION 'TR_READ_REQUEST_WITH_TASKS'
EXPORTING EXPORTING
iv_trkorr = <lv_trkorr> iv_trkorr = <ls_trkorr>-trkorr
IMPORTING IMPORTING
et_requests = lt_requests et_requests = lt_requests
EXCEPTIONS EXCEPTIONS
@ -327,17 +364,14 @@ CLASS zcl_abapgit_transport IMPLEMENTATION.
METHOD to_tadir. METHOD to_tadir.
DATA lt_requests TYPE trwbo_requests. DATA: lt_requests TYPE trwbo_requests.
DATA lt_trkorr TYPE ty_trkorr_tt.
IF iv_trkorr IS INITIAL. IF lines( it_transport_headers ) = 0.
RETURN. RETURN.
ENDIF. ENDIF.
INSERT iv_trkorr INTO TABLE lt_trkorr. lt_requests = read_requests( it_transport_headers ).
lt_requests = read_requests( lt_trkorr ).
rt_tadir = resolve( rt_tadir = resolve(
it_requests = lt_requests it_requests = lt_requests
iv_deleted_objects = iv_deleted_objects ). iv_deleted_objects = iv_deleted_objects ).
@ -345,6 +379,35 @@ CLASS zcl_abapgit_transport IMPLEMENTATION.
ENDMETHOD. ENDMETHOD.
METHOD validate_transport_request.
CONSTANTS:
BEGIN OF c_tr_status,
modifiable TYPE trstatus VALUE 'D',
modifiable_protected TYPE trstatus VALUE 'L',
release_started TYPE trstatus VALUE 'O',
released TYPE trstatus VALUE 'R',
released_with_import_protect TYPE trstatus VALUE 'N', " Released (with Import Protection for Repaired Objects)
END OF c_tr_status.
DATA:
ls_trkorr TYPE trwbo_request_header,
ls_request TYPE trwbo_request.
ls_trkorr-trkorr = iv_transport_request.
ls_request = read( ls_trkorr ).
IF ls_request-h-trstatus <> c_tr_status-modifiable
AND ls_request-h-trstatus <> c_tr_status-modifiable_protected.
" Task/request &1 has already been released
MESSAGE e064(tk) WITH iv_transport_request INTO zcx_abapgit_exception=>null.
zcx_abapgit_exception=>raise_t100( ).
ENDIF.
ENDMETHOD.
METHOD zip. METHOD zip.
DATA: lt_requests TYPE trwbo_requests, DATA: lt_requests TYPE trwbo_requests,
@ -352,17 +415,13 @@ CLASS zcl_abapgit_transport IMPLEMENTATION.
lv_package TYPE devclass, lv_package TYPE devclass,
lo_dot_abapgit TYPE REF TO zcl_abapgit_dot_abapgit, lo_dot_abapgit TYPE REF TO zcl_abapgit_dot_abapgit,
ls_local_settings TYPE zif_abapgit_persistence=>ty_repo-local_settings, ls_local_settings TYPE zif_abapgit_persistence=>ty_repo-local_settings,
lt_trkorr TYPE ty_trkorr_tt, lt_trkorr TYPE trwbo_request_headers.
lv_trkorr TYPE trkorr.
IF is_trkorr IS SUPPLIED. IF is_trkorr IS SUPPLIED.
APPEND is_trkorr-trkorr TO lt_trkorr. APPEND is_trkorr TO lt_trkorr.
ELSE. ELSE.
lv_trkorr = zcl_abapgit_ui_factory=>get_popups( )->popup_to_select_transport( ). lt_trkorr = zcl_abapgit_ui_factory=>get_popups( )->popup_to_select_transports( ).
IF lv_trkorr IS NOT INITIAL.
APPEND lv_trkorr TO lt_trkorr.
ENDIF.
ENDIF. ENDIF.
IF lines( lt_trkorr ) = 0. IF lines( lt_trkorr ) = 0.

View File

@ -7,7 +7,7 @@ CLASS zcl_abapgit_transport_2_branch DEFINITION
METHODS create METHODS create
IMPORTING IMPORTING
!ii_repo_online TYPE REF TO zif_abapgit_repo_online !io_repository TYPE REF TO zcl_abapgit_repo_online
!is_transport_to_branch TYPE zif_abapgit_definitions=>ty_transport_to_branch !is_transport_to_branch TYPE zif_abapgit_definitions=>ty_transport_to_branch
!it_transport_objects TYPE zif_abapgit_definitions=>ty_tadir_tt !it_transport_objects TYPE zif_abapgit_definitions=>ty_tadir_tt
RAISING RAISING
@ -46,13 +46,13 @@ CLASS zcl_abapgit_transport_2_branch IMPLEMENTATION.
lv_branch_name = zcl_abapgit_git_branch_list=>complete_heads_branch_name( lv_branch_name = zcl_abapgit_git_branch_list=>complete_heads_branch_name(
zcl_abapgit_git_branch_list=>normalize_branch_name( is_transport_to_branch-branch_name ) ). zcl_abapgit_git_branch_list=>normalize_branch_name( is_transport_to_branch-branch_name ) ).
ii_repo_online->create_branch( lv_branch_name ). io_repository->create_branch( lv_branch_name ).
CREATE OBJECT lo_stage. CREATE OBJECT lo_stage.
ls_stage_objects = zcl_abapgit_stage_logic=>get_stage_logic( )->get( ii_repo_online ). ls_stage_objects = zcl_abapgit_factory=>get_stage_logic( )->get( io_repository ).
lt_object_statuses = zcl_abapgit_repo_status=>calculate( ii_repo_online ). lt_object_statuses = zcl_abapgit_repo_status=>calculate( io_repository ).
stage_transport_objects( stage_transport_objects(
it_transport_objects = it_transport_objects it_transport_objects = it_transport_objects
@ -62,8 +62,8 @@ CLASS zcl_abapgit_transport_2_branch IMPLEMENTATION.
ls_comment = generate_commit_message( is_transport_to_branch ). ls_comment = generate_commit_message( is_transport_to_branch ).
ii_repo_online->push( is_comment = ls_comment io_repository->push( is_comment = ls_comment
io_stage = lo_stage ). io_stage = lo_stage ).
ENDMETHOD. ENDMETHOD.

View File

@ -53,7 +53,7 @@ CLASS zcl_abapgit_transport_mass IMPLEMENTATION.
lcl_gui=>open_folder_frontend( lo_transport_zipper->get_folder( ) ). lcl_gui=>open_folder_frontend( lo_transport_zipper->get_folder( ) ).
ELSE. ELSE.
* No data found for the provided selection criteria * No data found for the provided selection criterias
zcx_abapgit_exception=>raise( 'No transport requests selected' ). zcx_abapgit_exception=>raise( 'No transport requests selected' ).
ENDIF. ENDIF.

View File

@ -13,6 +13,10 @@ CLASS lcl_gui DEFINITION FINAL.
CLASS-METHODS select_tr_requests CLASS-METHODS select_tr_requests
RETURNING RETURNING
VALUE(rt_trkorr) TYPE trwbo_request_headers. VALUE(rt_trkorr) TYPE trwbo_request_headers.
PRIVATE SECTION.
CLASS-DATA gv_last_folder TYPE string.
ENDCLASS. ENDCLASS.
CLASS lcl_gui IMPLEMENTATION. CLASS lcl_gui IMPLEMENTATION.
@ -28,9 +32,13 @@ CLASS lcl_gui IMPLEMENTATION.
lo_fe_serv->directory_browse( lo_fe_serv->directory_browse(
EXPORTING EXPORTING
iv_window_title = lv_title iv_window_title = lv_title
iv_initial_folder = gv_last_folder
CHANGING CHANGING
cv_selected_folder = rv_folder ). cv_selected_folder = rv_folder ).
"Store the last directory for user friendly UI
gv_last_folder = rv_folder.
ENDMETHOD. ENDMETHOD.
METHOD open_folder_frontend. METHOD open_folder_frontend.
@ -63,7 +71,7 @@ CLASS lcl_gui IMPLEMENTATION.
iv_via_selscreen = 'X' iv_via_selscreen = 'X'
is_selection = ls_selection is_selection = ls_selection
iv_complete_projects = space iv_complete_projects = space
iv_title = 'abapGit Transport Mass Downloader' iv_title = 'ABAPGit Transport Mass Downloader'
is_popup = ls_popup is_popup = ls_popup
IMPORTING IMPORTING
et_requests = rt_trkorr et_requests = rt_trkorr
@ -157,7 +165,7 @@ CLASS lcl_transport_zipper IMPLEMENTATION.
ENDMETHOD. ENDMETHOD.
METHOD does_folder_exist. METHOD does_folder_exist.
rv_folder_exist = zcl_abapgit_ui_factory=>get_frontend_services( )->directory_exist( iv_folder ). rv_folder_exist = zcl_abapgit_ui_factory=>get_frontend_services( )->directory_exist( iv_directory = iv_folder ).
ENDMETHOD. ENDMETHOD.
METHOD get_full_folder. METHOD get_full_folder.

View File

@ -38,17 +38,15 @@ CLASS zcl_abapgit_transport_objects IMPLEMENTATION.
LOOP AT mt_transport_objects INTO ls_transport_object. LOOP AT mt_transport_objects INTO ls_transport_object.
LOOP AT it_object_statuses INTO ls_object_status LOOP AT it_object_statuses INTO ls_object_status
" USING KEY sec_key " syntax error in 754
WHERE obj_name = ls_transport_object-obj_name WHERE obj_name = ls_transport_object-obj_name
AND obj_type = ls_transport_object-object AND obj_type = ls_transport_object-object
AND NOT lstate IS INITIAL ##PRIMKEY[SEC_KEY]. AND NOT lstate IS INITIAL.
CASE ls_object_status-lstate. CASE ls_object_status-lstate.
WHEN zif_abapgit_definitions=>c_state-added OR zif_abapgit_definitions=>c_state-modified. WHEN zif_abapgit_definitions=>c_state-added OR zif_abapgit_definitions=>c_state-modified.
IF ls_transport_object-delflag = abap_true. IF ls_transport_object-delflag = abap_true.
zcx_abapgit_exception=>raise( |Object { ls_transport_object-object }| zcx_abapgit_exception=>raise( |Object { ls_transport_object-obj_name
&& | { ls_transport_object-obj_name } should be added/modified,| } should be added/modified, but has deletion flag in transport| ).
&& | but has deletion flag in transport| ).
ENDIF. ENDIF.
READ TABLE is_stage_objects-local READ TABLE is_stage_objects-local
@ -57,8 +55,8 @@ CLASS zcl_abapgit_transport_objects IMPLEMENTATION.
item-obj_type = ls_transport_object-object item-obj_type = ls_transport_object-object
file-filename = ls_object_status-filename. file-filename = ls_object_status-filename.
IF sy-subrc <> 0. IF sy-subrc <> 0.
zcx_abapgit_exception=>raise( |Object { ls_transport_object-object }| zcx_abapgit_exception=>raise( |Object { ls_transport_object-obj_name
&& | { ls_transport_object-obj_name } not found in the local repository files| ). } not found in the local repository files| ).
ELSE. ELSE.
io_stage->add( io_stage->add(
iv_path = ls_local_file-file-path iv_path = ls_local_file-file-path
@ -66,6 +64,16 @@ CLASS zcl_abapgit_transport_objects IMPLEMENTATION.
iv_data = ls_local_file-file-data ). iv_data = ls_local_file-file-data ).
ENDIF. ENDIF.
WHEN zif_abapgit_definitions=>c_state-deleted. WHEN zif_abapgit_definitions=>c_state-deleted.
* SUSC, see https://github.com/abapGit/abapGit/issues/2772
IF ls_transport_object-delflag = abap_false
AND ls_transport_object-object <> 'SUSC'
AND ls_transport_object-object <> 'IWOM'
AND ls_transport_object-object <> 'IWMO'
AND ls_transport_object-object <> 'IWSG'
AND ls_transport_object-object <> 'IWSV'.
zcx_abapgit_exception=>raise( |Object { ls_transport_object-obj_name
} should be removed, but has NO deletion flag in transport| ).
ENDIF.
io_stage->rm( io_stage->rm(
iv_path = ls_object_status-path iv_path = ls_object_status-path
iv_filename = ls_object_status-filename ). iv_filename = ls_object_status-filename ).
@ -75,7 +83,7 @@ CLASS zcl_abapgit_transport_objects IMPLEMENTATION.
ENDLOOP. ENDLOOP.
IF sy-subrc <> 0. IF sy-subrc <> 0.
" Since not all objects in a transport might be in the local repo " Since not all objects in a transport might be in the local repo
" i.e. generated SADL objects, we don't add these objects to " i.e generated SADL objects, we don't add these objects to
" the stage. " the stage.
ENDIF. ENDIF.
ENDLOOP. ENDLOOP.

View File

@ -1,3 +1,4 @@
CLASS ltcl_transport_objects DEFINITION FOR TESTING DURATION SHORT RISK LEVEL HARMLESS. CLASS ltcl_transport_objects DEFINITION FOR TESTING DURATION SHORT RISK LEVEL HARMLESS.
PRIVATE SECTION. PRIVATE SECTION.
@ -9,7 +10,12 @@ CLASS ltcl_transport_objects DEFINITION FOR TESTING DURATION SHORT RISK LEVEL HA
cant_be_added_with_del_flag FOR TESTING RAISING cx_static_check, cant_be_added_with_del_flag FOR TESTING RAISING cx_static_check,
cant_be_modified_with_del_flag FOR TESTING RAISING cx_static_check, cant_be_modified_with_del_flag FOR TESTING RAISING cx_static_check,
deleted_to_removed_files FOR TESTING RAISING cx_static_check, deleted_to_removed_files FOR TESTING RAISING cx_static_check,
should_remove_no_delflag FOR TESTING RAISING cx_static_check, should_remove_no_delflag_iwmo FOR TESTING RAISING cx_static_check,
should_remove_no_delflag_iwom FOR TESTING RAISING cx_static_check,
should_remove_no_delflag_iwsg FOR TESTING RAISING cx_static_check,
should_remove_no_delflag_iwsv FOR TESTING RAISING cx_static_check,
should_remove_no_delflag_susc FOR TESTING RAISING cx_static_check,
shouldnt_remove_no_delflag FOR TESTING RAISING cx_static_check,
should_add_all_local_files FOR TESTING RAISING cx_static_check, should_add_all_local_files FOR TESTING RAISING cx_static_check,
should_delete_all_related FOR TESTING RAISING cx_static_check, should_delete_all_related FOR TESTING RAISING cx_static_check,
setup, setup,
@ -70,13 +76,13 @@ CLASS ltcl_transport_objects IMPLEMENTATION.
given_the_object_status( given_the_object_status(
iv_obj_name = 'CL_FOO' iv_obj_name = 'CL_FOO'
iv_obj_type = 'CLAS' iv_obj_type = 'CLAS'
iv_filename = 'cl_foo.clas.abap' iv_filename = 'CL_FOO.abap'
iv_lstate = zif_abapgit_definitions=>c_state-added ). iv_lstate = zif_abapgit_definitions=>c_state-added ).
ls_local_file = given_the_local_file( ls_local_file = given_the_local_file(
iv_obj_name = 'CL_FOO' iv_obj_name = 'CL_FOO'
iv_obj_type = 'CLAS' iv_obj_type = 'CLAS'
iv_filename = 'cl_foo.clas.abap' iv_filename = 'CL_FOO.abap'
iv_path = '/path' iv_path = '/path'
iv_data = 'data' ). iv_data = 'data' ).
@ -84,7 +90,6 @@ CLASS ltcl_transport_objects IMPLEMENTATION.
then_file_should_be_added( ls_local_file ). then_file_should_be_added( ls_local_file ).
ENDMETHOD. ENDMETHOD.
METHOD modified_to_new_local_files. METHOD modified_to_new_local_files.
DATA ls_local_file TYPE zif_abapgit_definitions=>ty_file_item. DATA ls_local_file TYPE zif_abapgit_definitions=>ty_file_item.
given_the_transport_object( given_the_transport_object(
@ -94,13 +99,13 @@ CLASS ltcl_transport_objects IMPLEMENTATION.
given_the_object_status( given_the_object_status(
iv_obj_name = 'CL_FOO' iv_obj_name = 'CL_FOO'
iv_obj_type = 'CLAS' iv_obj_type = 'CLAS'
iv_filename = 'cl_foo.clas.abap' iv_filename = 'CL_FOO.abap'
iv_lstate = zif_abapgit_definitions=>c_state-modified ). iv_lstate = zif_abapgit_definitions=>c_state-modified ).
ls_local_file = given_the_local_file( ls_local_file = given_the_local_file(
iv_obj_name = 'CL_FOO' iv_obj_name = 'CL_FOO'
iv_obj_type = 'CLAS' iv_obj_type = 'CLAS'
iv_filename = 'cl_foo.clas.abap' iv_filename = 'CL_FOO.abap'
iv_path = '/path' iv_path = '/path'
iv_data = 'data' ). iv_data = 'data' ).
@ -108,7 +113,6 @@ CLASS ltcl_transport_objects IMPLEMENTATION.
then_file_should_be_added( ls_local_file ). then_file_should_be_added( ls_local_file ).
ENDMETHOD. ENDMETHOD.
METHOD should_add_all_local_files. METHOD should_add_all_local_files.
"Not only .abap, but also .xml and other includes "Not only .abap, but also .xml and other includes
DATA ls_abap_local_file TYPE zif_abapgit_definitions=>ty_file_item. DATA ls_abap_local_file TYPE zif_abapgit_definitions=>ty_file_item.
@ -121,26 +125,26 @@ CLASS ltcl_transport_objects IMPLEMENTATION.
given_the_object_status( given_the_object_status(
iv_obj_name = 'CL_FOO' iv_obj_name = 'CL_FOO'
iv_obj_type = 'CLAS' iv_obj_type = 'CLAS'
iv_filename = 'cl_foo.clas.abap' iv_filename = 'CL_FOO.abap'
iv_lstate = zif_abapgit_definitions=>c_state-modified ). iv_lstate = zif_abapgit_definitions=>c_state-modified ).
given_the_object_status( given_the_object_status(
iv_obj_name = 'CL_FOO' iv_obj_name = 'CL_FOO'
iv_obj_type = 'CLAS' iv_obj_type = 'CLAS'
iv_filename = 'cl_foo.clas.xml' iv_filename = 'CL_FOO.xml'
iv_lstate = zif_abapgit_definitions=>c_state-modified ). iv_lstate = zif_abapgit_definitions=>c_state-modified ).
ls_abap_local_file = given_the_local_file( ls_abap_local_file = given_the_local_file(
iv_obj_name = 'CL_FOO' iv_obj_name = 'CL_FOO'
iv_obj_type = 'CLAS' iv_obj_type = 'CLAS'
iv_filename = 'cl_foo.clas.abap' iv_filename = 'CL_FOO.abap'
iv_path = '/path' iv_path = '/path'
iv_data = 'data' ). iv_data = 'data' ).
ls_xml_local_file = given_the_local_file( ls_xml_local_file = given_the_local_file(
iv_obj_name = 'CL_FOO' iv_obj_name = 'CL_FOO'
iv_obj_type = 'CLAS' iv_obj_type = 'CLAS'
iv_filename = 'cl_foo.clas.xml' iv_filename = 'CL_FOO.xml'
iv_path = '/path' iv_path = '/path'
iv_data = 'data' ). iv_data = 'data' ).
@ -149,7 +153,6 @@ CLASS ltcl_transport_objects IMPLEMENTATION.
then_file_should_be_added( ls_abap_local_file ). then_file_should_be_added( ls_abap_local_file ).
then_file_should_be_added( ls_xml_local_file ). then_file_should_be_added( ls_xml_local_file ).
ENDMETHOD. ENDMETHOD.
METHOD transport_not_in_repository. METHOD transport_not_in_repository.
given_the_transport_object( given_the_transport_object(
iv_obj_name = 'CL_A_CLASS_NOT_IN_REPO' iv_obj_name = 'CL_A_CLASS_NOT_IN_REPO'
@ -178,10 +181,10 @@ CLASS ltcl_transport_objects IMPLEMENTATION.
given_the_local_file( given_the_local_file(
iv_obj_name = 'CL_ANOTHER_LOCAL_FILE' iv_obj_name = 'CL_ANOTHER_LOCAL_FILE'
iv_obj_type = 'CLAS' iv_obj_type = 'CLAS'
iv_filename = 'cl_foo.clas.abap' iv_filename = 'CL_FOO.abap'
iv_path = '/path' iv_path = '/path'
iv_data = 'data' ). iv_data = 'data' ).
then_it_should_raise_exception( 'Object CLAS CL_FOO not found in the local repository files' ). then_it_should_raise_exception( 'Object CL_FOO not found in the local repository files' ).
ENDMETHOD. ENDMETHOD.
METHOD cant_be_added_with_del_flag. METHOD cant_be_added_with_del_flag.
@ -195,7 +198,7 @@ CLASS ltcl_transport_objects IMPLEMENTATION.
iv_obj_type = 'CLAS' iv_obj_type = 'CLAS'
iv_lstate = zif_abapgit_definitions=>c_state-added ). iv_lstate = zif_abapgit_definitions=>c_state-added ).
then_it_should_raise_exception( 'Object CLAS CL_FOO should be added/modified, but has deletion flag in transport' ). then_it_should_raise_exception( 'Object CL_FOO should be added/modified, but has deletion flag in transport' ).
ENDMETHOD. ENDMETHOD.
METHOD cant_be_modified_with_del_flag. METHOD cant_be_modified_with_del_flag.
@ -209,7 +212,7 @@ CLASS ltcl_transport_objects IMPLEMENTATION.
iv_obj_type = 'CLAS' iv_obj_type = 'CLAS'
iv_lstate = zif_abapgit_definitions=>c_state-modified ). iv_lstate = zif_abapgit_definitions=>c_state-modified ).
then_it_should_raise_exception( 'Object CLAS CL_FOO should be added/modified, but has deletion flag in transport' ). then_it_should_raise_exception( 'Object CL_FOO should be added/modified, but has deletion flag in transport' ).
ENDMETHOD. ENDMETHOD.
METHOD deleted_to_removed_files. METHOD deleted_to_removed_files.
@ -221,14 +224,14 @@ CLASS ltcl_transport_objects IMPLEMENTATION.
given_the_object_status( given_the_object_status(
iv_obj_name = 'CL_FOO' iv_obj_name = 'CL_FOO'
iv_obj_type = 'CLAS' iv_obj_type = 'CLAS'
iv_filename = 'cl_foo.clas.abap' iv_filename = 'CL_FOO.abap'
iv_path = '/a_path' iv_path = '/a_path'
iv_lstate = zif_abapgit_definitions=>c_state-deleted ). iv_lstate = zif_abapgit_definitions=>c_state-deleted ).
when_staging( ). when_staging( ).
then_it_should_remove_at_stage( then_it_should_remove_at_stage(
iv_filename = 'cl_foo.clas.abap' iv_filename = 'CL_FOO.abap'
iv_path = '/a_path' ). iv_path = '/a_path' ).
ENDMETHOD. ENDMETHOD.
@ -242,44 +245,124 @@ CLASS ltcl_transport_objects IMPLEMENTATION.
given_the_object_status( given_the_object_status(
iv_obj_name = 'CL_FOO' iv_obj_name = 'CL_FOO'
iv_obj_type = 'CLAS' iv_obj_type = 'CLAS'
iv_filename = 'cl_foo.clas.abap' iv_filename = 'CL_FOO.abap'
iv_path = '/a_path' iv_path = '/a_path'
iv_lstate = zif_abapgit_definitions=>c_state-deleted ). iv_lstate = zif_abapgit_definitions=>c_state-deleted ).
given_the_object_status( given_the_object_status(
iv_obj_name = 'CL_FOO' iv_obj_name = 'CL_FOO'
iv_obj_type = 'CLAS' iv_obj_type = 'CLAS'
iv_filename = 'cl_foo.clas.xml' iv_filename = 'CL_FOO.xml'
iv_path = '/a_path' iv_path = '/a_path'
iv_lstate = zif_abapgit_definitions=>c_state-deleted ). iv_lstate = zif_abapgit_definitions=>c_state-deleted ).
when_staging( ). when_staging( ).
then_it_should_remove_at_stage( then_it_should_remove_at_stage(
iv_filename = 'cl_foo.clas.abap' iv_filename = 'CL_FOO.abap'
iv_path = '/a_path' ). iv_path = '/a_path' ).
then_it_should_remove_at_stage( then_it_should_remove_at_stage(
iv_filename = 'cl_foo.clas.xml' iv_filename = 'CL_FOO.xml'
iv_path = '/a_path' ). iv_path = '/a_path' ).
ENDMETHOD. ENDMETHOD.
METHOD should_remove_no_delflag. METHOD should_remove_no_delflag_iwmo.
given_the_transport_object( given_the_transport_object(
iv_obj_name = 'ZFOO' iv_obj_name = 'ZFOO'
iv_obj_type = 'CLAS' iv_obj_type = 'IWMO'
iv_delflag = abap_false ). iv_delflag = abap_false ).
given_the_object_status( given_the_object_status(
iv_obj_name = 'ZFOO' iv_obj_name = 'ZFOO'
iv_obj_type = 'CLAS' iv_obj_type = 'IWMO'
iv_filename = 'zfoo.clas.xml' iv_filename = 'zfoo.iwmo.xml'
iv_path = '/a_path' iv_path = '/a_path'
iv_lstate = zif_abapgit_definitions=>c_state-deleted ). iv_lstate = zif_abapgit_definitions=>c_state-deleted ).
then_it_should_not_raise_excpt( ). then_it_should_not_raise_excpt( ).
ENDMETHOD. ENDMETHOD.
METHOD should_remove_no_delflag_iwom.
given_the_transport_object(
iv_obj_name = 'ZFOO'
iv_obj_type = 'IWOM'
iv_delflag = abap_false ).
given_the_object_status(
iv_obj_name = 'ZFOO'
iv_obj_type = 'IWOM'
iv_filename = 'zfoo.iwom.xml'
iv_path = '/a_path'
iv_lstate = zif_abapgit_definitions=>c_state-deleted ).
then_it_should_not_raise_excpt( ).
ENDMETHOD.
METHOD should_remove_no_delflag_iwsg.
given_the_transport_object(
iv_obj_name = 'ZFOO'
iv_obj_type = 'IWSG'
iv_delflag = abap_false ).
given_the_object_status(
iv_obj_name = 'ZFOO'
iv_obj_type = 'IWSG'
iv_filename = 'zfoo.iwsg.xml'
iv_path = '/a_path'
iv_lstate = zif_abapgit_definitions=>c_state-deleted ).
then_it_should_not_raise_excpt( ).
ENDMETHOD.
METHOD should_remove_no_delflag_iwsv.
given_the_transport_object(
iv_obj_name = 'ZFOO'
iv_obj_type = 'IWSV'
iv_delflag = abap_false ).
given_the_object_status(
iv_obj_name = 'ZFOO'
iv_obj_type = 'IWSV'
iv_filename = 'zfoo.iwsv.xml'
iv_path = '/a_path'
iv_lstate = zif_abapgit_definitions=>c_state-deleted ).
then_it_should_not_raise_excpt( ).
ENDMETHOD.
METHOD should_remove_no_delflag_susc.
given_the_transport_object(
iv_obj_name = 'ZFOO'
iv_obj_type = 'SUSC'
iv_delflag = abap_false ).
given_the_object_status(
iv_obj_name = 'ZFOO'
iv_obj_type = 'SUSC'
iv_filename = 'zfoo.susc.xml'
iv_path = '/a_path'
iv_lstate = zif_abapgit_definitions=>c_state-deleted ).
then_it_should_not_raise_excpt( ).
ENDMETHOD.
METHOD shouldnt_remove_no_delflag.
given_the_transport_object(
iv_obj_name = 'CL_FOO'
iv_obj_type = 'CLAS'
iv_delflag = abap_false ).
given_the_object_status(
iv_obj_name = 'CL_FOO'
iv_obj_type = 'CLAS'
iv_filename = 'CL_FOO.abap'
iv_path = '/a_path'
iv_lstate = zif_abapgit_definitions=>c_state-deleted ).
then_it_should_raise_exception( 'Object CL_FOO should be removed, but has NO deletion flag in transport' ).
ENDMETHOD.
METHOD given_the_transport_object. METHOD given_the_transport_object.
DATA ls_transport_object TYPE zif_abapgit_definitions=>ty_tadir. DATA ls_transport_object TYPE zif_abapgit_definitions=>ty_tadir.
ls_transport_object-obj_name = iv_obj_name. ls_transport_object-obj_name = iv_obj_name.

View File

@ -1,36 +1,6 @@
INTERFACE zif_abapgit_cts_api INTERFACE zif_abapgit_cts_api
PUBLIC . PUBLIC .
TYPES:
BEGIN OF ty_transport,
obj_type TYPE tadir-object,
obj_name TYPE tadir-obj_name,
trkorr TYPE trkorr,
END OF ty_transport .
TYPES:
ty_transport_list TYPE SORTED TABLE OF ty_transport WITH NON-UNIQUE KEY obj_type obj_name .
TYPES:
ty_trkorr_tt TYPE STANDARD TABLE OF trkorr WITH DEFAULT KEY .
TYPES:
BEGIN OF ty_transport_key,
object TYPE e071k-object,
objname TYPE e071k-objname,
tabkey TYPE e071k-tabkey,
END OF ty_transport_key .
TYPES:
BEGIN OF ty_transport_data,
trstatus TYPE e070-trstatus,
keys TYPE STANDARD TABLE OF ty_transport_key WITH DEFAULT KEY,
END OF ty_transport_data .
TYPES:
BEGIN OF ty_transport_obj,
object TYPE e071-object,
obj_name TYPE e071-obj_name,
END OF ty_transport_obj .
TYPES:
ty_transport_obj_tt TYPE STANDARD TABLE OF ty_transport_obj WITH DEFAULT KEY .
CONSTANTS: CONSTANTS:
BEGIN OF c_transport_type, BEGIN OF c_transport_type,
wb_request TYPE c LENGTH 1 VALUE 'K', "workbench request wb_request TYPE c LENGTH 1 VALUE 'K', "workbench request
@ -38,50 +8,28 @@ INTERFACE zif_abapgit_cts_api
wb_task TYPE c LENGTH 1 VALUE 'S', "workbench task wb_task TYPE c LENGTH 1 VALUE 'S', "workbench task
cust_request TYPE c LENGTH 1 VALUE 'W', "customizing request cust_request TYPE c LENGTH 1 VALUE 'W', "customizing request
cust_task TYPE c LENGTH 1 VALUE 'Q', "customizing task cust_task TYPE c LENGTH 1 VALUE 'Q', "customizing task
END OF c_transport_type . END OF c_transport_type.
CONSTANTS: CONSTANTS:
BEGIN OF c_transport_category, BEGIN OF c_transport_category,
workbench TYPE c LENGTH 4 VALUE 'SYST', workbench TYPE c LENGTH 4 VALUE 'SYST',
customizing TYPE c LENGTH 4 VALUE 'CUST', customizing TYPE c LENGTH 4 VALUE 'CUST',
END OF c_transport_category . END OF c_transport_category.
CONSTANTS: CONSTANTS:
BEGIN OF c_transport_mode, BEGIN OF c_transport_mode,
insert TYPE c LENGTH 1 VALUE 'I', insert TYPE c LENGTH 1 VALUE 'I',
delete TYPE c LENGTH 1 VALUE 'D', delete TYPE c LENGTH 1 VALUE 'D',
END OF c_transport_mode . END OF c_transport_mode.
CONSTANTS:
BEGIN OF c_transport_status, TYPES: BEGIN OF ty_transport,
modifiable TYPE c LENGTH 1 VALUE 'D', obj_type TYPE tadir-object,
END OF c_transport_status . obj_name TYPE tadir-obj_name,
trkorr TYPE trkorr,
END OF ty_transport.
TYPES ty_transport_list TYPE SORTED TABLE OF ty_transport WITH NON-UNIQUE KEY obj_type obj_name.
METHODS confirm_transport_messages
RETURNING
VALUE(rv_messages_confirmed) TYPE abap_bool .
METHODS create_transport_entries
IMPORTING
!iv_transport TYPE trkorr
!it_table_ins TYPE ANY TABLE OPTIONAL
!it_table_upd TYPE ANY TABLE OPTIONAL
!it_table_del TYPE ANY TABLE OPTIONAL
!iv_tabname TYPE tabname
RAISING
zcx_abapgit_exception .
METHODS get_r3tr_obj_for_limu_obj
IMPORTING
!iv_object TYPE tadir-object
!iv_obj_name TYPE trobj_name
EXPORTING
!ev_object TYPE tadir-object
!ev_obj_name TYPE trobj_name
RAISING
zcx_abapgit_exception .
METHODS get_transports_for_list
IMPORTING
!it_items TYPE zif_abapgit_definitions=>ty_items_tt
RETURNING
VALUE(rt_transports) TYPE ty_transport_list
RAISING
zcx_abapgit_exception .
"! Returns the transport request / task the object is currently in "! Returns the transport request / task the object is currently in
"! @parameter is_item | Object "! @parameter is_item | Object
"! @parameter rv_transport | Transport request / task "! @parameter rv_transport | Transport request / task
@ -93,19 +41,6 @@ INTERFACE zif_abapgit_cts_api
VALUE(rv_transport) TYPE trkorr VALUE(rv_transport) TYPE trkorr
RAISING RAISING
zcx_abapgit_exception . zcx_abapgit_exception .
METHODS insert_transport_object
IMPORTING
!iv_pgmid TYPE tadir-pgmid DEFAULT 'R3TR'
!iv_object TYPE tadir-object
!iv_obj_name TYPE csequence
!iv_package TYPE devclass
!iv_language TYPE sy-langu DEFAULT sy-langu
!iv_mode TYPE c DEFAULT 'I'
EXPORTING
!ev_object TYPE tadir-object
!ev_obj_name TYPE trobj_name
RAISING
zcx_abapgit_exception .
"! Check if change recording is possible for the given package "! Check if change recording is possible for the given package
"! @parameter iv_package | Package "! @parameter iv_package | Package
"! @parameter rv_possible | Change recording is possible "! @parameter rv_possible | Change recording is possible
@ -117,48 +52,61 @@ INTERFACE zif_abapgit_cts_api
VALUE(rv_possible) TYPE abap_bool VALUE(rv_possible) TYPE abap_bool
RAISING RAISING
zcx_abapgit_exception . zcx_abapgit_exception .
METHODS list_open_requests_by_user METHODS get_transports_for_list
IMPORTING IMPORTING
!iv_user TYPE sy-uname DEFAULT sy-uname !it_items TYPE zif_abapgit_definitions=>ty_items_tt
RETURNING RETURNING
VALUE(rt_trkorr) TYPE ty_trkorr_tt VALUE(rt_transports) TYPE ty_transport_list
RAISING RAISING
zcx_abapgit_exception . zcx_abapgit_exception .
METHODS list_r3tr_by_request METHODS get_r3tr_obj_for_limu_obj
IMPORTING IMPORTING
!iv_request TYPE trkorr iv_object TYPE tadir-object
RETURNING iv_obj_name TYPE trobj_name
VALUE(rt_list) TYPE ty_transport_obj_tt EXPORTING
RAISING ev_object TYPE tadir-object
zcx_abapgit_exception . ev_obj_name TYPE trobj_name
METHODS read
IMPORTING
!iv_trkorr TYPE trkorr
RETURNING
VALUE(rs_request) TYPE ty_transport_data
RAISING
zcx_abapgit_exception .
METHODS read_description
IMPORTING
!iv_trkorr TYPE trkorr
RETURNING
VALUE(rv_description) TYPE string .
METHODS read_user
IMPORTING
!iv_trkorr TYPE trkorr
RETURNING
VALUE(rv_uname) TYPE uname .
METHODS validate_transport_request
IMPORTING
!iv_transport_request TYPE trkorr
RAISING RAISING
zcx_abapgit_exception . zcx_abapgit_exception .
METHODS change_transport_type METHODS read_description
IMPORTING IMPORTING
!iv_transport_request TYPE trkorr iv_trkorr TYPE trkorr
!iv_transport_type_from TYPE trfunction RETURNING
!iv_transport_type_to TYPE trfunction VALUE(rv_description) TYPE string.
METHODS read_user
IMPORTING
iv_trkorr TYPE trkorr
RETURNING
VALUE(rv_uname) TYPE uname.
METHODS create_transport_entries
IMPORTING
iv_transport TYPE trkorr
it_table_ins TYPE ANY TABLE
it_table_upd TYPE ANY TABLE
it_table_del TYPE ANY TABLE
iv_tabname TYPE tabname
RAISING RAISING
zcx_abapgit_exception. zcx_abapgit_exception.
METHODS insert_transport_object
IMPORTING
iv_pgmid TYPE tadir-pgmid DEFAULT 'R3TR'
iv_object TYPE tadir-object
iv_obj_name TYPE csequence
iv_package TYPE devclass
iv_language TYPE sy-langu DEFAULT sy-langu
iv_mode TYPE c DEFAULT 'I'
EXPORTING
ev_object TYPE tadir-object
ev_obj_name TYPE trobj_name
RAISING
zcx_abapgit_exception.
METHODS confirm_transport_messages
RETURNING
VALUE(rv_messages_confirmed) TYPE abap_bool .
ENDINTERFACE. ENDINTERFACE.

View File

@ -1,24 +0,0 @@
INTERFACE zif_abapgit_default_transport PUBLIC.
TYPES: BEGIN OF ty_get,
trfunction TYPE c LENGTH 1,
ordernum TYPE trkorr,
END OF ty_get.
METHODS set
IMPORTING
iv_transport TYPE trkorr
RAISING
zcx_abapgit_exception.
METHODS reset
RAISING
zcx_abapgit_exception.
METHODS get
RETURNING
VALUE(rs_default_task) TYPE ty_get
RAISING
zcx_abapgit_exception .
ENDINTERFACE.

View File

@ -1,15 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<abapGit version="v1.0.0" serializer="LCL_OBJECT_INTF" serializer_version="v1.0.0">
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
<asx:values>
<VSEOINTERF>
<CLSNAME>ZIF_ABAPGIT_DEFAULT_TRANSPORT</CLSNAME>
<LANGU>E</LANGU>
<DESCRIPT>abapGit - Default Transport</DESCRIPT>
<EXPOSURE>2</EXPOSURE>
<STATE>1</STATE>
<UNICODE>X</UNICODE>
</VSEOINTERF>
</asx:values>
</asx:abap>
</abapGit>

View File

@ -20,12 +20,13 @@ CLASS zcl_abapgit_data_deserializer DEFINITION
METHODS preview_database_changes METHODS preview_database_changes
IMPORTING IMPORTING
!iv_name TYPE tadir-obj_name !iv_name TYPE tadir-obj_name
!it_where TYPE string_table
!ir_lc_data TYPE REF TO data !ir_lc_data TYPE REF TO data
!ir_db_data TYPE REF TO data !ir_db_data TYPE REF TO data
RETURNING RETURNING
VALUE(rs_result) TYPE zif_abapgit_data_deserializer=>ty_result VALUE(rs_result) TYPE zif_abapgit_data_deserializer=>ty_result
RAISING RAISING
zcx_abapgit_exception. zcx_abapgit_exception .
METHODS write_database_table METHODS write_database_table
IMPORTING IMPORTING
!iv_name TYPE tadir-obj_name !iv_name TYPE tadir-obj_name
@ -44,7 +45,7 @@ CLASS zcl_abapgit_data_deserializer DEFINITION
zcx_abapgit_exception . zcx_abapgit_exception .
METHODS determine_transport_request METHODS determine_transport_request
IMPORTING IMPORTING
ii_repo TYPE REF TO zif_abapgit_repo io_repo TYPE REF TO zcl_abapgit_repo
iv_transport_type TYPE zif_abapgit_definitions=>ty_transport_type iv_transport_type TYPE zif_abapgit_definitions=>ty_transport_type
RETURNING RETURNING
VALUE(rv_transport_request) TYPE trkorr. VALUE(rv_transport_request) TYPE trkorr.
@ -88,11 +89,11 @@ CLASS zcl_abapgit_data_deserializer IMPLEMENTATION.
" Use transport from repo settings if maintained, or determine via user exit. " Use transport from repo settings if maintained, or determine via user exit.
" If transport keeps empty here, it'll requested later via popup. " If transport keeps empty here, it'll requested later via popup.
rv_transport_request = ii_repo->get_local_settings( )-customizing_request. rv_transport_request = io_repo->get_local_settings( )-customizing_request.
li_exit->determine_transport_request( li_exit->determine_transport_request(
EXPORTING EXPORTING
ii_repo = ii_repo io_repo = io_repo
iv_transport_type = iv_transport_type iv_transport_type = iv_transport_type
CHANGING CHANGING
cv_transport_request = rv_transport_request ). cv_transport_request = rv_transport_request ).
@ -118,6 +119,7 @@ CLASS zcl_abapgit_data_deserializer IMPLEMENTATION.
FIELD-SYMBOLS <lg_new> TYPE ANY TABLE. FIELD-SYMBOLS <lg_new> TYPE ANY TABLE.
FIELD-SYMBOLS <ls_del> TYPE any. FIELD-SYMBOLS <ls_del> TYPE any.
FIELD-SYMBOLS <ls_ins> TYPE any. FIELD-SYMBOLS <ls_ins> TYPE any.
FIELD-SYMBOLS <ls_upd> TYPE any.
FIELD-SYMBOLS <lg_del> TYPE ANY TABLE. FIELD-SYMBOLS <lg_del> TYPE ANY TABLE.
FIELD-SYMBOLS <lg_ins> TYPE ANY TABLE. FIELD-SYMBOLS <lg_ins> TYPE ANY TABLE.
FIELD-SYMBOLS <lg_upd> TYPE ANY TABLE. FIELD-SYMBOLS <lg_upd> TYPE ANY TABLE.
@ -163,10 +165,10 @@ CLASS zcl_abapgit_data_deserializer IMPLEMENTATION.
ASSIGN rr_data->* TO <lg_tab>. ASSIGN rr_data->* TO <lg_tab>.
LOOP AT it_where INTO lv_where. LOOP AT it_where INTO lv_where.
SELECT * FROM (iv_name) APPENDING TABLE <lg_tab> WHERE (lv_where) ORDER BY PRIMARY KEY. SELECT * FROM (iv_name) APPENDING TABLE <lg_tab> WHERE (lv_where).
ENDLOOP. ENDLOOP.
IF lines( it_where ) = 0. IF lines( it_where ) = 0.
SELECT * FROM (iv_name) INTO TABLE <lg_tab> ORDER BY PRIMARY KEY. SELECT * FROM (iv_name) INTO TABLE <lg_tab>.
ENDIF. ENDIF.
ENDMETHOD. ENDMETHOD.
@ -216,6 +218,7 @@ CLASS zcl_abapgit_data_deserializer IMPLEMENTATION.
DATA ls_result LIKE LINE OF it_result. DATA ls_result LIKE LINE OF it_result.
DATA li_cts_api TYPE REF TO zif_abapgit_cts_api. DATA li_cts_api TYPE REF TO zif_abapgit_cts_api.
DATA ls_file LIKE LINE OF rt_accessed_files.
FIELD-SYMBOLS: FIELD-SYMBOLS:
<lt_ins> TYPE ANY TABLE, <lt_ins> TYPE ANY TABLE,
@ -233,7 +236,7 @@ CLASS zcl_abapgit_data_deserializer IMPLEMENTATION.
obj_type = ls_result-type obj_type = ls_result-type
obj_name = ls_result-name obj_name = ls_result-name
decision = zif_abapgit_definitions=>c_yes. decision = zif_abapgit_definitions=>c_yes.
IF sy-subrc <> 0. IF sy-subrc <> 0.
CONTINUE. CONTINUE.
ENDIF. ENDIF.
@ -305,6 +308,7 @@ CLASS zcl_abapgit_data_deserializer IMPLEMENTATION.
ls_result = preview_database_changes( ls_result = preview_database_changes(
iv_name = ls_config-name iv_name = ls_config-name
it_where = ls_config-where
ir_lc_data = lr_lc_data ir_lc_data = lr_lc_data
ir_db_data = lr_db_data ). ir_db_data = lr_db_data ).
@ -337,7 +341,7 @@ CLASS zcl_abapgit_data_deserializer IMPLEMENTATION.
rs_checks-type-request = zif_abapgit_cts_api=>c_transport_type-cust_request. rs_checks-type-request = zif_abapgit_cts_api=>c_transport_type-cust_request.
rs_checks-type-task = zif_abapgit_cts_api=>c_transport_type-cust_task. rs_checks-type-task = zif_abapgit_cts_api=>c_transport_type-cust_task.
rs_checks-transport = determine_transport_request( rs_checks-transport = determine_transport_request(
ii_repo = ii_repo io_repo = io_repo
iv_transport_type = rs_checks-type ). iv_transport_type = rs_checks-type ).
ENDIF. ENDIF.

View File

@ -73,6 +73,7 @@ CLASS ltcl_test IMPLEMENTATION.
CREATE OBJECT li_cut TYPE zcl_abapgit_data_deserializer. CREATE OBJECT li_cut TYPE zcl_abapgit_data_deserializer.
ls_result = li_cut->preview_database_changes( ls_result = li_cut->preview_database_changes(
iv_name = ls_config-name iv_name = ls_config-name
it_where = ls_config-where
ir_db_data = lr_db_data ir_db_data = lr_db_data
ir_lc_data = lr_lc_data ). ir_lc_data = lr_lc_data ).
@ -141,6 +142,7 @@ CLASS ltcl_test IMPLEMENTATION.
CREATE OBJECT li_cut TYPE zcl_abapgit_data_deserializer. CREATE OBJECT li_cut TYPE zcl_abapgit_data_deserializer.
ls_result = li_cut->preview_database_changes( ls_result = li_cut->preview_database_changes(
iv_name = ls_config-name iv_name = ls_config-name
it_where = ls_config-where
ir_db_data = lr_db_data ir_db_data = lr_db_data
ir_lc_data = lr_lc_data ). ir_lc_data = lr_lc_data ).
@ -203,6 +205,7 @@ CLASS ltcl_test IMPLEMENTATION.
CREATE OBJECT li_cut TYPE zcl_abapgit_data_deserializer. CREATE OBJECT li_cut TYPE zcl_abapgit_data_deserializer.
ls_result = li_cut->preview_database_changes( ls_result = li_cut->preview_database_changes(
iv_name = ls_config-name iv_name = ls_config-name
it_where = ls_config-where
ir_db_data = lr_db_data ir_db_data = lr_db_data
ir_lc_data = lr_lc_data ). ir_lc_data = lr_lc_data ).

View File

@ -1,6 +1,5 @@
CLASS zcl_abapgit_data_injector DEFINITION CLASS zcl_abapgit_data_injector DEFINITION
PUBLIC PUBLIC
FOR TESTING
CREATE PUBLIC . CREATE PUBLIC .
PUBLIC SECTION. PUBLIC SECTION.

View File

@ -6,7 +6,6 @@
<CLSNAME>ZCL_ABAPGIT_DATA_INJECTOR</CLSNAME> <CLSNAME>ZCL_ABAPGIT_DATA_INJECTOR</CLSNAME>
<LANGU>E</LANGU> <LANGU>E</LANGU>
<DESCRIPT>abapGit - Data Injector</DESCRIPT> <DESCRIPT>abapGit - Data Injector</DESCRIPT>
<CATEGORY>05</CATEGORY>
<STATE>1</STATE> <STATE>1</STATE>
<CLSCCINCL>X</CLSCCINCL> <CLSCCINCL>X</CLSCCINCL>
<FIXPT>X</FIXPT> <FIXPT>X</FIXPT>

View File

@ -82,10 +82,10 @@ CLASS zcl_abapgit_data_serializer IMPLEMENTATION.
TRY. TRY.
LOOP AT it_where INTO lv_where. LOOP AT it_where INTO lv_where.
SELECT * FROM (iv_name) APPENDING TABLE <lg_tab> WHERE (lv_where) ORDER BY PRIMARY KEY. SELECT * FROM (iv_name) APPENDING TABLE <lg_tab> WHERE (lv_where).
ENDLOOP. ENDLOOP.
IF lines( it_where ) = 0. IF lines( it_where ) = 0.
SELECT * FROM (iv_name) INTO TABLE <lg_tab> ORDER BY PRIMARY KEY. SELECT * FROM (iv_name) INTO TABLE <lg_tab>.
ENDIF. ENDIF.
CATCH cx_sy_sql_error INTO lx_sql. CATCH cx_sy_sql_error INTO lx_sql.
zcx_abapgit_exception=>raise( zcx_abapgit_exception=>raise(

View File

@ -40,8 +40,7 @@ CLASS zcl_abapgit_data_supporter IMPLEMENTATION.
AND dd09l~tabart = 'APPL2' AND dd09l~tabart = 'APPL2'
AND dd09l~as4user <> 'SAP' AND dd09l~as4user <> 'SAP'
AND dd09l~as4local = 'A' "Only active tables AND dd09l~as4local = 'A' "Only active tables
AND dd02l~contflag = 'C' "Only customizing tables AND dd02l~contflag = 'C'. "Only customizing tables
ORDER BY dd02l~tabname.
LOOP AT lt_tables INTO lv_tabname. LOOP AT lt_tables INTO lv_tabname.
ls_object-type = zif_abapgit_data_config=>c_data_type-tabu. ls_object-type = zif_abapgit_data_config=>c_data_type-tabu.
@ -52,7 +51,7 @@ CLASS zcl_abapgit_data_supporter IMPLEMENTATION.
" The list of supported objects can be enhanced using an exit " The list of supported objects can be enhanced using an exit
" Name patterns are allowed. For example, TABU T009* " Name patterns are allowed. For example, TABU T009*
li_exit = zcl_abapgit_exit=>get_instance( ). li_exit = zcl_abapgit_exit=>get_instance( ).
li_exit->change_supported_data_objects( CHANGING ct_objects = mt_supported_objects ). li_exit->change_supported_data_objects( CHANGING ct_objects = mt_supported_objects ).
ENDMETHOD. ENDMETHOD.

View File

@ -3,7 +3,7 @@ CLASS zcl_abapgit_data_utils DEFINITION
CREATE PUBLIC. CREATE PUBLIC.
PUBLIC SECTION. PUBLIC SECTION.
TYPES ty_names TYPE STANDARD TABLE OF abap_compname WITH DEFAULT KEY .
CLASS-METHODS build_table_itab CLASS-METHODS build_table_itab
IMPORTING IMPORTING
!iv_name TYPE tadir-obj_name !iv_name TYPE tadir-obj_name
@ -23,7 +23,9 @@ CLASS zcl_abapgit_data_utils DEFINITION
VALUE(rv_filename) TYPE string. VALUE(rv_filename) TYPE string.
CLASS-METHODS jump CLASS-METHODS jump
IMPORTING IMPORTING
!is_item TYPE zif_abapgit_definitions=>ty_item !is_item TYPE zif_abapgit_definitions=>ty_item
RETURNING
VALUE(rv_exit) TYPE abap_bool
RAISING RAISING
zcx_abapgit_exception. zcx_abapgit_exception.
CLASS-METHODS does_table_exist CLASS-METHODS does_table_exist
@ -36,6 +38,9 @@ CLASS zcl_abapgit_data_utils DEFINITION
!iv_name TYPE tadir-obj_name !iv_name TYPE tadir-obj_name
RETURNING RETURNING
VALUE(rv_customizing) TYPE abap_bool. VALUE(rv_customizing) TYPE abap_bool.
PROTECTED SECTION.
PRIVATE SECTION.
TYPES ty_names TYPE STANDARD TABLE OF abap_compname WITH DEFAULT KEY .
CLASS-METHODS list_key_fields CLASS-METHODS list_key_fields
IMPORTING IMPORTING
!iv_name TYPE tadir-obj_name !iv_name TYPE tadir-obj_name
@ -43,8 +48,6 @@ CLASS zcl_abapgit_data_utils DEFINITION
VALUE(rt_names) TYPE ty_names VALUE(rt_names) TYPE ty_names
RAISING RAISING
zcx_abapgit_exception. zcx_abapgit_exception.
PROTECTED SECTION.
PRIVATE SECTION.
ENDCLASS. ENDCLASS.
@ -166,10 +169,7 @@ CLASS zcl_abapgit_data_utils IMPLEMENTATION.
ro_delivery_class = lo_delivery_class. ro_delivery_class = lo_delivery_class.
ASSIGN lo_delivery_class->('VALUE') TO <ls_any>. ASSIGN lo_delivery_class->('VALUE') TO <ls_any>.
lv_contflag = <ls_any>. lv_contflag = <ls_any>.
CATCH cx_sy_dyn_call_illegal_class cx_no_check. CATCH cx_sy_dyn_call_illegal_class.
" Catching SAP standard exception CX_NO_CHECK,
" because of the expected exception CX_XCO_RUNTIME_EXCEPTION
" could not be used here directly to keep the indirect usage approach.
SELECT SINGLE contflag FROM ('DD02L') INTO lv_contflag WHERE tabname = iv_name. SELECT SINGLE contflag FROM ('DD02L') INTO lv_contflag WHERE tabname = iv_name.
ENDTRY. ENDTRY.
@ -196,7 +196,7 @@ CLASS zcl_abapgit_data_utils IMPLEMENTATION.
db_not_exists = 3 db_not_exists = 3
no_permission = 4 no_permission = 4
no_change_allowed = 5 no_change_allowed = 5
* table_is_gtt = 6 " not in lower releases table_is_gtt = 6
OTHERS = 7. OTHERS = 7.
IF sy-subrc <> 0. IF sy-subrc <> 0.
zcx_abapgit_exception=>raise( |Table { is_item-obj_name } cannot be displayed| ). zcx_abapgit_exception=>raise( |Table { is_item-obj_name } cannot be displayed| ).

View File

@ -15,7 +15,7 @@ INTERFACE zif_abapgit_data_deserializer
METHODS deserialize_check METHODS deserialize_check
IMPORTING IMPORTING
!ii_repo TYPE REF TO zif_abapgit_repo !io_repo TYPE REF TO zcl_abapgit_repo
!ii_config TYPE REF TO zif_abapgit_data_config !ii_config TYPE REF TO zif_abapgit_data_config
RETURNING RETURNING
VALUE(rs_checks) TYPE zif_abapgit_definitions=>ty_deserialize_checks-customizing VALUE(rs_checks) TYPE zif_abapgit_definitions=>ty_deserialize_checks-customizing

View File

@ -1,10 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<abapGit version="v1.0.0" serializer="LCL_OBJECT_DEVC" serializer_version="v1.0.0">
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
<asx:values>
<DEVC>
<CTEXT>abapGit - Environment</CTEXT>
</DEVC>
</asx:values>
</asx:abap>
</abapGit>

View File

@ -1,278 +0,0 @@
CLASS zcl_abapgit_abap_language_vers DEFINITION
PUBLIC
FINAL
CREATE PUBLIC.
PUBLIC SECTION.
CONSTANTS:
c_any_abap_language_version TYPE zif_abapgit_aff_types_v1=>ty_abap_language_version VALUE '*',
c_no_abap_language_version TYPE zif_abapgit_aff_types_v1=>ty_abap_language_version VALUE '-',
c_feature_flag TYPE string VALUE 'ALAV'.
METHODS constructor
IMPORTING
!io_dot_abapgit TYPE REF TO zcl_abapgit_dot_abapgit.
METHODS get_abap_language_vers_by_objt
IMPORTING
!iv_object_type TYPE trobjtype
!iv_package TYPE devclass
RETURNING
VALUE(rv_allowed_abap_langu_version) TYPE zif_abapgit_aff_types_v1=>ty_abap_language_version.
METHODS get_repo_abap_language_version
RETURNING
VALUE(rv_abap_language_version) TYPE zif_abapgit_aff_types_v1=>ty_abap_language_version.
METHODS is_import_allowed
IMPORTING
!iv_package TYPE devclass
RETURNING
VALUE(rv_allowed) TYPE abap_bool.
CLASS-METHODS check_abap_language_version
IMPORTING
!iv_abap_language_version TYPE zif_abapgit_aff_types_v1=>ty_abap_language_version
!is_item TYPE zif_abapgit_definitions=>ty_item
RAISING
zcx_abapgit_exception.
PROTECTED SECTION.
PRIVATE SECTION.
DATA mo_dot_abapgit TYPE REF TO zcl_abapgit_dot_abapgit.
" Depends on experimental feature flag and repo setting
DATA mv_has_abap_language_vers TYPE abap_bool.
METHODS get_default_abap_language_vers
IMPORTING
!iv_object_type TYPE trobjtype
RETURNING
VALUE(rv_abap_language_version) TYPE zif_abapgit_aff_types_v1=>ty_abap_language_version.
METHODS get_abap_language_vers_by_devc
IMPORTING
!iv_package TYPE devclass
RETURNING
VALUE(rv_abap_language_version) TYPE string.
METHODS get_abap_language_vers_by_repo
RETURNING
VALUE(rv_abap_language_version) TYPE string.
CLASS-METHODS get_description
IMPORTING
!iv_abap_language_version TYPE zif_abapgit_aff_types_v1=>ty_abap_language_version
RETURNING
VALUE(rv_description) TYPE string.
ENDCLASS.
CLASS zcl_abapgit_abap_language_vers IMPLEMENTATION.
METHOD check_abap_language_version.
" Check if ABAP language version matches repository setting
IF is_item-abap_language_version IS NOT INITIAL AND iv_abap_language_version <> is_item-abap_language_version.
zcx_abapgit_exception=>raise(
|Object { is_item-obj_type } { is_item-obj_name } has { get_description( iv_abap_language_version ) }| &&
| but repository is set to { get_description( is_item-abap_language_version ) }| ).
ENDIF.
ENDMETHOD.
METHOD constructor.
mo_dot_abapgit = io_dot_abapgit.
IF zcl_abapgit_feature=>is_enabled( c_feature_flag ) = abap_false.
mv_has_abap_language_vers = abap_undefined.
ELSEIF get_abap_language_vers_by_repo( ) = zif_abapgit_dot_abapgit=>c_abap_language_version-undefined.
mv_has_abap_language_vers = abap_undefined.
ELSEIF get_abap_language_vers_by_repo( ) = zif_abapgit_dot_abapgit=>c_abap_language_version-ignore.
mv_has_abap_language_vers = abap_false.
ELSE.
mv_has_abap_language_vers = abap_true.
ENDIF.
ENDMETHOD.
METHOD get_abap_language_vers_by_devc.
DATA lv_class TYPE string.
DATA lv_abap_lang_version_devc TYPE string.
DATA lo_abap_language_version_cfg TYPE REF TO object.
lv_class = 'CL_ABAP_LANGUAGE_VERSION_CFG'.
TRY.
CALL METHOD (lv_class)=>('GET_INSTANCE')
RECEIVING
ro_instance = lo_abap_language_version_cfg.
" For non-existing packages, GET_PACKAGE_DEFAULT_VERSION returns "standard"
" but we want to return "undefined" in this case to allow any new packages
IF zcl_abapgit_factory=>get_sap_package( iv_package )->exists( ) = abap_true.
CALL METHOD lo_abap_language_version_cfg->('IF_ABAP_LANGUAGE_VERSION_CFG~GET_PACKAGE_DEFAULT_VERSION')
EXPORTING
iv_package_name = iv_package
RECEIVING
rv_default_language_version = lv_abap_lang_version_devc.
ELSE.
lv_abap_lang_version_devc = '-'.
ENDIF.
CASE lv_abap_lang_version_devc.
WHEN zif_abapgit_aff_types_v1=>co_abap_language_version-standard.
rv_abap_language_version = zif_abapgit_dot_abapgit=>c_abap_language_version-standard.
WHEN zif_abapgit_aff_types_v1=>co_abap_language_version-key_user.
rv_abap_language_version = zif_abapgit_dot_abapgit=>c_abap_language_version-key_user.
WHEN zif_abapgit_aff_types_v1=>co_abap_language_version-cloud_development.
rv_abap_language_version = zif_abapgit_dot_abapgit=>c_abap_language_version-cloud_development.
WHEN OTHERS.
rv_abap_language_version = zif_abapgit_dot_abapgit=>c_abap_language_version-undefined.
ENDCASE.
CATCH cx_root.
rv_abap_language_version = zif_abapgit_dot_abapgit=>c_abap_language_version-undefined.
ENDTRY.
ENDMETHOD.
METHOD get_abap_language_vers_by_objt.
DATA lv_class TYPE string.
DATA lo_abap_language_version TYPE REF TO object.
IF mv_has_abap_language_vers = abap_undefined.
rv_allowed_abap_langu_version = c_any_abap_language_version.
ELSEIF mv_has_abap_language_vers = abap_false.
rv_allowed_abap_langu_version = c_no_abap_language_version.
ELSE. " abap_true
lv_class = 'CL_ABAP_LANGUAGE_VERSION'.
TRY.
CALL METHOD (lv_class)=>('GET_INSTANCE')
RECEIVING
ro_version_handler = lo_abap_language_version.
CALL METHOD lo_abap_language_version->('IF_ABAP_LANGUAGE_VERSION~GET_DEFAULT_VERSION')
EXPORTING
iv_object_type = iv_object_type
iv_package = iv_package
RECEIVING
rv_default_version = rv_allowed_abap_langu_version.
CATCH cx_root.
rv_allowed_abap_langu_version = get_default_abap_language_vers( iv_object_type ).
ENDTRY.
ENDIF.
ENDMETHOD.
METHOD get_abap_language_vers_by_repo.
rv_abap_language_version = mo_dot_abapgit->get_abap_language_version( ).
IF rv_abap_language_version IS INITIAL.
rv_abap_language_version = zif_abapgit_dot_abapgit=>c_abap_language_version-undefined.
ENDIF.
ENDMETHOD.
METHOD get_default_abap_language_vers.
IF zcl_abapgit_factory=>get_environment( )->is_sap_cloud_platform( ) = abap_true.
" On BTP, default to ABAP for Cloud Development
rv_abap_language_version = zif_abapgit_aff_types_v1=>co_abap_language_version_cloud-cloud_development.
ELSE.
" Differentiate between source code object and non-source code objects
CASE iv_object_type.
WHEN 'BDEF' OR 'CLAS' OR 'FUGR' OR 'FUGS' OR 'INTF' OR 'PROG' OR 'TYPE'.
rv_abap_language_version = zif_abapgit_aff_types_v1=>co_abap_language_version_src-standard.
WHEN OTHERS.
rv_abap_language_version = zif_abapgit_aff_types_v1=>co_abap_language_version-standard.
ENDCASE.
ENDIF.
ENDMETHOD.
METHOD get_description.
CASE iv_abap_language_version.
WHEN zif_abapgit_aff_types_v1=>co_abap_language_version-standard
OR zif_abapgit_aff_types_v1=>co_abap_language_version_src-standard.
rv_description = 'Standard ABAP'.
WHEN zif_abapgit_aff_types_v1=>co_abap_language_version-key_user
OR zif_abapgit_aff_types_v1=>co_abap_language_version_src-key_user.
rv_description = 'ABAP for Key Users'.
WHEN zif_abapgit_aff_types_v1=>co_abap_language_version-cloud_development
OR zif_abapgit_aff_types_v1=>co_abap_language_version_src-cloud_development.
rv_description = 'ABAP for Cloud Development'.
WHEN OTHERS.
rv_description = 'Undefined'.
ENDCASE.
rv_description = |ABAP language version "{ rv_description }"|.
ENDMETHOD.
METHOD get_repo_abap_language_version.
DATA lv_abap_language_version TYPE string.
IF mv_has_abap_language_vers <> abap_undefined. " abap_true or abap_false
lv_abap_language_version = mo_dot_abapgit->get_abap_language_version( ).
ENDIF.
CASE lv_abap_language_version.
WHEN zif_abapgit_dot_abapgit=>c_abap_language_version-standard.
rv_abap_language_version = zif_abapgit_aff_types_v1=>co_abap_language_version_src-standard.
WHEN zif_abapgit_dot_abapgit=>c_abap_language_version-key_user.
rv_abap_language_version = zif_abapgit_aff_types_v1=>co_abap_language_version_src-key_user.
WHEN zif_abapgit_dot_abapgit=>c_abap_language_version-cloud_development.
rv_abap_language_version = zif_abapgit_aff_types_v1=>co_abap_language_version_src-cloud_development.
WHEN zif_abapgit_dot_abapgit=>c_abap_language_version-ignore.
rv_abap_language_version = c_no_abap_language_version.
WHEN OTHERS. " undefined or feature off
rv_abap_language_version = c_any_abap_language_version.
ENDCASE.
ENDMETHOD.
METHOD is_import_allowed.
DATA lv_package_version TYPE string.
lv_package_version = get_abap_language_vers_by_devc( iv_package ).
CASE get_abap_language_vers_by_repo( ).
WHEN zif_abapgit_dot_abapgit=>c_abap_language_version-undefined
OR zif_abapgit_dot_abapgit=>c_abap_language_version-ignore.
rv_allowed = abap_true.
WHEN OTHERS.
IF get_abap_language_vers_by_repo( ) = lv_package_version.
" allow packages that match repo setting
rv_allowed = abap_true.
ELSEIF lv_package_version = zif_abapgit_dot_abapgit=>c_abap_language_version-undefined.
" always allow new packages
rv_allowed = abap_true.
ELSE.
rv_allowed = abap_false.
ENDIF.
ENDCASE.
ENDMETHOD.
ENDCLASS.

View File

@ -1,495 +0,0 @@
* Helper to toggle (cloud) enviroment
CLASS lcl_environment DEFINITION.
PUBLIC SECTION.
INTERFACES zif_abapgit_environment.
DATA mv_is_cloud TYPE abap_bool.
METHODS set_cloud
IMPORTING
iv_is_cloud TYPE abap_bool.
ENDCLASS.
CLASS lcl_environment IMPLEMENTATION.
METHOD set_cloud.
mv_is_cloud = iv_is_cloud.
ENDMETHOD.
METHOD zif_abapgit_environment~is_sap_cloud_platform.
rv_result = mv_is_cloud.
ENDMETHOD.
METHOD zif_abapgit_environment~compare_with_inactive.
ENDMETHOD.
METHOD zif_abapgit_environment~get_basis_release.
ENDMETHOD.
METHOD zif_abapgit_environment~get_available_user_sessions.
ENDMETHOD.
METHOD zif_abapgit_environment~get_system_language_filter.
ENDMETHOD.
METHOD zif_abapgit_environment~is_merged.
ENDMETHOD.
METHOD zif_abapgit_environment~is_repo_object_changes_allowed.
ENDMETHOD.
METHOD zif_abapgit_environment~is_restart_required.
ENDMETHOD.
METHOD zif_abapgit_environment~is_sap_object_allowed.
ENDMETHOD.
METHOD zif_abapgit_environment~is_variant_maintenance.
ENDMETHOD.
METHOD zif_abapgit_environment~init_parallel_processing.
ENDMETHOD.
METHOD zif_abapgit_environment~check_parallel_processing.
ENDMETHOD.
ENDCLASS.
* Helper to toggle experimental features
CLASS lcl_persist_settings DEFINITION.
PUBLIC SECTION.
INTERFACES zif_abapgit_persist_settings.
DATA mo_settings TYPE REF TO zcl_abapgit_settings.
METHODS constructor.
ENDCLASS.
CLASS lcl_persist_settings IMPLEMENTATION.
METHOD constructor.
CREATE OBJECT mo_settings.
ENDMETHOD.
METHOD zif_abapgit_persist_settings~modify.
ENDMETHOD.
METHOD zif_abapgit_persist_settings~read.
ro_settings = mo_settings.
ENDMETHOD.
ENDCLASS.
* Test cases
CLASS ltcl_abap_language_version DEFINITION FOR TESTING RISK LEVEL HARMLESS
DURATION SHORT FINAL.
PRIVATE SECTION.
" Cloud package hardcoded in cl_abap_language_version
CONSTANTS c_cloud_package TYPE devclass VALUE 'TEST_LANGUAGE_VERSION_SCP'.
CONSTANTS c_language_cfg TYPE seoclsname VALUE 'CL_ABAP_LANGUAGE_VERSION_CFG'.
DATA:
mt_versions TYPE string_table,
mv_has_cloud_package TYPE abap_bool,
mv_has_language_cfg TYPE abap_bool,
mo_environment TYPE REF TO lcl_environment,
mi_persistency TYPE REF TO zif_abapgit_persist_settings,
mo_dot_abapgit TYPE REF TO zcl_abapgit_dot_abapgit,
mo_cut TYPE REF TO zcl_abapgit_abap_language_vers.
METHODS:
setup,
init
IMPORTING
iv_abap_language_version TYPE string,
set_environment
IMPORTING
iv_is_cloud TYPE abap_bool,
set_features
IMPORTING
iv_features TYPE string,
repo_setting_test
IMPORTING
iv_version TYPE string
iv_exp TYPE zif_abapgit_aff_types_v1=>ty_abap_language_version,
object_type_test
IMPORTING
iv_version TYPE string
iv_standard TYPE zif_abapgit_aff_types_v1=>ty_abap_language_version
iv_standard_src TYPE zif_abapgit_aff_types_v1=>ty_abap_language_version
iv_cloud TYPE zif_abapgit_aff_types_v1=>ty_abap_language_version
iv_cloud_src TYPE zif_abapgit_aff_types_v1=>ty_abap_language_version,
is_import_allowed_test
IMPORTING
iv_version TYPE string
iv_standard TYPE abap_bool
iv_cloud TYPE abap_bool
iv_new TYPE abap_bool.
METHODS:
repo_setting_feature_off FOR TESTING,
repo_setting_feature_on FOR TESTING,
object_type_feature_off FOR TESTING,
object_type_feature_on FOR TESTING,
is_import_allowed FOR TESTING,
check_abap_language_vers_same FOR TESTING RAISING zcx_abapgit_exception,
check_abap_language_vers_diff FOR TESTING.
ENDCLASS.
CLASS ltcl_abap_language_version IMPLEMENTATION.
METHOD setup.
CREATE OBJECT mo_environment.
zcl_abapgit_injector=>set_environment( mo_environment ).
CREATE OBJECT mi_persistency TYPE lcl_persist_settings.
zcl_abapgit_persist_injector=>set_settings( mi_persistency ).
APPEND zif_abapgit_dot_abapgit=>c_abap_language_version-undefined TO mt_versions.
APPEND zif_abapgit_dot_abapgit=>c_abap_language_version-ignore TO mt_versions.
APPEND zif_abapgit_dot_abapgit=>c_abap_language_version-standard TO mt_versions.
APPEND zif_abapgit_dot_abapgit=>c_abap_language_version-key_user TO mt_versions.
APPEND zif_abapgit_dot_abapgit=>c_abap_language_version-cloud_development TO mt_versions.
mv_has_cloud_package = zcl_abapgit_factory=>get_sap_package( c_cloud_package )->exists( ).
ENDMETHOD.
METHOD init.
mo_dot_abapgit = zcl_abapgit_dot_abapgit=>build_default( ).
mo_dot_abapgit->set_abap_language_version( iv_abap_language_version ).
CREATE OBJECT mo_cut
EXPORTING
io_dot_abapgit = mo_dot_abapgit.
ENDMETHOD.
METHOD set_environment.
mo_environment->set_cloud( iv_is_cloud ).
ENDMETHOD.
METHOD set_features.
mi_persistency->read( )->set_experimental_features( iv_features ).
ENDMETHOD.
METHOD repo_setting_test.
init( iv_version ).
" Assume on-prem (no cloud)
set_environment( abap_false ).
cl_abap_unit_assert=>assert_equals(
act = mo_cut->get_repo_abap_language_version( )
exp = iv_exp
msg = |ABAP Language Version: { iv_version }, On-prem| ).
" Assume cloud platform
set_environment( abap_true ).
cl_abap_unit_assert=>assert_equals(
act = mo_cut->get_repo_abap_language_version( )
exp = iv_exp
msg = |ABAP Language Version: { iv_version }, Cloud| ).
ENDMETHOD.
METHOD repo_setting_feature_off.
DATA lv_version TYPE string.
" If experimental feature is off, repo setting is not taken into consideration
set_features( '' ).
LOOP AT mt_versions INTO lv_version.
repo_setting_test(
iv_version = lv_version
iv_exp = zcl_abapgit_abap_language_vers=>c_any_abap_language_version ).
ENDLOOP.
ENDMETHOD.
METHOD repo_setting_feature_on.
DATA lv_version TYPE string.
" If experimental feature is on, repo setting is returned
set_features( zcl_abapgit_abap_language_vers=>c_feature_flag ).
LOOP AT mt_versions INTO lv_version.
CASE lv_version.
WHEN zif_abapgit_dot_abapgit=>c_abap_language_version-undefined.
repo_setting_test(
iv_version = lv_version
iv_exp = zcl_abapgit_abap_language_vers=>c_any_abap_language_version ).
WHEN zif_abapgit_dot_abapgit=>c_abap_language_version-ignore.
repo_setting_test(
iv_version = lv_version
iv_exp = zcl_abapgit_abap_language_vers=>c_no_abap_language_version ).
WHEN zif_abapgit_dot_abapgit=>c_abap_language_version-standard.
repo_setting_test(
iv_version = lv_version
iv_exp = zif_abapgit_aff_types_v1=>co_abap_language_version_src-standard ).
WHEN zif_abapgit_dot_abapgit=>c_abap_language_version-key_user.
repo_setting_test(
iv_version = lv_version
iv_exp = zif_abapgit_aff_types_v1=>co_abap_language_version_src-key_user ).
WHEN zif_abapgit_dot_abapgit=>c_abap_language_version-cloud_development.
repo_setting_test(
iv_version = lv_version
iv_exp = zif_abapgit_aff_types_v1=>co_abap_language_version_src-cloud_development ).
ENDCASE.
ENDLOOP.
ENDMETHOD.
METHOD object_type_test.
init( iv_version ).
" Assume on-prem (no cloud)
set_environment( abap_false ).
" source code
cl_abap_unit_assert=>assert_equals(
act = mo_cut->get_abap_language_vers_by_objt(
iv_object_type = 'INTF'
iv_package = '$TMP' )
exp = iv_standard_src
msg = |ABAP Language Version: { iv_version }, On-prem| ).
" non-source code
cl_abap_unit_assert=>assert_equals(
act = mo_cut->get_abap_language_vers_by_objt(
iv_object_type = 'TABL'
iv_package = '$TMP' )
exp = iv_standard
msg = |ABAP Language Version: { iv_version }, On-prem| ).
" Assume cloud platform
IF mv_has_cloud_package = abap_false.
RETURN.
ENDIF.
set_environment( abap_true ).
" source code
cl_abap_unit_assert=>assert_equals(
act = mo_cut->get_abap_language_vers_by_objt(
iv_object_type = 'INTF'
iv_package = c_cloud_package )
exp = iv_cloud_src
msg = |ABAP Language Version: { iv_version }, Cloud| ).
" non-source code
cl_abap_unit_assert=>assert_equals(
act = mo_cut->get_abap_language_vers_by_objt(
iv_object_type = 'TABL'
iv_package = c_cloud_package )
exp = iv_cloud
msg = |ABAP Language Version: { iv_version }, Cloud| ).
ENDMETHOD.
METHOD object_type_feature_off.
DATA lv_version TYPE string.
" If experimental feature is off, repo setting is ignored
set_features( '' ).
LOOP AT mt_versions INTO lv_version.
object_type_test(
iv_version = lv_version
iv_standard = zcl_abapgit_abap_language_vers=>c_any_abap_language_version
iv_standard_src = zcl_abapgit_abap_language_vers=>c_any_abap_language_version
iv_cloud = zcl_abapgit_abap_language_vers=>c_any_abap_language_version
iv_cloud_src = zcl_abapgit_abap_language_vers=>c_any_abap_language_version ).
ENDLOOP.
ENDMETHOD.
METHOD object_type_feature_on.
DATA lv_version TYPE string.
" If experimental feature is on, repo setting is ignored but package setting is returned
set_features( zcl_abapgit_abap_language_vers=>c_feature_flag ).
LOOP AT mt_versions INTO lv_version.
CASE lv_version.
WHEN zif_abapgit_dot_abapgit=>c_abap_language_version-undefined.
object_type_test(
iv_version = lv_version
iv_standard = zcl_abapgit_abap_language_vers=>c_any_abap_language_version
iv_standard_src = zcl_abapgit_abap_language_vers=>c_any_abap_language_version
iv_cloud = zcl_abapgit_abap_language_vers=>c_any_abap_language_version
iv_cloud_src = zcl_abapgit_abap_language_vers=>c_any_abap_language_version ).
WHEN zif_abapgit_dot_abapgit=>c_abap_language_version-ignore.
object_type_test(
iv_version = lv_version
iv_standard = zcl_abapgit_abap_language_vers=>c_no_abap_language_version
iv_standard_src = zcl_abapgit_abap_language_vers=>c_no_abap_language_version
iv_cloud = zcl_abapgit_abap_language_vers=>c_no_abap_language_version
iv_cloud_src = zcl_abapgit_abap_language_vers=>c_no_abap_language_version ).
WHEN OTHERS.
object_type_test(
iv_version = lv_version
iv_standard = zif_abapgit_aff_types_v1=>co_abap_language_version-standard
iv_standard_src = zif_abapgit_aff_types_v1=>co_abap_language_version_src-standard
iv_cloud = zif_abapgit_aff_types_v1=>co_abap_language_version-cloud_development
iv_cloud_src = zif_abapgit_aff_types_v1=>co_abap_language_version_src-cloud_development ).
ENDCASE.
ENDLOOP.
ENDMETHOD.
METHOD is_import_allowed_test.
init( iv_version ).
" Assume on-prem (no cloud)
set_environment( abap_false ).
IF mv_has_language_cfg = abap_true.
cl_abap_unit_assert=>assert_equals(
act = mo_cut->is_import_allowed( '$TMP' ) " existing standard package
exp = iv_standard ).
ENDIF.
IF mv_has_cloud_package = abap_true.
cl_abap_unit_assert=>assert_equals(
act = mo_cut->is_import_allowed( c_cloud_package ) " existing cloud package
exp = iv_cloud ).
ENDIF.
cl_abap_unit_assert=>assert_equals(
act = mo_cut->is_import_allowed( 'Z_FOO_BAR' ) " non-existing package
exp = iv_new ).
" Assume cloud platform
set_environment( abap_true ).
IF mv_has_language_cfg = abap_true.
cl_abap_unit_assert=>assert_equals(
act = mo_cut->is_import_allowed( '$TMP' ) " existing standard package
exp = iv_standard ).
ENDIF.
IF mv_has_cloud_package = abap_true.
cl_abap_unit_assert=>assert_equals(
act = mo_cut->is_import_allowed( c_cloud_package ) " existing cloud package
exp = iv_cloud ).
ENDIF.
cl_abap_unit_assert=>assert_equals(
act = mo_cut->is_import_allowed( 'Z_FOO_BAR' ) " non-existing package
exp = iv_new ).
ENDMETHOD.
METHOD is_import_allowed.
DATA lv_version TYPE string.
" Tests using ABAP language version "standard" only work if the required
" SAP class is available. In older releases, all packages will have
" ABAP language version "undefined" and are handled like a new package
mv_has_language_cfg = zcl_abapgit_oo_factory=>get_by_type( 'CLAS' )->exists( c_language_cfg ).
LOOP AT mt_versions INTO lv_version.
CASE lv_version.
WHEN zif_abapgit_dot_abapgit=>c_abap_language_version-undefined
OR zif_abapgit_dot_abapgit=>c_abap_language_version-ignore.
is_import_allowed_test(
iv_version = lv_version
iv_standard = abap_true
iv_cloud = abap_true
iv_new = abap_true ).
WHEN zif_abapgit_dot_abapgit=>c_abap_language_version-standard.
is_import_allowed_test(
iv_version = lv_version
iv_standard = abap_true
iv_cloud = abap_false
iv_new = abap_true ).
WHEN zif_abapgit_dot_abapgit=>c_abap_language_version-key_user.
is_import_allowed_test(
iv_version = lv_version
iv_standard = abap_false
iv_cloud = abap_false
iv_new = abap_true ).
WHEN zif_abapgit_dot_abapgit=>c_abap_language_version-cloud_development.
is_import_allowed_test(
iv_version = lv_version
iv_standard = abap_false
iv_cloud = abap_true
iv_new = abap_true ).
ENDCASE.
ENDLOOP.
ENDMETHOD.
METHOD check_abap_language_vers_same.
DATA ls_item TYPE zif_abapgit_definitions=>ty_item.
ls_item-obj_type = 'CLAS'.
ls_item-obj_name = 'ZCL_FOO_BAR'.
ls_item-abap_language_version = zif_abapgit_aff_types_v1=>co_abap_language_version-standard.
" Does not throw
zcl_abapgit_abap_language_vers=>check_abap_language_version(
iv_abap_language_version = zif_abapgit_aff_types_v1=>co_abap_language_version-standard
is_item = ls_item ).
ENDMETHOD.
METHOD check_abap_language_vers_diff.
DATA ls_item TYPE zif_abapgit_definitions=>ty_item.
ls_item-obj_type = 'CLAS'.
ls_item-obj_name = 'ZCL_FOO_BAR'.
ls_item-abap_language_version = zif_abapgit_aff_types_v1=>co_abap_language_version_src-standard.
TRY.
zcl_abapgit_abap_language_vers=>check_abap_language_version(
iv_abap_language_version = zif_abapgit_aff_types_v1=>co_abap_language_version_src-cloud_development
is_item = ls_item ).
cl_abap_unit_assert=>fail( ).
CATCH zcx_abapgit_exception ##NO_HANDLER.
ENDTRY.
ENDMETHOD.
ENDCLASS.

View File

@ -1,21 +0,0 @@
CLASS zcl_abapgit_env_factory DEFINITION PUBLIC GLOBAL FRIENDS zcl_abapgit_env_injector.
PUBLIC SECTION.
CLASS-METHODS get_user_record
RETURNING
VALUE(ri_user_record) TYPE REF TO zif_abapgit_user_record.
PRIVATE SECTION.
CLASS-DATA gi_user_record TYPE REF TO zif_abapgit_user_record.
ENDCLASS.
CLASS zcl_abapgit_env_factory IMPLEMENTATION.
METHOD get_user_record.
IF gi_user_record IS NOT BOUND.
CREATE OBJECT gi_user_record TYPE zcl_abapgit_user_record.
ENDIF.
ri_user_record = gi_user_record.
ENDMETHOD.
ENDCLASS.

View File

@ -1,16 +0,0 @@
<?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_ENV_FACTORY</CLSNAME>
<LANGU>E</LANGU>
<DESCRIPT>abapGit - Environment Factory</DESCRIPT>
<STATE>1</STATE>
<CLSCCINCL>X</CLSCCINCL>
<FIXPT>X</FIXPT>
<UNICODE>X</UNICODE>
</VSEOCLASS>
</asx:values>
</asx:abap>
</abapGit>

View File

@ -1,14 +0,0 @@
CLASS zcl_abapgit_env_injector DEFINITION PUBLIC.
PUBLIC SECTION.
CLASS-METHODS set_user_record
IMPORTING
!ii_user_record TYPE REF TO zif_abapgit_user_record.
ENDCLASS.
CLASS zcl_abapgit_env_injector IMPLEMENTATION.
METHOD set_user_record.
zcl_abapgit_env_factory=>gi_user_record = ii_user_record.
ENDMETHOD.
ENDCLASS.

View File

@ -1,16 +0,0 @@
<?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_ENV_INJECTOR</CLSNAME>
<LANGU>E</LANGU>
<DESCRIPT>abapGit - Environment Injector</DESCRIPT>
<STATE>1</STATE>
<CLSCCINCL>X</CLSCCINCL>
<FIXPT>X</FIXPT>
<UNICODE>X</UNICODE>
</VSEOCLASS>
</asx:values>
</asx:abap>
</abapGit>

View File

@ -1,48 +0,0 @@
CLASS zcl_abapgit_feature DEFINITION
PUBLIC
FINAL
CREATE PUBLIC.
PUBLIC SECTION.
" For dependency injection/testing, use the following
" zcl_abapgit_persist_factory=>get_settings( )->read( )->set_experimental_features( )
CLASS-METHODS is_enabled
IMPORTING
!iv_feature TYPE string OPTIONAL
RETURNING
VALUE(rv_run) TYPE abap_bool.
PROTECTED SECTION.
PRIVATE SECTION.
ENDCLASS.
CLASS zcl_abapgit_feature IMPLEMENTATION.
METHOD is_enabled.
DATA:
lv_features TYPE string,
lt_features TYPE string_table.
IF zcl_abapgit_factory=>get_environment( )->is_merged( ) = abap_true.
RETURN.
ENDIF.
lv_features = zcl_abapgit_persist_factory=>get_settings( )->read( )->get_experimental_features( ).
CONDENSE lv_features NO-GAPS.
rv_run = boolc( lv_features = abap_true ).
IF iv_feature IS NOT INITIAL.
SPLIT lv_features AT ',' INTO TABLE lt_features.
READ TABLE lt_features TRANSPORTING NO FIELDS WITH TABLE KEY table_line = iv_feature.
rv_run = boolc( rv_run = abap_true OR sy-subrc = 0 ).
ENDIF.
ENDMETHOD.
ENDCLASS.

View File

@ -1,101 +0,0 @@
CLASS ltcl_feature DEFINITION FOR TESTING RISK LEVEL HARMLESS
DURATION SHORT FINAL.
PRIVATE SECTION.
DATA mo_settings TYPE REF TO zcl_abapgit_settings.
DATA mo_cut TYPE REF TO zcl_abapgit_feature.
METHODS:
setup,
merged_disabled FOR TESTING,
feature_disabled FOR TESTING,
feature_enabled FOR TESTING.
ENDCLASS.
CLASS ltcl_feature IMPLEMENTATION.
METHOD setup.
CREATE OBJECT mo_cut.
mo_settings = zcl_abapgit_persist_factory=>get_settings( )->read( ).
ENDMETHOD.
METHOD merged_disabled.
IF zcl_abapgit_factory=>get_environment( )->is_merged( ) = abap_true.
cl_abap_unit_assert=>assert_equals(
act = mo_cut->is_enabled( )
exp = abap_false ).
cl_abap_unit_assert=>assert_equals(
act = mo_cut->is_enabled( 'TEST' )
exp = abap_false ).
ENDIF.
ENDMETHOD.
METHOD feature_disabled.
" Only run for dev version
IF zcl_abapgit_factory=>get_environment( )->is_merged( ) = abap_true.
RETURN.
ENDIF.
" All off
mo_settings->set_experimental_features( '' ).
cl_abap_unit_assert=>assert_equals(
act = mo_cut->is_enabled( 'TEST' )
exp = abap_false ).
ENDMETHOD.
METHOD feature_enabled.
" Only run for dev version
IF zcl_abapgit_factory=>get_environment( )->is_merged( ) = abap_true.
RETURN.
ENDIF.
" All on
mo_settings->set_experimental_features( 'X' ).
cl_abap_unit_assert=>assert_equals(
act = mo_cut->is_enabled( 'TEST' )
exp = abap_true ).
" Just one feature on
mo_settings->set_experimental_features( 'TEST' ).
cl_abap_unit_assert=>assert_equals(
act = mo_cut->is_enabled( 'TEST' )
exp = abap_true ).
" Several features on
mo_settings->set_experimental_features( 'AFF,LXE' ).
cl_abap_unit_assert=>assert_equals(
act = mo_cut->is_enabled( 'TEST' )
exp = abap_false ).
cl_abap_unit_assert=>assert_equals(
act = mo_cut->is_enabled( 'AFF' )
exp = abap_true ).
" Several features on with whitespace
mo_settings->set_experimental_features( ' AFF , FLOW ,LXE ' ).
cl_abap_unit_assert=>assert_equals(
act = mo_cut->is_enabled( 'TEST' )
exp = abap_false ).
cl_abap_unit_assert=>assert_equals(
act = mo_cut->is_enabled( 'FLOW' )
exp = abap_true ).
ENDMETHOD.
ENDCLASS.

View File

@ -1,200 +0,0 @@
CLASS zcl_abapgit_user_record DEFINITION
PUBLIC
FINAL
CREATE PRIVATE
GLOBAL FRIENDS zcl_abapgit_env_factory.
PUBLIC SECTION.
CLASS-METHODS reset.
INTERFACES zif_abapgit_user_record.
PROTECTED SECTION.
PRIVATE SECTION.
TYPES:
BEGIN OF ty_user,
user TYPE sy-uname,
name TYPE string,
email TYPE string,
END OF ty_user.
CLASS-DATA gt_user TYPE HASHED TABLE OF ty_user WITH UNIQUE KEY user.
CLASS-METHODS check_user_exists
IMPORTING
iv_user TYPE sy-uname
EXPORTING
ev_fullname TYPE string
ev_email TYPE string
RAISING
zcx_abapgit_exception.
CLASS-METHODS get_user_dtls_from_other_clnt
IMPORTING
iv_user TYPE sy-uname
RETURNING
VALUE(rs_user) TYPE ty_user.
CLASS-METHODS build_cache
IMPORTING
iv_user TYPE sy-uname
RETURNING
VALUE(rs_user) TYPE ty_user.
CLASS-METHODS read_cache
IMPORTING
iv_user TYPE sy-uname
RETURNING
VALUE(rs_user) TYPE ty_user.
ENDCLASS.
CLASS ZCL_ABAPGIT_USER_RECORD IMPLEMENTATION.
METHOD build_cache.
" Get user details
TRY.
check_user_exists(
EXPORTING
iv_user = iv_user
IMPORTING
ev_fullname = rs_user-name
ev_email = rs_user-email ).
CATCH zcx_abapgit_exception.
" Could not find user, try to get from other clients
rs_user = get_user_dtls_from_other_clnt( iv_user ).
ENDTRY.
rs_user-user = iv_user.
INSERT rs_user INTO TABLE gt_user.
ENDMETHOD.
METHOD check_user_exists.
DATA lt_return TYPE STANDARD TABLE OF bapiret2 WITH DEFAULT KEY.
DATA ls_address TYPE bapiaddr3.
DATA lt_smtp TYPE TABLE OF bapiadsmtp.
DATA ls_smtp LIKE LINE OF lt_smtp.
CALL FUNCTION 'BAPI_USER_GET_DETAIL'
EXPORTING
username = iv_user
IMPORTING
address = ls_address
TABLES
return = lt_return
addsmtp = lt_smtp.
LOOP AT lt_return TRANSPORTING NO FIELDS WHERE type CA 'EA'.
zcx_abapgit_exception=>raise( |User: { iv_user } not found| ).
ENDLOOP.
ev_fullname = ls_address-fullname.
" Choose the first email from SU01
SORT lt_smtp BY consnumber ASCENDING.
LOOP AT lt_smtp INTO ls_smtp.
ev_email = ls_smtp-e_mail.
EXIT.
ENDLOOP.
ENDMETHOD.
METHOD get_user_dtls_from_other_clnt.
CONSTANTS lc_cc_category TYPE string VALUE 'C'.
TYPES ty_dev_clients TYPE SORTED TABLE OF sy-mandt WITH UNIQUE KEY table_line.
DATA lt_dev_clients TYPE ty_dev_clients.
FIELD-SYMBOLS <lv_dev_client> LIKE LINE OF lt_dev_clients.
" Could not find the user, try other development clients
SELECT mandt FROM t000 INTO TABLE lt_dev_clients
WHERE cccategory = lc_cc_category AND mandt <> sy-mandt
ORDER BY PRIMARY KEY.
LOOP AT lt_dev_clients ASSIGNING <lv_dev_client>.
SELECT SINGLE u~bname p~name_text a~smtp_addr INTO (rs_user-user, rs_user-name, rs_user-email)
FROM usr21 AS u
INNER JOIN adrp AS p ON p~persnumber = u~persnumber
AND p~client = u~mandt
INNER JOIN adr6 AS a ON a~persnumber = u~persnumber
AND a~addrnumber = u~addrnumber
AND a~client = u~mandt
CLIENT SPECIFIED
WHERE u~mandt = <lv_dev_client>
AND u~bname = iv_user
AND p~date_from <= sy-datum
AND p~date_to >= sy-datum
AND a~date_from <= sy-datum.
IF sy-subrc = 0.
EXIT.
ENDIF.
ENDLOOP.
ENDMETHOD.
METHOD read_cache.
READ TABLE gt_user INTO rs_user WITH TABLE KEY user = iv_user.
IF sy-subrc <> 0.
rs_user = build_cache( iv_user ).
ENDIF.
ENDMETHOD.
METHOD reset.
CLEAR gt_user.
ENDMETHOD.
METHOD zif_abapgit_user_record~get_email.
rv_email = read_cache( iv_username )-email.
ENDMETHOD.
METHOD zif_abapgit_user_record~get_name.
rv_name = read_cache( iv_username )-name.
ENDMETHOD.
METHOD zif_abapgit_user_record~get_title.
* the queried username might not exist, refactored for open-abap compatibility
DATA lr_addr3 TYPE REF TO data.
FIELD-SYMBOLS <ls_addr3> TYPE any.
FIELD-SYMBOLS <lv_simple> TYPE simple.
TRY.
CREATE DATA lr_addr3 TYPE ('ADDR3_VAL').
CATCH cx_sy_create_data_error.
RETURN.
ENDTRY.
ASSIGN lr_addr3->* TO <ls_addr3>.
CALL FUNCTION 'SUSR_USER_ADDRESS_READ'
EXPORTING
user_name = iv_username
IMPORTING
user_address = <ls_addr3>
EXCEPTIONS
user_address_not_found = 1
OTHERS = 2.
IF sy-subrc = 0.
ASSIGN COMPONENT 'NAME_TEXT' OF STRUCTURE <ls_addr3> TO <lv_simple>.
rv_title = <lv_simple>.
ENDIF.
ENDMETHOD.
ENDCLASS.

View File

@ -1,21 +0,0 @@
INTERFACE zif_abapgit_user_record PUBLIC.
METHODS get_name
IMPORTING
iv_username TYPE sy-uname
RETURNING
VALUE(rv_name) TYPE string.
METHODS get_email
IMPORTING
iv_username TYPE sy-uname
RETURNING
VALUE(rv_email) TYPE string.
METHODS get_title
IMPORTING
iv_username TYPE sy-uname
RETURNING
VALUE(rv_title) TYPE string.
ENDINTERFACE.

View File

@ -1,15 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<abapGit version="v1.0.0" serializer="LCL_OBJECT_INTF" serializer_version="v1.0.0">
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
<asx:values>
<VSEOINTERF>
<CLSNAME>ZIF_ABAPGIT_USER_RECORD</CLSNAME>
<LANGU>E</LANGU>
<DESCRIPT>abapGit - User Record</DESCRIPT>
<EXPOSURE>2</EXPOSURE>
<STATE>1</STATE>
<UNICODE>X</UNICODE>
</VSEOINTERF>
</asx:values>
</asx:abap>
</abapGit>

View File

@ -1,26 +1,18 @@
CLASS zcl_abapgit_exit DEFINITION CLASS zcl_abapgit_exit DEFINITION
PUBLIC PUBLIC
CREATE PUBLIC CREATE PUBLIC .
GLOBAL FRIENDS zcl_abapgit_injector.
PUBLIC SECTION. PUBLIC SECTION.
INTERFACES zif_abapgit_exit. INTERFACES zif_abapgit_exit .
CLASS-METHODS get_instance CLASS-METHODS get_instance
RETURNING RETURNING
VALUE(ri_exit) TYPE REF TO zif_abapgit_exit. VALUE(ri_exit) TYPE REF TO zif_abapgit_exit .
PROTECTED SECTION. PROTECTED SECTION.
PRIVATE SECTION. PRIVATE SECTION.
CLASS-DATA gi_global_exit TYPE REF TO zif_abapgit_exit. CLASS-DATA gi_exit TYPE REF TO zif_abapgit_exit .
CLASS-DATA gi_exit TYPE REF TO zif_abapgit_exit.
CLASS-METHODS is_running_in_test_context
RETURNING
VALUE(rv_running_in_test_context) TYPE abap_bool.
ENDCLASS. ENDCLASS.
@ -32,11 +24,6 @@ CLASS zcl_abapgit_exit IMPLEMENTATION.
DATA lv_class_name TYPE string. DATA lv_class_name TYPE string.
IF gi_global_exit IS NOT INITIAL.
ri_exit = gi_global_exit.
RETURN.
ENDIF.
lv_class_name = 'ZCL_ABAPGIT_USER_EXIT'. lv_class_name = 'ZCL_ABAPGIT_USER_EXIT'.
IF zcl_abapgit_factory=>get_environment( )->is_merged( ) = abap_true. IF zcl_abapgit_factory=>get_environment( )->is_merged( ) = abap_true.
@ -44,39 +31,14 @@ CLASS zcl_abapgit_exit IMPLEMENTATION.
lv_class_name = |\\PROGRAM={ sy-repid }\\CLASS={ lv_class_name }|. lv_class_name = |\\PROGRAM={ sy-repid }\\CLASS={ lv_class_name }|.
ENDIF. ENDIF.
" Prevent non-mocked exit calls in unit tests IF gi_exit IS INITIAL.
IF is_running_in_test_context( ) = abap_false.
TRY. TRY.
CREATE OBJECT gi_exit TYPE (lv_class_name). CREATE OBJECT gi_exit TYPE (lv_class_name).
CATCH cx_sy_create_object_error ##NO_HANDLER. CATCH cx_sy_create_object_error ##NO_HANDLER.
ENDTRY. ENDTRY.
ENDIF. ENDIF.
CREATE OBJECT gi_global_exit TYPE zcl_abapgit_exit. " this class CREATE OBJECT ri_exit TYPE zcl_abapgit_exit.
ri_exit = gi_global_exit.
ENDMETHOD.
METHOD is_running_in_test_context.
IF sy-sysid = 'ABC'.
" always run on open-abap
rv_running_in_test_context = abap_true.
RETURN.
ENDIF.
" Check if the local test class can be accessed by RTTI. If so the current process is running in a unit test.
" Note this approach only works for the developer version. The standalone version will always report not running in
" test context which should be fine as there are no unit tests delivered in it.
cl_abap_typedescr=>describe_by_name(
EXPORTING
p_name = |\\PROGRAM={ sy-repid }\\CLASS=LTCL_TEST|
EXCEPTIONS
type_not_found = 1
OTHERS = 2 ).
rv_running_in_test_context = boolc( sy-subrc = 0 ).
ENDMETHOD. ENDMETHOD.
@ -104,9 +66,7 @@ CLASS zcl_abapgit_exit IMPLEMENTATION.
IF gi_exit IS NOT INITIAL. IF gi_exit IS NOT INITIAL.
TRY. TRY.
rv_filename = gi_exit->adjust_display_filename( rv_filename = gi_exit->adjust_display_filename( iv_filename ).
is_repo_meta = is_repo_meta
iv_filename = iv_filename ).
CATCH cx_sy_ref_is_initial cx_sy_dyn_call_illegal_method ##NO_HANDLER. CATCH cx_sy_ref_is_initial cx_sy_dyn_call_illegal_method ##NO_HANDLER.
ENDTRY. ENDTRY.
ENDIF. ENDIF.
@ -142,22 +102,6 @@ CLASS zcl_abapgit_exit IMPLEMENTATION.
ENDMETHOD. ENDMETHOD.
METHOD zif_abapgit_exit~change_max_parallel_processes.
IF gi_exit IS NOT INITIAL.
TRY.
gi_exit->change_max_parallel_processes(
EXPORTING
iv_package = iv_package
CHANGING
cv_max_processes = cv_max_processes ).
CATCH cx_sy_ref_is_initial cx_sy_dyn_call_illegal_method ##NO_HANDLER.
ENDTRY.
ENDIF.
ENDMETHOD.
METHOD zif_abapgit_exit~change_proxy_authentication. METHOD zif_abapgit_exit~change_proxy_authentication.
IF gi_exit IS NOT INITIAL. IF gi_exit IS NOT INITIAL.
@ -206,18 +150,6 @@ CLASS zcl_abapgit_exit IMPLEMENTATION.
ENDMETHOD. ENDMETHOD.
METHOD zif_abapgit_exit~change_rfc_server_group.
IF gi_exit IS NOT INITIAL.
TRY.
gi_exit->change_rfc_server_group( CHANGING cv_group = cv_group ).
CATCH cx_sy_ref_is_initial cx_sy_dyn_call_illegal_method ##NO_HANDLER.
ENDTRY.
ENDIF.
ENDMETHOD.
METHOD zif_abapgit_exit~change_supported_data_objects. METHOD zif_abapgit_exit~change_supported_data_objects.
IF gi_exit IS NOT INITIAL. IF gi_exit IS NOT INITIAL.
@ -248,13 +180,10 @@ CLASS zcl_abapgit_exit IMPLEMENTATION.
TRY. TRY.
gi_exit->change_tadir( gi_exit->change_tadir(
EXPORTING EXPORTING
iv_package = iv_package iv_package = iv_package
ii_log = ii_log ii_log = ii_log
is_dot_abapgit = is_dot_abapgit
iv_ignore_subpackages = iv_ignore_subpackages
iv_only_local_objects = iv_only_local_objects
CHANGING CHANGING
ct_tadir = ct_tadir ). ct_tadir = ct_tadir ).
CATCH cx_sy_ref_is_initial cx_sy_dyn_call_illegal_method ##NO_HANDLER. CATCH cx_sy_ref_is_initial cx_sy_dyn_call_illegal_method ##NO_HANDLER.
ENDTRY. ENDTRY.
ENDIF. ENDIF.
@ -317,8 +246,8 @@ CLASS zcl_abapgit_exit IMPLEMENTATION.
TRY. TRY.
gi_exit->determine_transport_request( gi_exit->determine_transport_request(
EXPORTING EXPORTING
ii_repo = ii_repo io_repo = io_repo
iv_transport_type = iv_transport_type iv_transport_type = iv_transport_type
CHANGING CHANGING
cv_transport_request = cv_transport_request ). cv_transport_request = cv_transport_request ).
CATCH cx_sy_ref_is_initial cx_sy_dyn_call_illegal_method ##NO_HANDLER. CATCH cx_sy_ref_is_initial cx_sy_dyn_call_illegal_method ##NO_HANDLER.
@ -328,33 +257,6 @@ CLASS zcl_abapgit_exit IMPLEMENTATION.
ENDMETHOD. ENDMETHOD.
METHOD zif_abapgit_exit~enhance_any_toolbar.
IF gi_exit IS NOT INITIAL.
TRY.
gi_exit->enhance_any_toolbar( io_menu ).
CATCH cx_sy_ref_is_initial cx_sy_dyn_call_illegal_method ##NO_HANDLER.
ENDTRY.
ENDIF.
ENDMETHOD.
METHOD zif_abapgit_exit~enhance_repo_toolbar.
IF gi_exit IS NOT INITIAL.
TRY.
gi_exit->enhance_repo_toolbar(
io_menu = io_menu
iv_key = iv_key
iv_act = iv_act ).
CATCH cx_sy_ref_is_initial cx_sy_dyn_call_illegal_method ##NO_HANDLER.
ENDTRY.
ENDIF.
ENDMETHOD.
METHOD zif_abapgit_exit~get_ci_tests. METHOD zif_abapgit_exit~get_ci_tests.
IF gi_exit IS NOT INITIAL. IF gi_exit IS NOT INITIAL.
@ -452,9 +354,9 @@ CLASS zcl_abapgit_exit IMPLEMENTATION.
IF gi_exit IS NOT INITIAL. IF gi_exit IS NOT INITIAL.
TRY. TRY.
gi_exit->validate_before_push( gi_exit->validate_before_push(
is_comment = is_comment is_comment = is_comment
io_stage = io_stage io_stage = io_stage
ii_repo_online = ii_repo_online ). io_repo = io_repo ).
CATCH cx_sy_ref_is_initial cx_sy_dyn_call_illegal_method ##NO_HANDLER. CATCH cx_sy_ref_is_initial cx_sy_dyn_call_illegal_method ##NO_HANDLER.
ENDTRY. ENDTRY.
ENDIF. ENDIF.
@ -486,4 +388,15 @@ CLASS zcl_abapgit_exit IMPLEMENTATION.
ENDIF. ENDIF.
ENDMETHOD. ENDMETHOD.
METHOD zif_abapgit_exit~enhance_repo_toolbar.
IF gi_exit IS NOT INITIAL.
TRY.
gi_exit->enhance_repo_toolbar(
io_menu = io_menu
iv_key = iv_key
iv_act = iv_act ).
CATCH cx_sy_ref_is_initial cx_sy_dyn_call_illegal_method ##NO_HANDLER.
ENDTRY.
ENDIF.
ENDMETHOD.
ENDCLASS. ENDCLASS.

View File

@ -1,18 +0,0 @@
CLASS ltcl_test DEFINITION DEFERRED.
CLASS zcl_abapgit_exit DEFINITION LOCAL FRIENDS ltcl_test.
" The class name ltcl_test is hardcoded in zcl_abapgit_exit=>is_running_in_test_context
CLASS ltcl_test DEFINITION FOR TESTING RISK LEVEL HARMLESS DURATION SHORT.
PRIVATE SECTION.
METHODS:
is_running_in_test_context FOR TESTING.
ENDCLASS.
CLASS ltcl_test IMPLEMENTATION.
METHOD is_running_in_test_context.
cl_abap_unit_assert=>assert_equals(
act = zcl_abapgit_exit=>is_running_in_test_context( )
exp = abap_true ).
ENDMETHOD.
ENDCLASS.

View File

@ -10,7 +10,6 @@
<CLSCCINCL>X</CLSCCINCL> <CLSCCINCL>X</CLSCCINCL>
<FIXPT>X</FIXPT> <FIXPT>X</FIXPT>
<UNICODE>X</UNICODE> <UNICODE>X</UNICODE>
<WITH_UNIT_TESTS>X</WITH_UNIT_TESTS>
</VSEOCLASS> </VSEOCLASS>
</asx:values> </asx:values>
</asx:abap> </asx:abap>

View File

@ -1,19 +1,16 @@
INTERFACE zif_abapgit_exit PUBLIC. INTERFACE zif_abapgit_exit
PUBLIC .
TYPES: TYPES:
BEGIN OF ty_ci_repo, BEGIN OF ty_ci_repo,
name TYPE string, name TYPE string,
clone_url TYPE string, clone_url TYPE string,
END OF ty_ci_repo. END OF ty_ci_repo .
TYPES ty_ci_repos TYPE STANDARD TABLE OF ty_ci_repo WITH DEFAULT KEY.
TYPES ty_object_types TYPE HASHED TABLE OF tadir-object WITH UNIQUE KEY table_line.
TYPES: TYPES:
BEGIN OF ty_class_key, ty_ci_repos TYPE TABLE OF ty_ci_repo .
clsname TYPE abap_classname, TYPES:
END OF ty_class_key. ty_object_types TYPE STANDARD TABLE OF tadir-object WITH DEFAULT KEY .
METHODS adjust_display_commit_url METHODS adjust_display_commit_url
IMPORTING IMPORTING
@ -24,77 +21,55 @@ INTERFACE zif_abapgit_exit PUBLIC.
CHANGING CHANGING
!cv_display_url TYPE csequence !cv_display_url TYPE csequence
RAISING RAISING
zcx_abapgit_exception. zcx_abapgit_exception .
METHODS adjust_display_filename METHODS adjust_display_filename
IMPORTING IMPORTING
!is_repo_meta TYPE zif_abapgit_persistence=>ty_repo
!iv_filename TYPE string !iv_filename TYPE string
RETURNING RETURNING
VALUE(rv_filename) TYPE string. VALUE(rv_filename) TYPE string .
METHODS allow_sap_objects METHODS allow_sap_objects
RETURNING RETURNING
VALUE(rv_allowed) TYPE abap_bool. VALUE(rv_allowed) TYPE abap_bool .
METHODS change_local_host METHODS change_local_host
CHANGING CHANGING
!ct_hosts TYPE zif_abapgit_definitions=>ty_string_tt. !ct_hosts TYPE zif_abapgit_definitions=>ty_string_tt .
METHODS change_max_parallel_processes
IMPORTING
!iv_package TYPE devclass
CHANGING
!cv_max_processes TYPE i.
METHODS change_proxy_authentication METHODS change_proxy_authentication
IMPORTING IMPORTING
!iv_repo_url TYPE csequence !iv_repo_url TYPE csequence
CHANGING CHANGING
!cv_proxy_authentication TYPE abap_bool. !cv_proxy_authentication TYPE abap_bool .
METHODS change_proxy_port METHODS change_proxy_port
IMPORTING IMPORTING
!iv_repo_url TYPE csequence !iv_repo_url TYPE csequence
CHANGING CHANGING
!cv_proxy_port TYPE string. !cv_proxy_port TYPE string .
METHODS change_proxy_url METHODS change_proxy_url
IMPORTING IMPORTING
!iv_repo_url TYPE csequence !iv_repo_url TYPE csequence
CHANGING CHANGING
!cv_proxy_url TYPE string. !cv_proxy_url TYPE string .
METHODS change_rfc_server_group
CHANGING
!cv_group TYPE rzlli_apcl.
METHODS change_supported_data_objects METHODS change_supported_data_objects
CHANGING CHANGING
!ct_objects TYPE zif_abapgit_data_supporter=>ty_objects. !ct_objects TYPE zif_abapgit_data_supporter=>ty_objects.
METHODS change_supported_object_types METHODS change_supported_object_types
CHANGING CHANGING
!ct_types TYPE ty_object_types. !ct_types TYPE ty_object_types .
METHODS change_tadir METHODS change_tadir
IMPORTING IMPORTING
!iv_package TYPE devclass !iv_package TYPE devclass
!ii_log TYPE REF TO zif_abapgit_log !ii_log TYPE REF TO zif_abapgit_log
!is_dot_abapgit TYPE zif_abapgit_dot_abapgit=>ty_dot_abapgit
!iv_ignore_subpackages TYPE abap_bool DEFAULT abap_false
!iv_only_local_objects TYPE abap_bool DEFAULT abap_false
CHANGING CHANGING
!ct_tadir TYPE zif_abapgit_definitions=>ty_tadir_tt. !ct_tadir TYPE zif_abapgit_definitions=>ty_tadir_tt .
METHODS create_http_client METHODS create_http_client
IMPORTING IMPORTING
!iv_url TYPE string !iv_url TYPE string
RETURNING RETURNING
VALUE(ri_client) TYPE REF TO if_http_client VALUE(ri_client) TYPE REF TO if_http_client
RAISING RAISING
zcx_abapgit_exception. zcx_abapgit_exception .
TYPES: BEGIN OF ty_class_key,
clsname TYPE abap_classname,
END OF ty_class_key.
METHODS custom_serialize_abap_clif METHODS custom_serialize_abap_clif
IMPORTING IMPORTING
!is_class_key TYPE ty_class_key !is_class_key TYPE ty_class_key
@ -102,53 +77,36 @@ INTERFACE zif_abapgit_exit PUBLIC.
RETURNING RETURNING
VALUE(rt_source) TYPE zif_abapgit_definitions=>ty_string_tt VALUE(rt_source) TYPE zif_abapgit_definitions=>ty_string_tt
RAISING RAISING
zcx_abapgit_exception. zcx_abapgit_exception .
METHODS deserialize_postprocess METHODS deserialize_postprocess
IMPORTING IMPORTING
!is_step TYPE zif_abapgit_objects=>ty_step_data !is_step TYPE zif_abapgit_objects=>ty_step_data
!ii_log TYPE REF TO zif_abapgit_log. !ii_log TYPE REF TO zif_abapgit_log .
METHODS determine_transport_request METHODS determine_transport_request
IMPORTING IMPORTING
!ii_repo TYPE REF TO zif_abapgit_repo !io_repo TYPE REF TO zcl_abapgit_repo
!iv_transport_type TYPE zif_abapgit_definitions=>ty_transport_type !iv_transport_type TYPE zif_abapgit_definitions=>ty_transport_type
CHANGING CHANGING
!cv_transport_request TYPE trkorr. !cv_transport_request TYPE trkorr .
METHODS enhance_any_toolbar
IMPORTING
!io_menu TYPE REF TO zcl_abapgit_html_toolbar.
METHODS enhance_repo_toolbar
IMPORTING
!io_menu TYPE REF TO zcl_abapgit_html_toolbar
!iv_key TYPE zif_abapgit_persistence=>ty_value
!iv_act TYPE string.
METHODS get_ci_tests METHODS get_ci_tests
IMPORTING IMPORTING
!iv_object TYPE tadir-object !iv_object TYPE tadir-object
CHANGING CHANGING
!ct_ci_repos TYPE ty_ci_repos. !ct_ci_repos TYPE ty_ci_repos .
METHODS get_ssl_id METHODS get_ssl_id
RETURNING RETURNING
VALUE(rv_ssl_id) TYPE ssfapplssl. VALUE(rv_ssl_id) TYPE ssfapplssl .
METHODS http_client METHODS http_client
IMPORTING IMPORTING
!iv_url TYPE string !iv_url TYPE string
!ii_client TYPE REF TO if_http_client. !ii_client TYPE REF TO if_http_client .
METHODS on_event METHODS on_event
IMPORTING IMPORTING
!ii_event TYPE REF TO zif_abapgit_gui_event !ii_event TYPE REF TO zif_abapgit_gui_event
RETURNING RETURNING
VALUE(rs_handled) TYPE zif_abapgit_gui_event_handler=>ty_handling_result VALUE(rs_handled) TYPE zif_abapgit_gui_event_handler=>ty_handling_result
RAISING RAISING
zcx_abapgit_exception. zcx_abapgit_exception .
METHODS pre_calculate_repo_status METHODS pre_calculate_repo_status
IMPORTING IMPORTING
!is_repo_meta TYPE zif_abapgit_persistence=>ty_repo !is_repo_meta TYPE zif_abapgit_persistence=>ty_repo
@ -156,29 +114,30 @@ INTERFACE zif_abapgit_exit PUBLIC.
!ct_local TYPE zif_abapgit_definitions=>ty_files_item_tt !ct_local TYPE zif_abapgit_definitions=>ty_files_item_tt
!ct_remote TYPE zif_abapgit_git_definitions=>ty_files_tt !ct_remote TYPE zif_abapgit_git_definitions=>ty_files_tt
RAISING RAISING
zcx_abapgit_exception. zcx_abapgit_exception .
METHODS serialize_postprocess METHODS serialize_postprocess
IMPORTING IMPORTING
!iv_package TYPE devclass !iv_package TYPE devclass
!ii_log TYPE REF TO zif_abapgit_log !ii_log TYPE REF TO zif_abapgit_log
CHANGING CHANGING
!ct_files TYPE zif_abapgit_definitions=>ty_files_item_tt. !ct_files TYPE zif_abapgit_definitions=>ty_files_item_tt .
METHODS validate_before_push METHODS validate_before_push
IMPORTING IMPORTING
!is_comment TYPE zif_abapgit_git_definitions=>ty_comment !is_comment TYPE zif_abapgit_git_definitions=>ty_comment
!io_stage TYPE REF TO zcl_abapgit_stage !io_stage TYPE REF TO zcl_abapgit_stage
!ii_repo_online TYPE REF TO zif_abapgit_repo_online !io_repo TYPE REF TO zcl_abapgit_repo_online
RAISING RAISING
zcx_abapgit_exception. zcx_abapgit_exception .
METHODS wall_message_list METHODS wall_message_list
IMPORTING IMPORTING
!ii_html TYPE REF TO zif_abapgit_html. !ii_html TYPE REF TO zif_abapgit_html .
METHODS wall_message_repo METHODS wall_message_repo
IMPORTING IMPORTING
!is_repo_meta TYPE zif_abapgit_persistence=>ty_repo !is_repo_meta TYPE zif_abapgit_persistence=>ty_repo
!ii_html TYPE REF TO zif_abapgit_html. !ii_html TYPE REF TO zif_abapgit_html .
METHODS enhance_repo_toolbar
IMPORTING
!io_menu TYPE REF TO zcl_abapgit_html_toolbar
!iv_key TYPE zif_abapgit_persistence=>ty_value
!iv_act TYPE string.
ENDINTERFACE. ENDINTERFACE.

View File

@ -1,10 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<abapGit version="v1.0.0" serializer="LCL_OBJECT_DEVC" serializer_version="v1.0.0">
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
<asx:values>
<DEVC>
<CTEXT>abapGit - Git v2</CTEXT>
</DEVC>
</asx:values>
</asx:abap>
</abapGit>

View File

@ -1,242 +0,0 @@
CLASS zcl_abapgit_gitv2_porcelain DEFINITION
PUBLIC
CREATE PUBLIC .
PUBLIC SECTION.
INTERFACES zif_abapgit_gitv2_porcelain.
PROTECTED SECTION.
PRIVATE SECTION.
CONSTANTS:
BEGIN OF c_service,
receive TYPE string VALUE 'receive', "#EC NOTEXT
upload TYPE string VALUE 'upload', "#EC NOTEXT
END OF c_service .
CONSTANTS c_flush_pkt TYPE c LENGTH 4 VALUE '0000'.
CONSTANTS c_delim_pkt TYPE c LENGTH 4 VALUE '0001'.
CLASS-METHODS send_command
IMPORTING
iv_url TYPE string
iv_service TYPE string
iv_command TYPE string
it_arguments TYPE string_table OPTIONAL
RETURNING
VALUE(rv_response) TYPE xstring
RAISING
zcx_abapgit_exception.
CLASS-METHODS decode_pack
IMPORTING
iv_xstring TYPE xstring
RETURNING
VALUE(rt_objects) TYPE zif_abapgit_definitions=>ty_objects_tt
RAISING
zcx_abapgit_exception.
ENDCLASS.
CLASS ZCL_ABAPGIT_GITV2_PORCELAIN IMPLEMENTATION.
METHOD decode_pack.
DATA lv_xstring TYPE xstring.
DATA lv_contents TYPE xstring.
DATA lv_pack TYPE xstring.
DATA lv_pktlen TYPE i.
DATA lv_hex4 TYPE xstring.
lv_xstring = iv_xstring.
* The data transfer of the packfile is always multiplexed, using the same semantics of the
* side-band-64k capability from protocol version 1
WHILE xstrlen( lv_xstring ) > 0.
lv_hex4 = lv_xstring(4).
lv_pktlen = zcl_abapgit_git_utils=>length_utf8_hex( lv_hex4 ).
IF lv_pktlen = 0.
EXIT.
ELSEIF lv_pktlen = 1.
* its a delimiter package
lv_xstring = lv_xstring+4.
CONTINUE.
ENDIF.
lv_contents = lv_xstring(lv_pktlen).
IF lv_contents+4(1) = '01'.
CONCATENATE lv_pack lv_contents+5 INTO lv_pack IN BYTE MODE.
ENDIF.
lv_xstring = lv_xstring+lv_pktlen.
ENDWHILE.
rt_objects = zcl_abapgit_git_pack=>decode( lv_pack ).
ENDMETHOD.
METHOD send_command.
CONSTANTS lc_content_regex TYPE string VALUE '^[0-9a-f]{4}#'.
DATA lo_client TYPE REF TO zcl_abapgit_http_client.
DATA lv_cmd_pkt TYPE string.
DATA lt_headers TYPE zcl_abapgit_http=>ty_headers.
DATA ls_header LIKE LINE OF lt_headers.
DATA lv_argument TYPE string.
ls_header-key = 'Git-Protocol'.
ls_header-value = 'version=2'.
APPEND ls_header TO lt_headers.
lo_client = zcl_abapgit_http=>create_by_url(
iv_url = iv_url
iv_service = c_service-upload
it_headers = lt_headers ).
lo_client->check_smart_response(
iv_expected_content_type = |application/x-git-{ iv_service }-pack-advertisement|
iv_content_regex = lc_content_regex ).
lv_cmd_pkt = zcl_abapgit_git_utils=>pkt_string( |command={ iv_command }\n| )
&& zcl_abapgit_git_utils=>pkt_string( |agent={ zcl_abapgit_http=>get_agent( ) }\n| ).
IF lines( it_arguments ) > 0.
lv_cmd_pkt = lv_cmd_pkt && c_delim_pkt.
LOOP AT it_arguments INTO lv_argument.
lv_cmd_pkt = lv_cmd_pkt && zcl_abapgit_git_utils=>pkt_string( lv_argument ).
ENDLOOP.
ENDIF.
lv_cmd_pkt = lv_cmd_pkt && c_flush_pkt.
lo_client->set_header(
iv_key = '~request_uri'
iv_value = zcl_abapgit_url=>path_name( iv_url ) && |/git-{ iv_service }-pack| ).
lo_client->set_header(
iv_key = '~request_method'
iv_value = 'POST' ).
lo_client->set_header(
iv_key = 'Content-Type'
iv_value = |application/x-git-{ iv_service }-pack-request| ).
lo_client->set_header(
iv_key = 'Accept'
iv_value = |application/x-git-{ iv_service }-pack-result| ).
rv_response = lo_client->send_receive_close( zcl_abapgit_convert=>string_to_xstring_utf8( lv_cmd_pkt ) ).
ENDMETHOD.
METHOD zif_abapgit_gitv2_porcelain~commits_last_year.
DATA lv_xstring TYPE xstring.
DATA lt_arguments TYPE string_table.
DATA lv_argument TYPE string.
DATA lv_sha1 LIKE LINE OF it_sha1.
ASSERT lines( it_sha1 ) > 0.
lv_argument = |deepen-since { zcl_abapgit_git_time=>get_one_year_ago( ) }|.
APPEND lv_argument TO lt_arguments.
LOOP AT it_sha1 INTO lv_sha1.
lv_argument = |want { lv_sha1 }|.
APPEND lv_argument TO lt_arguments.
ENDLOOP.
* 'filter object:type=commit' doesn't work on github
APPEND 'filter blob:none' TO lt_arguments.
APPEND 'no-progress' TO lt_arguments.
APPEND 'done' TO lt_arguments.
lv_xstring = send_command(
iv_url = iv_url
iv_service = c_service-upload
iv_command = |fetch|
it_arguments = lt_arguments ).
rt_objects = decode_pack( lv_xstring ).
DELETE rt_objects WHERE type <> zif_abapgit_git_definitions=>c_type-commit.
ENDMETHOD.
METHOD zif_abapgit_gitv2_porcelain~list_branches.
DATA lv_xstring TYPE xstring.
DATA lt_arguments TYPE string_table.
DATA lv_argument TYPE string.
DATA lv_data TYPE string.
IF iv_prefix IS NOT INITIAL.
lv_argument = |ref-prefix { iv_prefix }|.
APPEND lv_argument TO lt_arguments.
ENDIF.
lv_xstring = send_command(
iv_url = iv_url
iv_service = c_service-upload
iv_command = |ls-refs|
it_arguments = lt_arguments ).
" add dummy packet so the v1 branch parsing can be reused
lv_data = |0004\n{ zcl_abapgit_convert=>xstring_to_string_utf8( lv_xstring ) }|.
CREATE OBJECT ro_list
EXPORTING
iv_data = lv_data.
ENDMETHOD.
METHOD zif_abapgit_gitv2_porcelain~list_no_blobs.
DATA lt_sha1 TYPE zif_abapgit_git_definitions=>ty_sha1_tt.
DATA lt_objects TYPE zif_abapgit_definitions=>ty_objects_tt.
ASSERT iv_sha1 IS NOT INITIAL.
APPEND iv_sha1 TO lt_sha1.
lt_objects = zif_abapgit_gitv2_porcelain~list_no_blobs_multi(
iv_url = iv_url
it_sha1 = lt_sha1 ).
rt_expanded = zcl_abapgit_git_porcelain=>full_tree(
it_objects = lt_objects
iv_parent = iv_sha1 ).
ENDMETHOD.
METHOD zif_abapgit_gitv2_porcelain~list_no_blobs_multi.
DATA lv_xstring TYPE xstring.
DATA lt_arguments TYPE string_table.
DATA lv_argument TYPE string.
DATA lv_sha1 LIKE LINE OF it_sha1.
ASSERT lines( it_sha1 ) > 0.
APPEND 'deepen 1' TO lt_arguments.
LOOP AT it_sha1 INTO lv_sha1.
lv_argument = |want { lv_sha1 }|.
APPEND lv_argument TO lt_arguments.
ENDLOOP.
APPEND 'filter blob:none' TO lt_arguments.
APPEND 'no-progress' TO lt_arguments.
APPEND 'done' TO lt_arguments.
lv_xstring = send_command(
iv_url = iv_url
iv_service = c_service-upload
iv_command = |fetch|
it_arguments = lt_arguments ).
rt_objects = decode_pack( lv_xstring ).
ENDMETHOD.
ENDCLASS.

View File

@ -1,16 +0,0 @@
<?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_GITV2_PORCELAIN</CLSNAME>
<LANGU>E</LANGU>
<DESCRIPT>abapGit - Git v2</DESCRIPT>
<STATE>1</STATE>
<CLSCCINCL>X</CLSCCINCL>
<FIXPT>X</FIXPT>
<UNICODE>X</UNICODE>
</VSEOCLASS>
</asx:values>
</asx:abap>
</abapGit>

View File

@ -1,37 +0,0 @@
INTERFACE zif_abapgit_gitv2_porcelain
PUBLIC .
METHODS list_branches
IMPORTING
!iv_url TYPE string
!iv_prefix TYPE string OPTIONAL
RETURNING
VALUE(ro_list) TYPE REF TO zcl_abapgit_git_branch_list
RAISING
zcx_abapgit_exception .
METHODS list_no_blobs
IMPORTING
!iv_url TYPE string
!iv_sha1 TYPE zif_abapgit_git_definitions=>ty_sha1
RETURNING
VALUE(rt_expanded) TYPE zif_abapgit_git_definitions=>ty_expanded_tt
RAISING
zcx_abapgit_exception .
METHODS list_no_blobs_multi
IMPORTING
!iv_url TYPE string
!it_sha1 TYPE zif_abapgit_git_definitions=>ty_sha1_tt
RETURNING
VALUE(rt_objects) TYPE zif_abapgit_definitions=>ty_objects_tt
RAISING
zcx_abapgit_exception .
METHODS commits_last_year
IMPORTING
!iv_url TYPE string
!it_sha1 TYPE zif_abapgit_git_definitions=>ty_sha1_tt
RETURNING
VALUE(rt_objects) TYPE zif_abapgit_definitions=>ty_objects_tt
RAISING
zcx_abapgit_exception .
ENDINTERFACE.

View File

@ -1,15 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<abapGit version="v1.0.0" serializer="LCL_OBJECT_INTF" serializer_version="v1.0.0">
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
<asx:values>
<VSEOINTERF>
<CLSNAME>ZIF_ABAPGIT_GITV2_PORCELAIN</CLSNAME>
<LANGU>E</LANGU>
<DESCRIPT>abapGit - Git v2</DESCRIPT>
<EXPOSURE>2</EXPOSURE>
<STATE>1</STATE>
<UNICODE>X</UNICODE>
</VSEOINTERF>
</asx:values>
</asx:abap>
</abapGit>

View File

@ -1,3 +1,5 @@
*"* use this source file for your ABAP unit test classes
CLASS ltcl_calculate_patch DEFINITION FINAL FOR TESTING CLASS ltcl_calculate_patch DEFINITION FINAL FOR TESTING
DURATION SHORT DURATION SHORT
RISK LEVEL HARMLESS. RISK LEVEL HARMLESS.

Some files were not shown because too many files have changed in this diff Show More