Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
49 commits
Select commit Hold shift + click to select a range
a6dce2d
Add new object type ABIQ
LutzR-SAP Mar 17, 2026
f3002fe
Update file-formats/abiq/type/zif_aff_abiq_v1.intf.abap
LutzR-SAP Mar 17, 2026
dca0724
Update file-formats/abiq/type/zif_aff_abiq_v1.intf.abap
LutzR-SAP Mar 17, 2026
7755a1f
Update file-formats/abiq/type/zif_aff_abiq_v1.intf.abap
LutzR-SAP Mar 17, 2026
bfb08bf
Keywords UpperCase
LutzR-SAP Mar 17, 2026
be38858
Update file-formats/abiq/type/zif_aff_abiq_v1.intf.abap
LutzR-SAP Mar 17, 2026
15d6a6c
fix abaplint
LutzR-SAP Mar 17, 2026
3729a09
Fix intf-name
LutzR-SAP Mar 17, 2026
c6d2b9d
Fix inft.abap
LutzR-SAP Mar 17, 2026
d946e6f
Fix Types
LutzR-SAP Mar 17, 2026
f359e08
Fix Example
LutzR-SAP Mar 17, 2026
e24e2e1
Update file-formats/abiq/type/zif_aff_abiq_v1.intf.abap
LutzR-SAP Mar 19, 2026
26e0511
Update file-formats/abiq/type/zif_aff_abiq_v1.intf.abap
LutzR-SAP Mar 19, 2026
1273b5f
Update file-formats/abiq/type/zif_aff_abiq_v1.intf.abap
LutzR-SAP Mar 19, 2026
47926c2
Update file-formats/abiq/type/zif_aff_abiq_v1.intf.abap
LutzR-SAP Mar 19, 2026
2c7770e
Update file-formats/abiq/type/zif_aff_abiq_v1.intf.abap
LutzR-SAP Mar 19, 2026
078da56
Update file-formats/abiq/type/zif_aff_abiq_v1.intf.abap
LutzR-SAP Mar 19, 2026
98d55a9
Update file-formats/abiq/type/zif_aff_abiq_v1.intf.abap
LutzR-SAP Mar 19, 2026
9b0dd9c
Update file-formats/abiq/type/zif_aff_abiq_v1.intf.abap
LutzR-SAP Mar 19, 2026
5983f0c
Update file-formats/abiq/type/zif_aff_abiq_v1.intf.abap
LutzR-SAP Mar 19, 2026
363cd0a
Update file-formats/abiq/type/zif_aff_abiq_v1.intf.abap
LutzR-SAP Mar 19, 2026
b2beddc
Update file-formats/abiq/type/zif_aff_abiq_v1.intf.abap
LutzR-SAP Mar 19, 2026
6ede36d
Update file-formats/abiq/type/zif_aff_abiq_v1.intf.abap
LutzR-SAP Mar 19, 2026
5dc3287
Update file-formats/abiq/type/zif_aff_abiq_v1.intf.abap
LutzR-SAP Mar 19, 2026
2369a4b
Update file-formats/abiq/type/zif_aff_abiq_v1.intf.abap
LutzR-SAP Mar 19, 2026
e9c0385
Update file-formats/abiq/type/zif_aff_abiq_v1.intf.abap
LutzR-SAP Mar 19, 2026
9363129
Update file-formats/abiq/type/zif_aff_abiq_v1.intf.abap
LutzR-SAP Mar 19, 2026
f85c75c
Update file-formats/abiq/type/zif_aff_abiq_v1.intf.abap
LutzR-SAP Mar 19, 2026
df0ffb2
Update file-formats/abiq/type/zif_aff_abiq_v1.intf.abap
LutzR-SAP Mar 19, 2026
820ddeb
Update file-formats/abiq/type/zif_aff_abiq_v1.intf.abap
LutzR-SAP Mar 19, 2026
e1a137c
Update file-formats/abiq/type/zif_aff_abiq_v1.intf.abap
LutzR-SAP Mar 19, 2026
1cca098
Update file-formats/abiq/type/zif_aff_abiq_v1.intf.abap
LutzR-SAP Mar 19, 2026
750fb1a
Regenerate JSON
LutzR-SAP Mar 19, 2026
74ee2f1
Update Example
LutzR-SAP Mar 19, 2026
43b3774
Update file-formats/abiq/type/zif_aff_abiq_v1.intf.abap
LutzR-SAP Mar 25, 2026
1270ccd
Update file-formats/abiq/type/zif_aff_abiq_v1.intf.abap
LutzR-SAP Mar 25, 2026
6857b41
Update file-formats/abiq/type/zif_aff_abiq_v1.intf.abap
LutzR-SAP Mar 25, 2026
8adff20
Update file-formats/abiq/type/zif_aff_abiq_v1.intf.abap
LutzR-SAP Mar 25, 2026
65c6740
Update file-formats/abiq/type/zif_aff_abiq_v1.intf.abap
LutzR-SAP Mar 25, 2026
dd7aac0
Update file-formats/abiq/type/zif_aff_abiq_v1.intf.abap
LutzR-SAP Mar 25, 2026
9a85dc4
Update file-formats/abiq/type/zif_aff_abiq_v1.intf.abap
LutzR-SAP Mar 25, 2026
d82098a
Update file-formats/abiq/type/zif_aff_abiq_v1.intf.abap
LutzR-SAP Mar 25, 2026
695d6d8
Update file-formats/abiq/type/zif_aff_abiq_v1.intf.abap
LutzR-SAP Mar 25, 2026
fec6ae9
Update JSON
LutzR-SAP Mar 25, 2026
ac08d6d
Update file-formats/abiq/type/zif_aff_abiq_v1.intf.abap
LutzR-SAP Mar 25, 2026
f3fece5
Update
LutzR-SAP Mar 26, 2026
e3fc0a1
Merge branch 'aibq/new-aff' of https://github.com/LutzR-SAP/abap-file…
LutzR-SAP Mar 26, 2026
86da9bb
Merge branch 'main' into aibq/new-aff
LutzR-SAP Mar 31, 2026
b09f92c
Merge branch 'main' into aibq/new-aff
LutzR-SAP Apr 7, 2026
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
13 changes: 13 additions & 0 deletions file-formats/abiq/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
# Analytical Quick Action File Format

## Object Type Information

Object Type | Description | Group
:--- | :--- | :---
ABIQ | Analytical Quick Action | Others

## File Structure

File | Cardinality | Definition | Schema | Example
:--- | :--- | :--- | :--- | :---
`<name>.abiq.json` | 1 | [`zif_aff_abiq_v1.intf.abap`](./type/zif_aff_abiq_v1.intf.abap) | [`abiq-v1.json`](./abiq-v1.json)
215 changes: 215 additions & 0 deletions file-formats/abiq/abiq-v1.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,215 @@
{
"$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/abiq/abiq-v1.json",
"title": "Object Type ABIQ",
"description": "Object type ABIQ",
"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": 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": {
"type": {
"title": "Type",
"description": "Type",
"type": "string",
"enum": [
"llm",
"json",
"pal"
],
"enumTitles": [
"LLM",
"JSON",
"PAL"
],
"enumDescriptions": [
"LLM quick action",
"JSON quick action",
"PAL quick action"
],
"default": "llm"
},
"scope": {
"title": "Scope",
"description": "Scope",
"type": "string",
"enum": [
"query",
"oneDataProvider",
"multipleDataProviders"
],
"enumTitles": [
"Query",
"One Data Provider",
"Multiple Data Providers"
],
"enumDescriptions": [
"Query",
"One data provider per page",
"Multiple data providers per page"
],
"default": "query"
},
"consumptionVisible": {
"title": "Consumption Visible",
"description": "Visible for consumption",
"type": "boolean"
}
},
"additionalProperties": false,
"required": [
"type",
"scope"
]
},
"promptDefinition": {
"title": "Prompt Definition",
"description": "Prompt definition (used when type is LLM)",
"type": "object",
"properties": {
"systemPrompt": {
"title": "System Prompt",
"description": "System prompt",
"type": "string"
},
"userPrompt": {
"title": "User Prompt",
"description": "User prompt",
"type": "string"
},
"resultSetRequired": {
"title": "Result Set Required",
"description": "Result set required",
"type": "boolean"
},
"commentsRequired": {
"title": "Comments Required",
"description": "Comments required",
"type": "boolean"
},
"outputType": {
"title": "Output Type",
"description": "Output type",
"type": "string",
"enum": [
"notSet",
"html",
"cardChart"
],
"enumTitles": [
"Not Set",
"HTML",
"Card Chart"
],
"enumDescriptions": [
"Not set",
"HTML",
"Card chart"
],
"default": "notSet"
}
},
"additionalProperties": false,
"required": [
"systemPrompt",
"userPrompt"
]
},
"jsonDefinition": {
"title": "JSON Definition",
"description": "JSON definition (used when type is JSON)",
"type": "object",
"properties": {
"jsonContent": {
"title": "JSON Content",
"description": "JSON content",
"type": "string"
}
},
"additionalProperties": false,
"required": [
"jsonContent"
]
},
"assignedQueries": {
"title": "Assigned Queries",
"description": "Assigned queries",
"type": "array",
"uniqueItems": true,
"items": {
"title": "Assigned Query",
"description": "Assigned query",
"type": "object",
"properties": {
"queryName": {
"title": "Query Name",
"description": "Query name",
"type": "string",
"maxLength": 30
}
},
"additionalProperties": false,
"required": [
"queryName"
]
}
}
},
"additionalProperties": false,
"required": [
"formatVersion",
"header",
"generalInformation"
]
}
23 changes: 23 additions & 0 deletions file-formats/abiq/examples/z_aff_example_abiq.abiq.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
{
"formatVersion": "1",
"header": {
"description": "Example Quick Action",
"originalLanguage": "en"
},
"generalInformation": {
"type": "llm",
"scope": "oneDataProvider",
"consumptionVisible": false
},
"promptDefinition": {
"systemPrompt": "You are uniquely qualified to navigate, comprehend, and analyze the complex hierarchies of tabular financial data. Follow the instructions carefully.",
"userPrompt": "Analyze the review booket data... {result_set}",
"resultSetRequired": true,
"outputType": "html"
},
"assignedQueries": [
{
"queryName": "C_MYDUMMYQUERY"
}
]
}
143 changes: 143 additions & 0 deletions file-formats/abiq/type/zif_aff_abiq_v1.intf.abap
Original file line number Diff line number Diff line change
@@ -0,0 +1,143 @@
"! AFF type for the object ABIQ ( ABI Quick-Actions )
INTERFACE zif_aff_abiq_v1
PUBLIC.

"! $values { @link zif_aff_abiq_v1.data:co_quick_action_type }
"! $default { @link zif_aff_abiq_v1.data:co_quick_action_type.llm }
TYPES ty_quick_action_type TYPE n LENGTH 2.
CONSTANTS:
BEGIN OF co_quick_action_type,
"! <p class="shorttext">LLM</p>
"! LLM quick action
llm TYPE ty_quick_action_type VALUE 1,
"! <p class="shorttext">JSON</p>
"! JSON quick action
json TYPE ty_quick_action_type VALUE 2,
"! <p class="shorttext">PAL</p>
"! PAL quick action
pal TYPE ty_quick_action_type VALUE 3,
END OF co_quick_action_type.

"! $values { @link zif_aff_abiq_v1.data:co_quick_action_scope }
"! $default { @link zif_aff_abiq_v1.data:co_quick_action_scope.query }
TYPES ty_quick_action_scope TYPE n LENGTH 2.
CONSTANTS:
BEGIN OF co_quick_action_scope,
"! <p class="shorttext">Query</p>
"! Query
query TYPE ty_quick_action_scope VALUE 1,
"! <p class="shorttext">One Data Provider</p>
"! One data provider per page
one_data_provider TYPE ty_quick_action_scope VALUE 2,
"! <p class="shorttext">Multiple Data Providers</p>
"! Multiple data providers per page
multiple_data_providers TYPE ty_quick_action_scope VALUE 3,
END OF co_quick_action_scope.

"! $values { @link zif_aff_abiq_v1.data:co_output_type }
"! $default { @link zif_aff_abiq_v1.data:co_output_type.not_set }
TYPES ty_output_type TYPE n LENGTH 2.
CONSTANTS:
BEGIN OF co_output_type,
"! <p class="shorttext">Not Set</p>
"! Not set
not_set TYPE ty_output_type VALUE 0,
"! <p class="shorttext">HTML</p>
"! HTML
html TYPE ty_output_type VALUE 1,
"! <p class="shorttext">Card Chart</p>
"! Card chart
card_chart TYPE ty_output_type VALUE 2,
END OF co_output_type.

TYPES:
"! <p class="shorttext">Quick Action Definition</p>
"! Quick action definition
BEGIN OF ty_quick_action_definition,
"! <p class="shorttext">Type</p>
"! Type
"! $required
type TYPE ty_quick_action_type,
"! <p class="shorttext">Scope</p>
"! Scope
"! $required
scope TYPE ty_quick_action_scope,
"! <p class="shorttext">Consumption Visible</p>
"! Visible for consumption
consumption_visible TYPE abap_bool,
END OF ty_quick_action_definition.

TYPES:
"! <p class="shorttext">Prompt Definition</p>
"! Prompt definition
BEGIN OF ty_prompt_definition,
"! <p class="shorttext">System Prompt</p>
"! System prompt
"! $required
system_prompt TYPE string,
"! <p class="shorttext">User Prompt</p>
"! User prompt
"! $required
user_prompt TYPE string,
"! <p class="shorttext">Result Set Required</p>
"! Result set required
result_set_required TYPE abap_bool,
"! <p class="shorttext">Comments Required</p>
"! Comments required
comments_required TYPE abap_bool,
"! <p class="shorttext">Output Type</p>
"! Output type
output_type TYPE ty_output_type,
Comment thread
LutzR-SAP marked this conversation as resolved.
END OF ty_prompt_definition.

TYPES:
"! <p class="shorttext">JSON Definition</p>
"! JSON definition
BEGIN OF ty_json_definition,
"! <p class="shorttext">JSON Content</p>
"! JSON content
"! $required
json_content TYPE string,
END OF ty_json_definition.
Comment on lines +94 to +101
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

What kind of JSON does this field contain? Wouldn't it be better, to include the schema of the JSON in here?

Suggested change
"! <p class="shorttext">JSON Definition</p>
"! JSON Definition
BEGIN OF ty_json_definition,
"! <p class="shorttext">JSON Content</p>
"! JSON Content
"! $required
json_content TYPE string,
END OF ty_json_definition.
"! <p class="shorttext">JSON Definition</p>
"! JSON Definition
BEGIN OF ty_json_definition,
"! <p class="shorttext">JSON Content</p>
"! JSON content
"! $required
json_content TYPE string,
END OF ty_json_definition.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

The JSON needs to confirm to a pre-existing JSON-Schema. The Schema itself is available in the ABAP system.
Unfortunately, this JSON Schema cannot be described with an ABAP structure (contains e.g. recursive type-definitions).
Can such a schema be used/referred to in AFF-Definitions?
quick-action.schema.json

EDIT:
@Markus1812
This was my comment regarding the JSON-schema. Seems it got lost between the other comments.

This comment was marked as resolved.

This comment was marked as resolved.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Somehow, I missed your comment, sorry.

Yes, the schema looks quite complicated, and references/conditions are not yet supported by the AFF. How are these JSONs created? Are they generated by the system or do you plan to include some actions that allow the user to edit this field?
My biggest concern is that although the AFF can be used for transporting objects, it also has the goal to be understandable and editable by users (and the AI) in the JSON format (not only as a form-based editor). Embedding some escaped JSON in another JSON is not readable and editable at all.

@schneidermic0 any ideas?

Copy link
Copy Markdown
Author

@LutzR-SAP LutzR-SAP Mar 26, 2026

Choose a reason for hiding this comment

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

@Markus1812

How are these JSONs created? Are they generated by the system or do you plan to include some actions that allow the user to edit this field?

At the moment (SAP Developer Use-Case) they are written in JSON-Editor and uploaded. We are currently working on an Agent to generate these JSONs.
Yes, we plan to have this JSON editable.

My biggest concern is that although the AFF can be used for transporting objects, it also has the goal to be understandable and editable by users

Yes, I agree. I was thinking only only of the Form-Based Editor so far.
Just an idea: Is it possible to have a seperate File for this JSON-content (similar to Class source code)?


TYPES:
"! <p class="shorttext">Assigned Query</p>
"! Assigned query
BEGIN OF ty_assigned_query,
"! <p class="shorttext">Query Name</p>
"! Query name
"! $required
query_name TYPE zif_aff_types_v1=>ty_object_name_30,
END OF ty_assigned_query,
"! <p class="shorttext">Assigned Queries</p>
"! Assigned queries
ty_assigned_queries TYPE SORTED TABLE OF ty_assigned_query WITH UNIQUE KEY query_name.

TYPES:
"! <p class="shorttext">Object Type ABIQ</p>
"! Object type ABIQ
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_60_cloud,
"! <p class="shorttext">General Information</p>
"! General information
"! $required
general_information TYPE ty_quick_action_definition,
"! <p class="shorttext">Prompt Definition</p>
"! Prompt definition (used when type is LLM)
prompt_definition TYPE ty_prompt_definition,
"! <p class="shorttext">JSON Definition</p>
"! JSON definition (used when type is JSON)
json_definition TYPE ty_json_definition,
"! <p class="shorttext">Assigned Queries</p>
"! Assigned queries
assigned_queries TYPE ty_assigned_queries,
END OF ty_main.

ENDINTERFACE.
Loading
Loading