diff --git a/file-formats/edot/README.md b/file-formats/edot/README.md new file mode 100644 index 000000000..23a553e6b --- /dev/null +++ b/file-formats/edot/README.md @@ -0,0 +1,5 @@ +# EDOT File Format + +File | Cardinality | Definition | Schema | Example +:--- | :--- | :--- | :--- | :--- +`.edot.json` | 1 | [`zif_aff_edot_v1.intf.abap`](./type/zif_aff_edot_v1.intf.abap) | [`edot-v1.json`](./edot-v1.json) diff --git a/file-formats/edot/edot-v1.json b/file-formats/edot/edot-v1.json new file mode 100644 index 000000000..6342e542f --- /dev/null +++ b/file-formats/edot/edot-v1.json @@ -0,0 +1,166 @@ +{ + "$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/edot/edot-v1.json", + "title": "eDocument Type", + "description": "eDocument type", + "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": "eDocument type description", + "type": "string", + "maxLength": 30 + }, + "originalLanguage": { + "title": "Original Language", + "description": "Original language of the eDocument type", + "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": { + "tableName": { + "title": "eDocument Table Name", + "description": "eDocument table name", + "type": "string", + "maxLength": 30 + }, + "isArchivePreprocessNeeded": { + "title": "Preprocess Before Archiving", + "description": "Preprocess before archiving", + "type": "boolean" + }, + "isCreatedInContingencyMode": { + "title": "Created in Contingency Mode", + "description": "Created in contingency mode", + "type": "boolean" + }, + "contingencyEdocType": { + "title": "Contingency eDocument Type", + "description": "Contingency eDocument type", + "type": "string", + "maxLength": 10 + } + }, + "additionalProperties": false + }, + "readAccessLogConfigurations": { + "title": "Read Access Log Configurations", + "description": "Read access log configurations", + "type": "array", + "uniqueItems": true, + "items": { + "title": "Read Access Log Configuration", + "description": "Read access log configuration", + "type": "object", + "properties": { + "fileType": { + "title": "File Type", + "description": "File type", + "type": "string", + "maxLength": 10 + }, + "fileStructure": { + "title": "File Structure Type", + "description": "File structure type", + "type": "string", + "maxLength": 30 + }, + "fileDescription": { + "title": "File Description", + "description": "File description", + "type": "string", + "maxLength": 60 + }, + "isCloudRelevant": { + "title": "File Cloud Relevancy", + "description": "File cloud relevancy", + "type": "boolean" + } + }, + "additionalProperties": false, + "required": [ + "fileType", + "fileStructure" + ] + } + }, + "edocSpecAdditionalTables": { + "title": "eDocument Type Specific Additional Tables", + "description": "eDocument type specific additional tables", + "type": "array", + "uniqueItems": true, + "items": { + "title": "eDocument Type Specific Additional Tables", + "description": "eDocument type specific additional tables", + "type": "object", + "properties": { + "sequenceNumber": { + "title": "Sequence Number", + "description": "Sequence number", + "type": "integer", + "minimum": 1, + "maximum": 9999 + }, + "tableName": { + "title": "Table Name", + "description": "Table name", + "type": "string", + "maxLength": 30 + } + }, + "additionalProperties": false, + "required": [ + "sequenceNumber", + "tableName" + ] + } + } + }, + "additionalProperties": false, + "required": [ + "formatVersion", + "header", + "generalInformation" + ] +} diff --git a/file-formats/edot/examples/z_aff_example_edot.edot_json b/file-formats/edot/examples/z_aff_example_edot.edot_json new file mode 100644 index 000000000..434b9127a --- /dev/null +++ b/file-formats/edot/examples/z_aff_example_edot.edot_json @@ -0,0 +1,26 @@ +{ + "formatVersion": "1", + "header": { + "description": "Example EDOT for file formats", + "originalLanguage": "en" + }, + "generalInformation": { + "tableName": "EDOFRINV", + "isArchivePreprocessNeeded": false, + "isCreatedInContingencyMode": false + }, + "readAccessLogConfigurations": [ + { + "fileType": "REQUEST", + "fileStructure": "EDO_FR_INV_INVOICE_TYPE", + "fileDescription": "eDocument France: Invoice Request", + "isCloudRelevant": false + } + ], + "edocSpecAdditionalTables": [ + { + "sequenceNumber": 1, + "tableName": "EDOFRINV1" + } + ] +} diff --git a/file-formats/edot/type/zif_aff_edot_v1.intf.abap b/file-formats/edot/type/zif_aff_edot_v1.intf.abap new file mode 100644 index 000000000..48ed30ca0 --- /dev/null +++ b/file-formats/edot/type/zif_aff_edot_v1.intf.abap @@ -0,0 +1,104 @@ +"!

AFF for eDocument Type (EDOT)

+"! eDocument types that can be used in eInvoice process +INTERFACE zif_aff_edot_v1 + PUBLIC. + + TYPES: + "!

Read Access Log Configuration

+ "! Read access log configuration + BEGIN OF ty_read_access_log_config, + "!

File Type

+ "! File type + "! $required + file_type TYPE c LENGTH 10, + "!

File Structure Type

+ "! File structure type + "! $required + file_structure TYPE c LENGTH 30, + "!

File Description

+ "! File description + file_description TYPE c LENGTH 60, + "!

File Cloud Relevancy

+ "! File cloud relevancy + is_cloud_relevant TYPE abap_bool, + END OF ty_read_access_log_config. + "!

Read Access Log Configurations

+ "! Read access log configurations + TYPES ty_read_access_log_configs TYPE SORTED TABLE OF ty_read_access_log_config WITH UNIQUE KEY file_type. + TYPES: + "!

eDocument Type Specific Additional Tables

+ "! eDocument type specific additional tables + BEGIN OF ty_additional_table, + "!

Sequence Number

+ "! Sequence number + "! $required + "! $minimum 1 + "! $maximum 9999 + sequence_number TYPE i, + "!

Table Name

+ "! Table name + "! $required + table_name TYPE zif_aff_types_v1=>ty_object_name_30, + END OF ty_additional_table. + "!

Read Access Log Configuration

+ "! Read access log configuration + TYPES ty_additional_tables TYPE SORTED TABLE OF ty_additional_table WITH UNIQUE KEY sequence_number. + TYPES: + "!

General Information

+ "! General information + BEGIN OF ty_general_information, + "!

eDocument Table Name

+ "! eDocument table name + table_name TYPE zif_aff_types_v1=>ty_object_name_30, + "!

Preprocess Before Archiving

+ "! Preprocess before archiving + is_archive_preprocess_needed TYPE abap_bool, + "!

Created in Contingency Mode

+ "! Created in contingency mode + is_created_in_contingency_mode TYPE abap_bool, + "!

Contingency eDocument Type

+ "! Contingency eDocument type + contingency_edoc_type TYPE c LENGTH 10, + END OF ty_general_information. + TYPES: + "!

Header for EDOT object

+ "! The header for an ABAP main object (without source code) with a description of 30 characters (no key user) + BEGIN OF ty_header_30_cloud, + "!

Description

+ "! eDocument type description + "! $required + description TYPE c LENGTH 30, + "!

Original Language

+ "! Original language of the eDocument type + "! $required + original_language TYPE sy-langu, + "!

ABAP Language Version

+ "! ABAP language version + "! $values {@link zif_aff_types_v1.data:co_abap_language_version_cloud} + "! $default {@link zif_aff_types_v1.data:co_abap_language_version_cloud.standard} + abap_language_version TYPE zif_aff_types_v1=>ty_abap_language_version_cloud, + END OF ty_header_30_cloud. + TYPES: + "!

eDocument Type

+ "! eDocument type + BEGIN OF ty_main, + "!

Format Version

+ "! Format version + "! $required + format_version TYPE zif_aff_types_v1=>ty_format_version, + "!

Header

+ "! Header + "! $required + header TYPE ty_header_30_cloud, + "!

General Information

+ "! General information + "! $required + general_information TYPE ty_general_information, + "!

Read Access Log Configurations

+ "! Read access log configurations + read_access_log_configurations TYPE ty_read_access_log_configs, + "!

eDocument Type Specific Additional Tables

+ "! eDocument type specific additional tables + edoc_spec_additional_tables TYPE ty_additional_tables, + END OF ty_main. +ENDINTERFACE. diff --git a/file-formats/edot/type/zif_aff_edot_v1.intf.json b/file-formats/edot/type/zif_aff_edot_v1.intf.json new file mode 100644 index 000000000..ab06b1e48 --- /dev/null +++ b/file-formats/edot/type/zif_aff_edot_v1.intf.json @@ -0,0 +1,7 @@ +{ + "formatVersion": "1", + "header": { + "description": "AFF for eDocument Type (EDOT)", + "originalLanguage": "en" + } +}