Skip to content

Add aff for object type SIA6 - #838

Open
ellima wants to merge 6 commits into
SAP:mainfrom
ellima:feature/sia6
Open

Add aff for object type SIA6#838
ellima wants to merge 6 commits into
SAP:mainfrom
ellima:feature/sia6

Conversation

@ellima

@ellima ellima commented Aug 10, 2026

Copy link
Copy Markdown
Member

Add ABAP-file-format support for object type SIA6 (IAM app).

AI usage: LLMs used to create base structure and labels of the aff ABAP interface file-formats/sia6/type/zif_aff_sia6_v1.intf.abap. Adjusted, corrected and reviewed by humans.

@hyperspace-pr-bot

Copy link
Copy Markdown
Contributor

Control Panel

Hi, I'm an AI-powered Review Bot that helps you with summarizing and reviewing pull requests.
To interact with me, just use the following actions:

  • 📝 Summarize PR
  • 🔍 Review
  • 🗑️ Delete all bot comments and reviews

@ellima
ellima marked this pull request as ready for review August 10, 2026 08:55

@hyperspace-pr-bot hyperspace-pr-bot Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

This PR adds solid AFF support for the SIA6 (IAM App) object type with a well-structured ABAP interface, JSON schema, example, and README. The main issues to address are: the missing ty_general_information grouping structure (a structural requirement for object types with metadata beyond the header), the non-standard example file name, and the use of STANDARD TABLE where SORTED TABLE WITH UNIQUE KEY should be preferred for identified list entries.

PR Bot Information

Version: 1.29.18

Comment thread file-formats/sia6/type/zif_aff_sia6_v1.intf.abap Outdated
Comment thread file-formats/sia6/examples/z_aff_sia6_exmpl_ext.sia6.json Outdated
Comment thread file-formats/sia6/README.md Outdated
Comment thread file-formats/sia6/type/zif_aff_sia6_v1.intf.abap Outdated
@ellima
ellima marked this pull request as draft August 10, 2026 10:00
@ellima
ellima marked this pull request as ready for review August 10, 2026 12:02

@hyperspace-pr-bot hyperspace-pr-bot Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

The PR is well-structured overall — ty_general_information, sorted tables with unique keys, and proper ABAP Doc annotations are all present. Two issues were flagged: the general_information field in ty_main is missing $required, which would allow the entire block (including the mandatory type field) to be omitted from valid JSON; and the ty_services table uses a composite key id type rather than id alone, which conflicts with id being described as the service identifier. Please also address the previously raised comments from other reviewers regarding the example file naming convention.

PR Bot Information

Version: 1.29.18

Comment thread file-formats/sia6/type/zif_aff_sia6_v1.intf.abap Outdated
Comment thread file-formats/sia6/type/zif_aff_sia6_v1.intf.abap Outdated

@Markus1812 Markus1812 left a comment

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.

Hi, thanks for contributing your AFF! Might look like a lot of comments, but there are essentially two different kinds of questions/comments:

  • If you have predefined values for a field, you can use an enum. LLMs can take massive advantage of this, as enums are contained in the JSON schema that is exposed via an MCP tool. Without that, they can only guess the value of some fields and have to rely on the syntax check or other validations to give them more input. Would be great, if you could introduce some enums, where possible. I've linked the documentation for that in the first comment related to that.
  • The other comments are mostly about the naming. As AFFs have the two main usages of the VS Code editor (that shows camel case attributes in the JSON) and the server driven UI (which shows titles), we try to keep component names and titles in sync. I know, server-driven UI is currently not on the roadmap, but we want to be prepared :). I've made some naming suggestions. Please consider them as suggestions, other suggestions are also welcome.

Best regards, Markus

Comment thread file-formats/sia6/type/zif_aff_sia6_v1.intf.abap Outdated
Comment thread file-formats/sia6/type/zif_aff_sia6_v1.intf.abap Outdated
Comment thread file-formats/sia6/type/zif_aff_sia6_v1.intf.abap Outdated
Comment thread file-formats/sia6/type/zif_aff_sia6_v1.intf.abap Outdated
Comment thread file-formats/sia6/type/zif_aff_sia6_v1.intf.abap Outdated
Comment thread file-formats/sia6/type/zif_aff_sia6_v1.intf.abap Outdated
Comment thread file-formats/sia6/type/zif_aff_sia6_v1.intf.abap Outdated
Comment thread file-formats/sia6/type/zif_aff_sia6_v1.intf.abap Outdated
Comment thread file-formats/sia6/type/zif_aff_sia6_v1.intf.abap Outdated
Comment thread file-formats/sia6/type/zif_aff_sia6_v1.intf.abap Outdated
"description": "Example service",
"type": "odataV4",
"serviceId": "30C9E656A21BF6F30B3DA55ABE8BF8",
"uiadIdSource": "",

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

all these fields that are empty in the example should be removed, as the default values are not serialised. At least for strings, the default is empty, so the field does not need to be in the json, as it is implied

BEGIN OF ty_service,

"! <p class="shorttext">Service Name</p>
"! Name of the service

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Suggested change
"! Name of the service
"! Service name

When the description is not providing any extra information, we recommend using the exact same expression as in the title, but in sentence case. So Service Name -> Service name

@Markus1812

Markus1812 commented Aug 18, 2026

Copy link
Copy Markdown
Member

Hi, thanks for the updates. One thing to keep in mind:

When working with enums in AFF, keep in mind that adding a new value down the road is actually an incompatible change. The only way around this is if you've already defined a $default fallback annotation on the field from the start.

why: imagine a newer system writes a JSON file using your new enum value, but an older system tries to read it. Since the older system has no idea what this new value means and has no default fallback to drop back to, it will choke on the file and fail to deserialize it entirely.

(Note: As long as the AFF is only used in VS Code with the AffAdapter, incompatible changes are still possible since there are no active runtime systems consuming the format yet - just to be aware about that.)

I think with the suggestions of Guilherme, this looks pretty good. What do you think @GuilhermeSaraiva96?

@Markus1812 Markus1812 self-assigned this Aug 18, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants