Skip to content

Commit

Permalink
[SAIA] Add new object type SAIA (#614)
Browse files Browse the repository at this point in the history
Co-authored-by: Albert Mink <[email protected]>
Co-authored-by: Katharina Wurz <[email protected]>
Co-authored-by: Markus <[email protected]>
Co-authored-by: Michael Schneider <[email protected]>
  • Loading branch information
5 people authored Oct 23, 2024
1 parent 06134bd commit 873891a
Show file tree
Hide file tree
Showing 5 changed files with 311 additions and 0 deletions.
5 changes: 5 additions & 0 deletions file-formats/saia/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# SAIA File Format

File | Cardinality | Definition | Schema | Example
:--- | :--- | :--- | :--- | :---
`<name>.saia.json` | 1 | [`zif_aff_saia_v1.intf.abap`](./type/zif_aff_saia_v1.intf.abap) | [`saia-v1.json`](./saia-v1.json) | [`z_aff_example_saia.saia.json`](./examples/z_aff_example_saia.saia.json)
29 changes: 29 additions & 0 deletions file-formats/saia/examples/z_aff_example_saia.saia.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
{
"formatVersion": "1",
"header": {
"description": "IDE Action (SAIA) Example Object",
"originalLanguage": "en"
},
"generalInformation": {
"title": "SAIA AFF Demo Action",
"summary": "This is a demo action for AFF.",
"implementingClass": "ZCL_DEMO_IMPL_CLASS",
"inputUiConfigurationClass": "ZCL_DEMO_INPUT_UI_CONFIG_CLASS"
},
"filters": {
"numberOfFocusedResources": "exactlyOne",
"supportedDevObjectTypes": [
{
"workbenchObjectType": "BDEF",
"workbenchObjectSubtype": "BAC"
},
{
"workbenchObjectType": "CLAS"
},
{
"workbenchObjectType": "INTF",
"workbenchObjectSubtype": "IO"
}
]
}
}
160 changes: 160 additions & 0 deletions file-formats/saia/saia-v1.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,160 @@
{
"$comment": "This file is autogenerated, do not edit manually, see https://github.com/SAP/abap-file-formats for more information.",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://github.com/SAP/abap-file-formats/blob/main/file-formats/saia/saia-v1.json",
"title": "IDE Action",
"description": "IDE action (SAIA) v1",
"type": "object",
"properties": {
"formatVersion": {
"title": "Format Version",
"description": "Format version",
"type": "string",
"const": "1"
},
"header": {
"title": "Header",
"description": "Header",
"type": "object",
"properties": {
"description": {
"title": "Description",
"description": "Description of the ABAP object",
"type": "string",
"maxLength": 100
},
"originalLanguage": {
"title": "Original Language",
"description": "Original language of the ABAP object",
"type": "string",
"minLength": 2
},
"abapLanguageVersion": {
"title": "ABAP Language Version",
"description": "ABAP language version",
"type": "string",
"enum": [
"standard",
"keyUser",
"cloudDevelopment"
],
"enumTitles": [
"Standard",
"ABAP for Key Users",
"ABAP Cloud Development"
],
"enumDescriptions": [
"Standard",
"ABAP for key user extensibility",
"ABAP cloud development"
],
"default": "standard"
}
},
"additionalProperties": false,
"required": [
"description",
"originalLanguage"
]
},
"generalInformation": {
"title": "General Information",
"description": "General information",
"type": "object",
"properties": {
"title": {
"title": "Title",
"description": "Title",
"type": "string",
"maxLength": 30
},
"summary": {
"title": "Summary",
"description": "What is the action doing and how can it be used",
"type": "string"
},
"implementingClass": {
"title": "Implementing Class",
"description": "Implementing class for handling the action input. Needs to implement interface {@link if_aia_action }.",
"type": "string",
"maxLength": 30
},
"inputUiConfigurationClass": {
"title": "Input UI Configuration Class",
"description": "Input UI configuration class for implementing the server-driven UI input configuration. Needs to implement interface {@link IF_AIA_SD_ACTION_INPUT }.",
"type": "string",
"maxLength": 30
}
},
"additionalProperties": false,
"required": [
"title",
"summary"
]
},
"filters": {
"title": "Filter: Cardinality",
"description": "Filtering of application of action according to cardinality and object types",
"type": "object",
"properties": {
"numberOfFocusedResources": {
"title": "Number of Focused Resources",
"description": "Number of focused resources",
"type": "string",
"enum": [
"exactlyOne",
"atLeastOne",
"moreThanOne",
"any"
],
"enumTitles": [
"One",
"At least One",
"At least Two",
"Any"
],
"enumDescriptions": [
"One",
"At least one",
"At least two",
"Any"
],
"default": "any"
},
"supportedDevObjectTypes": {
"title": "Filter: Object Types",
"description": "Filtering of action according to specified object types",
"type": "array",
"uniqueItems": true,
"items": {
"title": "Object Type",
"description": "Object type",
"type": "object",
"properties": {
"workbenchObjectType": {
"title": "Object Type",
"description": "Object type",
"type": "string",
"maxLength": 4
},
"workbenchObjectSubtype": {
"title": "Object Subtype",
"description": "Object subtype",
"type": "string",
"maxLength": 3
}
},
"additionalProperties": false
}
}
},
"additionalProperties": false
}
},
"additionalProperties": false,
"required": [
"formatVersion",
"header",
"generalInformation"
]
}
110 changes: 110 additions & 0 deletions file-formats/saia/type/zif_aff_saia_v1.intf.abap
Original file line number Diff line number Diff line change
@@ -0,0 +1,110 @@
INTERFACE zif_aff_saia_v1
PUBLIC.

"! <p class="shorttext">Object Type</p>
"! Object type
TYPES ty_wb_object_type TYPE c LENGTH 4.
"! <p class="shorttext">Object Subtype</p>
"! Object sub-type
TYPES ty_wb_object_sub_type TYPE c LENGTH 3.

TYPES:
"! <p class="shorttext">Object Type</p>
"! Object type
BEGIN OF ty_workbench_object_type,
"! <p class="shorttext">Object Type</p>
"! Object type
workbench_object_type TYPE ty_wb_object_type,
"! <p class="shorttext">Object Subtype</p>
"! Object subtype
workbench_object_subtype TYPE ty_wb_object_sub_type,
END OF ty_workbench_object_type.

"! <p class="shorttext">Filter: Object Types</p>
"! Filter for object types
TYPES ty_workbench_object_types TYPE SORTED TABLE OF ty_workbench_object_type WITH UNIQUE DEFAULT KEY.

"! $values { @link zif_aff_saia_v1.data:co_number_of_focused_resources }
"! $default { @link zif_aff_saia_v1.data:co_number_of_focused_resources.any }
TYPES ty_number_of_focused_resources TYPE string.

CONSTANTS:
"! <p class="shorttext">Number of Focused Resources</p>
"! Number of focused resources
BEGIN OF co_number_of_focused_resources,
"! <p class="shorttext">One</p>
"! One
exactly_one TYPE ty_number_of_focused_resources VALUE 'EXACTLY_ONE',
"! <p class="shorttext">At least One</p>
"! At least one
at_least_one TYPE ty_number_of_focused_resources VALUE 'AT_LEAST_ONE',
"! <p class="shorttext">At least Two</p>
"! At least two
more_than_one TYPE ty_number_of_focused_resources VALUE 'MORE_THAN_ONE',
"! <p class="shorttext">Any</p>
"! Any
any TYPE ty_number_of_focused_resources VALUE 'ANY',
END OF co_number_of_focused_resources.

TYPES:
"! <p class="shorttext">Filter: Cardinality</p>
"! Filtering of action according to specified applicable criteria.
"! If filter is satisfied then the action is available and will be shown.
"! $required
BEGIN OF ty_filters,
"! <p class="shorttext">Number of Focused Resources</p>
"! Number of focused resources
number_of_focused_resources TYPE ty_number_of_focused_resources,
"! <p class="shorttext">Filter: Object Types</p>
"! Filtering of action according to specified object types
supported_dev_object_types TYPE ty_workbench_object_types,
END OF ty_filters.

"! <p class="shorttext">Title</p>
"! title
TYPES ty_action_title TYPE c LENGTH 30.

TYPES:
"! <p class="shorttext">IDE Action</p>
"! IDE action
"! $required
BEGIN OF ty_adt_saia_object,
"! <p class="shorttext">Title</p>
"! Title
"! $required
title TYPE ty_action_title,
"! <p class="shorttext">Summary</p>
"! What is the action doing and how can it be used
"! $required
summary TYPE string,
"! <p class="shorttext">Implementing Class</p>
"! Implementing class for handling the action input. Needs to implement interface {@link if_aia_action }.
implementing_class TYPE zif_aff_types_v1=>ty_object_name_30,
"! <p class="shorttext">Input UI Configuration Class</p>
"! Input UI configuration class for implementing the server-driven UI input configuration.
"! Needs to implement interface {@link IF_AIA_SD_ACTION_INPUT }.
input_ui_configuration_class TYPE zif_aff_types_v1=>ty_object_name_30,
END OF ty_adt_saia_object.

TYPES:
"! <p class="shorttext">IDE Action</p>
"! IDE action (SAIA) v1
BEGIN OF ty_main,
"! <p class="shorttext">Format Version</p>
"! Format version
"! $required
format_version TYPE zif_aff_types_v1=>ty_format_version,
"! <p class="shorttext">Header</p>
"! Header
"! $required
header TYPE zif_aff_types_v1=>ty_header_100,
"! <p class="shorttext">General Information</p>
"! General information
"! $required
general_information TYPE ty_adt_saia_object,
"! <p class="shorttext">Filter: Cardinality</p>
"! Filtering of application of action according to cardinality and object types
filters TYPE ty_filters,
END OF ty_main.

ENDINTERFACE.
7 changes: 7 additions & 0 deletions file-formats/saia/type/zif_aff_saia_v1.intf.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"formatVersion": "1",
"header": {
"description": "types for abap file format of ide actions",
"originalLanguage": "en"
}
}

0 comments on commit 873891a

Please sign in to comment.