Skip to content

Commit

Permalink
Merge branch 'main' into feature/ilmb
Browse files Browse the repository at this point in the history
  • Loading branch information
schneidermic0 authored Aug 4, 2023
2 parents c7a5457 + 7fae4c9 commit 7c1a9f7
Show file tree
Hide file tree
Showing 19 changed files with 1,231 additions and 23 deletions.
16 changes: 8 additions & 8 deletions docs/specification.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ The mapping of objects to file names follows the pattern
```
with the mandatory elements object_name, object_type and file_extension.
Namespaces are converted into brackets, for instance `/NMSPC/CL_OBJECT` becomes `(nmspc)cl_object`.
For every objects there is a file `<object_name>.<object_type>.json`, referred to as metadata file with content such as description text, original language and other (non-redundant) metadata.

### Object Name and Type
The object name (R3TR) and object type are derived from the object itself, as stored in the ABAP object directory (aka TADIR).
Expand All @@ -34,29 +35,28 @@ E.g., for function module FUNCTION_EXISTS in function group SUNI, the file name

### Content Type
If an object needs multiple files which are not represented by transport objects, the content type is used to differentiate between the different file types.
Examples for classes are the test-classes or text elements:
```
cl_oo_clif_source.clas.abap
cl_oo_clif_source.clas.testclasses.abap
cl_oo_clif_source.clas.texts.en.properties
```

### Language
Files with language-specific content (such as translatable texts) also have an identifier for the language in the filename to distinguish between the different translations.
The language of the texts is encoded by the element `language` following [ISO 639-1](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes)
```
cl_oo_clif_source.clas.texts.en.properties
cl_oo_clif_source.clas.texts.de.properties
cl_oo_clif_source.clas.texts.fr.properties
```
For property files, no language is added, even if they contain translatable texts.
These files are stored in the original language of the object and the original language is specified in the property file itself.
For the text elements of classes, this language will be the original language (provided by the metadata file).


## File Extensions

ABAP file formats define three file types:
ABAP file formats define the file types:
* **`.abap`** stores ABAP source code as plain text
* **`.acds`** stores source code of ABAP Core Data Services (CDS) as plain text
* **`.json`** stores content of form-based editors or properties of objects, such as `originalLanguage`, `abapLanguageVersion` and others.
Details are found in [JSON Files in ABAP File Formats](./json.md)
* **`.properties`** stores translation relevant text elements as plain text
* **`.properties`** stores text elements as plain text


## Formatting Conventions
Expand Down
102 changes: 97 additions & 5 deletions file-formats/sajc/examples/z_aff_example_sajc.sajc.json
Original file line number Diff line number Diff line change
@@ -1,15 +1,107 @@
{
"formatVersion": "1",
"header": {
"description": "Example for CL_APJ_SIMPLE",
"description": "Catalog Entry of CL_APJ_DEMO_REPORT",
"originalLanguage": "en"
},
"generalInformation": {
"className": "CL_APJ_SIMPLE"
"className": "CL_APJ_DEMO_REPORT"
},
"exitClasses": {
"check": "CL_CHECK_APJ_SIMPLE",
"check": "CL_APJ_HOME_DEMO_CHECK",
"valueHelp": "CL_VALUE_HELP_APJ_SIMPLE",
"notification": "CL_APJ_HOME_DEMO_CHECK"
}
"notification": "CL_APJ_HOME_DEMO_CHECK",
"delete": "CL_APJT_RT_JOB_DELETE_EXIT"
},
"sections": [
{
"name": "1",
"title": "Customer Section"
},
{
"name": "2",
"title": "General Section"
}
],
"groups": [
{
"name": "GRP_BUYER",
"title": "Buyer",
"section": "1"
},
{
"name": "GRP_SELLER",
"title": "Seller",
"section": "1"
},
{
"name": "GRP_GEN",
"title": "General",
"section": "2"
}
],
"parameters": [
{
"name": "P_BUY_C",
"group": "GRP_BUYER"
},
{
"name": "S_PLANT",
"group": "GRP_BUYER",
"indented": true,
"enabledByParameter": "P_BUY_C"
},
{
"name": "P_BUY_D",
"group": "GRP_BUYER",
"indented": true,
"mandatory": true,
"enabledByParameter": "P_BUY_C"
},
{
"name": "P_SEL_C",
"group": "GRP_SELLER"
},
{
"name": "P_INCR",
"group": "GRP_SELLER",
"indented": true,
"enabledByParameter": "P_SEL_C",
"backendCall": true
},
{
"name": "P_SEV_N",
"group": "GRP_GEN"
},
{
"name": "P_SEV_S",
"group": "GRP_GEN"
},
{
"name": "P_SEV_I",
"group": "GRP_GEN"
},
{
"name": "P_SEV_E",
"group": "GRP_GEN"
},
{
"name": "P_SEV_A",
"group": "GRP_GEN"
},
{
"name": "P_TEXT",
"group": "GRP_GEN",
"mandatory": true,
"textEditorLines": 4
},
{
"name": "P_JOB_T",
"group": "GRP_GEN"
},
{
"name": "P_SEV_IN",
"hidden": true
}
]
}
141 changes: 141 additions & 0 deletions file-formats/sajc/sajc-v1.json
Original file line number Diff line number Diff line change
Expand Up @@ -101,9 +101,150 @@
"description": "Name of the class which contains the notification exit",
"type": "string",
"maxLength": 30
},
"delete": {
"title": "Delete",
"description": "Name of the class which contains the delete exit",
"type": "string",
"maxLength": 30
}
},
"additionalProperties": false
},
"sections": {
"title": "Sections",
"description": "List of sections",
"type": "array",
"items": {
"title": "Section",
"description": "Section of parameter groups on the selection screen",
"type": "object",
"properties": {
"name": {
"title": "Name",
"description": "Name of the section",
"type": "string",
"maxLength": 10
},
"title": {
"title": "Title",
"description": "Title of the section on the selection screen",
"type": "string",
"maxLength": 120
}
},
"additionalProperties": false,
"required": [
"name",
"title"
]
}
},
"groups": {
"title": "Groups",
"description": "List of groups",
"type": "array",
"items": {
"title": "Group",
"description": "Group of parameters on the selection screen",
"type": "object",
"properties": {
"name": {
"title": "Name",
"description": "Name of the group",
"type": "string",
"maxLength": 10
},
"title": {
"title": "Title",
"description": "Title of the group on the selection screen",
"type": "string",
"maxLength": 120
},
"section": {
"title": "Section",
"description": "Name of the group section",
"type": "string",
"maxLength": 10
}
},
"additionalProperties": false,
"required": [
"name",
"title"
]
}
},
"parameters": {
"title": "Parameters",
"description": "List of parameters",
"type": "array",
"items": {
"title": "Parameter",
"description": "Parameter of the class which is executed within the job",
"type": "object",
"properties": {
"name": {
"title": "Name",
"description": "Name of the parameter",
"type": "string",
"maxLength": 38
},
"group": {
"title": "Group",
"description": "Name of the parameter group",
"type": "string",
"maxLength": 10
},
"indented": {
"title": "Indented",
"description": "Flag indicating whether the parameter is indented on the selection screen",
"type": "boolean"
},
"mandatory": {
"title": "Mandatory",
"description": "Flag indicating whether the parameter is mandatory",
"type": "boolean"
},
"hidden": {
"title": "Hidden",
"description": "Flag indicating whether the parameter is hidden",
"type": "boolean"
},
"readOnly": {
"title": "Read Only",
"description": "Flag indicating whether the parameter is read only",
"type": "boolean"
},
"enabledByParameter": {
"title": "Enabled By Parameter",
"description": "Name of the boolean parameter which enables / disables the current parameter",
"type": "string",
"maxLength": 38
},
"backendCall": {
"title": "Backend Call",
"description": "Flag indicating whether a call of the backend system is triggered after a parameter value change to check it",
"type": "boolean"
},
"singleValues": {
"title": "Only Single Values",
"description": "Flag indicating whether only single values are allowed (no conditions like 'not equal' or 'between')",
"type": "boolean"
},
"textEditorLines": {
"title": "Text Lines in Editor",
"description": "Number of lines of the text editor (0 means no multiline editor)",
"type": "integer",
"minimum": 0,
"maximum": 20
}
},
"additionalProperties": false,
"required": [
"name"
]
}
}
},
"additionalProperties": false,
Expand Down
Loading

0 comments on commit 7c1a9f7

Please sign in to comment.