Skip to content

[AIFA] Add new object type #703

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

Open
wants to merge 9 commits into
base: main
Choose a base branch
from
Open
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/aifa/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# AIFA File Format

File | Cardinality | Definition | Schema | Example
:--- | :--- | :--- | :--- | :---
`<name>.aifa.json` | 1 | [`zif_aff_aifa_v1.intf.abap`](./type/zif_aff_aifa_v1.intf.abap) | [`aifa-v1.json`](./aifa-v1.json)
184 changes: 184 additions & 0 deletions file-formats/aifa/aifa-v1.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,184 @@
{
"$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/aifa/aifa-v1.json",
"title": "Action",
"description": "Action",
"type": "object",
"properties": {
"formatVersion": {
"title": "ABAP File Format Version",
"description": "The ABAP file 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": 60
},
"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",
"cloudDevelopment"
],
"enumTitles": [
"Standard",
"ABAP Cloud Development"
],
"enumDescriptions": [
"Standard",
"ABAP cloud development"
],
"default": "standard"
}
},
"additionalProperties": false,
"required": [
"description",
"originalLanguage"
]
},
"generalInformation": {
"title": "General Information",
"description": "General information",
"type": "object",
"properties": {
"namespace": {
"title": "Namespace",
"description": "Namespace",
"type": "string",
"maxLength": 15
},
"aifAction": {
"title": "AIF Action",
"description": "AIF action",
"type": "string",
"maxLength": 20
},
"mainComponentType": {
"title": "Main Component Type",
"description": "Main component type",
"type": "string",
"maxLength": 30
},
"class": {
"title": "Class",
"description": "Class",
"type": "string",
"maxLength": 30
}
},
"additionalProperties": false,
"required": [
"namespace",
"aifAction"
]
},
"fieldRestore": {
"title": "Fields To Restore",
"description": "Fields to restore",
"type": "array",
"items": {
"title": "Field To Restore",
"description": "Field to restore",
"type": "object",
"properties": {
"name": {
"title": "Name",
"description": "Name",
"type": "string"
}
},
"additionalProperties": false
}
},
"checkData": {
"title": "Checks",
"description": "Checks",
"type": "array",
"items": {
"title": "Check Details",
"description": "Check details",
"type": "object",
"properties": {
"checkObjName": {
"title": "Check",
"description": "Check",
"type": "string",
"maxLength": 30
},
"numericId": {
"title": "Numeric ID",
"description": "Numeric id",
"type": "string",
"maxLength": 3,
"pattern": "^[0-9]+$"
},
"checkBehaviour": {
"title": "Check Behavior",
"description": "Check behavior",
"type": "string",
"enum": [
"triggerError",
"ignoreData"
],
"enumTitles": [
"Treat As Error",
"Ignore Data"
],
"enumDescriptions": [
"Treat as error if check is not successful",
"Ignore data if check is not successful"
],
"default": "ignoreData"
},
"fieldName": {
"title": "Field Name",
"description": "Field name",
"type": "array",
"items": {
"title": "Field To Check",
"description": "Field to check",
"type": "object",
"properties": {
"name": {
"title": "Field Name",
"description": "Field name",
"type": "string"
}
},
"additionalProperties": false
}
}
},
"additionalProperties": false,
"required": [
"checkObjName",
"numericId"
]
}
}
},
"additionalProperties": false,
"required": [
"formatVersion",
"header",
"generalInformation"
]
}
103 changes: 103 additions & 0 deletions file-formats/aifa/type/zif_aff_aifa_v1.intf.abap
Original file line number Diff line number Diff line change
@@ -0,0 +1,103 @@
INTERFACE zif_aff_aifa_v1
PUBLIC.

"! $values { @link zif_aff_aifa_v1.data:co_error_handling }
"! $default { @link zif_aff_aifa_v1.data:co_error_handling.ignore_data }
TYPES ty_error_handling_type TYPE c LENGTH 1.
CONSTANTS:
BEGIN OF co_error_handling,
"! <p class="shorttext">Treat As Error</p>
"! Treat as error if check is not successful
trigger_error TYPE c LENGTH 1 VALUE '',
"! <p class="shorttext">Ignore Data</p>
"! Ignore data if check is not successful
ignore_data TYPE c LENGTH 1 VALUE 'I',
END OF co_error_handling.

TYPES:
"! <p class="shorttext">Field To Check</p>
"! Field to check
BEGIN OF ty_field_to_check,
"! <p class="shorttext">Field Name</p>
"! Field name
name TYPE string,
END OF ty_field_to_check,
"! <p class="shorttext">Fields To Check</p>
"! Fields to check
ty_fields_to_check TYPE STANDARD TABLE OF ty_field_to_check WITH DEFAULT KEY.

TYPES:
"! <p class="shorttext">General Information</p>
"! General information
BEGIN OF ty_general_information,
"! <p class="shorttext">Namespace</p>
"! Namespace
"! $required
namespace TYPE c LENGTH 15,
"! <p class="shorttext">AIF Action</p>
"! AIF action
"! $required
aif_action TYPE c LENGTH 20,

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is the aif_action the name of the object instance itself?

"! <p class="shorttext">Main Component Type</p>
"! Main component type
main_component_type TYPE zif_aff_types_v1=>ty_object_name_30,
"! <p class="shorttext">Class</p>
"! Class
class TYPE zif_aff_types_v1=>ty_object_name_30,
END OF ty_general_information,

"! <p class="shorttext">Check Details</p>
"! Check details
BEGIN OF ty_check_details,
"! <p class="shorttext">Check</p>
"! Check
"! $required
check_obj_name TYPE zif_aff_types_v1=>ty_object_name_30,

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
check_obj_name TYPE zif_aff_types_v1=>ty_object_name_30,
check TYPE zif_aff_types_v1=>ty_object_name_30,

It is implicit that refers to the name of the check object

"! <p class="shorttext">Numeric ID</p>
"! Numeric id
"! $required
numeric_id TYPE n LENGTH 3,
"! <p class="shorttext">Check Behavior</p>
"! Check behavior
check_behaviour TYPE ty_error_handling_type,
"! <p class="shorttext">Field Name</p>
"! Field name
Comment on lines +63 to +64

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
"! <p class="shorttext">Field Name</p>
"! Field name
"! <p class="shorttext">Fields</p>
"! Fields

field_name TYPE ty_fields_to_check,
END OF ty_check_details,
"! <p class="shorttext">Check Data</p>
"! Check data
Comment on lines +67 to +68

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
"! <p class="shorttext">Check Data</p>
"! Check data
"! <p class="shorttext">Checks</p>
"! Checks

ty_checks TYPE STANDARD TABLE OF ty_check_details WITH DEFAULT KEY,

"! <p class="shorttext">Field To Restore</p>
"! Field to restore
BEGIN OF ty_field_to_restore,
"! <p class="shorttext">Name</p>
"! Name
name TYPE string,
END OF ty_field_to_restore,
"! <p class="shorttext">Fields To Restore</p>
"! Fields to restore
ty_fields_to_restore TYPE STANDARD TABLE OF ty_field_to_restore WITH DEFAULT KEY,

"! <p class="shorttext">Action</p>
"! Action
BEGIN OF ty_main,
"! $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_60_cloud,
"! <p class="shorttext">General Information</p>
"! General information
"! $required
general_information TYPE ty_general_information,
"! <p class="shorttext">Fields To Restore</p>
"! Fields to restore
field_restore TYPE ty_fields_to_restore,

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
field_restore TYPE ty_fields_to_restore,
fields_to_restore TYPE ty_fields_to_restore,

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What are these fields to restore? How do they fit into the workflow of the AIF Action?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sometimes, later action classes depend on information calculated by earlier action classes. If a later action class fails and the system restarts, an earlier action class might not run again, causing the needed information to be lost. To prevent errors in the restarted process, a "field to restore" can be used. This field saves the important information, so if an action class needs to be re-run after an error, it can retrieve the saved information and continue correctly.

"! <p class="shorttext">Checks</p>
"! Checks
check_data TYPE ty_checks,

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
check_data TYPE ty_checks,
checks TYPE ty_checks,

END OF ty_main.

ENDINTERFACE.
7 changes: 7 additions & 0 deletions file-formats/aifa/type/zif_aff_aifa_v1.intf.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"formatVersion": "1",
"header": {
"description": "AFF Type for AIFA (Action)",
"originalLanguage": "en"
}
}
Loading