Albert Mink, @SAP Lars Hvam, @heliconialabs |
Let's talk about the ABAP file formats
Public definition of file content that is human-readable, complete and without redundancy
For every object there is exactly one file named object_name.type.json
For its annotation and validation there is a JSON Schema, generated from an ABAP type
ADT form-based editor
AFF file
{
"formatVersion": "1",
"header": {
"description": "WB Object Versioning",
"originalLanguage": "en"
},
"configuration": {
"tool": "badiDefinition"
},
"badiDefinitions": [
{
"name": "BADI_WB_OBJECT_VERS_PROVIDER",
"description": "BAdI definition for workbench",
"interface": "IF_WB_OBJECT_VERSION_PROVIDER",
"instantiation": "creatingNewInstances",
"multipleUse": false,
"fallbackClass": "CL_BLUE_SVRS_VERSION_PROVIDER",
"filters": [
{
"name": "OBJECT_TYPE",
"description": "Workbench object type",
"type": "characterLike"
}
]
}
]
}
Filename is composed by
Ensure interchangeability by formatting
File | Description |
---|---|
object_name.intf.abap | ABAP source code |
object_name.intf.json | Metadata file |
JSON data can be intuitive
{
"formatVersion": "1",
"header": {
"description": "AFF: Interface v1",
"originalLanguage": "en"
}
}
Possible validation and annotation with JSON Schema, e.g. VS Code Extension
...
{
"table": "SEOCLASSTX",
"data": [
{
"CLSNAME": "ZIF_ABAPGIT_AFF_INTF_V1",
"LANGU": "E",
"DESCRIPT": "AFF: Interface v1"
}
]
},
{
"table": "SEOCLASSDF",
"data": [
{
"CLSNAME": "ZIF_ABAPGIT_AFF_INTF_V1",
"VERSION": 1,
"CATEGORY": 0,
"EXPOSURE": 2,
"STATE": 1,
"RELEASE": 0,
"AUTHOR": "MR_X",
...
ADT History/Compare
abapGit, abapGit Eclipse plugin (Steampunk)
AFF specifies more than 27 object types
SAP Basis 7.56 and newer provides serializers
abapGit supports: INTF (experimental and via ajson), ATC Check Variants (CHKV), RAP Business Event Bindings (EVTB), ...
abapGit focuses on AFF for new object types