Skip to content

[DTEL] first draft#727

Open
larshp wants to merge 31 commits intomainfrom
hvam/dtelv1
Open

[DTEL] first draft#727
larshp wants to merge 31 commits intomainfrom
hvam/dtelv1

Conversation

@larshp
Copy link
Copy Markdown
Collaborator

@larshp larshp commented Jan 14, 2026

#556

moving some of the types to new re-useable interface

@schneidermic0
Copy link
Copy Markdown
Contributor

@larshp Since DOMA has been merged, now. Shall we proceed with this in the same way as with DOMA?

If so, I can try to update this proposal, too. But give me some time.

@larshp
Copy link
Copy Markdown
Collaborator Author

larshp commented Feb 13, 2026

yes, we can go ahead with this one

@larshp larshp requested a review from Copilot March 5, 2026 12:07
@larshp larshp marked this pull request as ready for review March 5, 2026 12:08
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Adds an initial ABAP File Format (AFF) definition for DDIC Data Elements (DTEL) and introduces a shared DDIC-types interface to reuse common type definitions across DDIC object formats.

Changes:

  • Introduce zif_aff_ddic_types_v1 to centralize reusable DDIC primitive types (data type enum, length, decimals).
  • Add the DTEL AFF type interface, JSON schema (dtel-v1.json), README, and an example DTEL file.
  • Refactor DOMA to reuse the new shared DDIC types instead of duplicating them.

Reviewed changes

Copilot reviewed 8 out of 8 changed files in this pull request and generated 7 comments.

Show a summary per file
File Description
file-formats/zif_aff_ddic_types_v1.intf.json Metadata for the new shared DDIC types interface.
file-formats/zif_aff_ddic_types_v1.intf.abap Centralizes DDIC type enum + length/decimals constraints for reuse.
file-formats/dtel/type/zif_aff_dtel_v1.intf.json Metadata for the DTEL AFF type interface.
file-formats/dtel/type/zif_aff_dtel_v1.intf.abap Defines DTEL structure (domain/type refs, labels, search help, etc.).
file-formats/dtel/examples/zdtel_v1.dtel.json Example DTEL JSON instance.
file-formats/dtel/dtel-v1.json Generated JSON schema for DTEL files.
file-formats/dtel/README.md DTEL format documentation entry point.
file-formats/doma/type/zif_aff_doma_v1.intf.abap Switches DOMA to reference centralized DDIC types.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread file-formats/dtel/type/zif_aff_dtel_v1.intf.json Outdated
Comment thread file-formats/dtel/README.md Outdated
Comment thread file-formats/dtel/type/zif_aff_dtel_v1.intf.abap Outdated
Comment thread file-formats/dtel/dtel-v1.json Outdated
Comment thread file-formats/dtel/dtel-v1.json Outdated
Comment thread file-formats/zif_aff_ddic_types_v1.intf.abap Outdated
Comment thread file-formats/dtel/dtel-v1.json Outdated
larshp and others added 10 commits March 5, 2026 13:14
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
@@ -0,0 +1,175 @@
"! <p class="shorttext synchronized" lang="en">Common DDIC types reusable in AFF</p>
"! Types which can be reused for ABAP Dictionary object types (DOMA, DTEL, etc.)
INTERFACE zif_aff_ddic_types_v1 PUBLIC.
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.

[internal] there should be a IF_AFF_DDIC_TYPES_V1 in the SAP BASIS shipment

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.

I have created ZIF_AFF_DDIC_TYPES_V1 for now. I was wondering whether we should move them to a dedicated folder. But this can be done later, too.

Comment on lines +42 to +56
"! <p class="shorttext">Domain Name</p>
"! Reference domain name
domain_name TYPE zif_aff_types_v1=>ty_object_name_30,

"! <p class="shorttext">Predefined Type</p>
"! Predefined ABAP type
predefined_type TYPE ty_predefined_type,

"! <p class="shorttext">Reference Type</p>
"! Reference to an ABAP type
reference_type TYPE zif_aff_types_v1=>ty_object_name_30,

"! <p class="shorttext">Reference Predefined Type</p>
"! Reference to a predefined ABAP type
reference_predefined_type TYPE zif_aff_types_v1=>ty_object_name_30,
Copy link
Copy Markdown
Contributor

@schneidermic0 schneidermic0 Mar 10, 2026

Choose a reason for hiding this comment

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

Currently, we have multiple options to define the data type here. No field is required.
Best solution (for the schema) would be oneOf, but this is not supported.

I was also wondering whether we show it similar to the editor in ADT with a category (as enum) and a data type or a predefined data type:

Image

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

yea, well, cannot really express "oneOf" in ABAP types

I'd say its up to presentation and/or additional checks

Copy link
Copy Markdown
Collaborator Author

@larshp larshp Apr 9, 2026

Choose a reason for hiding this comment

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

but I guess we can also do a new annotation, which is just relevant for the JSON schema

we can always implement that later? and not wait until its done?

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.

I would love to have s.th. like oneOf. Unfortunately, this would have some implications we cannot address so fast.

@larshp larshp requested a review from schneidermic0 April 13, 2026 16:38
@github-actions
Copy link
Copy Markdown

github-actions Bot commented Apr 13, 2026

ABAP Doc Checks

  • Run ABAP Doc title/description casing check

New commits with ABAP changes were pushed. Check the box to run again.

@schneidermic0 schneidermic0 self-assigned this Apr 14, 2026
@larshp
Copy link
Copy Markdown
Collaborator Author

larshp commented Apr 17, 2026

@schneidermic0 any thoughts?

@schneidermic0
Copy link
Copy Markdown
Contributor

The team is working on a proposal for data elements currently. They wanted to reach out here soon anyhow. Can we wait for some time?

@larshp
Copy link
Copy Markdown
Collaborator Author

larshp commented Apr 17, 2026

The team is working on a proposal for data elements currently. They wanted to reach out here soon anyhow. Can we wait for some time?

So my efforts is expected ti be discarded?

@GuilhermeSaraiva96
Copy link
Copy Markdown
Contributor

GuilhermeSaraiva96 commented Apr 17, 2026

The team is working on a proposal for data elements currently. They wanted to reach out here soon anyhow. Can we wait for some time?

So my efforts is expected ti be discarded?

Hi Lars,

We have been working on a solution to automate the AFF generation, which works specially well on objects that already exist in ADT, mainly due to the XSD structure for ADT editors. The AFF Generation AI Tool has access to this AFF repo, to past comments from our reviews, to our ADT codebase and to our ABAP systems.

To keep it transparent, I am posting here the fully generated AFF, without any manual input from us. We already reviewed the structure with the colleagues responsible for the DTEL editor and we are very pleased with it, it would need a final review from the object type experts and a review regarding title, naming and descriptions (these come down to personal taste). One thing I noticed is that it contains the length variables (medium_length, short_length), which is missing in your AFF and I also prefer the solution of ty_type_definition vs your ty_data_type_information. To not let any of your work go to waste and since this is your PR, you can tell us if we should adapt yours to include some of the improvements from this generated AFF, or if we should directly iterate from this one :)

Note: Use the raw text from my comment to see the ABAP type

INTERFACE zif_aff_dtel_v1 PUBLIC.

"! <p class="shorttext">Type Kind</p>                                       
"! Kind of type assignment for the data element                             
"! $values {@link zif_aff_dtel_v1.data:co_type_kind}                        
TYPES ty_type_kind TYPE c LENGTH 30.                                        
                                                                            
CONSTANTS:                                                                  
  BEGIN OF co_type_kind,                                                    
    "! <p class="shorttext">Domain</p>                                      
    "! Data element is based on a domain                                    
    domain                      TYPE ty_type_kind VALUE 'domain',           
    "! <p class="shorttext">Predefined ABAP Type</p>                        
    "! Data element uses a predefined ABAP built-in type                    
    predefined_abap_type        TYPE ty_type_kind VALUE                     

'predefinedAbapType',
"!

Reference to Predefined ABAP Type


"! Data element is a reference to a predefined ABAP type
ref_to_predefined_abap_type TYPE ty_type_kind VALUE
'refToPredefinedAbapType',
"!

Reference to Dictionary Type


"! Data element is a reference to a Dictionary type
ref_to_dictionary_type TYPE ty_type_kind VALUE
'refToDictionaryType',
"!

Reference to Class/Interface Type


"! Data element is a reference to a class or interface type
ref_to_clif_type TYPE ty_type_kind VALUE 'refToClifType',
END OF co_type_kind.

"! <p class="shorttext">Documentation Status</p>                            
"! Documentation status of the data element                                 
"! $values {@link zif_aff_dtel_v1.data:co_documentation_status}             
TYPES ty_documentation_status TYPE c LENGTH 25.                             
                                                                            
CONSTANTS:                                                                  
  BEGIN OF co_documentation_status,                                         
    "! <p class="shorttext">Required</p>                                    
    "! Documentation is required                                            
    required                TYPE ty_documentation_status VALUE 'required',  
    "! <p class="shorttext">Not Used in Screens</p>                         
    "! Data element is not used in screens; no documentation needed         
    not_used_in_screens     TYPE ty_documentation_status VALUE              

'notUsedInScreens',
"!

Explained by Short Text


"! Short text is sufficient as documentation
explained_by_short_text TYPE ty_documentation_status VALUE
'explainedByShortText',
"!

Postponed


"! Documentation is postponed
postponed TYPE ty_documentation_status VALUE 'postponed',
END OF co_documentation_status.

TYPES:                                                                      
  "! <p class="shorttext">Type Definition</p>                               
  "! Type definition of the data element                                    
  BEGIN OF ty_type_definition,
    "! <p class="shorttext">Type Kind</p>                                   
    "! Kind of type assignment                                              
    "! $required                                                            
    type_kind  TYPE ty_type_kind,                                           
    "! <p class="shorttext">Type Name</p>                                   
    "! Name of the domain or type this data element is based on             
    type_name  TYPE zif_aff_types_v1=>ty_object_name_30,                    
    "! <p class="shorttext">Data Type</p>
    "! Built-in ABAP data type (only for type kind predefined ABAP type)    
    data_type  TYPE zif_aff_ddic_types_v1=>ty_data_type,                    
    "! <p class="shorttext">Length</p>                                      
    "! Length of the data type (only for type kind predefined ABAP type)    
    length     TYPE i,                                                      
    "! <p class="shorttext">Decimals</p>                                    
    "! Number of decimal places (only for type kind predefined ABAP type)   
    decimals   TYPE i,                                                      
  END OF ty_type_definition.                                                
                                                                            
TYPES:                                                                      
  "! <p class="shorttext">Field Labels</p>                                  
  "! Screen and list field labels for the data element                      
  BEGIN OF ty_field_labels,                                                 
    "! <p class="shorttext">Short Label</p>                                 
    "! Short field label (max 10 characters)                                
    short_label    TYPE c LENGTH 10,                                        
    "! <p class="shorttext">Short Label Length</p>                          
    "! Output length for the short field label                              
    short_length   TYPE zif_aff_ddic_types_v1=>ty_label_length,             
    "! <p class="shorttext">Medium Label</p>                                
    "! Medium field label (max 20 characters)                               
    medium_label   TYPE c LENGTH 20,                                        
    "! <p class="shorttext">Medium Label Length</p>                         
    "! Output length for the medium field label                             
    medium_length  TYPE zif_aff_ddic_types_v1=>ty_label_length,             
    "! <p class="shorttext">Long Label</p>                                  
    "! Long field label (max 40 characters)                                 
    long_label     TYPE c LENGTH 40,                                        
    "! <p class="shorttext">Long Label Length</p>                           
    "! Output length for the long field label                               
    long_length    TYPE zif_aff_ddic_types_v1=>ty_label_length,             
    "! <p class="shorttext">Heading</p>                                     
    "! Column heading for list outputs (max 55 characters)                  
    heading        TYPE c LENGTH 55,                                        
    "! <p class="shorttext">Heading Length</p>                              
    "! Output length for the column heading                                 
    heading_length TYPE zif_aff_ddic_types_v1=>ty_label_length,             
  END OF ty_field_labels.                                                   
                                                                            
TYPES:                                                                      
  "! <p class="shorttext">Search Help</p>                                   
  "! Search help assignment for value input help                            
  BEGIN OF ty_search_help,                                                  
    "! <p class="shorttext">Search Help Name</p>                            
    "! Name of the assigned search help                                     
    name      TYPE zif_aff_types_v1=>ty_object_name_30,                     
    "! <p class="shorttext">Search Help Parameter</p>                       
    "! Parameter of the search help used for this data element              
    parameter TYPE c LENGTH 30,                                             
  END OF ty_search_help.                                                    
                                                                            
TYPES:                                                                      
  "! <p class="shorttext">Further Characteristics</p>                       
  "! Further characteristics of the data element                            
  BEGIN OF ty_further_characteristics,                                      
    "! <p class="shorttext">Set/Get Parameter ID</p>                        
    "! Parameter ID for SET/GET parameter (SPA/GPA memory)                  
    set_get_parameter_id      TYPE c LENGTH 20,                             
    "! <p class="shorttext">Default Component Name</p>                      
    "! Default field name when the data element is used as a component      
    default_component_name    TYPE zif_aff_types_v1=>ty_object_name_30,     
    "! <p class="shorttext">Change Document</p>                             
    "! Field should be recorded in change documents                         
    "! $showAlways                                                          
    change_document           TYPE abap_bool,                               
    "! <p class="shorttext">No Input History</p>                            
    "! Deactivates input history for fields based on this data element      
    "! $showAlways                                                          
    no_input_history          TYPE abap_bool,                               
    "! <p class="shorttext">Left-to-Right Direction</p>                     
    "! Forces left-to-right text direction for bidirectional text           
    "! $showAlways                                                          
    left_to_right_direction   TYPE abap_bool,                            # here I would personally leave it as a enumeration, like you did   
    "! <p class="shorttext">Deactivate BiDi Filtering</p>                   
    "! Deactivates bidirectional text filtering                             
    "! $showAlways                                                          
    deactivate_bidi_filtering TYPE abap_bool,                               
    "! <p class="shorttext">Documentation Status</p>                        
    "! Status of the documentation for this data element                    
    "! $required                                                            
    documentation_status      TYPE ty_documentation_status,                 
  END OF ty_further_characteristics.                                        
                                                                            
TYPES:                                                                      
  "! <p class="shorttext">Data Element</p>                                  
  "! Data element properties                                                
  BEGIN OF ty_main,                                                         
    "! $required                                                            
    format_version          TYPE zif_aff_types_v1=>ty_format_version,       
    "! <p class="shorttext">Header</p>                                      
    "! Administrative data of the data element                              
    "! $required                                                            
    header                  TYPE zif_aff_types_v1=>ty_header_60,            
    "! <p class="shorttext">Type Definition</p>                             
    "! Type definition of the data element                                  
    "! $required                                                            
    type_definition         TYPE ty_type_definition,                        
    "! <p class="shorttext">Field Labels</p>
    "! Screen and list field labels
    "! $showAlways                                                          
    field_labels            TYPE ty_field_labels,                           
    "! <p class="shorttext">Search Help</p>                                 
    "! Search help assignment                                               
    search_help             TYPE ty_search_help,                            
    "! <p class="shorttext">Further Characteristics</p>                     
    "! Further characteristics of the data element                          
    further_characteristics TYPE ty_further_characteristics,                
  END OF ty_main.                                                           

ENDINTERFACE.

@GuilhermeSaraiva96 GuilhermeSaraiva96 self-assigned this Apr 20, 2026
@larshp
Copy link
Copy Markdown
Collaborator Author

larshp commented Apr 22, 2026

@GuilhermeSaraiva96 format the above message, or open a separate PR so we can see it?

does this also mean you'll be opening PRs for other object types? like TTYP ?

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.

5 participants