Compare commits

..

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

757 changed files with 11790 additions and 37464 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

@ -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.
" 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 EXPORTING
iv_package_name = iv_package_name. 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
INNER JOIN tadir ON seometarel~clsname = tadir~obj_name "#EC CI_BUFFJOIN
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. ENDIF.
ENDLOOP.
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

@ -32,16 +32,8 @@ INTERFACE zif_abapgit_apack_definitions PUBLIC .
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,
ls_key TYPE seoclskey,
lt_implementing TYPE seor_implementing_keys, lt_implementing TYPE seor_implementing_keys,
ls_implementing LIKE LINE OF lt_implementing, ls_implementing LIKE LINE OF lt_implementing.
lt_interf TYPE abap_intfdescr_tab,
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
EXCEPTIONS
type_not_found = 1
OTHERS = 2 ).
IF sy-subrc = 0 AND lr_typedescr IS BOUND.
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. INSERT ls_method INTO TABLE rt_methods.
ENDIF.
ENDIF.
ENDIF.
ENDLOOP.
ELSE. ls_key-clsname = 'ZIF_ABAPGIT_BACKGROUND'.
" Assume the developer version runs.
CALL FUNCTION 'SEO_INTERFACE_IMPLEM_GET_ALL' CALL FUNCTION 'SEO_INTERFACE_IMPLEM_GET_ALL'
EXPORTING EXPORTING
intkey = c_interface intkey = ls_key
IMPORTING IMPORTING
impkeys = lt_implementing impkeys = lt_implementing
EXCEPTIONS EXCEPTIONS
not_existing = 1 not_existing = 1
OTHERS = 2. OTHERS = 2 ##FM_SUBRC_OK.
IF sy-subrc = 0.
LOOP AT lt_implementing INTO ls_implementing. LOOP AT lt_implementing INTO ls_implementing.
ls_method-class = ls_implementing-clsname. ls_method-class = ls_implementing-clsname.
INSERT ls_method INTO TABLE rt_methods. INSERT ls_method INTO TABLE rt_methods.
ENDLOOP. 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,10 +69,11 @@ 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,
lt_list TYPE zcl_abapgit_persist_background=>ty_background_keys,
li_background TYPE REF TO zif_abapgit_background, li_background TYPE REF TO zif_abapgit_background,
li_log TYPE REF TO zif_abapgit_log, li_log TYPE REF TO zif_abapgit_log,
lx_error TYPE REF TO zcx_abapgit_exception, lx_error TYPE REF TO zcx_abapgit_exception,
@ -146,14 +81,23 @@ CLASS zcl_abapgit_background IMPLEMENTATION.
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,|
& | as it is not accessible (local/global class).| ).
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.
li_log->add_exception( lx_error ).
ENDTRY.
" Clear auth buffer to allow different user/password per repository in background mode " Clear auth buffer to allow different user/password per repository in background mode
zcl_abapgit_login_manager=>clear( ). zcl_abapgit_login_manager=>clear( ).
CATCH zcx_abapgit_exception INTO lx_error.
li_log->add_exception( lx_error ).
ENDTRY.
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 ). ii_log = ii_log ).
li_repo->deserialize( is_checks = ls_checks
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,7 +27,7 @@ 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 .
@ -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,12 +172,12 @@ 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.
@ -212,7 +212,7 @@ 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,7 +22,7 @@ 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
@ -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,7 +99,7 @@ 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,7 +156,7 @@ 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 ).

View File

@ -15,10 +15,10 @@ 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

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.
COLLECT ls_tlock-trkorr INTO lt_transports.
ENDLOOP.
IF lines( lt_transports ) = 1.
rv_transport = lv_transport_request. 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
@ -483,12 +324,8 @@ CLASS zcl_abapgit_cts_api IMPLEMENTATION.
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.
ELSE.
lv_request = zif_abapgit_definitions=>c_multiple_transports.
EXIT. 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,7 +16,7 @@ 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
@ -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,7 +62,7 @@ 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
@ -39,49 +9,27 @@ INTERFACE zif_abapgit_cts_api
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,
modifiable TYPE c LENGTH 1 VALUE 'D',
END OF c_transport_status .
METHODS confirm_transport_messages TYPES: BEGIN OF ty_transport,
RETURNING obj_type TYPE tadir-object,
VALUE(rv_messages_confirmed) TYPE abap_bool . obj_name TYPE tadir-obj_name,
METHODS create_transport_entries trkorr TYPE trkorr,
IMPORTING END OF ty_transport.
!iv_transport TYPE trkorr
!it_table_ins TYPE ANY TABLE OPTIONAL TYPES ty_transport_list TYPE SORTED TABLE OF ty_transport WITH NON-UNIQUE KEY obj_type obj_name.
!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,6 +20,7 @@ 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
@ -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,
@ -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.

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
@ -24,6 +24,8 @@ CLASS zcl_abapgit_data_utils DEFINITION
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,7 +1,6 @@
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.
@ -10,17 +9,10 @@ CLASS zcl_abapgit_exit DEFINITION
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.
@ -250,9 +182,6 @@ CLASS zcl_abapgit_exit IMPLEMENTATION.
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.
@ -317,7 +246,7 @@ 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 ).
@ -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.
@ -454,7 +356,7 @@ CLASS zcl_abapgit_exit IMPLEMENTATION.
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
@ -25,68 +22,44 @@ INTERFACE zif_abapgit_exit PUBLIC.
!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
@ -94,7 +67,9 @@ INTERFACE zif_abapgit_exit PUBLIC.
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
@ -103,44 +78,28 @@ INTERFACE zif_abapgit_exit PUBLIC.
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
@ -148,7 +107,6 @@ INTERFACE zif_abapgit_exit PUBLIC.
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
@ -157,28 +115,29 @@ INTERFACE zif_abapgit_exit PUBLIC.
!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.

View File

@ -45,11 +45,6 @@ CLASS zcl_abapgit_git_branch_list DEFINITION
!iv_current_row_index TYPE sy-tabix OPTIONAL !iv_current_row_index TYPE sy-tabix OPTIONAL
RETURNING RETURNING
VALUE(rv_type) TYPE zif_abapgit_git_definitions=>ty_git_branch_type . VALUE(rv_type) TYPE zif_abapgit_git_definitions=>ty_git_branch_type .
CLASS-METHODS get_description
IMPORTING
!iv_branch_name TYPE clike
RETURNING
VALUE(rv_description) TYPE string.
CLASS-METHODS complete_heads_branch_name CLASS-METHODS complete_heads_branch_name
IMPORTING IMPORTING
!iv_branch_name TYPE clike !iv_branch_name TYPE clike
@ -135,7 +130,8 @@ CLASS zcl_abapgit_git_branch_list IMPLEMENTATION.
WITH TABLE KEY name_key WITH TABLE KEY name_key
COMPONENTS name = iv_branch_name. COMPONENTS name = iv_branch_name.
IF sy-subrc <> 0. IF sy-subrc <> 0.
zcx_abapgit_exception=>raise( |{ get_description( iv_branch_name ) } not found| ). zcx_abapgit_exception=>raise( |Branch { get_display_name( iv_branch_name )
} not found. Use 'Branch' > 'Switch' to select a different branch| ).
ENDIF. ENDIF.
ENDIF. ENDIF.
@ -154,7 +150,7 @@ CLASS zcl_abapgit_git_branch_list IMPLEMENTATION.
WITH TABLE KEY name_key WITH TABLE KEY name_key
COMPONENTS name = iv_branch_name. COMPONENTS name = iv_branch_name.
IF sy-subrc <> 0. IF sy-subrc <> 0.
zcx_abapgit_exception=>raise( |{ get_description( iv_branch_name ) } not found| ). zcx_abapgit_exception=>raise( 'Branch not found' ).
ENDIF. ENDIF.
ENDIF. ENDIF.
@ -180,24 +176,6 @@ CLASS zcl_abapgit_git_branch_list IMPLEMENTATION.
ENDMETHOD. ENDMETHOD.
METHOD get_description.
CASE get_type( iv_branch_name ).
WHEN zif_abapgit_git_definitions=>c_git_branch_type-branch.
rv_description = 'Branch'.
WHEN zif_abapgit_git_definitions=>c_git_branch_type-lightweight_tag.
rv_description = 'Tag'.
WHEN zif_abapgit_git_definitions=>c_git_branch_type-annotated_tag.
rv_description = 'Annotated Tag'.
WHEN OTHERS.
rv_description = 'Branch'.
ENDCASE.
rv_description = |{ rv_description } "{ get_display_name( iv_branch_name ) }"|.
ENDMETHOD.
METHOD get_display_name. METHOD get_display_name.
rv_display_name = iv_branch_name. rv_display_name = iv_branch_name.

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