@abapify/adt-plugin-abapgit 0.0.0 → 0.3.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,3 +1,167 @@
1
1
  # @abapify/adt-plugin-abapgit
2
2
 
3
- Placeholder. The real release is published via CI/CD.
3
+ [![version](https://img.shields.io/github/package-json/v/abapify/adt-cli?filename=packages/adt-plugin-abapgit/package.json)](https://github.com/abapify/adt-cli/pkgs/npm/%40abapify%2Fadt-plugin-abapgit)
4
+
5
+ abapGit format plugin for ADT — serializes ABAP objects to Git-compatible XML/ABAP files.
6
+
7
+ ## Architecture Overview
8
+
9
+ ```
10
+ ┌─────────────────────────────────────────────────────────────────────┐
11
+ │ adt-plugin-abapgit │
12
+ ├─────────────────────────────────────────────────────────────────────┤
13
+ │ XSD Schemas (xsd/) → ts-xsd codegen → TypeScript types │
14
+ │ (XML structure definition) (build time) + parser/builder │
15
+ ├─────────────────────────────────────────────────────────────────────┤
16
+ │ Object Handlers (handlers/) │
17
+ │ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ │
18
+ │ │ CLAS │ │ INTF │ │ DEVC │ │ DTEL │ │ DOMA │ │
19
+ │ │ handler │ │ handler │ │ handler │ │ handler │ │ handler │ │
20
+ │ └────┬────┘ └────┬────┘ └────┬────┘ └────┬────┘ └────┬────┘ │
21
+ │ └──────────┬┴──────────┬┴──────────┬┴──────────┘ │
22
+ │ ▼ ▼ ▼ │
23
+ │ createHandler (factory) │
24
+ │ - Auto-registration │
25
+ │ - Default serialize logic │
26
+ │ - File naming conventions │
27
+ ├─────────────────────────────────────────────────────────────────────┤
28
+ │ ADK Facade (@abapify/adk) │
29
+ │ - AdkClass, AdkInterface, AdkPackage... │
30
+ │ - Client-agnostic object model │
31
+ │ - Source code retrieval via getSource()/getIncludeSource() │
32
+ └─────────────────────────────────────────────────────────────────────┘
33
+ ```
34
+
35
+ ## Key Design Decisions
36
+
37
+ ### 1. XSD Schemas as Single Source of Truth
38
+
39
+ **Why XSD?**
40
+
41
+ - XML Schema Definition (XSD) is the **industry standard** for XML structure validation
42
+ - Can be used **outside our tools** (e.g., `xmllint --schema intf.xsd file.xml`)
43
+ - Provides **formal contract** for abapGit XML format
44
+ - Enables **automated validation** in CI/CD pipelines
45
+
46
+ ```bash
47
+ # Validate any abapGit XML file against our schema
48
+ xmllint --schema xsd/intf.xsd myinterface.intf.xml --noout
49
+ ```
50
+
51
+ ### 2. ts-xsd for Type-Safe XML Handling
52
+
53
+ **Why ts-xsd?**
54
+
55
+ Unlike typical XML codegen tools that only generate types, `ts-xsd` provides:
56
+
57
+ - **TypeScript types** with full type inference
58
+ - **XML parser** that returns typed objects
59
+ - **XML builder** that accepts typed objects
60
+ - **Schema object** for runtime validation
61
+
62
+ ```typescript
63
+ // Generated from XSD - fully typed parse/build
64
+ import { intf } from './schemas/generated';
65
+
66
+ const data = intf.parse(xmlString); // → AbapGitIntf (typed)
67
+ const xml = intf.build(data); // → string (valid XML)
68
+ ```
69
+
70
+ ### 3. ADK as Client-Agnostic Facade
71
+
72
+ **Why not implement ADT client features in the plugin?**
73
+
74
+ The plugin **only consumes** the ADK facade:
75
+
76
+ - ADK handles all SAP communication details
77
+ - Plugin focuses purely on **serialization format**
78
+ - Same plugin works with any ADT client implementation
79
+ - Clear separation of concerns
80
+
81
+ ```typescript
82
+ // Plugin receives ADK objects, doesn't care how they were fetched
83
+ getSources: (cls) =>
84
+ cls.includes.map((inc) => ({
85
+ suffix: ABAPGIT_SUFFIX[inc.includeType],
86
+ content: cls.getIncludeSource(inc.includeType), // ADK handles this
87
+ }));
88
+ ```
89
+
90
+ ### 4. Handlers Don't Touch File System
91
+
92
+ **Why delegate file operations to base class?**
93
+
94
+ Object handlers **only define mappings**:
95
+
96
+ - `toAbapGit()` - ADK data → abapGit XML structure
97
+ - `getSource()` / `getSources()` - which source files to create
98
+
99
+ The `createHandler` factory handles:
100
+
101
+ - File creation with correct naming
102
+ - XML building with proper envelope
103
+ - Promise resolution for async sources
104
+ - Empty content filtering
105
+
106
+ ## Supported Object Types
107
+
108
+ | Type | Status | Handler | Notes |
109
+ | ---- | ------ | --------- | --------------------------------------------------------------------- |
110
+ | CLAS | ✅ | `clas.ts` | Multiple includes (main, locals_def, locals_imp, testclasses, macros) |
111
+ | INTF | ✅ | `intf.ts` | Single source file |
112
+ | DEVC | ✅ | `devc.ts` | Fixed filename `package.devc.xml` |
113
+ | DTEL | ✅ | `dtel.ts` | Metadata only (no source) |
114
+ | DOMA | ✅ | `doma.ts` | Custom serialize for fixed values |
115
+
116
+ ## File Structure
117
+
118
+ ```
119
+ src/
120
+ ├── zcl_example.clas.abap # Main class source
121
+ ├── zcl_example.clas.locals_def.abap # Local type definitions
122
+ ├── zcl_example.clas.locals_imp.abap # Local implementations
123
+ ├── zcl_example.clas.testclasses.abap # Test classes
124
+ ├── zcl_example.clas.xml # Class metadata
125
+ ├── zif_example.intf.abap # Interface source
126
+ ├── zif_example.intf.xml # Interface metadata
127
+ ├── ztest_dtel.dtel.xml # Data element (no source)
128
+ ├── ztest_doma.doma.xml # Domain (no source)
129
+ └── package.devc.xml # Package definition
130
+ ```
131
+
132
+ ## Development
133
+
134
+ ### Building
135
+
136
+ ```bash
137
+ npx nx build adt-plugin-abapgit
138
+ ```
139
+
140
+ ### Testing
141
+
142
+ ```bash
143
+ npx nx test adt-plugin-abapgit
144
+ ```
145
+
146
+ ### Regenerating Schemas
147
+
148
+ After modifying XSD files:
149
+
150
+ ```bash
151
+ npx nx codegen adt-plugin-abapgit
152
+ ```
153
+
154
+ ## Contributing
155
+
156
+ See [CONTRIBUTING.md](./CONTRIBUTING.md) for detailed guidelines on:
157
+
158
+ - Adding new object type support
159
+ - XSD schema conventions
160
+ - Handler implementation patterns
161
+ - Testing requirements
162
+
163
+ ## See Also
164
+
165
+ - [abapGit Documentation](https://docs.abapgit.org/)
166
+ - [@abapify/adt-plugin](../adt-plugin/README.md) - Plugin interface
167
+ - [@abapify/adk](../adk/README.md) - ABAP Development Kit
package/package.json CHANGED
@@ -1,5 +1,39 @@
1
1
  {
2
2
  "name": "@abapify/adt-plugin-abapgit",
3
- "version": "0.0.0",
4
- "description": "Placeholder — real package is published via CI/CD (trusted publishing)."
5
- }
3
+ "version": "0.3.6",
4
+ "license": "MIT",
5
+ "publishConfig": {
6
+ "access": "public"
7
+ },
8
+ "type": "module",
9
+ "types": "./dist/index.d.mts",
10
+ "exports": {
11
+ ".": "./dist/index.mjs",
12
+ "./package.json": "./package.json"
13
+ },
14
+ "nx": {
15
+ "name": "adt-plugin-abapgit"
16
+ },
17
+ "files": [
18
+ "dist",
19
+ "xsd"
20
+ ],
21
+ "dependencies": {
22
+ "@abapify/acds": "0.3.6",
23
+ "@abapify/adk": "0.3.6",
24
+ "@abapify/adt-atc": "0.3.6",
25
+ "@abapify/adt-plugin": "0.3.6",
26
+ "@abapify/adt-schemas": "0.3.6",
27
+ "@abapify/ts-xsd": "0.3.6"
28
+ },
29
+ "repository": {
30
+ "type": "git",
31
+ "url": "git+https://github.com/abapify/adt-cli.git",
32
+ "directory": "packages/adt-plugin-abapgit"
33
+ },
34
+ "homepage": "https://github.com/abapify/adt-cli/tree/main/packages/adt-plugin-abapgit#readme",
35
+ "bugs": {
36
+ "url": "https://github.com/abapify/adt-cli/issues"
37
+ },
38
+ "description": "abapGit serialization plugin for adt-cli — round-trips ADT objects to/from the abapGit on-disk format"
39
+ }
@@ -0,0 +1,25 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!--
3
+ abapGit Root Schema
4
+
5
+ Defines the abapGit root element that wraps asx:abap.
6
+ -->
7
+ <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
8
+ xmlns:asx="http://www.sap.com/abapxml"
9
+ elementFormDefault="qualified">
10
+
11
+ <xs:import namespace="http://www.sap.com/abapxml" schemaLocation="asx.xsd"/>
12
+
13
+ <!-- Root element -->
14
+ <xs:element name="abapGit">
15
+ <xs:complexType>
16
+ <xs:sequence>
17
+ <xs:element ref="asx:abap"/>
18
+ </xs:sequence>
19
+ <xs:attribute name="version" type="xs:string" use="required"/>
20
+ <xs:attribute name="serializer" type="xs:string" use="required"/>
21
+ <xs:attribute name="serializer_version" type="xs:string" use="required"/>
22
+ </xs:complexType>
23
+ </xs:element>
24
+
25
+ </xs:schema>
package/xsd/asx.xsd ADDED
@@ -0,0 +1,34 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!--
3
+ SAP ABAP XML (asx) Schema
4
+
5
+ Defines the asx:abap envelope used in abapGit XML files.
6
+ Object schemas substitute the abstract Payload element.
7
+ -->
8
+ <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
9
+ targetNamespace="http://www.sap.com/abapxml"
10
+ xmlns:asx="http://www.sap.com/abapxml"
11
+ elementFormDefault="qualified">
12
+
13
+ <!-- Abstract element - object schemas substitute this -->
14
+ <xs:element name="Schema" abstract="true"/>
15
+
16
+ <xs:complexType name="AbapValuesType">
17
+ <xs:sequence>
18
+ <xs:element ref="asx:Schema" minOccurs="0" maxOccurs="unbounded"/>
19
+ </xs:sequence>
20
+ </xs:complexType>
21
+
22
+ <!-- Global element definition for values -->
23
+ <xs:element name="values" type="asx:AbapValuesType"/>
24
+
25
+ <xs:complexType name="AbapType">
26
+ <xs:sequence>
27
+ <xs:element ref="asx:values"/>
28
+ </xs:sequence>
29
+ <xs:attribute name="version" type="xs:string" default="1.0"/>
30
+ </xs:complexType>
31
+
32
+ <xs:element name="abap" type="asx:AbapType"/>
33
+
34
+ </xs:schema>
package/xsd/bdef.xsd ADDED
@@ -0,0 +1,57 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!--
3
+ abapGit BDEF (RAP Behavior Definition) Schema
4
+
5
+ Defines SKEY (minimal source descriptor) structure for *.bdef.xml files.
6
+ The actual behavior source lives alongside in `<name>.bdef.abdl`.
7
+
8
+ The abapGit zcl_abapgit_object_bdef serializer writes only a lightweight
9
+ SKEY metadata block because all semantic content is in the .abdl source.
10
+ We mirror that shape here.
11
+ -->
12
+ <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
13
+ xmlns:asx="http://www.sap.com/abapxml"
14
+ elementFormDefault="unqualified">
15
+
16
+ <!-- Import ASX namespace -->
17
+ <xs:import namespace="http://www.sap.com/abapxml" schemaLocation="asx.xsd"/>
18
+
19
+ <!-- Include base abapGit types -->
20
+ <xs:include schemaLocation="abapgit.xsd"/>
21
+
22
+ <!-- SKEY — RAP behavior source key (minimal metadata for abapGit) -->
23
+ <xs:complexType name="SkeyType">
24
+ <xs:all>
25
+ <xs:element name="TYPE" type="xs:string" minOccurs="0"/>
26
+ <xs:element name="NAME" type="xs:string" minOccurs="0"/>
27
+ </xs:all>
28
+ </xs:complexType>
29
+
30
+ <!-- BDEF-specific values type -->
31
+ <xs:complexType name="BdefValuesType">
32
+ <xs:all>
33
+ <xs:element name="SKEY" type="SkeyType" minOccurs="0"/>
34
+ </xs:all>
35
+ </xs:complexType>
36
+
37
+ <!-- BDEF-specific ABAP envelope -->
38
+ <xs:complexType name="BdefAbapType">
39
+ <xs:sequence>
40
+ <xs:element name="values" type="BdefValuesType"/>
41
+ </xs:sequence>
42
+ <xs:attribute name="version" type="xs:string" default="1.0"/>
43
+ </xs:complexType>
44
+
45
+ <!-- THE ONLY ROOT ELEMENT -->
46
+ <xs:element name="abapGit">
47
+ <xs:complexType>
48
+ <xs:sequence>
49
+ <xs:element name="abap" type="BdefAbapType"/>
50
+ </xs:sequence>
51
+ <xs:attribute name="version" type="xs:string" use="required"/>
52
+ <xs:attribute name="serializer" type="xs:string" use="required"/>
53
+ <xs:attribute name="serializer_version" type="xs:string" use="required"/>
54
+ </xs:complexType>
55
+ </xs:element>
56
+
57
+ </xs:schema>
package/xsd/clas.xsd ADDED
@@ -0,0 +1,34 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!--
3
+ abapGit CLAS (Class) Schema
4
+
5
+ Defines VSEOCLASS structure for *.clas.xml files.
6
+
7
+ Uses xs:redefine to extend AbapValuesType with CLAS-specific elements.
8
+ This ensures VSEOCLASS can only appear inside asx:values, not as root.
9
+ -->
10
+ <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
11
+ targetNamespace="http://www.sap.com/abapxml"
12
+ xmlns:asx="http://www.sap.com/abapxml"
13
+ elementFormDefault="unqualified">
14
+
15
+ <!-- Include types (brought into asx namespace) -->
16
+ <xs:include schemaLocation="types/vseoclass.xsd"/>
17
+
18
+ <!-- Redefine AbapValuesType to include CLAS-specific elements -->
19
+ <xs:redefine schemaLocation="asx.xsd">
20
+ <xs:complexType name="AbapValuesType">
21
+ <xs:complexContent>
22
+ <xs:extension base="asx:AbapValuesType">
23
+ <xs:sequence>
24
+ <xs:element name="VSEOCLASS" type="asx:VseoClassType" minOccurs="0"/>
25
+ </xs:sequence>
26
+ </xs:extension>
27
+ </xs:complexContent>
28
+ </xs:complexType>
29
+ </xs:redefine>
30
+
31
+ <!-- Import abapGit root element -->
32
+ <xs:import schemaLocation="abapgit.xsd"/>
33
+
34
+ </xs:schema>
package/xsd/devc.xsd ADDED
@@ -0,0 +1,34 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!--
3
+ abapGit DEVC (Package) Schema
4
+
5
+ Defines the DEVC structure used in package.devc.xml files.
6
+
7
+ Uses xs:redefine to extend AbapValuesType with DEVC-specific elements.
8
+ This ensures DEVC can only appear inside asx:values, not as root.
9
+ -->
10
+ <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
11
+ targetNamespace="http://www.sap.com/abapxml"
12
+ xmlns:asx="http://www.sap.com/abapxml"
13
+ elementFormDefault="unqualified">
14
+
15
+ <!-- Include types (brought into asx namespace) -->
16
+ <xs:include schemaLocation="types/devc.xsd"/>
17
+
18
+ <!-- Redefine AbapValuesType to include DEVC-specific elements -->
19
+ <xs:redefine schemaLocation="asx.xsd">
20
+ <xs:complexType name="AbapValuesType">
21
+ <xs:complexContent>
22
+ <xs:extension base="asx:AbapValuesType">
23
+ <xs:sequence>
24
+ <xs:element name="DEVC" type="asx:DevcType" minOccurs="0"/>
25
+ </xs:sequence>
26
+ </xs:extension>
27
+ </xs:complexContent>
28
+ </xs:complexType>
29
+ </xs:redefine>
30
+
31
+ <!-- Import abapGit root element -->
32
+ <xs:import schemaLocation="abapgit.xsd"/>
33
+
34
+ </xs:schema>
package/xsd/doma.xsd ADDED
@@ -0,0 +1,37 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!--
3
+ abapGit DOMA (Domain) Schema
4
+
5
+ Defines the DD01V and DD07V_TAB structures used in *.doma.xml files.
6
+ Based on SAP DDIC tables DD01V (domain header) and DD07V (fixed values).
7
+
8
+ Uses xs:redefine to extend AbapValuesType with DOMA-specific elements.
9
+ This ensures DD01V/DD07V_TAB can only appear inside asx:values, not as root.
10
+ -->
11
+ <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
12
+ targetNamespace="http://www.sap.com/abapxml"
13
+ xmlns:asx="http://www.sap.com/abapxml"
14
+ elementFormDefault="unqualified">
15
+
16
+ <!-- Include types (brought into asx namespace) -->
17
+ <xs:include schemaLocation="types/dd01v.xsd"/>
18
+ <xs:include schemaLocation="types/dd07v.xsd"/>
19
+
20
+ <!-- Redefine AbapValuesType to include DOMA-specific elements -->
21
+ <xs:redefine schemaLocation="asx.xsd">
22
+ <xs:complexType name="AbapValuesType">
23
+ <xs:complexContent>
24
+ <xs:extension base="asx:AbapValuesType">
25
+ <xs:sequence>
26
+ <xs:element name="DD01V" type="asx:Dd01vType" minOccurs="0"/>
27
+ <xs:element name="DD07V_TAB" type="asx:Dd07vTabType" minOccurs="0"/>
28
+ </xs:sequence>
29
+ </xs:extension>
30
+ </xs:complexContent>
31
+ </xs:complexType>
32
+ </xs:redefine>
33
+
34
+ <!-- Import abapGit root element -->
35
+ <xs:import schemaLocation="abapgit.xsd"/>
36
+
37
+ </xs:schema>
package/xsd/dtel.xsd ADDED
@@ -0,0 +1,34 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!--
3
+ abapGit DTEL (Data Element) Schema
4
+
5
+ Defines DD04V structure for *.dtel.xml files.
6
+
7
+ Uses xs:redefine to extend AbapValuesType with DTEL-specific elements.
8
+ This ensures DD04V can only appear inside asx:values, not as root.
9
+ -->
10
+ <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
11
+ targetNamespace="http://www.sap.com/abapxml"
12
+ xmlns:asx="http://www.sap.com/abapxml"
13
+ elementFormDefault="unqualified">
14
+
15
+ <!-- Include types (brought into asx namespace) -->
16
+ <xs:include schemaLocation="types/dd04v.xsd"/>
17
+
18
+ <!-- Redefine AbapValuesType to include DTEL-specific elements -->
19
+ <xs:redefine schemaLocation="asx.xsd">
20
+ <xs:complexType name="AbapValuesType">
21
+ <xs:complexContent>
22
+ <xs:extension base="asx:AbapValuesType">
23
+ <xs:sequence>
24
+ <xs:element name="DD04V" type="asx:Dd04vType" minOccurs="0"/>
25
+ </xs:sequence>
26
+ </xs:extension>
27
+ </xs:complexContent>
28
+ </xs:complexType>
29
+ </xs:redefine>
30
+
31
+ <!-- Import abapGit root element -->
32
+ <xs:import schemaLocation="abapgit.xsd"/>
33
+
34
+ </xs:schema>
package/xsd/fugr.xsd ADDED
@@ -0,0 +1,44 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
3
+ xmlns:asx="http://www.sap.com/abapxml"
4
+ elementFormDefault="unqualified">
5
+
6
+ <!-- Import ASX namespace -->
7
+ <xs:import namespace="http://www.sap.com/abapxml" schemaLocation="asx.xsd"/>
8
+
9
+ <!-- Include base abapGit types -->
10
+ <xs:include schemaLocation="abapgit.xsd"/>
11
+
12
+ <!-- Include FUGR types -->
13
+ <xs:include schemaLocation="types/fugr.xsd"/>
14
+
15
+ <!-- Function group-specific values type -->
16
+ <xs:complexType name="FugrValuesType">
17
+ <xs:all>
18
+ <xs:element name="AREAT" type="xs:string" minOccurs="0"/>
19
+ <xs:element name="INCLUDES" type="FugrIncludesType" minOccurs="0"/>
20
+ <xs:element name="FUNCTIONS" type="FugrFunctionsType" minOccurs="0"/>
21
+ </xs:all>
22
+ </xs:complexType>
23
+
24
+ <!-- Function group-specific ABAP envelope -->
25
+ <xs:complexType name="FugrAbapType">
26
+ <xs:sequence>
27
+ <xs:element name="values" type="FugrValuesType"/>
28
+ </xs:sequence>
29
+ <xs:attribute name="version" type="xs:string" default="1.0"/>
30
+ </xs:complexType>
31
+
32
+ <!-- THE ONLY ROOT ELEMENT -->
33
+ <xs:element name="abapGit">
34
+ <xs:complexType>
35
+ <xs:sequence>
36
+ <xs:element name="abap" type="FugrAbapType"/>
37
+ </xs:sequence>
38
+ <xs:attribute name="version" type="xs:string" use="required"/>
39
+ <xs:attribute name="serializer" type="xs:string" use="required"/>
40
+ <xs:attribute name="serializer_version" type="xs:string" use="required"/>
41
+ </xs:complexType>
42
+ </xs:element>
43
+
44
+ </xs:schema>
package/xsd/intf.xsd ADDED
@@ -0,0 +1,34 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!--
3
+ abapGit INTF (Interface) Schema
4
+
5
+ Defines VSEOINTERF structure for *.intf.xml files.
6
+
7
+ Uses xs:redefine to extend AbapValuesType with INTF-specific elements.
8
+ This ensures VSEOINTERF can only appear inside asx:values, not as root.
9
+ -->
10
+ <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
11
+ targetNamespace="http://www.sap.com/abapxml"
12
+ xmlns:asx="http://www.sap.com/abapxml"
13
+ elementFormDefault="unqualified">
14
+
15
+ <!-- Include types (brought into asx namespace) -->
16
+ <xs:include schemaLocation="types/vseointerf.xsd"/>
17
+
18
+ <!-- Redefine AbapValuesType to include INTF-specific elements -->
19
+ <xs:redefine schemaLocation="asx.xsd">
20
+ <xs:complexType name="AbapValuesType">
21
+ <xs:complexContent>
22
+ <xs:extension base="asx:AbapValuesType">
23
+ <xs:sequence>
24
+ <xs:element name="VSEOINTERF" type="asx:VseoInterfType" minOccurs="0"/>
25
+ </xs:sequence>
26
+ </xs:extension>
27
+ </xs:complexContent>
28
+ </xs:complexType>
29
+ </xs:redefine>
30
+
31
+ <!-- Import abapGit root element -->
32
+ <xs:import schemaLocation="abapgit.xsd"/>
33
+
34
+ </xs:schema>
package/xsd/prog.xsd ADDED
@@ -0,0 +1,43 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
3
+ xmlns:asx="http://www.sap.com/abapxml"
4
+ elementFormDefault="unqualified">
5
+
6
+ <!-- Import ASX namespace -->
7
+ <xs:import namespace="http://www.sap.com/abapxml" schemaLocation="asx.xsd"/>
8
+
9
+ <!-- Include base abapGit types -->
10
+ <xs:include schemaLocation="abapgit.xsd"/>
11
+
12
+ <!-- Include PROGDIR and TPOOL types -->
13
+ <xs:include schemaLocation="types/progdir.xsd"/>
14
+
15
+ <!-- Program-specific values type -->
16
+ <xs:complexType name="ProgValuesType">
17
+ <xs:all>
18
+ <xs:element name="PROGDIR" type="ProgdirType" minOccurs="0"/>
19
+ <xs:element name="TPOOL" type="TpoolType" minOccurs="0"/>
20
+ </xs:all>
21
+ </xs:complexType>
22
+
23
+ <!-- Program-specific ABAP envelope -->
24
+ <xs:complexType name="ProgAbapType">
25
+ <xs:sequence>
26
+ <xs:element name="values" type="ProgValuesType"/>
27
+ </xs:sequence>
28
+ <xs:attribute name="version" type="xs:string" default="1.0"/>
29
+ </xs:complexType>
30
+
31
+ <!-- THE ONLY ROOT ELEMENT -->
32
+ <xs:element name="abapGit">
33
+ <xs:complexType>
34
+ <xs:sequence>
35
+ <xs:element name="abap" type="ProgAbapType"/>
36
+ </xs:sequence>
37
+ <xs:attribute name="version" type="xs:string" use="required"/>
38
+ <xs:attribute name="serializer" type="xs:string" use="required"/>
39
+ <xs:attribute name="serializer_version" type="xs:string" use="required"/>
40
+ </xs:complexType>
41
+ </xs:element>
42
+
43
+ </xs:schema>
package/xsd/srvb.xsd ADDED
@@ -0,0 +1,68 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!--
3
+ abapGit SRVB (RAP Service Binding) Schema
4
+
5
+ Defines the minimal abapGit metadata wrapper for *.srvb.xml files.
6
+
7
+ SRVB is metadata-only (unlike BDEF/SRVD which have .abdl/.asrvd source
8
+ text). We only need to serialise the binding key + protocol-relevant
9
+ fields. Rich binding payload (services, implementations) is not
10
+ preserved round-trip — matching the conservative approach used by
11
+ zcl_abapgit_object_srvb.
12
+ -->
13
+ <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
14
+ xmlns:asx="http://www.sap.com/abapxml"
15
+ elementFormDefault="unqualified">
16
+
17
+ <!-- Import ASX namespace -->
18
+ <xs:import namespace="http://www.sap.com/abapxml" schemaLocation="asx.xsd"/>
19
+
20
+ <!-- Include base abapGit types -->
21
+ <xs:include schemaLocation="abapgit.xsd"/>
22
+
23
+ <!-- SKEY — binding source key (minimal metadata for abapGit) -->
24
+ <xs:complexType name="SkeyType">
25
+ <xs:all>
26
+ <xs:element name="TYPE" type="xs:string" minOccurs="0"/>
27
+ <xs:element name="NAME" type="xs:string" minOccurs="0"/>
28
+ </xs:all>
29
+ </xs:complexType>
30
+
31
+ <!-- BINDING — protocol header block -->
32
+ <xs:complexType name="BindingType">
33
+ <xs:all>
34
+ <xs:element name="TYPE" type="xs:string" minOccurs="0"/>
35
+ <xs:element name="VERSION" type="xs:string" minOccurs="0"/>
36
+ <xs:element name="CATEGORY" type="xs:string" minOccurs="0"/>
37
+ </xs:all>
38
+ </xs:complexType>
39
+
40
+ <!-- SRVB-specific values type -->
41
+ <xs:complexType name="SrvbValuesType">
42
+ <xs:all>
43
+ <xs:element name="SKEY" type="SkeyType" minOccurs="0"/>
44
+ <xs:element name="BINDING" type="BindingType" minOccurs="0"/>
45
+ </xs:all>
46
+ </xs:complexType>
47
+
48
+ <!-- SRVB-specific ABAP envelope -->
49
+ <xs:complexType name="SrvbAbapType">
50
+ <xs:sequence>
51
+ <xs:element name="values" type="SrvbValuesType"/>
52
+ </xs:sequence>
53
+ <xs:attribute name="version" type="xs:string" default="1.0"/>
54
+ </xs:complexType>
55
+
56
+ <!-- THE ONLY ROOT ELEMENT -->
57
+ <xs:element name="abapGit">
58
+ <xs:complexType>
59
+ <xs:sequence>
60
+ <xs:element name="abap" type="SrvbAbapType"/>
61
+ </xs:sequence>
62
+ <xs:attribute name="version" type="xs:string" use="required"/>
63
+ <xs:attribute name="serializer" type="xs:string" use="required"/>
64
+ <xs:attribute name="serializer_version" type="xs:string" use="required"/>
65
+ </xs:complexType>
66
+ </xs:element>
67
+
68
+ </xs:schema>
package/xsd/srvd.xsd ADDED
@@ -0,0 +1,57 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!--
3
+ abapGit SRVD (RAP Service Definition) Schema
4
+
5
+ Defines SKEY (minimal source descriptor) structure for *.srvd.xml files.
6
+ The actual service source lives alongside in `<name>.srvd.asrvd`.
7
+
8
+ The abapGit zcl_abapgit_object_srvd serializer writes only a lightweight
9
+ SKEY metadata block because all semantic content is in the .asrvd source.
10
+ Mirrors the BDEF handler layout.
11
+ -->
12
+ <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
13
+ xmlns:asx="http://www.sap.com/abapxml"
14
+ elementFormDefault="unqualified">
15
+
16
+ <!-- Import ASX namespace -->
17
+ <xs:import namespace="http://www.sap.com/abapxml" schemaLocation="asx.xsd"/>
18
+
19
+ <!-- Include base abapGit types -->
20
+ <xs:include schemaLocation="abapgit.xsd"/>
21
+
22
+ <!-- SKEY — RAP service source key (minimal metadata for abapGit) -->
23
+ <xs:complexType name="SkeyType">
24
+ <xs:all>
25
+ <xs:element name="TYPE" type="xs:string" minOccurs="0"/>
26
+ <xs:element name="NAME" type="xs:string" minOccurs="0"/>
27
+ </xs:all>
28
+ </xs:complexType>
29
+
30
+ <!-- SRVD-specific values type -->
31
+ <xs:complexType name="SrvdValuesType">
32
+ <xs:all>
33
+ <xs:element name="SKEY" type="SkeyType" minOccurs="0"/>
34
+ </xs:all>
35
+ </xs:complexType>
36
+
37
+ <!-- SRVD-specific ABAP envelope -->
38
+ <xs:complexType name="SrvdAbapType">
39
+ <xs:sequence>
40
+ <xs:element name="values" type="SrvdValuesType"/>
41
+ </xs:sequence>
42
+ <xs:attribute name="version" type="xs:string" default="1.0"/>
43
+ </xs:complexType>
44
+
45
+ <!-- THE ONLY ROOT ELEMENT -->
46
+ <xs:element name="abapGit">
47
+ <xs:complexType>
48
+ <xs:sequence>
49
+ <xs:element name="abap" type="SrvdAbapType"/>
50
+ </xs:sequence>
51
+ <xs:attribute name="version" type="xs:string" use="required"/>
52
+ <xs:attribute name="serializer" type="xs:string" use="required"/>
53
+ <xs:attribute name="serializer_version" type="xs:string" use="required"/>
54
+ </xs:complexType>
55
+ </xs:element>
56
+
57
+ </xs:schema>
package/xsd/tabl.xsd ADDED
@@ -0,0 +1,40 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!--
3
+ abapGit TABL (Table/Structure) Schema
4
+
5
+ Defines the DD02V and DD03P_TABLE structures used in *.tabl.xml files.
6
+ Based on SAP DDIC tables DD02V (table header) and DD03P (field definitions).
7
+
8
+ Uses xs:redefine to extend AbapValuesType with TABL-specific elements.
9
+ -->
10
+ <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
11
+ targetNamespace="http://www.sap.com/abapxml"
12
+ xmlns:asx="http://www.sap.com/abapxml"
13
+ elementFormDefault="unqualified">
14
+
15
+ <!-- Include types (brought into asx namespace) -->
16
+ <xs:include schemaLocation="types/dd02v.xsd"/>
17
+ <xs:include schemaLocation="types/dd09l.xsd"/>
18
+ <xs:include schemaLocation="types/dd03p.xsd"/>
19
+ <xs:include schemaLocation="types/tddat.xsd"/>
20
+
21
+ <!-- Redefine AbapValuesType to include TABL-specific elements -->
22
+ <xs:redefine schemaLocation="asx.xsd">
23
+ <xs:complexType name="AbapValuesType">
24
+ <xs:complexContent>
25
+ <xs:extension base="asx:AbapValuesType">
26
+ <xs:sequence>
27
+ <xs:element name="DD02V" type="asx:Dd02vType" minOccurs="0"/>
28
+ <xs:element name="DD09L" type="asx:Dd09lType" minOccurs="0"/>
29
+ <xs:element name="DD03P_TABLE" type="asx:Dd03pTableType" minOccurs="0"/>
30
+ <xs:element name="TABL_EXTRAS" type="asx:TablExtrasType" minOccurs="0"/>
31
+ </xs:sequence>
32
+ </xs:extension>
33
+ </xs:complexContent>
34
+ </xs:complexType>
35
+ </xs:redefine>
36
+
37
+ <!-- Import abapGit root element -->
38
+ <xs:import schemaLocation="abapgit.xsd"/>
39
+
40
+ </xs:schema>
package/xsd/ttyp.xsd ADDED
@@ -0,0 +1,34 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!--
3
+ abapGit TTYP (Table Type) Schema
4
+
5
+ Defines the DD40V structure used in *.ttyp.xml files.
6
+ Based on SAP DDIC table DD40V (table type header).
7
+
8
+ Uses xs:redefine to extend AbapValuesType with TTYP-specific elements.
9
+ -->
10
+ <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
11
+ targetNamespace="http://www.sap.com/abapxml"
12
+ xmlns:asx="http://www.sap.com/abapxml"
13
+ elementFormDefault="unqualified">
14
+
15
+ <!-- Include types (brought into asx namespace) -->
16
+ <xs:include schemaLocation="types/dd40v.xsd"/>
17
+
18
+ <!-- Redefine AbapValuesType to include TTYP-specific elements -->
19
+ <xs:redefine schemaLocation="asx.xsd">
20
+ <xs:complexType name="AbapValuesType">
21
+ <xs:complexContent>
22
+ <xs:extension base="asx:AbapValuesType">
23
+ <xs:sequence>
24
+ <xs:element name="DD40V" type="asx:Dd40vType" minOccurs="0"/>
25
+ </xs:sequence>
26
+ </xs:extension>
27
+ </xs:complexContent>
28
+ </xs:complexType>
29
+ </xs:redefine>
30
+
31
+ <!-- Import abapGit root element -->
32
+ <xs:import schemaLocation="abapgit.xsd"/>
33
+
34
+ </xs:schema>
@@ -0,0 +1,23 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!-- DD01V - Domain header type (SAP DDIC table DD01V) -->
3
+ <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
4
+
5
+ <xs:complexType name="Dd01vType">
6
+ <xs:all>
7
+ <xs:element name="DOMNAME" type="xs:string"/>
8
+ <xs:element name="DDLANGUAGE" type="xs:string" minOccurs="0"/>
9
+ <xs:element name="DATATYPE" type="xs:string" minOccurs="0"/>
10
+ <xs:element name="LENG" type="xs:string" minOccurs="0"/>
11
+ <xs:element name="OUTPUTLEN" type="xs:string" minOccurs="0"/>
12
+ <xs:element name="DECIMALS" type="xs:string" minOccurs="0"/>
13
+ <xs:element name="LOWERCASE" type="xs:string" minOccurs="0"/>
14
+ <xs:element name="SIGNFLAG" type="xs:string" minOccurs="0"/>
15
+ <xs:element name="VALEXI" type="xs:string" minOccurs="0"/>
16
+ <xs:element name="ENTITYTAB" type="xs:string" minOccurs="0"/>
17
+ <xs:element name="CONVEXIT" type="xs:string" minOccurs="0"/>
18
+ <xs:element name="DDTEXT" type="xs:string" minOccurs="0"/>
19
+ <xs:element name="DOMMASTER" type="xs:string" minOccurs="0"/>
20
+ </xs:all>
21
+ </xs:complexType>
22
+
23
+ </xs:schema>
@@ -0,0 +1,25 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
3
+ <!-- TYPE ONLY - no element declaration! -->
4
+ <!-- DD02V: Table/Structure header metadata -->
5
+ <!-- Field order matches standard abapGit LCL_OBJECT_TABL output -->
6
+ <xs:complexType name="Dd02vType">
7
+ <xs:sequence>
8
+ <xs:element name="TABNAME" type="xs:string"/>
9
+ <xs:element name="DDLANGUAGE" type="xs:string" minOccurs="0"/>
10
+ <xs:element name="TABCLASS" type="xs:string" minOccurs="0"/>
11
+ <xs:element name="LANGDEP" type="xs:string" minOccurs="0"/>
12
+ <xs:element name="CLIDEP" type="xs:string" minOccurs="0"/>
13
+ <xs:element name="SQLTAB" type="xs:string" minOccurs="0"/>
14
+ <xs:element name="DATCLASS" type="xs:string" minOccurs="0"/>
15
+ <xs:element name="DDTEXT" type="xs:string" minOccurs="0"/>
16
+ <xs:element name="MASTERLANG" type="xs:string" minOccurs="0"/>
17
+ <xs:element name="BUFFERED" type="xs:string" minOccurs="0"/>
18
+ <xs:element name="MATEFLAG" type="xs:string" minOccurs="0"/>
19
+ <xs:element name="CONTFLAG" type="xs:string" minOccurs="0"/>
20
+ <xs:element name="SHLPEXI" type="xs:string" minOccurs="0"/>
21
+ <xs:element name="EXCLASS" type="xs:string" minOccurs="0"/>
22
+ <xs:element name="AUTHCLASS" type="xs:string" minOccurs="0"/>
23
+ </xs:sequence>
24
+ </xs:complexType>
25
+ </xs:schema>
@@ -0,0 +1,39 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
3
+ <!-- TYPE ONLY - no element declaration! -->
4
+ <!-- DD03P: Table/Structure field definition -->
5
+ <!-- Field order matches standard abapGit LCL_OBJECT_TABL output (DD03P structure order) -->
6
+ <xs:complexType name="Dd03pType">
7
+ <xs:sequence>
8
+ <xs:element name="FIELDNAME" type="xs:string" minOccurs="0"/>
9
+ <xs:element name="POSITION" type="xs:string" minOccurs="0"/>
10
+ <xs:element name="KEYFLAG" type="xs:string" minOccurs="0"/>
11
+ <xs:element name="ROLLNAME" type="xs:string" minOccurs="0"/>
12
+ <xs:element name="ADMINFIELD" type="xs:string" minOccurs="0"/>
13
+ <xs:element name="INTTYPE" type="xs:string" minOccurs="0"/>
14
+ <xs:element name="INTLEN" type="xs:string" minOccurs="0"/>
15
+ <xs:element name="REFTABLE" type="xs:string" minOccurs="0"/>
16
+ <xs:element name="REFFIELD" type="xs:string" minOccurs="0"/>
17
+ <xs:element name="PRECFIELD" type="xs:string" minOccurs="0"/>
18
+ <xs:element name="NOTNULL" type="xs:string" minOccurs="0"/>
19
+ <xs:element name="DATATYPE" type="xs:string" minOccurs="0"/>
20
+ <xs:element name="LENG" type="xs:string" minOccurs="0"/>
21
+ <xs:element name="DECIMALS" type="xs:string" minOccurs="0"/>
22
+ <xs:element name="DOMNAME" type="xs:string" minOccurs="0"/>
23
+ <xs:element name="MASK" type="xs:string" minOccurs="0"/>
24
+ <xs:element name="SHLPORIGIN" type="xs:string" minOccurs="0"/>
25
+ <xs:element name="DDTEXT" type="xs:string" minOccurs="0"/>
26
+ <xs:element name="COMPTYPE" type="xs:string" minOccurs="0"/>
27
+ <xs:element name="TABNAME" type="xs:string" minOccurs="0"/>
28
+ <xs:element name="DDLANGUAGE" type="xs:string" minOccurs="0"/>
29
+ <xs:element name="CONRFLAG" type="xs:string" minOccurs="0"/>
30
+ </xs:sequence>
31
+ </xs:complexType>
32
+
33
+ <!-- DD03P table wrapper (used by TABL schema) -->
34
+ <xs:complexType name="Dd03pTableType">
35
+ <xs:sequence>
36
+ <xs:element name="DD03P" type="Dd03pType" minOccurs="0" maxOccurs="unbounded"/>
37
+ </xs:sequence>
38
+ </xs:complexType>
39
+ </xs:schema>
@@ -0,0 +1,30 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!-- DD04V - Data element type (SAP DDIC table DD04V) -->
3
+ <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
4
+
5
+ <xs:complexType name="Dd04vType">
6
+ <xs:sequence>
7
+ <xs:element name="ROLLNAME" type="xs:string"/>
8
+ <xs:element name="DDLANGUAGE" type="xs:string" minOccurs="0"/>
9
+ <xs:element name="DOMNAME" type="xs:string" minOccurs="0"/>
10
+ <xs:element name="HEADLEN" type="xs:string" minOccurs="0"/>
11
+ <xs:element name="SCRLEN1" type="xs:string" minOccurs="0"/>
12
+ <xs:element name="SCRLEN2" type="xs:string" minOccurs="0"/>
13
+ <xs:element name="SCRLEN3" type="xs:string" minOccurs="0"/>
14
+ <xs:element name="DDTEXT" type="xs:string" minOccurs="0"/>
15
+ <xs:element name="REPTEXT" type="xs:string" minOccurs="0"/>
16
+ <xs:element name="SCRTEXT_S" type="xs:string" minOccurs="0"/>
17
+ <xs:element name="SCRTEXT_M" type="xs:string" minOccurs="0"/>
18
+ <xs:element name="SCRTEXT_L" type="xs:string" minOccurs="0"/>
19
+ <xs:element name="DTELMASTER" type="xs:string" minOccurs="0"/>
20
+ <xs:element name="DATATYPE" type="xs:string" minOccurs="0"/>
21
+ <xs:element name="LENG" type="xs:string" minOccurs="0"/>
22
+ <xs:element name="DECIMALS" type="xs:string" minOccurs="0"/>
23
+ <xs:element name="OUTPUTLEN" type="xs:string" minOccurs="0"/>
24
+ <xs:element name="REFKIND" type="xs:string" minOccurs="0"/>
25
+ <xs:element name="REFTYPE" type="xs:string" minOccurs="0"/>
26
+ <xs:element name="ABAP_LANGUAGE_VERSION" type="xs:string" minOccurs="0"/>
27
+ </xs:sequence>
28
+ </xs:complexType>
29
+
30
+ </xs:schema>
@@ -0,0 +1,22 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!-- DD07V - Domain fixed values type (SAP DDIC table DD07V) -->
3
+ <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
4
+
5
+ <xs:complexType name="Dd07vType">
6
+ <xs:all>
7
+ <xs:element name="DOMNAME" type="xs:string" minOccurs="0"/>
8
+ <xs:element name="VALPOS" type="xs:string" minOccurs="0"/>
9
+ <xs:element name="DDLANGUAGE" type="xs:string" minOccurs="0"/>
10
+ <xs:element name="DOMVALUE_L" type="xs:string" minOccurs="0"/>
11
+ <xs:element name="DOMVALUE_H" type="xs:string" minOccurs="0"/>
12
+ <xs:element name="DDTEXT" type="xs:string" minOccurs="0"/>
13
+ </xs:all>
14
+ </xs:complexType>
15
+
16
+ <xs:complexType name="Dd07vTabType">
17
+ <xs:sequence>
18
+ <xs:element name="DD07V" type="Dd07vType" minOccurs="0" maxOccurs="unbounded"/>
19
+ </xs:sequence>
20
+ </xs:complexType>
21
+
22
+ </xs:schema>
@@ -0,0 +1,21 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
3
+ <!-- TYPE ONLY - no element declaration! -->
4
+ <!-- DD09L: Table technical settings (storage parameters, buffering) -->
5
+ <!-- Field order matches standard abapGit LCL_OBJECT_TABL output -->
6
+ <xs:complexType name="Dd09lType">
7
+ <xs:sequence>
8
+ <xs:element name="TABNAME" type="xs:string" minOccurs="0"/>
9
+ <xs:element name="AS4LOCAL" type="xs:string" minOccurs="0"/>
10
+ <xs:element name="TABKAT" type="xs:string" minOccurs="0"/>
11
+ <xs:element name="TABART" type="xs:string" minOccurs="0"/>
12
+ <xs:element name="BUFALLOW" type="xs:string" minOccurs="0"/>
13
+ <xs:element name="PUFFERUNG" type="xs:string" minOccurs="0"/>
14
+ <xs:element name="SCHFELDANZ" type="xs:string" minOccurs="0"/>
15
+ <xs:element name="PROTOKOLL" type="xs:string" minOccurs="0"/>
16
+ <xs:element name="SPEESSION" type="xs:string" minOccurs="0"/>
17
+ <xs:element name="UESSION" type="xs:string" minOccurs="0"/>
18
+ <xs:element name="ROESSION" type="xs:string" minOccurs="0"/>
19
+ </xs:sequence>
20
+ </xs:complexType>
21
+ </xs:schema>
@@ -0,0 +1,24 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
3
+ <!-- TYPE ONLY - no element declaration! -->
4
+ <!-- DD40V: Table type metadata -->
5
+ <xs:complexType name="Dd40vType">
6
+ <xs:all>
7
+ <xs:element name="TYPENAME" type="xs:string"/>
8
+ <xs:element name="DDLANGUAGE" type="xs:string" minOccurs="0"/>
9
+ <xs:element name="ROWTYPE" type="xs:string" minOccurs="0"/>
10
+ <xs:element name="ROWKIND" type="xs:string" minOccurs="0"/>
11
+ <xs:element name="DATATYPE" type="xs:string" minOccurs="0"/>
12
+ <xs:element name="ACCESSMODE" type="xs:string" minOccurs="0"/>
13
+ <xs:element name="KEYDEF" type="xs:string" minOccurs="0"/>
14
+ <xs:element name="KEYKIND" type="xs:string" minOccurs="0"/>
15
+ <xs:element name="GENERIC" type="xs:string" minOccurs="0"/>
16
+ <xs:element name="LENG" type="xs:string" minOccurs="0"/>
17
+ <xs:element name="DECIMALS" type="xs:string" minOccurs="0"/>
18
+ <xs:element name="DDTEXT" type="xs:string" minOccurs="0"/>
19
+ <xs:element name="TYPELEN" type="xs:string" minOccurs="0"/>
20
+ <xs:element name="DEFFDNAME" type="xs:string" minOccurs="0"/>
21
+ <xs:element name="ABAP_LANGUAGE_VERSION" type="xs:string" minOccurs="0"/>
22
+ </xs:all>
23
+ </xs:complexType>
24
+ </xs:schema>
@@ -0,0 +1,12 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!-- DEVC - Package type for abapGit serialization -->
3
+ <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
4
+
5
+ <xs:complexType name="DevcType">
6
+ <xs:all>
7
+ <!-- Package description text - required in abapGit format -->
8
+ <xs:element name="CTEXT" type="xs:string"/>
9
+ </xs:all>
10
+ </xs:complexType>
11
+
12
+ </xs:schema>
@@ -0,0 +1,124 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
3
+
4
+ <!-- ============================================ -->
5
+ <!-- Parameter types (match SAP internal tables) -->
6
+ <!-- ============================================ -->
7
+
8
+ <!-- RSIMP - Import parameter (also reused for RSCHA Changing) -->
9
+ <xs:complexType name="FugrParamType">
10
+ <xs:all>
11
+ <xs:element name="PARAMETER" type="xs:string" minOccurs="0"/>
12
+ <xs:element name="TYP" type="xs:string" minOccurs="0"/>
13
+ <xs:element name="DBFIELD" type="xs:string" minOccurs="0"/>
14
+ <xs:element name="DEFAULT" type="xs:string" minOccurs="0"/>
15
+ <xs:element name="OPTIONAL" type="xs:string" minOccurs="0"/>
16
+ <xs:element name="REFERENCE" type="xs:string" minOccurs="0"/>
17
+ </xs:all>
18
+ </xs:complexType>
19
+
20
+ <!-- RSTBL - Tables parameter (uses DBSTRUCT instead of DBFIELD) -->
21
+ <xs:complexType name="FugrTableParamType">
22
+ <xs:all>
23
+ <xs:element name="PARAMETER" type="xs:string" minOccurs="0"/>
24
+ <xs:element name="DBSTRUCT" type="xs:string" minOccurs="0"/>
25
+ <xs:element name="TYP" type="xs:string" minOccurs="0"/>
26
+ <xs:element name="OPTIONAL" type="xs:string" minOccurs="0"/>
27
+ </xs:all>
28
+ </xs:complexType>
29
+
30
+ <!-- RSEXC - Exception -->
31
+ <xs:complexType name="FugrExceptionType">
32
+ <xs:all>
33
+ <xs:element name="EXCEPTION" type="xs:string" minOccurs="0"/>
34
+ </xs:all>
35
+ </xs:complexType>
36
+
37
+ <!-- RSFDO - Parameter documentation -->
38
+ <xs:complexType name="FugrDocParamType">
39
+ <xs:all>
40
+ <xs:element name="PARAMETER" type="xs:string" minOccurs="0"/>
41
+ <xs:element name="KIND" type="xs:string" minOccurs="0"/>
42
+ <xs:element name="STEXT" type="xs:string" minOccurs="0"/>
43
+ </xs:all>
44
+ </xs:complexType>
45
+
46
+ <!-- ============================================ -->
47
+ <!-- Parameter containers -->
48
+ <!-- ============================================ -->
49
+
50
+ <xs:complexType name="FugrImportType">
51
+ <xs:sequence>
52
+ <xs:element name="RSIMP" type="FugrParamType" minOccurs="0" maxOccurs="unbounded"/>
53
+ </xs:sequence>
54
+ </xs:complexType>
55
+
56
+ <xs:complexType name="FugrExportType">
57
+ <xs:sequence>
58
+ <xs:element name="RSEXP" type="FugrParamType" minOccurs="0" maxOccurs="unbounded"/>
59
+ </xs:sequence>
60
+ </xs:complexType>
61
+
62
+ <xs:complexType name="FugrChangingType">
63
+ <xs:sequence>
64
+ <xs:element name="RSCHA" type="FugrParamType" minOccurs="0" maxOccurs="unbounded"/>
65
+ </xs:sequence>
66
+ </xs:complexType>
67
+
68
+ <xs:complexType name="FugrTablesType">
69
+ <xs:sequence>
70
+ <xs:element name="RSTBL" type="FugrTableParamType" minOccurs="0" maxOccurs="unbounded"/>
71
+ </xs:sequence>
72
+ </xs:complexType>
73
+
74
+ <xs:complexType name="FugrExceptionsType">
75
+ <xs:sequence>
76
+ <xs:element name="RSEXC" type="FugrExceptionType" minOccurs="0" maxOccurs="unbounded"/>
77
+ </xs:sequence>
78
+ </xs:complexType>
79
+
80
+ <xs:complexType name="FugrDocumentationType">
81
+ <xs:sequence>
82
+ <xs:element name="RSFDO" type="FugrDocParamType" minOccurs="0" maxOccurs="unbounded"/>
83
+ </xs:sequence>
84
+ </xs:complexType>
85
+
86
+ <!-- ============================================ -->
87
+ <!-- Function module item -->
88
+ <!-- ============================================ -->
89
+
90
+ <xs:complexType name="FugrFunctionItemType">
91
+ <xs:all>
92
+ <xs:element name="FUNCNAME" type="xs:string"/>
93
+ <xs:element name="GLOBAL_FLAG" type="xs:string" minOccurs="0"/>
94
+ <xs:element name="REMOTE_CALL" type="xs:string" minOccurs="0"/>
95
+ <xs:element name="UPDATE_TASK" type="xs:string" minOccurs="0"/>
96
+ <xs:element name="SHORT_TEXT" type="xs:string" minOccurs="0"/>
97
+ <xs:element name="REMOTE_BASXML" type="xs:string" minOccurs="0"/>
98
+ <xs:element name="EXCEPTION_CLASSES" type="xs:string" minOccurs="0"/>
99
+ <xs:element name="IMPORT" type="FugrImportType" minOccurs="0"/>
100
+ <xs:element name="CHANGING" type="FugrChangingType" minOccurs="0"/>
101
+ <xs:element name="EXPORT" type="FugrExportType" minOccurs="0"/>
102
+ <xs:element name="TABLES" type="FugrTablesType" minOccurs="0"/>
103
+ <xs:element name="EXCEPTION" type="FugrExceptionsType" minOccurs="0"/>
104
+ <xs:element name="DOCUMENTATION" type="FugrDocumentationType" minOccurs="0"/>
105
+ </xs:all>
106
+ </xs:complexType>
107
+
108
+ <!-- ============================================ -->
109
+ <!-- Containers -->
110
+ <!-- ============================================ -->
111
+
112
+ <xs:complexType name="FugrFunctionsType">
113
+ <xs:sequence>
114
+ <xs:element name="item" type="FugrFunctionItemType" minOccurs="0" maxOccurs="unbounded"/>
115
+ </xs:sequence>
116
+ </xs:complexType>
117
+
118
+ <xs:complexType name="FugrIncludesType">
119
+ <xs:sequence>
120
+ <xs:element name="SOBJ_NAME" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
121
+ </xs:sequence>
122
+ </xs:complexType>
123
+
124
+ </xs:schema>
@@ -0,0 +1,33 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
3
+ <!-- PROGDIR type - Program directory entry -->
4
+ <xs:complexType name="ProgdirType">
5
+ <xs:all>
6
+ <xs:element name="NAME" type="xs:string"/>
7
+ <xs:element name="STATE" type="xs:string" minOccurs="0"/>
8
+ <xs:element name="SUBC" type="xs:string" minOccurs="0"/>
9
+ <xs:element name="FIXPT" type="xs:string" minOccurs="0"/>
10
+ <xs:element name="UNICODE" type="xs:string" minOccurs="0"/>
11
+ <xs:element name="DTEFUNC" type="xs:string" minOccurs="0"/>
12
+ <xs:element name="RLOAD" type="xs:string" minOccurs="0"/>
13
+ <xs:element name="UCCHECK" type="xs:string" minOccurs="0"/>
14
+ <xs:element name="ABAP_LANGUAGE_VERSION" type="xs:string" minOccurs="0"/>
15
+ </xs:all>
16
+ </xs:complexType>
17
+
18
+ <!-- TPOOL item type - Text pool entry -->
19
+ <xs:complexType name="TpoolItemType">
20
+ <xs:all>
21
+ <xs:element name="ID" type="xs:string"/>
22
+ <xs:element name="ENTRY" type="xs:string" minOccurs="0"/>
23
+ <xs:element name="LENGTH" type="xs:string" minOccurs="0"/>
24
+ </xs:all>
25
+ </xs:complexType>
26
+
27
+ <!-- TPOOL type - Text pool container -->
28
+ <xs:complexType name="TpoolType">
29
+ <xs:sequence>
30
+ <xs:element name="item" type="TpoolItemType" minOccurs="0" maxOccurs="unbounded"/>
31
+ </xs:sequence>
32
+ </xs:complexType>
33
+ </xs:schema>
@@ -0,0 +1,21 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
3
+ <!-- TYPE ONLY - no element declaration! -->
4
+ <!-- TDDAT: Table maintenance dialog configuration -->
5
+ <xs:complexType name="TddatType">
6
+ <xs:sequence>
7
+ <xs:element name="TABNAME" type="xs:string" minOccurs="0"/>
8
+ <xs:element name="CCLASS" type="xs:string" minOccurs="0"/>
9
+ <xs:element name="VIEWGRANT" type="xs:string" minOccurs="0"/>
10
+ <xs:element name="TVDIR" type="xs:string" minOccurs="0"/>
11
+ <xs:element name="GENERICRANGE" type="xs:string" minOccurs="0"/>
12
+ </xs:sequence>
13
+ </xs:complexType>
14
+
15
+ <!-- TABL_EXTRAS wrapper -->
16
+ <xs:complexType name="TablExtrasType">
17
+ <xs:sequence>
18
+ <xs:element name="TDDAT" type="TddatType" minOccurs="0"/>
19
+ </xs:sequence>
20
+ </xs:complexType>
21
+ </xs:schema>
@@ -0,0 +1,28 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!-- VSEOCLASS - Class header type (SAP view VSEOCLASS) -->
3
+ <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
4
+
5
+ <xs:complexType name="VseoClassType">
6
+ <xs:all>
7
+ <xs:element name="CLSNAME" type="xs:string"/>
8
+ <xs:element name="LANGU" type="xs:string" minOccurs="0"/>
9
+ <xs:element name="DESCRIPT" type="xs:string" minOccurs="0"/>
10
+ <xs:element name="STATE" type="xs:string" minOccurs="0"/>
11
+ <xs:element name="CATEGORY" type="xs:string" minOccurs="0"/>
12
+ <xs:element name="EXPOSURE" type="xs:string" minOccurs="0"/>
13
+ <xs:element name="CLSFINAL" type="xs:string" minOccurs="0"/>
14
+ <xs:element name="CLSABSTRCT" type="xs:string" minOccurs="0"/>
15
+ <xs:element name="CLSCCINCL" type="xs:string" minOccurs="0"/>
16
+ <xs:element name="FIXPT" type="xs:string" minOccurs="0"/>
17
+ <xs:element name="UNICODE" type="xs:string" minOccurs="0"/>
18
+ <xs:element name="WITH_UNIT_TESTS" type="xs:string" minOccurs="0"/>
19
+ <xs:element name="DURATION" type="xs:string" minOccurs="0"/>
20
+ <xs:element name="RISK" type="xs:string" minOccurs="0"/>
21
+ <xs:element name="MSG_ID" type="xs:string" minOccurs="0"/>
22
+ <xs:element name="REFCLSNAME" type="xs:string" minOccurs="0"/>
23
+ <xs:element name="SHRM_ENABLED" type="xs:string" minOccurs="0"/>
24
+ <xs:element name="ABAP_LANGUAGE_VERSION" type="xs:string" minOccurs="0"/>
25
+ </xs:all>
26
+ </xs:complexType>
27
+
28
+ </xs:schema>
@@ -0,0 +1,17 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!-- VSEOINTERF - Interface header type (SAP view VSEOINTERF) -->
3
+ <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
4
+
5
+ <xs:complexType name="VseoInterfType">
6
+ <xs:all>
7
+ <xs:element name="CLSNAME" type="xs:string"/>
8
+ <xs:element name="LANGU" type="xs:string" minOccurs="0"/>
9
+ <xs:element name="DESCRIPT" type="xs:string" minOccurs="0"/>
10
+ <xs:element name="EXPOSURE" type="xs:string" minOccurs="0"/>
11
+ <xs:element name="STATE" type="xs:string" minOccurs="0"/>
12
+ <xs:element name="UNICODE" type="xs:string" minOccurs="0"/>
13
+ <xs:element name="ABAP_LANGUAGE_VERSION" type="xs:string" minOccurs="0"/>
14
+ </xs:all>
15
+ </xs:complexType>
16
+
17
+ </xs:schema>