Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[SAIA] Add new object type SAIA #614

Merged
merged 16 commits into from
Oct 23, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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)
Markus1812 marked this conversation as resolved.
Show resolved Hide resolved
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"
}
}
Loading