diff --git a/src/ZDSAG_CLASSIFICATION_C1/Readme.MD b/LICENSES/images/Readme.MD
similarity index 100%
rename from src/ZDSAG_CLASSIFICATION_C1/Readme.MD
rename to LICENSES/images/Readme.MD
diff --git a/README.md b/README.md
index 5e101e5..30f0a04 100644
--- a/README.md
+++ b/README.md
@@ -9,41 +9,29 @@ You can have a brief understanding on: [ ABAP Cloud - How to mitigate missing re
# Introduction
**Description**
-This repository contains the material for the `Devtoberfest 2024- Clean Core Extensibility with ABAP Cloud in SAP S/4HANA Cloud Private Edition` .
+This repository contains the material for session `AD106 | Clean core extensibility of SAP S/4HANA Cloud Private Edition with ABAP Cloud` in SAP Teched 2024
It includes two packages:
->ZDSAG_CLASIFICATION_CLOUD(ABAP Cloud Language Version) - Contains managed Business Object (BO) with BO nodes or entities, BO projection views, late numbering, determine actions, actions, side effects, functions, business event exposure, and additional save.
+>ZDSAG_PRODUCT_LIST_CLOUD(ABAP Cloud Language Version) - Contains managed Business Object (BO) with BO nodes or entities, BO projection views, actions, business event exposure.
->ZDSAG_CLASSIFICATION_C1( Standard ABAP Language Version) - Contains wrapper for Nominated APIs and CDS entity for not C1 released artifact.
+>ZDSAG_PRODUCT_LIST_C1( Standard ABAP Language Version) - Contains wrapper for Nominated APIs and CDS entity for not C1 released artifact.
## Table of Content
- [Requirements](#requirements)
- [Overview](#overview)
-- [Recording](#recording)
- [Solution Overview](#solution-overview)
- [How to download and install this example](#how-to-download-and-install-this-example)
+- [Configuration](#configuration)
+- [Recording](#recording)
+- [Known Issues](#known-issues)
- [How to obtain support](#how-to-obtain-support)
- [Further Information](#ℹfurther-information)
-## 📋 Requirements
-[^Top of page](#)
-> You need the latest version of the ABAP Development Tools for Eclipse (ADT) on your laptop or PC as well as the access to an appropriate ABAP system* to carry out the practical exercises of this workshop.
->
-> (*) The supported ABAP systems are release 2023 of SAP S/4HANA Cloud Private Edition and SAP S/4HANA.
+## 📋 Requirements
-
- Click to expand!
+[Requirements section](../main/README.md#requirements) of branch `Main`
-The requirements to follow the exercises in this repository are:
-1. [Install the latest Eclipse platform and the latest ABAP Development Tools (ADT) plugin](https://developers.sap.com/tutorials/abap-install-adt.html)
-2. [Understand the sample scenario how to mitigate a missing released SAP API](https://developers.sap.com/tutorials/abap-s4hanacloud-purchasereq-understand-scenario.html) (_Read Step 4 for technical requirements_)
-3. [Create software component using `ABAP For Cloud` as `ABAP Language Version`](https://help.sap.com/docs/ABAP_PLATFORM_NEW/b5670aaaa2364a29935f40b16499972d/8da870021323498db15a1c56cfc9b302.html)
-4. You have created an ABAP Project in ADT that allows you to access your Application Server as mentioned above. Your log-on language is English.
-5. You have downloaded and installed the `zabapgit_standalone` report. Make sure to use the most recent version as indicated on the [installation page](https://docs.abapgit.org/).
-6. You have installed the certificate files for github.com, see [abapGit Documentation](https://docs.abapgit.org/guide-ssl-setup.html).
-
-
## 🔎Overview
@@ -54,65 +42,35 @@ The requirements to follow the exercises in this repository are:
### Business Scenario
In a nutshell
-> We create/update `Classification` using nominated APIs
+> We display the list of available Products from `Product Master` (MM03) in system
>
-> Assign the `Classification` to `Material Master` using nominated API.
+> Assign the `Product Master` to `Classification` using nominated API.
>
-> If the Material is assigned with `Classification` for the first time we raise an BOR event
+> If the Product is assigned with `Classification` for the first time we raise an BOR event
>
>
-This session material guides you through the development of the OData service of a SAP Fiori elements based _Classification Processing App_ with RAP, using the _managed_ business object (BO) runtime implementation with unmanaged save and late numbering.
+This session material guides you through the development of the OData service of a SAP Fiori elements based _Classification Assignment to Product App_ with RAP, using the _managed_ business object (BO) runtime implementation .
>
-> Here we chose `unmanaged save` as we intend to use nominated APIs aka `BAPI` for CRUDQ trasanctional capabilities .
+The OData service you are going to implement is based on the SAP GUI transaction MM01/MM02.
>
-The OData service you are going to implement is based on the SAP GUI transaction CL01/CL02/CL03.
->
-> To set the business context, the scenario is the following: The department responsible for managing "Classification" is requesting you to build a new Fiori app with draft capabilities for processing (i.e. creating, updating and deleting) classification.
+> To set the business context, the scenario is the following: The department responsible for managing "Products & Classification" is requesting you to build a new display only Fiori app for processing assignment of Product with Classification.
>
Click to expand!
->Scenario 1: Creation and Update existing `Classification`
->
-The resulting _Classification Processing App_ app is a SAP Fiori elements-based List Report app with search, filter, and draft capabilities for processing _Classification_ . A navigation to an Object Page for displaying the details of each _Classification_ entry in the list report is offered. The application will look like this:
-
-**List Report**:
-
-
-**Object Page**:
-
-
-Let us breakdown of SAP GUI transaction _CL01_ which comprises of different section(information stored across multiple database) _Classification App_ .
+>Scenario : Assign existing `Materail Master` to a `Classification`
-**Basic Data**:
-
-
-**Keywords**:
-
-
-**Characteristics**:
-
-
-**So we would be building a RAP application that would be a mimic of these sections from CL01/CL02/CL03.**
-
-
-**Disclaimer**: We have taken only few sections from CL01 transaction for this sample.
-
-
-Below is the simplified _Classification_ data model underlying the app.
-
-
-
->Scenario 2: Assign existing `Classification` to a `Material Master`
->
-We use nominated API , to assign existing `Classification` to existing `Material`.
+>We use nominated API , to assign existing `Product` to existing `Classification`.
> We achieve this help of `Action` in RAP.
-**Action to do this assignment of Classification to Material**:
-
+**List Report**:
+
+
+**Object Page-Action to do this assignment of Product to Classification**:
+
**We can do this in classic way directly using SAP GUI transaction MM01/MM02**:
@@ -122,39 +80,34 @@ We use nominated API , to assign existing `Classification` to existing `Material
## 🛠 Solution Overview
-> You can import the solution package **`ZDSAG_CLASSIFICATION_C1`** **`ZDSAG_CLASIFICATION_CLOUD`** into your system* by following [How to download and install this example](#how-to-download-and-install-this-example).
+> You can import the solution package **`ZDSAG_PRODUCT_LIST_C1`** **`ZDSAG_PRODUCT_LIST_CLOUD`** into your system* by following [How to download and install this example](#how-to-download-and-install-this-example).
>
> (*) The supported ABAP systems are 2023 of SAP S/4HANA Cloud Private Edition and SAP S/4HANA.
Click to expand!
-**ZDSAG_CLASSIFICATION_C1**
+**ZDSAG_PRODUCT_LIST_C1**
>Lets see what are the objects present in this package:
-1. ZDSAG_BAPI_CLASS_CREATE - Tier 2 Wrapper for nominated API of Classification Creation - `BAPI_CLASS_CREATE`
-2. ZDSAG_BAPI_CLASS_CHANGE - Tier 2 Wrapper for nominated API of Classification Update -`BAPI_CLASS_CHANGE`
-3. ZDSAG_BAPI_OBJCL_CREATE - Tier 2 Wrapper for nominated API of Classification Assignment to Material Master - `BAPI_OBJCL_CREATE`
-4. ZDSAG_GET_CLASS_DETAIL - Tier 2 Wrapper for reading existing 'Classification' details - here we combine usage of nominated API `BAPI_CLASS_GET_CHARACTERISTICS` and `I_CLFNCLASS`(Basic Data) and `I_CLFNCLASDESCRIPTION`(Keywords).
-5. ZDSAG_BOR_EVENT_HANDLER - BOR Event Handler Implementation
+1. ZCL_DSAG_BAPI_OBJCL - Tier 2 Wrapper for nominated API of Product Master to Classification Assignment - `BAPI_OBJCL_CREATE`
+2. ZCL_DSAG_CLASS_ASSIGNMENT_CHK - Tier 2 Wrapper for checking existing `Classification` details assigned to `Product Master` before triggering assignment .
+3. ZCL_DSAG_BOR_HANDLER_PRODUCT - BOR Event Handler Implementation
**Note:**
The package contains other objects as well, but we have given overview of only few key artifacts.
-**ZDSAG_CLASIFICATION_CLOUD**
+**ZDSAG_PRODUCT_LIST_CLOUD**
>Lets see what are the objects present in this package:
>BO - Business Object
-1. ZDSAG_R_CLASSIFICATION - Root BO for `Basic Data`
-2. ZDSAG_C_CLASSIFICATION - Root BO Projection View
-3. ZDSAG_R_CLASSDESCRIPTION - BO for `Keywords`
-4. ZDSAG_C_CLASSDESCRIPTION - Projection view for `Keywords` BO
-5. ZDSAG_R_CLASSCHARACTERS - BO for `Characteristics`
-6. ZDSAG_C_CLASSCHARACTERS - Projection view for `Characteristics` BO
-7. ZDSAG_A_CLASSIFICATION_CREATE - Abstract entity for `Classification` created RAP event
-
+1. ZDSAG_R_PRODUCT - Root BO for `Product Master`
+2. ZDSAG_C_PRODUCT - Root BO Projection View
+3. ZDSAG_I_CLASSIFICATIONHELPER - BO for `Classification`
+4. ZDSAG_I_CHARACTERISTICHELPER - BO for `Characteristics`
+
**Note:**
The package contains other objects as well, but we have given overview of only few key artifacts.
@@ -164,22 +117,23 @@ The package contains other objects as well, but we have given overview of only f
Use the zabapgit_standalone program to install the RAP Nominated APIs consumption Scenario by executing the following steps:
1. Create software component `ZABAP_ON_CLOUD` using `ABAP For Cloud` as `ABAP Language Version` as mentioned in `Requirement` section of this file.
-2. In your ABAP project, create the package `ZCLASSIFICATION_SAMPLE` as target package for the demo content. Use `ZABAP_ON_CLOUD` as software component. Assign it to a new transport request that you only use for the demo content import.
+2. In your ABAP project, create the package `ZPRODUCT_ASSIGNMENT_SAMPLE` as target package for the demo content. Use `ZABAP_ON_CLOUD` as software component. Assign it to a new transport request that you only use for the demo content import.
3. In your ABAP project, run the program `zabapgit_standalone`.
-4. Choose `New Online` and enter the following URL of this repository `https://github.com/SAP-samples/abap-platform-nominated-apis-consumption`.
-5. In the package field, enter the newly created package `ZCLASSIFICATION_SAMPLE`. In the branch field, select the branch `ABAP-platform-2023-classification-maintenance`.
-6. Leave the other fields unchanged and choose `Create Online Repo`.
-7. Enter your credentials for abapgit. You will see the available artifacts to import into your ABAP system.
-8. Choose `Pull` and confirm every subpackage on your transport request.
-9. Select the package `ZCLASSIFICATION_SAMPLE` to be overwritten with the demo content.
-10. You will get an information screen telling you to only make repairs when they are urgent, which you can confirm.
-11. In the following screen, select all inactive objects and confirm the activation.
-12. Once the cloning has finished, refresh your project tree.
+4. Choose `New Online` and enter the following URL of this repository `https://github.com/SAP-samples/abap-platform-nominated-apis-consumption.git`.
+5. To select the Product-Classification-assignment branch, choose `Branch` > `Switch` and select `ABAP-platform-2023-product-classification-assignment`.
+6. In the package field, enter the newly created package `ZPRODUCT_ASSIGNMENT_SAMPLE`. In the branch field, select the branch `ABAP-platform-2023-classification-maintenance`.
+7. Leave the other fields unchanged and choose `Create Online Repo`.
+8. Enter your credentials for abapgit. You will see the available artifacts to import into your ABAP system.
+9. Choose `Pull` and confirm every subpackage on your transport request.
+10. Select the package `ZPRODUCT_ASSIGNMENT_SAMPLE` to be overwritten with the demo content.
+11. You will get an information screen telling you to only make repairs when they are urgent, which you can confirm.
+12. In the following screen, select all inactive objects and confirm the activation.
+13. Once the cloning has finished, refresh your project tree.
As a result of the installation procedure above, the ABAP system creates an inactive version of all artifacts from the demo content and adds the following sub packages to the target package:
-* `ZDSAG_CLASSIFICATION_C1`
-* `ZDSAG_CLASIFICATION_CLOUD`
+* `ZDSAG_PRODUCT_LIST_C1`
+* `ZDSAG_PRODUCT_LIST_CLOUD`
## Configuration
@@ -192,11 +146,10 @@ NOTE: In case the activation via the button in the service bindings is not possi
## 📹Recording
-[^Top of page](#)
-For a compact overview of this repository , watch the session replay from SAP Devtoberfest 2024 (_gated content_):
+For a compact overview of this repository , watch the session replay from SAP Teched 2024 (_gated content_):
-⏺ [Clean Core Extensibility with ABAP Cloud in SAP S/4HANA Cloud Private Edition - Youtube Video ](https://www.youtube.com/watch?v=HQPXI1Ba-Gk&list=PL6RpkC85SLQDHz97qsNTNAE2jnUKj8X5d&index=65)
+⏺ [AD106 | Clean core extensibility of SAP S/4HANA Cloud Private Edition with ABAP Cloud](https://www.sap.com/events/teched/virtual/flow/sap/te24/catalog/page/catalog/session/1721791179982001rM76)
**Note:**
The code available in this repository is slightly different from this recording.
@@ -205,24 +158,10 @@ The code available in this repository is slightly different from this recording.
## How to obtain support
-[Create an issue](https://github.com/SAP-samples/abap-platform-nominated-apis-consumption/issues) in this repository if you find a bug or have questions about the content.
+[How to obtain support section](../main/README.md#how-to-obtain-support) of branch Main
-For additional support, [ask a question in SAP Community](https://answers.sap.com/questions/ask.html).
-## ℹFurther Information
-[^Top of page](#)
-
-You can find further information on the ABAP RESTful Application Programming Model (RAP) here:
- - 📃 [State-of-the-Art ABAP Development with RAP | SAP Community](https://community.sap.com/topics/abap/rap)- A collection of diverse getting started materials.
- - 📃 [ABAP Cloud API Enablement Guidelines for SAP S/4HANA Cloud, private edition, and SAP S/4HANA](https://www.sap.com/documents/2023/05/b0bd8ae6-747e-0010-bca6-c68f7e60039b.html).
- - 📃 [The list of available S/4HANA Cloud Private Edition Classic APIs ](https://github.com/SAP/abap-atc-cr-cv-s4hc/blob/main/src/objectReleaseInfoLatest.csv)
- - 📃 [Understand the sample scenario how to mitigate a missing released SAP API](https://developers.sap.com/tutorials/abap-s4hanacloud-purchasereq-understand-scenario.html)- A collection of diverse getting started materials.
- - 📄 [ABAP Cloud – SAP S/4HANA extensibility – May 2023 update | SAP Blogs](https://blogs.sap.com/2023/05/26/abap-cloud-sap-s-4hana-extensibility-may-2023-update/)
- - ❓ Most frequently asked questions: [RAP FAQ](https://blogs.sap.com/2020/10/16/abap-restful-application-programming-model-faq/)
- - 🛠 [Develop and Run a Fiori Application with SAP Business Application Studio | SAP Tutorials](https://developers.sap.com/tutorials/abap-environment-deploy-cf-production.html)
- - 🛠 [Landing page with various hands-on workshop materials on ABAP Cloud, including RAP and embedded analytics](https://github.com/SAP-samples/abap-platform-rap-workshops/blob/main/README.md)
-
## Contributing
-If you wish to contribute code, offer fixes or improvements, please send a pull request. Due to legal reasons, contributors will be asked to accept a DCO when they create the first pull request to this project. This happens in an automated fashion during the submission process. SAP uses [the standard DCO text of the Linux Foundation](https://developercertificate.org/).
+[Contributing section](../main/README.md#contributing) of branch Main
## License
Copyright (c) 2024 SAP SE or an SAP affiliate company. All rights reserved. This project is licensed under the Apache Software License, version 2.0 except as noted otherwise in the [LICENSE](LICENSE) file.
diff --git a/images/CL01_Basic_Data.png b/images/CL01_Basic_Data.png
deleted file mode 100644
index 4df9bd2..0000000
Binary files a/images/CL01_Basic_Data.png and /dev/null differ
diff --git a/images/CL01_Characteristics.png b/images/CL01_Characteristics.png
deleted file mode 100644
index f29d097..0000000
Binary files a/images/CL01_Characteristics.png and /dev/null differ
diff --git a/images/CL01_Keywords.png b/images/CL01_Keywords.png
deleted file mode 100644
index ccd9c0d..0000000
Binary files a/images/CL01_Keywords.png and /dev/null differ
diff --git a/images/DownloadZIPCode.png b/images/DownloadZIPCode.png
deleted file mode 100644
index 95077f9..0000000
Binary files a/images/DownloadZIPCode.png and /dev/null differ
diff --git a/images/Flowdiagram.png b/images/Flowdiagram.png
deleted file mode 100644
index 20d0279..0000000
Binary files a/images/Flowdiagram.png and /dev/null differ
diff --git a/images/GUI_RAP application.png b/images/GUI_RAP application.png
deleted file mode 100644
index a82f1c3..0000000
Binary files a/images/GUI_RAP application.png and /dev/null differ
diff --git a/images/List Report- Product List.png b/images/List Report- Product List.png
new file mode 100644
index 0000000..4b754de
Binary files /dev/null and b/images/List Report- Product List.png differ
diff --git a/images/ListReport.png b/images/ListReport.png
deleted file mode 100644
index d2d04db..0000000
Binary files a/images/ListReport.png and /dev/null differ
diff --git a/images/ObjectPage- Product.png b/images/ObjectPage- Product.png
new file mode 100644
index 0000000..7767a79
Binary files /dev/null and b/images/ObjectPage- Product.png differ
diff --git a/images/ObjectPage.png b/images/ObjectPage.png
deleted file mode 100644
index 1a06df5..0000000
Binary files a/images/ObjectPage.png and /dev/null differ
diff --git a/images/RAP _Action.png b/images/RAP _Action.png
deleted file mode 100644
index 4a889dc..0000000
Binary files a/images/RAP _Action.png and /dev/null differ
diff --git a/src/ZDSAG_CLASIFICATION_CLOUD/Readme.md b/images/Readme.md
similarity index 100%
rename from src/ZDSAG_CLASIFICATION_CLOUD/Readme.md
rename to images/Readme.md
diff --git a/images/a b/src/ReadMe.Md
similarity index 100%
rename from images/a
rename to src/ReadMe.Md
diff --git a/src/ZDSAG_CLASIFICATION_CLOUD/zbp_dsag_r_classification.clas.abap b/src/ZDSAG_CLASIFICATION_CLOUD/zbp_dsag_r_classification.clas.abap
deleted file mode 100644
index c88419b..0000000
--- a/src/ZDSAG_CLASIFICATION_CLOUD/zbp_dsag_r_classification.clas.abap
+++ /dev/null
@@ -1,30 +0,0 @@
-CLASS zbp_dsag_r_classification DEFINITION PUBLIC ABSTRACT FINAL FOR BEHAVIOR OF zdsag_r_classification.
-
- TYPES tt_events TYPE TABLE FOR EVENT zdsag_r_classification~ClassificationCreated.
- TYPES klasse_d TYPE c LENGTH 000018.
- TYPES klassenart TYPE c LENGTH 000003.
-
- CLASS-METHODS
- raise_event
- IMPORTING it_events TYPE tt_events.
-
- TYPES : BEGIN OF t_action_assignment,
- classtype TYPE zbp_dsag_r_classification=>klassenart,
- ClassInternalID TYPE zbp_dsag_r_classification=>klasse_d,
- material_number TYPE matnr,
- END OF t_action_assignment.
-
- CLASS-DATA it_assignment_details TYPE STANDARD TABLE OF t_action_assignment.
- CLASS-DATA ls_assignment_detail TYPE t_action_assignment.
-
- CONSTANTS lc_msg_class TYPE symsgid VALUE 'ZDSAG_CLASSIFICATION'.
-ENDCLASS.
-
-
-CLASS zbp_dsag_r_classification IMPLEMENTATION.
- METHOD raise_event.
- RAISE ENTITY EVENT zdsag_r_classification~classificationcreated
- FROM VALUE #( FOR IN it_events
- ( ClassInternalID = -ClassInternalID ) ).
- ENDMETHOD.
-ENDCLASS.
diff --git a/src/ZDSAG_CLASIFICATION_CLOUD/zbp_dsag_r_classification.clas.locals_imp.abap b/src/ZDSAG_CLASIFICATION_CLOUD/zbp_dsag_r_classification.clas.locals_imp.abap
deleted file mode 100644
index e1be58b..0000000
--- a/src/ZDSAG_CLASIFICATION_CLOUD/zbp_dsag_r_classification.clas.locals_imp.abap
+++ /dev/null
@@ -1,607 +0,0 @@
-CLASS lhc_Classification DEFINITION INHERITING FROM cl_abap_behavior_handler.
- PRIVATE SECTION.
- TYPES ty_header_tky TYPE STRUCTURE FOR PERMISSIONS KEY zdsag_r_Classification\\Classification.
- TYPES ty_bapiret2 TYPE STANDARD TABLE OF bapiret2.
- TYPES ty_reported TYPE RESPONSE FOR REPORTED LATE zdsag_r_classification.
- TYPES ty_failed TYPE RESPONSE FOR FAILED LATE zdsag_r_Classification.
-
- METHODS get_instance_features FOR INSTANCE FEATURES
- IMPORTING keys REQUEST requested_features FOR Classification RESULT result.
-
- METHODS get_instance_authorizations FOR INSTANCE AUTHORIZATION
- IMPORTING keys REQUEST requested_authorizations FOR Classification RESULT result.
-
- METHODS lock FOR LOCK
- IMPORTING keys FOR LOCK Classification.
-
- METHODS assign_class_to_material FOR MODIFY
- IMPORTING keys FOR ACTION Classification~assign_class_to_material RESULT result.
-
- METHODS setDefaultValues FOR DETERMINE ON MODIFY
- IMPORTING keys FOR Classification~setDefaultValues.
-
- METHODS check_if_classtype_exists FOR VALIDATE ON SAVE
- IMPORTING keys FOR Classification~check_if_classtype_exists.
-
- METHODS simulate_create FOR VALIDATE ON SAVE
- IMPORTING keys FOR Classification~simulate_create.
-
- METHODS handle_bapi_return
- IMPORTING header_tky TYPE ty_header_tky
- !return TYPE ty_bapiret2
- EXPORTING !reported TYPE ty_reported
- !failed TYPE ty_failed.
-
-ENDCLASS.
-
-
-CLASS lhc_Classification IMPLEMENTATION.
- METHOD get_instance_features.
- READ ENTITIES OF zdsag_r_Classification IN LOCAL MODE
- ENTITY Classification
- FIELDS ( ClassType ) WITH CORRESPONDING #( keys )
-
- RESULT DATA(Classifications)
- FAILED failed
- REPORTED reported.
-
- ASSIGN classifications[ 1 ] TO FIELD-SYMBOL().
-
- result = VALUE #(
- FOR key IN keys
- ( %tky = key-%tky
- %action-assign_class_to_material = COND #( WHEN key-ClassInternalID IS INITIAL OR -ClassType <> '001'
- THEN if_abap_behv=>fc-o-disabled
- ELSE if_abap_behv=>fc-o-enabled ) ) ).
- ENDMETHOD.
-
- METHOD get_instance_authorizations.
- ENDMETHOD.
-
- METHOD lock.
- READ ENTITIES OF zdsag_r_Classification IN LOCAL MODE
- ENTITY Classification
- FIELDS ( ClassType Class ) WITH CORRESPONDING #( keys )
- RESULT DATA(Classifications)
- FAILED failed
- REPORTED reported.
-
- LOOP AT Classifications ASSIGNING FIELD-SYMBOL().
- zdsag_classification_utility=>enqueue_classification( EXPORTING classtype = -ClassType
- class = -class
- IMPORTING lock_error = DATA(lock_error) ).
-
- IF lock_error = abap_true.
- APPEND VALUE #( %tky = -%tky ) TO failed-classification ASSIGNING FIELD-SYMBOL().
- -%fail-cause = if_abap_behv=>cause-locked.
-
- APPEND VALUE #( %tky = -%tky ) TO reported-classification ASSIGNING FIELD-SYMBOL().
- -%msg = new_message_with_text( severity = if_abap_behv_message=>severity-error
- text = |{ 'Instance Locked By User :' } { sy-msgv1 }| ).
- ENDIF.
- ENDLOOP.
- ENDMETHOD.
- " ----------------------------------METHOD assign_class_to_material----------------------------
- " 1. The assumption is we assign existing "Material/MM03" to existing "Classification/CL03".
- " 2. So both Classification and Material must exists.
- " 3. from Tier 1 object : We are Accessing Classic API: BAPI_OBJCL_CREATE wrapper
- " C1 released.
- " 4. Lock Product & Classification(Taken care by Lock Unmanaged )
- " 5. Messages from BAPI are passed to UI layer
- " ---------------------------------------------------------------------------------------------
-
- METHOD assign_class_to_material.
- READ ENTITIES OF zdsag_r_Classification IN LOCAL MODE
- ENTITY Classification
- FIELDS ( Class ClassInternalID ClassType )
- WITH VALUE #( FOR key IN keys
- ( %tky = key-%tky
- ClassInternalID = key-classinternalid )
- )
- RESULT DATA(lt_classifications).
- LOOP AT lt_classifications ASSIGNING FIELD-SYMBOL().
- ASSIGN keys[ KEY entity
- ClassInternalID = -ClassInternalID ] TO FIELD-SYMBOL().
-
- " Try to lock Product or Products before taking for assignment of classification to Product/Products(1:N)
- zdsag_product_utility=>enqueue_product( EXPORTING i_matnr = -%param-object
- IMPORTING lock_error = DATA(lock_error) ).
-
- IF lock_error = abap_true.
- APPEND VALUE #( %tky = -%tky ) TO failed-classification.
-
- APPEND VALUE #( %tky = -%tky ) TO reported-classification ASSIGNING FIELD-SYMBOL().
- -%msg = new_message( id = zbp_dsag_r_classification=>lc_msg_class
- number = 002
- severity = if_abap_behv_message=>severity-error
- v1 = -%param-object
- v2 = sy-msgv1 ).
-
- CONTINUE.
- ENDIF.
-
- " For later processing of Assignment Action in late SAVE_MODIFIED phase
- zbp_dsag_r_classification=>ls_assignment_detail-classinternalid = -Class.
- zbp_dsag_r_classification=>ls_assignment_detail-classtype = -ClassType.
- zbp_dsag_r_classification=>ls_assignment_detail-material_number = -%param-object.
-
- APPEND zbp_dsag_r_classification=>ls_assignment_detail TO zbp_dsag_r_classification=>it_assignment_details.
- ENDLOOP.
-
- " Read changed data for action result
-
- result = VALUE #( FOR Classification IN lt_Classifications
- ( ClassInternalID = Classification-ClassInternalID
- %param-ClassInternalID = Classification-ClassInternalID ) ).
- ENDMETHOD.
-
- METHOD setDefaultValues.
- MODIFY ENTITIES OF zdsag_r_Classification IN LOCAL MODE
- ENTITY Classification
- UPDATE FIELDS ( ClassStatus ValidityStartDate ValidityEndDate )
- WITH VALUE #( FOR key IN keys
- ( %tky = key-%tky
- ClassStatus = '1'
- ValidityStartDate = cl_abap_context_info=>get_system_date( )
- ValidityEndDate = '99991231' ) )
- CREATE BY \_ClassificationDescription
- FIELDS ( Language LanguageEdit )
- WITH VALUE #( FOR key IN keys INDEX INTO i
- ( %tky = key-%tky
- %target = VALUE #( ( %cid = i
- %is_draft = key-%is_draft
- Language = sy-langu
- LanguageEdit = sy-langu ) ) ) ).
- ENDMETHOD.
-
- " ----------------------------------METHOD check_if_classtype_exists------------------------------------------------------------
- " 1. To Check if "Classification" created is using only existing "Classification Types" Example: Material Class(001)
- " ------------------------------------------------------------------------------------------------------------------------------
-
- METHOD check_if_classtype_exists.
- " Still needed,For other consumer scenarios like EML, REST etc..
- READ ENTITIES OF zdsag_r_Classification IN LOCAL MODE
- ENTITY Classification
- ALL FIELDS
- WITH VALUE #( FOR key IN keys
- ( %tky = key-%tky
- ClassInternalID = key-classinternalid )
- )
- RESULT DATA(Classifications).
-
- LOOP AT classifications ASSIGNING FIELD-SYMBOL().
-
- SELECT COUNT(*) FROM I_ClfnClassTypeBasic WHERE ClassType = @-classtype.
-
- IF sy-subrc = 0.
- " OK as we are using only existing Classification Type Eg: Material Class(001)
- ELSE.
- " Not OK -Usage of no existing classification type is not permitted
- APPEND VALUE #( %key = -%key
- %Pid = -%Pid )
-
- TO failed-classification.
-
- APPEND VALUE #( %key = -%key
- %msg = new_message( id = zbp_dsag_r_classification=>lc_msg_class
- number = 001
- severity = if_abap_behv_message=>severity-error
- v1 = -classtype ) )
- TO reported-classification.
- ENDIF.
-
- ENDLOOP.
- ENDMETHOD.
-
- METHOD simulate_create.
- " 1. Leveraging BAPI test run to report erros in UI
- DATA mapped_characteristics TYPE STANDARD TABLE OF zdsag_r_classcharacters.
- DATA mapped_descriptions TYPE STANDARD TABLE OF zdsag_r_classdescription.
- DATA lt_return TYPE STANDARD TABLE OF bapiret2.
-
- READ ENTITIES OF zdsag_r_classification IN LOCAL MODE
- ENTITY Classification
- ALL FIELDS WITH VALUE #( FOR key IN keys
- ( %tky = key-%tky
- ClassInternalID = key-classinternalid )
- )
- RESULT DATA(classifications)
-*Classification Description 'ZDSAG_R_CLASSDESCRIPTION'
- ENTITY Classification BY \_ClassificationDescription
- ALL FIELDS WITH VALUE #( FOR key IN keys
- ( %tky = key-%tky
- ClassInternalID = key-classinternalid )
- )
- LINK DATA(links_descriptions)
- RESULT DATA(descriptions)
-*Classification Characteristic 'ZDSAG_R_CLASSCHARACTERS'
- ENTITY Classification BY \_ClassificationCharacteristic
- ALL FIELDS WITH VALUE #( FOR key IN keys
- ( %tky = key-%tky
- ClassInternalID = key-classinternalid )
- )
- LINK DATA(links_characteristics)
- RESULT DATA(Characteristics).
-
- " Simulate create
- LOOP AT classifications ASSIGNING FIELD-SYMBOL() WHERE ClassInternalID IS INITIAL
- GROUP BY -%tky.
-
- LOOP AT links_descriptions ASSIGNING FIELD-SYMBOL() USING KEY id WHERE source-%tky = -%tky.
- DATA(description) = descriptions[ KEY id
- %tky = -target-%tky ].
- APPEND CORRESPONDING #( description ) TO mapped_descriptions ASSIGNING FIELD-SYMBOL().
- ENDLOOP.
-
- LOOP AT links_characteristics ASSIGNING FIELD-SYMBOL() USING KEY id WHERE source-%tky = -%tky.
- DATA(characteristic) = Characteristics[ KEY id
- %tky = -target-%tky ].
- APPEND CORRESPONDING #( characteristic ) TO mapped_characteristics.
- ENDLOOP.
- " Calling C1 released API from Classic ABAP package.
- TRY.
- zbp_dsag_r_classification_exte=>bapi_class_create(
- EXPORTING iv_classification = CORRESPONDING #( )
- it_descriptions = mapped_descriptions
- it_characteristics = mapped_characteristics
- test_run = abap_true
- IMPORTING ev_classinternalid = DATA(rs_classinternalid)
- CHANGING return = lt_return ).
- CATCH cx_root.
- " handle exception
- ENDTRY.
-
- " 'BAPI returned messages are used to display in UI --------
- handle_bapi_return( EXPORTING header_tky = VALUE #( %is_draft = -%is_draft
- %pid = -%pid
- ClassInternalID = rs_classinternalid )
- return = lt_return
- IMPORTING reported = reported
- failed = failed ).
- "
- ENDLOOP.
-
- " Simulate change
- LOOP AT classifications ASSIGNING WHERE ClassInternalID IS NOT INITIAL
- GROUP BY -%tky.
-
- LOOP AT links_descriptions ASSIGNING USING KEY id WHERE source-%tky = -%tky.
- description = descriptions[ KEY id
- %tky = -target-%tky ].
- APPEND CORRESPONDING #( description ) TO mapped_descriptions ASSIGNING .
- ENDLOOP.
-
- LOOP AT links_characteristics ASSIGNING USING KEY id WHERE source-%tky = -%tky.
- characteristic = Characteristics[ KEY id
- %tky = -target-%tky ].
- APPEND CORRESPONDING #( characteristic ) TO mapped_characteristics.
- ENDLOOP.
-
- IF -%is_draft = if_abap_behv=>mk-on.
- zdsag_classification_utility=>get_dsp_facade( )->get_enqueue( 'ZDSAG_R_CLASSIFICATION' )->get_enqueue_context(
- is_pkey = -%pky )->attach( ).
- ENDIF.
-
- " Calling C1 released API.
- TRY.
- zbp_dsag_r_classification_exte=>bapi_class_change(
- EXPORTING iv_classification = CORRESPONDING #( )
- it_descriptions = mapped_descriptions
- it_characteristics = mapped_characteristics
- test_run = abap_true
- CHANGING return = lt_return ).
- CATCH cx_root.
- " handle exception
- ENDTRY.
- IF -%is_draft = if_abap_behv=>mk-on.
- zdsag_classification_utility=>get_dsp_facade( )->get_enqueue( 'ZDSAG_R_CLASSIFICATION' )->get_enqueue_context(
- is_pkey = -%pky )->detach( ).
- ENDIF.
-
- " 'BAPI returned messages are used to display in UI --------
- handle_bapi_return( EXPORTING header_tky = VALUE #( %is_draft = -%is_draft
- %pid = -%pid
- ClassInternalID = -ClassInternalID )
- return = lt_return
- IMPORTING reported = reported
- failed = failed ).
- "
- ENDLOOP.
- ENDMETHOD.
-
- METHOD handle_bapi_return.
- APPEND VALUE #( %tky = header_tky-%tky
- %state_area = 'ERROR' )
- TO reported-classification.
- LOOP AT return INTO DATA(ret).
- CASE ret-type.
- WHEN 'E' OR 'W'.
- IF ret-type = 'E'.
- APPEND VALUE #( %tky = header_tky-%tky ) TO failed-classification.
- ENDIF.
- APPEND VALUE #(
- %tky = header_tky-%tky
- %state_area = 'ERROR'
- %msg = new_message(
- id = ret-id
- number = ret-number
- severity = COND #(
- WHEN ret-type = 'E' THEN if_abap_behv_message=>severity-error
- WHEN ret-type = 'W' THEN if_abap_behv_message=>severity-warning )
- v1 = ret-message_v1
- v2 = ret-message_v2
- v3 = ret-message_v3
- v4 = ret-message_v4 )
- %element-ValidityEndDate = COND #(
- WHEN ret-type = 'E' AND ret-id = 'CL' AND ret-number = '011'
- THEN if_abap_behv=>mk-on )
- %element-Class = COND #(
- WHEN ret-type = 'E' AND ret-id = 'CL' AND ret-number = '002'
- THEN if_abap_behv=>mk-on )
- %element-ValidityStartDate = COND #(
- WHEN ret-type = 'E' AND ret-id = 'CL' AND ret-number = '010'
- THEN if_abap_behv=>mk-on ) )
-
- TO reported-classification.
-
- WHEN OTHERS.
- " No handling for success or information messages
-
- ENDCASE.
- ENDLOOP.
- ENDMETHOD.
-ENDCLASS.
-
-
-CLASS lhc_Description DEFINITION INHERITING FROM cl_abap_behavior_handler.
- PRIVATE SECTION.
- METHODS get_instance_features FOR INSTANCE FEATURES
- IMPORTING keys REQUEST requested_features FOR Description RESULT result.
- METHODS setdefaultvalues FOR DETERMINE ON MODIFY
- IMPORTING keys FOR description~setdefaultvalues.
-
-ENDCLASS.
-
-
-CLASS lhc_Description IMPLEMENTATION.
- METHOD get_instance_features.
- ENDMETHOD.
- METHOD setDefaultValues.
-
- MODIFY ENTITIES OF zdsag_r_Classification IN LOCAL MODE
- ENTITY Description
- UPDATE FIELDS ( LanguageEdit )
- WITH VALUE #(
- ( ClassInternalID = keys[ 1 ]-ClassInternalID
- Language = keys[ 1 ]-language
- %is_draft = keys[ 1 ]-%is_draft
- %pid = keys[ 1 ]-%pid
- %control-LanguageEdit = if_abap_behv=>mk-on
- LanguageEdit = keys[ 1 ]-language ) )
- FAILED DATA(failed).
-
-
- ENDMETHOD.
-
-ENDCLASS.
-
-
-CLASS lhc_Characteristics DEFINITION INHERITING FROM cl_abap_behavior_handler.
- PRIVATE SECTION.
- METHODS get_instance_features FOR INSTANCE FEATURES
- IMPORTING keys REQUEST requested_features FOR Characteristics RESULT result.
-
-ENDCLASS.
-
-
-CLASS lhc_Characteristics IMPLEMENTATION.
- METHOD get_instance_features.
- ENDMETHOD.
-ENDCLASS.
-
-
-CLASS lsc_ZDSAG_R_CLASSIFICATION DEFINITION INHERITING FROM cl_abap_behavior_saver.
- PROTECTED SECTION.
- TYPES ty_header_tky TYPE STRUCTURE FOR PERMISSIONS KEY zdsag_r_Classification\\Classification.
- TYPES ty_bapiret2 TYPE STANDARD TABLE OF bapiret2.
- TYPES ty_reported TYPE RESPONSE FOR REPORTED LATE zdsag_r_Classification.
-
- METHODS adjust_numbers REDEFINITION.
-
- METHODS save_modified REDEFINITION.
-
- METHODS cleanup_finalize REDEFINITION.
-
- METHODS handle_bapi_return
- IMPORTING header_tky TYPE ty_header_tky
- !return TYPE ty_bapiret2
- EXPORTING !reported TYPE ty_reported.
-
- PRIVATE SECTION.
- CLASS-DATA mapped_characteristics TYPE STANDARD TABLE OF zdsag_r_classcharacters.
- CLASS-DATA mapped_descriptions TYPE STANDARD TABLE OF zdsag_r_classdescription.
-
-ENDCLASS.
-
-
-CLASS lsc_ZDSAG_R_CLASSIFICATION IMPLEMENTATION.
-*----------------------------------METHOD adjust_numbers----------------------------------------
- " 1.The assumption is we are creating new "Classification/CL01" via Tier 2 API.
- " "Accessing C1 released Nominated APIs
- " "Messages from BAPI are passed to UI layer.
- " 2. WHY ?? "Adjust Numbers" method instead of "Save Modified"
- " 1.BAPI returns "Classification ID " for new classification instance
- " 2."MAP" key field to RAP Bo instance
- " -------------------------------------------------------------------------------------------------
-
- METHOD adjust_numbers.
- CHECK mapped IS NOT INITIAL.
- DATA lt_return TYPE ty_bapiret2.
- DATA mapped_characteristics TYPE STANDARD TABLE OF zdsag_r_classcharacters.
- DATA mapped_descriptions TYPE STANDARD TABLE OF zdsag_r_classdescription.
- READ ENTITIES OF zdsag_r_Classification IN LOCAL MODE
- ENTITY Classification
- ALL FIELDS WITH CORRESPONDING #( mapped-classification )
- RESULT DATA(classifications)
-*Classification Description 'ZDSAG_R_CLASSDESCRIPTION'
- ENTITY Classification BY \_ClassificationDescription
- ALL FIELDS WITH CORRESPONDING #( mapped-classification )
- LINK DATA(links_descriptions)
- RESULT DATA(descriptions)
-*Classification Characteristic 'ZDSAG_R_CLASSCHARACTERS'
- ENTITY Classification BY \_ClassificationCharacteristic
- ALL FIELDS WITH CORRESPONDING #( mapped-classification )
- LINK DATA(links_characteristics)
- RESULT DATA(Characteristics).
-
- LOOP AT classifications ASSIGNING FIELD-SYMBOL() GROUP BY -%tky.
-
- LOOP AT links_descriptions ASSIGNING FIELD-SYMBOL() USING KEY id WHERE source-%tky = -%tky.
- DATA(description) = descriptions[ KEY id
- %tky = -target-%tky ].
- APPEND CORRESPONDING #( description ) TO mapped_descriptions ASSIGNING FIELD-SYMBOL().
- ENDLOOP.
-
- LOOP AT links_characteristics ASSIGNING FIELD-SYMBOL() USING KEY id WHERE source-%tky = -%tky.
- DATA(characteristic) = Characteristics[ KEY id
- %tky = -target-%tky ].
- APPEND CORRESPONDING #( characteristic ) TO mapped_characteristics.
- ENDLOOP.
- TRY.
- zbp_dsag_r_classification_exte=>bapi_class_create(
- EXPORTING iv_classification = CORRESPONDING #( )
- it_descriptions = mapped_descriptions
- it_characteristics = mapped_characteristics
- test_run = abap_false
- IMPORTING ev_classinternalid = DATA(rs_classinternalid)
- CHANGING return = lt_return ).
- CATCH cx_root.
- " handle exception
- ENDTRY.
-
- " 'BAPI returned messages are used to display in UI --------
-
- handle_bapi_return( EXPORTING header_tky = VALUE #( %is_draft = -%is_draft
- %pid = -%pid
- ClassInternalID = rs_classinternalid )
- return = lt_return
- IMPORTING reported = reported ).
-
- " Here we pass the "Classification Internal ID" returned from BAPI
- " to Mapping parameters so key for this BO instance is mapped
- mapped-classification[ %pid = -%pid ]-ClassInternalID = rs_classinternalid.
- ENDLOOP.
- ENDMETHOD.
-
- METHOD save_modified.
- DATA lt_return TYPE STANDARD TABLE OF bapiret2.
-
- " For Update
- IF update-classification IS NOT INITIAL.
- READ ENTITIES OF zdsag_r_Classification IN LOCAL MODE
- ENTITY Classification
- ALL FIELDS WITH CORRESPONDING #( update-classification )
- RESULT DATA(classifications)
-" Classification Description 'ZDSAG_R_CLASSDESCRIPTION'
- ENTITY Classification BY \_ClassificationDescription
- ALL FIELDS WITH CORRESPONDING #( update-classification )
- LINK DATA(links_descriptions)
- RESULT DATA(descriptions)
-" Classification Characteristic 'ZDSAG_R_CLASSCHARACTERS'
- ENTITY Classification BY \_ClassificationCharacteristic
- ALL FIELDS WITH CORRESPONDING #( update-classification )
- LINK DATA(links_characteristics)
- RESULT DATA(Characteristics).
-
- LOOP AT classifications ASSIGNING FIELD-SYMBOL() GROUP BY -%tky.
-
- LOOP AT links_descriptions ASSIGNING FIELD-SYMBOL() USING KEY id WHERE source-%tky = -%tky.
- DATA(description) = descriptions[ KEY id
- %tky = -target-%tky ].
- APPEND CORRESPONDING #( description ) TO mapped_descriptions.
- ENDLOOP.
- LOOP AT create-description ASSIGNING FIELD-SYMBOL() GROUP BY -%tky.
- APPEND CORRESPONDING #( ) TO mapped_descriptions.
- ENDLOOP.
- LOOP AT links_characteristics ASSIGNING FIELD-SYMBOL() USING KEY id WHERE source-%tky = -%tky.
- DATA(characteristic) = Characteristics[ KEY id
- %tky = -target-%tky ].
- APPEND CORRESPONDING #( characteristic ) TO mapped_characteristics.
- ENDLOOP.
- LOOP AT create-characteristics ASSIGNING FIELD-SYMBOL() GROUP BY -%tky.
- APPEND CORRESPONDING #( ) TO mapped_characteristics.
- ENDLOOP.
-
- TRY.
- zbp_dsag_r_classification_exte=>bapi_class_change(
- EXPORTING iv_classification = CORRESPONDING #( )
- it_descriptions = mapped_descriptions
- it_characteristics = mapped_characteristics
- test_run = abap_false
- CHANGING return = lt_return ).
- CATCH cx_root.
- " handle exception
- ENDTRY.
-
- " 'BAPI returned messages are used to display in UI --------
- handle_bapi_return( EXPORTING header_tky = VALUE #( %is_draft = -%is_draft
- %pid = -%pid
- ClassInternalID = -ClassInternalID )
- return = lt_return
- IMPORTING reported = reported ).
-
- ENDLOOP.
- ENDIF.
- " For Action
- LOOP AT zbp_dsag_r_classification=>it_assignment_details ASSIGNING FIELD-SYMBOL().
-
- TRY.
- zbp_dsag_r_classification_exte=>bapi_objcl_create(
- EXPORTING classnumnew = -classinternalid
- classtypenew = -ClassType
- objectkeynew = CONV #( -material_number )
- CHANGING return = lt_return ).
- CATCH cx_root.
- ENDTRY.
- handle_bapi_return( EXPORTING header_tky = VALUE #( ClassInternalID = -ClassInternalID )
- return = lt_return
- IMPORTING reported = reported ).
-
- ENDLOOP.
- ENDMETHOD.
-
- METHOD cleanup_finalize.
- ENDMETHOD.
- " ----------------------------------METHOD handle_bpi_return----------------------------------------
- " 1. Handling of BAPI messages
- " -------------------------------------------------------------------------------------------------
-
- METHOD handle_bapi_return.
- LOOP AT return INTO DATA(ret).
- IF ( ret-id = 'CL' AND ret-number = '802' ) .
- " Skip some default messages from classic world for example :Start of class processing: ..
- ELSE.
- CASE ret-type.
- WHEN 'S' OR 'I' OR 'E' OR 'W'.
- APPEND VALUE #(
- %tky = header_tky-%tky
- %msg = new_message(
- id = ret-id
- number = ret-number
- severity = COND #( WHEN ret-type = 'S' THEN if_abap_behv_message=>severity-success
- WHEN ret-type = 'I' THEN if_abap_behv_message=>severity-information
- WHEN ret-type = 'E' THEN if_abap_behv_message=>severity-error
- WHEN ret-type = 'W' THEN if_abap_behv_message=>severity-warning
- ELSE if_abap_behv_message=>severity-none )
- v1 = ret-message_v1
- v2 = ret-message_v2
- v3 = ret-message_v3
- v4 = ret-message_v4 ) )
- TO reported-classification.
-
- WHEN OTHERS.
- ENDCASE.
- ENDIF.
- ENDLOOP.
- ENDMETHOD.
-ENDCLASS.
diff --git a/src/ZDSAG_CLASIFICATION_CLOUD/zdsag_a_classification_create.ddls.asddls b/src/ZDSAG_CLASIFICATION_CLOUD/zdsag_a_classification_create.ddls.asddls
deleted file mode 100644
index b525bfc..0000000
--- a/src/ZDSAG_CLASIFICATION_CLOUD/zdsag_a_classification_create.ddls.asddls
+++ /dev/null
@@ -1,7 +0,0 @@
-@EndUserText.label: 'Abstract Entity for classification creation'
-define abstract entity ZDSAG_A_CLASSIFICATION_CREATE
-{
- classificationid : abap.numc(10);
- ClassType : abap.char(3);
- Class : abap.char(18);
-}
diff --git a/src/ZDSAG_CLASIFICATION_CLOUD/zdsag_c_classcharacters.ddls.asddls b/src/ZDSAG_CLASIFICATION_CLOUD/zdsag_c_classcharacters.ddls.asddls
deleted file mode 100644
index 35175c9..0000000
--- a/src/ZDSAG_CLASIFICATION_CLOUD/zdsag_c_classcharacters.ddls.asddls
+++ /dev/null
@@ -1,21 +0,0 @@
-@AccessControl.authorizationCheck: #NOT_REQUIRED
-@EndUserText.label: 'Classification Characteristics C view'
-@Metadata.allowExtensions: true
-define view entity ZDSAG_C_CLASSCHARACTERS
- as projection on ZDSAG_R_CLASSCHARACTERS
-{
- key ClassInternalID,
- key CharcPositionNumber,
- @Consumption.valueHelpDefinition: [{ entity: { name: 'I_ClfnCharcDesc', element: 'CharcInternalID' } }]
- @ObjectModel.text.element: ['CharacteristicName']
-
- CharcInternalID,
- _CharacteristicsName.Characteristic as CharacteristicName,
-
- _ClassCharDescription[1:Language = $session.system_language].CharcDescription as CharacteristicDescription,
-
- /* Associations */
- _CharacteristicsName,
- _ClassCharDescription,
- _Classfications : redirected to parent ZDSAG_C_CLASSIFICATION
-}
diff --git a/src/ZDSAG_CLASIFICATION_CLOUD/zdsag_c_classcharacters.ddls.baseinfo b/src/ZDSAG_CLASIFICATION_CLOUD/zdsag_c_classcharacters.ddls.baseinfo
deleted file mode 100644
index b34e1e2..0000000
--- a/src/ZDSAG_CLASIFICATION_CLOUD/zdsag_c_classcharacters.ddls.baseinfo
+++ /dev/null
@@ -1,28 +0,0 @@
-{
-"BASEINFO":
-{
-"FROM":
-[
-"I_CLFNCHARCDESC",
-"ZDSAG_R_CABN",
-"ZDSAG_R_CLASSCHARACTERS"
-],
-"ASSOCIATED":
-[
-"I_CLFNCHARCDESC",
-"ZDSAG_C_CLASSIFICATION",
-"ZDSAG_R_CABN",
-"ZDSAG_R_CLASSIFICATION"
-],
-"BASE":
-[
-"ZDSAG_R_CLASSCHARACTERS"
-],
-"ANNO_REF":
-[],
-"SCALAR_FUNCTION":
-[],
-"VERSION":0,
-"ANNOREF_EVALUATION_ERROR":""
-}
-}
\ No newline at end of file
diff --git a/src/ZDSAG_CLASIFICATION_CLOUD/zdsag_c_classcharacters.ddls.xml b/src/ZDSAG_CLASIFICATION_CLOUD/zdsag_c_classcharacters.ddls.xml
deleted file mode 100644
index b5da23d..0000000
--- a/src/ZDSAG_CLASIFICATION_CLOUD/zdsag_c_classcharacters.ddls.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
-
- ZDSAG_C_CLASSCHARACTERS
- E
- Classification Characteristics C view
- P
-
-
-
-
diff --git a/src/ZDSAG_CLASIFICATION_CLOUD/zdsag_c_classcharacters.ddlx.asddlxs b/src/ZDSAG_CLASIFICATION_CLOUD/zdsag_c_classcharacters.ddlx.asddlxs
deleted file mode 100644
index 32e0c0f..0000000
--- a/src/ZDSAG_CLASIFICATION_CLOUD/zdsag_c_classcharacters.ddlx.asddlxs
+++ /dev/null
@@ -1,19 +0,0 @@
-@Metadata.layer: #CUSTOMER
-
-annotate view ZDSAG_C_CLASSCHARACTERS
- with
-
-{
- @UI.facet: [ { id: 'Characteristics',
- purpose: #STANDARD,
- type: #IDENTIFICATION_REFERENCE,
- label: 'Characteristics',
- position: 10 } ]
- @UI.identification: [ { position: 10 } ]
- @UI.lineItem: [ { position: 10, importance: #HIGH } ]
- CharcInternalID;
-
- @UI.identification: [ { position: 20 } ]
- @UI.lineItem: [ { position: 20, importance: #HIGH } ]
- CharacteristicDescription;
-}
\ No newline at end of file
diff --git a/src/ZDSAG_CLASIFICATION_CLOUD/zdsag_c_classcharacters.ddlx.xml b/src/ZDSAG_CLASIFICATION_CLOUD/zdsag_c_classcharacters.ddlx.xml
deleted file mode 100644
index c529b42..0000000
--- a/src/ZDSAG_CLASIFICATION_CLOUD/zdsag_c_classcharacters.ddlx.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-
-
-
-
- ZDSAG_C_CLASSCHARACTERS
- Classification Characteristics MDE
- EN
-
-
-
-
-
diff --git a/src/ZDSAG_CLASIFICATION_CLOUD/zdsag_c_classdescription.ddls.asddls b/src/ZDSAG_CLASIFICATION_CLOUD/zdsag_c_classdescription.ddls.asddls
deleted file mode 100644
index 694069c..0000000
--- a/src/ZDSAG_CLASIFICATION_CLOUD/zdsag_c_classdescription.ddls.asddls
+++ /dev/null
@@ -1,16 +0,0 @@
-@AccessControl.authorizationCheck: #NOT_REQUIRED
-@EndUserText.label: 'Classification Decription C View'
-@Metadata.allowExtensions: true
-define view entity ZDSAG_C_CLASSDESCRIPTION
- as projection on ZDSAG_R_CLASSDESCRIPTION
-{
- key ClassInternalID,
- @Consumption.valueHelpDefinition: [{ entity: { name : 'I_Language', element : 'Language' } }]
- key Language,
- @Consumption.valueHelpDefinition: [{ entity: { name : 'I_Language', element : 'Language' } }]
- LanguageEdit,
- ClassDescription,
- /* Associations */
- _Class,
- _Classfications : redirected to parent ZDSAG_C_CLASSIFICATION
-}
diff --git a/src/ZDSAG_CLASIFICATION_CLOUD/zdsag_c_classdescription.ddls.baseinfo b/src/ZDSAG_CLASIFICATION_CLOUD/zdsag_c_classdescription.ddls.baseinfo
deleted file mode 100644
index 5456852..0000000
--- a/src/ZDSAG_CLASIFICATION_CLOUD/zdsag_c_classdescription.ddls.baseinfo
+++ /dev/null
@@ -1,25 +0,0 @@
-{
-"BASEINFO":
-{
-"FROM":
-[
-"ZDSAG_R_CLASSDESCRIPTION"
-],
-"ASSOCIATED":
-[
-"I_CLFNCLASS",
-"ZDSAG_C_CLASSIFICATION",
-"ZDSAG_R_CLASSIFICATION"
-],
-"BASE":
-[
-"ZDSAG_R_CLASSDESCRIPTION"
-],
-"ANNO_REF":
-[],
-"SCALAR_FUNCTION":
-[],
-"VERSION":0,
-"ANNOREF_EVALUATION_ERROR":""
-}
-}
\ No newline at end of file
diff --git a/src/ZDSAG_CLASIFICATION_CLOUD/zdsag_c_classdescription.ddls.xml b/src/ZDSAG_CLASIFICATION_CLOUD/zdsag_c_classdescription.ddls.xml
deleted file mode 100644
index e52f450..0000000
--- a/src/ZDSAG_CLASIFICATION_CLOUD/zdsag_c_classdescription.ddls.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
-
- ZDSAG_C_CLASSDESCRIPTION
- E
- Classification Decription C View
- P
-
-
-
-
diff --git a/src/ZDSAG_CLASIFICATION_CLOUD/zdsag_c_classdescription.ddlx.asddlxs b/src/ZDSAG_CLASIFICATION_CLOUD/zdsag_c_classdescription.ddlx.asddlxs
deleted file mode 100644
index a1df68b..0000000
--- a/src/ZDSAG_CLASIFICATION_CLOUD/zdsag_c_classdescription.ddlx.asddlxs
+++ /dev/null
@@ -1,24 +0,0 @@
-@Metadata.layer: #CUSTOMER
-
-@UI.headerInfo: { typeName: 'Description',
- typeNamePlural: 'Descriptions',
- title: { type: #STANDARD, value: 'ClassDescription' } }
-
-annotate view ZDSAG_C_CLASSDESCRIPTION with
-
-{
- @UI.facet: [ { id: 'Description',
- purpose: #STANDARD,
- type: #IDENTIFICATION_REFERENCE,
- label: 'Description',
- position: 10 } ]
- @UI.lineItem: [ { position: 10, importance: #HIGH } ]
- Language;
-
- @UI.identification: [ { position: 10 } ]
- LanguageEdit;
-
- @UI.identification: [ { position: 20 } ]
- @UI.lineItem: [ { position: 20, importance: #HIGH } ]
- ClassDescription;
-}
\ No newline at end of file
diff --git a/src/ZDSAG_CLASIFICATION_CLOUD/zdsag_c_classdescription.ddlx.xml b/src/ZDSAG_CLASIFICATION_CLOUD/zdsag_c_classdescription.ddlx.xml
deleted file mode 100644
index 4dae2b1..0000000
--- a/src/ZDSAG_CLASIFICATION_CLOUD/zdsag_c_classdescription.ddlx.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-
-
-
-
- ZDSAG_C_CLASSDESCRIPTION
- Classification Description MDE
- EN
-
-
-
-
-
diff --git a/src/ZDSAG_CLASIFICATION_CLOUD/zdsag_c_classification.bdef.asbdef b/src/ZDSAG_CLASIFICATION_CLOUD/zdsag_c_classification.bdef.asbdef
deleted file mode 100644
index 82c2946..0000000
--- a/src/ZDSAG_CLASIFICATION_CLOUD/zdsag_c_classification.bdef.asbdef
+++ /dev/null
@@ -1,38 +0,0 @@
-projection;
-strict ( 2 );
-use draft;
-use side effects;
-
-define behavior for ZDSAG_C_CLASSIFICATION alias Classification
-{
- use create;
- use update;
-
- use action assign_class_to_material;
-
- use action Edit;
- use action Resume;
- use action Activate;
- use action Discard;
- use action Prepare;
-
- use association _ClassificationDescription { create; with draft; }
- use association _ClassificationCharacteristic { create; with draft; }
-}
-
-define behavior for ZDSAG_C_CLASSCHARACTERS alias Characteristics
-{
- use update;
- use delete;
-
- side effects { field CharcInternalID affects field CharacteristicDescription; }
-
- use association _Classfications { with draft; }
-}
-
-define behavior for ZDSAG_C_CLASSDESCRIPTION alias Description
-{
- use update;
- use delete;
- use association _Classfications { with draft; }
-}
\ No newline at end of file
diff --git a/src/ZDSAG_CLASIFICATION_CLOUD/zdsag_c_classification.ddls.asddls b/src/ZDSAG_CLASIFICATION_CLOUD/zdsag_c_classification.ddls.asddls
deleted file mode 100644
index 5330b31..0000000
--- a/src/ZDSAG_CLASIFICATION_CLOUD/zdsag_c_classification.ddls.asddls
+++ /dev/null
@@ -1,42 +0,0 @@
-@AccessControl.authorizationCheck: #NOT_REQUIRED
-@EndUserText.label: 'Classification Creation C view'
-@Metadata.ignorePropagatedAnnotations: true
-@Metadata.allowExtensions: true
-define root view entity ZDSAG_C_CLASSIFICATION
- provider contract transactional_query
- as projection on ZDSAG_R_CLASSIFICATION
-{
- @Consumption.valueHelpDefinition: [{ entity: { name: 'I_ClfnClassDescription', element: 'ClassInternalID' } }]
-
-
- key ClassInternalID,
-
- @Consumption.valueHelpDefinition: [{ entity: { name: 'I_ClfnClassTypeStdVH', element: 'ClassType' },useForValidation: true } ]
- @ObjectModel.text.element: ['ClassTypeName']
- ClassType,
- _ClassType.ClassTypeName as ClassTypeName : localized,
-
- @ObjectModel.text.element: ['ClassDescription']
- Class,
- _ClassDescription.ClassDescription as ClassDescription : localized,
- @Consumption.valueHelpDefinition: [{ entity: { name: 'I_ClfnClassStatusStdVH', element: 'ClassStatus' },
- additionalBinding: [{ element: 'ClassType', localElement: 'ClassType',usage: #FILTER }] }]
- @ObjectModel.text.element: ['ClassStatusName']
- ClassStatus,
- _ClassStatus.ClassStatusName as ClassStatusName,
- CreatedByUser,
- CreationDate,
- LastChangedByUser,
- LastChangeDate,
- ValidityStartDate,
- ValidityEndDate,
- ClassLastChangedDateTime,
- /* Associations */
- _ClassCharacteristic,
- _ClassDescription,
- _ClassStatus,
- _ClassType,
- _ProductHelper,
- _ClassificationDescription : redirected to composition child ZDSAG_C_CLASSDESCRIPTION,
- _ClassificationCharacteristic : redirected to composition child ZDSAG_C_CLASSCHARACTERS
-}
diff --git a/src/ZDSAG_CLASIFICATION_CLOUD/zdsag_c_classification.ddls.baseinfo b/src/ZDSAG_CLASIFICATION_CLOUD/zdsag_c_classification.ddls.baseinfo
deleted file mode 100644
index b90c6bf..0000000
--- a/src/ZDSAG_CLASIFICATION_CLOUD/zdsag_c_classification.ddls.baseinfo
+++ /dev/null
@@ -1,34 +0,0 @@
-{
-"BASEINFO":
-{
-"FROM":
-[
-"I_CLFNCLASSDESCRIPTION",
-"I_CLFNCLASSSTATUSTEXT",
-"I_CLFNCLASSTYPETEXT",
-"ZDSAG_R_CLASSIFICATION"
-],
-"ASSOCIATED":
-[
-"I_CLFNCLASSCHARACTERISTICDEX",
-"I_CLFNCLASSDESCRIPTION",
-"I_CLFNCLASSSTATUSTEXT",
-"I_CLFNCLASSTYPETEXT",
-"ZDSAG_C_CLASSCHARACTERS",
-"ZDSAG_C_CLASSDESCRIPTION",
-"ZDSAG_PRODUCT_HELPER",
-"ZDSAG_R_CLASSCHARACTERS",
-"ZDSAG_R_CLASSDESCRIPTION"
-],
-"BASE":
-[
-"ZDSAG_R_CLASSIFICATION"
-],
-"ANNO_REF":
-[],
-"SCALAR_FUNCTION":
-[],
-"VERSION":0,
-"ANNOREF_EVALUATION_ERROR":""
-}
-}
\ No newline at end of file
diff --git a/src/ZDSAG_CLASIFICATION_CLOUD/zdsag_c_classification.ddlx.asddlxs b/src/ZDSAG_CLASIFICATION_CLOUD/zdsag_c_classification.ddlx.asddlxs
deleted file mode 100644
index baf1fbe..0000000
--- a/src/ZDSAG_CLASIFICATION_CLOUD/zdsag_c_classification.ddlx.asddlxs
+++ /dev/null
@@ -1,73 +0,0 @@
-@Metadata.layer: #CUSTOMER
-
-@UI.headerInfo: { typeName: 'Classification',
- typeNamePlural: 'Classifications',
- title: { type: #STANDARD, value: 'ClassInternalID', label: 'Classification ID' } }
-
-@UI.presentationVariant: [ { sortOrder: [ { by: 'ClassInternalID', direction: #DESC } ],
- visualizations: [ { type: #AS_LINEITEM } ] } ]
-
-annotate view ZDSAG_C_CLASSIFICATION with
-
-{
- @EndUserText.label: 'Class ID'
- ClassInternalID;
-
- @Search.defaultSearchElement: true
- @Search.ranking: #MEDIUM
- @UI.facet: [ { type: #IDENTIFICATION_REFERENCE, label: 'Classification Type', position: 10 },
- { id: 'Description',
- purpose: #STANDARD,
- type: #LINEITEM_REFERENCE,
- label: 'Description',
- position: 20,
- targetElement: '_ClassificationDescription' },
- { id: 'Characteristics',
- purpose: #STANDARD,
- type: #LINEITEM_REFERENCE,
- label: 'Characteristics',
- position: 30,
- targetElement: '_ClassificationCharacteristic' },
- { id: 'Assignment',
- purpose: #STANDARD,
- type: #LINEITEM_REFERENCE,
- label: 'Products Assigned',
- position: 40,
- targetElement: '_ProductHelper' } ]
- @UI.identification: [ { position: 10 } ]
- @UI.lineItem: [ { position: 10 } ]
- @UI.selectionField: [ { position: 10 } ]
- ClassType;
-
- @Search.defaultSearchElement: true
- @Search.ranking: #MEDIUM
- @UI.identification: [ { position: 20 },
- { type: #FOR_ACTION,
- dataAction: 'assign_class_to_material',
- label: 'Assign Classification To Material' } ]
- @UI.lineItem: [ { position: 20 },
- { type: #FOR_ACTION,
- dataAction: 'assign_class_to_material',
- label: 'Assign Classification To Material',
- invocationGrouping: #CHANGE_SET } ]
- @UI.selectionField: [ { position: 20 } ]
- Class;
-
- @UI.identification: [ { position: 30 } ]
- @UI.lineItem: [ { position: 30 } ]
- @UI.selectionField: [ { position: 30 } ]
-
- ClassStatus;
-
- @UI.identification: [ { position: 40 } ]
- @UI.lineItem: [ { position: 30 } ]
- @UI.selectionField: [ { position: 40 } ]
-
- ValidityStartDate;
-
- @UI.identification: [ { position: 50 } ]
- @UI.lineItem: [ { position: 50 } ]
- @UI.selectionField: [ { position: 50 } ]
-
- ValidityEndDate;
-}
\ No newline at end of file
diff --git a/src/ZDSAG_CLASIFICATION_CLOUD/zdsag_classification.msag.xml b/src/ZDSAG_CLASIFICATION_CLOUD/zdsag_classification.msag.xml
deleted file mode 100644
index a293ba0..0000000
--- a/src/ZDSAG_CLASIFICATION_CLOUD/zdsag_classification.msag.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
-
- ZDSAG_CLASSIFICATION
- E
- Custom Message
-
-
-
- E
- ZDSAG_CLASSIFICATION
- 001
- Class Type &1 does not exist. Please choose other option.
-
-
- E
- ZDSAG_CLASSIFICATION
- 002
- Material &1 is locked by user &2.
-
-
-
-
-
diff --git a/src/ZDSAG_CLASIFICATION_CLOUD/zdsag_demo.evtb.json b/src/ZDSAG_CLASIFICATION_CLOUD/zdsag_demo.evtb.json
deleted file mode 100644
index b6f2f8b..0000000
--- a/src/ZDSAG_CLASIFICATION_CLOUD/zdsag_demo.evtb.json
+++ /dev/null
@@ -1,21 +0,0 @@
-{
- "formatVersion": "1",
- "header": {
- "description": "Event Binding",
- "originalLanguage": "en",
- "abapLanguageVersion": "cloudDevelopment"
- },
- "producerNamespace": "zdsag.demo",
- "producer": "PEE4A3BE4C0632EF74684B7AA9C7A39E4",
- "producerVersion": "0001",
- "boName": "EventClassification",
- "boOperation": "Created",
- "producerType": "zdsag.demo.EventClassification.Created.v*",
- "events": [
- {
- "eventVersion": "0001",
- "entityName": "ZDSAG_R_CLASSIFICATION",
- "entityEventName": "CLASSIFICATIONCREATED"
- }
- ]
-}
diff --git a/src/ZDSAG_CLASIFICATION_CLOUD/zdsag_i_materialvh.ddls.asddls b/src/ZDSAG_CLASIFICATION_CLOUD/zdsag_i_materialvh.ddls.asddls
deleted file mode 100644
index 15203dc..0000000
--- a/src/ZDSAG_CLASIFICATION_CLOUD/zdsag_i_materialvh.ddls.asddls
+++ /dev/null
@@ -1,19 +0,0 @@
-@AbapCatalog.viewEnhancementCategory: [#NONE]
-@AccessControl.authorizationCheck: #NOT_REQUIRED
-@EndUserText.label: 'Mitigate Material Value Help'
-@Search.searchable: true
-@ObjectModel.dataCategory: #VALUE_HELP
-@ObjectModel.usageType.serviceQuality: #A
-@ObjectModel.usageType.sizeCategory : #L
-@ObjectModel.usageType.dataClass: #MASTER
-@Consumption.ranked: true
-define view entity ZDSAG_I_MaterialVH as select from I_Product
- association [0..1] to I_ProductDescription_2 as _ProductDescription on $projection.Product = _ProductDescription.Product
- and _ProductDescription.Language = $session.system_language
-
-{
- key Product ,
- ProductType,
- _ProductDescription.ProductDescription,
- _ProductDescription
-}
diff --git a/src/ZDSAG_CLASIFICATION_CLOUD/zdsag_parameter_matnr_detail.ddls.asddls b/src/ZDSAG_CLASIFICATION_CLOUD/zdsag_parameter_matnr_detail.ddls.asddls
deleted file mode 100644
index c97b3bc..0000000
--- a/src/ZDSAG_CLASIFICATION_CLOUD/zdsag_parameter_matnr_detail.ddls.asddls
+++ /dev/null
@@ -1,8 +0,0 @@
-@EndUserText.label: 'Assignmnet Of Classification to Material'
-define abstract entity ZDSAG_PARAMETER_MATNR_DETAIL
-{
- @EndUserText.label: 'Material'
-@Consumption.valueHelpDefinition: [{ entity: { name: 'I_ProductStdVH', element: 'Product' } }]
- object : matnr;
-
-}
diff --git a/src/ZDSAG_CLASIFICATION_CLOUD/zdsag_product_helper.ddls.asddls b/src/ZDSAG_CLASIFICATION_CLOUD/zdsag_product_helper.ddls.asddls
deleted file mode 100644
index c4ff0d0..0000000
--- a/src/ZDSAG_CLASIFICATION_CLOUD/zdsag_product_helper.ddls.asddls
+++ /dev/null
@@ -1,33 +0,0 @@
-@EndUserText.label: 'Product Helper'
-@Metadata.ignorePropagatedAnnotations: true
-@UI:{ headerInfo:{
- typeName: 'Assignment',
- typeNamePlural: 'Assignments',
- title: { type: #STANDARD,value: 'ClfnObjectID', label: 'Product' }},
-presentationVariant:[{
- sortOrder: [{ by:'ClfnObjectID', direction:#ASC}], visualizations: [{type: #AS_LINEITEM }] }] }
-
-
-define view entity ZDSAG_PRODUCT_HELPER
- as select from I_ClfnObjectClassDEX
- association [0..1] to I_ProductDescription_2 as _ProductDescription on $projection.ClfnObjectID = _ProductDescription.Product
- and _ProductDescription.Language = $session.system_language
-
-{
- @UI.facet: [{ id: 'Assignment',
- purpose: #STANDARD,
- type: #IDENTIFICATION_REFERENCE,
- label: 'Products Assignment',
- position: 10 }]
- @UI: { identification: [ { position:10 } ],
- lineItem: [ { position:10 } ] }
- key ClfnObjectID,
- key ClassInternalID,
- key ClassType,
- @UI: { identification: [ { position:20 } ],
- lineItem: [ { position:20 } ] }
- _ProductDescription.ProductDescription,
- /* Associations */
- _Class,
- _ProductDescription
-}
diff --git a/src/ZDSAG_CLASIFICATION_CLOUD/zdsag_r_classcharacters.ddls.asddls b/src/ZDSAG_CLASIFICATION_CLOUD/zdsag_r_classcharacters.ddls.asddls
deleted file mode 100644
index ac4e59b..0000000
--- a/src/ZDSAG_CLASIFICATION_CLOUD/zdsag_r_classcharacters.ddls.asddls
+++ /dev/null
@@ -1,19 +0,0 @@
-@AbapCatalog.viewEnhancementCategory: [#NONE]
-@AccessControl.authorizationCheck: #NOT_REQUIRED
-@EndUserText.label: 'Classification Characteristics'
-define view entity ZDSAG_R_CLASSCHARACTERS
- as select from I_ClfnClassCharacteristicDEX
- association to parent ZDSAG_R_CLASSIFICATION as _Classfications on $projection.ClassInternalID = _Classfications.ClassInternalID
-
- association [0..1] to ZDSAG_R_CABN as _CharacteristicsName on _CharacteristicsName.CharcInternalID = $projection.CharcInternalID
- association [0..*] to I_ClfnCharcDesc as _ClassCharDescription on _ClassCharDescription.CharcInternalID = $projection.CharcInternalID
-
-{
- key ClassInternalID,
- key CharcPositionNumber,
- CharcInternalID,
- /* Associations */
- _Classfications,
- _CharacteristicsName,
- _ClassCharDescription
-}
diff --git a/src/ZDSAG_CLASIFICATION_CLOUD/zdsag_r_classdescription.ddls.asddls b/src/ZDSAG_CLASIFICATION_CLOUD/zdsag_r_classdescription.ddls.asddls
deleted file mode 100644
index 92ed6c5..0000000
--- a/src/ZDSAG_CLASIFICATION_CLOUD/zdsag_r_classdescription.ddls.asddls
+++ /dev/null
@@ -1,16 +0,0 @@
-@AbapCatalog.viewEnhancementCategory: [#NONE]
-@AccessControl.authorizationCheck: #NOT_REQUIRED
-@EndUserText.label: 'Classification Description'
-define view entity ZDSAG_R_CLASSDESCRIPTION
- as select from I_ClfnClassDescription
- association to parent ZDSAG_R_CLASSIFICATION as _Classfications on $projection.ClassInternalID = _Classfications.ClassInternalID
-
-{
- key ClassInternalID,
- key Language,
- Language as LanguageEdit,
- ClassDescription,
- /* Associations */
- _Class,
- _Classfications
-}
diff --git a/src/ZDSAG_CLASIFICATION_CLOUD/zdsag_r_classdescription.ddls.xml b/src/ZDSAG_CLASIFICATION_CLOUD/zdsag_r_classdescription.ddls.xml
deleted file mode 100644
index 5d941d4..0000000
--- a/src/ZDSAG_CLASIFICATION_CLOUD/zdsag_r_classdescription.ddls.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
-
- ZDSAG_R_CLASSDESCRIPTION
- E
- Classification Description
- W
-
-
-
-
diff --git a/src/ZDSAG_CLASIFICATION_CLOUD/zdsag_r_classification.bdef.asbdef b/src/ZDSAG_CLASIFICATION_CLOUD/zdsag_r_classification.bdef.asbdef
deleted file mode 100644
index eb445a5..0000000
--- a/src/ZDSAG_CLASIFICATION_CLOUD/zdsag_r_classification.bdef.asbdef
+++ /dev/null
@@ -1,88 +0,0 @@
-managed with unmanaged save implementation in class zbp_dsag_r_classification unique;
-strict ( 2 );
-with draft;
-extensible;
-define behavior for ZDSAG_R_CLASSIFICATION alias Classification
-with unmanaged save
-late numbering
-draft table zdsag_class_d
-etag master ClassLastChangedDateTime
-lock master unmanaged total etag ClassLastChangedDateTime
-authorization master ( instance )
-extensible
-
-{
- field ( readonly ) ClassInternalID;
- field ( mandatory : create, readonly : update ) ClassType;
-
- create;
- update;
- delete;
-
- event ClassificationCreated parameter ZDSAG_A_CLASSIFICATION_CREATE;
-
- // Early save validations
- validation check_if_classtype_exists on save { create; field ClassType; }
- validation simulate_create on save { create; update; }
-
- determination setDefaultValues on modify { create; }
-
- action ( features : instance ) assign_class_to_material parameter ZDSAG_PARAMETER_MATNR_DETAIL result [1] $self;
-
- side effects
- {
- action assign_class_to_material affects $self;
- }
- association _ClassificationDescription { create; with draft; }
- association _ClassificationCharacteristic { create; with draft; }
-
- draft action Edit;
- draft action Resume;
- draft action Activate optimized;
- draft action Discard;
-
- draft determine action Prepare
- {
- validation check_if_classtype_exists;
- validation simulate_create;
- }
-}
-
-
-define behavior for ZDSAG_R_CLASSDESCRIPTION alias Description
-draft table zdsag_desc_d
-etag dependent by _Classfications
-lock dependent by _Classfications
-authorization dependent by _Classfications
-late numbering
-with unmanaged save
-extensible
-{
- field ( readonly ) ClassInternalID;
- field ( readonly : update ) Language;
- field ( mandatory ) ClassDescription;
- determination setDefaultValues on modify { create; }
-
- update ( features : instance );
- delete;
- association _Classfications { with draft; }
-}
-
-
-define behavior for ZDSAG_R_CLASSCHARACTERS alias Characteristics
-draft table zdsag_char_d
-etag dependent by _Classfications
-lock dependent by _Classfications
-authorization dependent by _Classfications
-late numbering
-with unmanaged save
-extensible
-{
- field ( readonly ) ClassInternalID, CharcPositionNumber;
- field ( mandatory ) CharcInternalID;
-
- update ( features : instance );
- delete;
-
- association _Classfications { with draft; }
-}
\ No newline at end of file
diff --git a/src/ZDSAG_CLASIFICATION_CLOUD/zdsag_r_classification.ddls.asddls b/src/ZDSAG_CLASIFICATION_CLOUD/zdsag_r_classification.ddls.asddls
deleted file mode 100644
index 77458a6..0000000
--- a/src/ZDSAG_CLASIFICATION_CLOUD/zdsag_r_classification.ddls.asddls
+++ /dev/null
@@ -1,38 +0,0 @@
-@AccessControl.authorizationCheck: #NOT_REQUIRED
-@EndUserText.label: 'Classification Creation R view'
-define root view entity ZDSAG_R_CLASSIFICATION
- as select from I_ClfnClassDEX
- composition [0..*] of ZDSAG_R_CLASSDESCRIPTION as _ClassificationDescription
- composition [0..*] of ZDSAG_R_CLASSCHARACTERS as _ClassificationCharacteristic
- association [0..*] to I_ClfnClassTypeText as _ClassType on _ClassType.ClassType = $projection.ClassType
- association [0..*] to I_ClfnClassDescription as _ClassDescription on _ClassDescription.ClassInternalID = $projection.ClassInternalID
- association [0..1] to I_ClfnClassStatusText as _ClassStatus on $projection.ClassStatus = _ClassStatus.ClassStatus
- and $projection.ClassType = _ClassStatus.ClassType
- and _ClassStatus.Language = $session.system_language
- association [0..*] to ZDSAG_PRODUCT_HELPER as _ProductHelper on $projection.ClassInternalID = _ProductHelper.ClassInternalID
- and $projection.ClassType = _ProductHelper.ClassType
-{
- key ClassInternalID,
- ClassType,
- Class,
- ClassStatus,
- @Semantics.user.createdBy: true
- CreatedByUser,
- CreationDate,
- @Semantics.user.localInstanceLastChangedBy: true
- LastChangedByUser,
- LastChangeDate,
- ValidityStartDate,
- ValidityEndDate,
- @Semantics.systemDateTime.localInstanceLastChangedAt: true
- @Semantics.systemDateTime.lastChangedAt: true
- ClassLastChangedDateTime,
- /* Associations */
- _ClassCharacteristic,
- _ClassDescription,
- _ClassStatus,
- _ClassType,
- _ClassificationDescription,
- _ClassificationCharacteristic,
- _ProductHelper
-}
diff --git a/src/ZDSAG_CLASIFICATION_CLOUD/zdsag_r_classification.ddls.baseinfo b/src/ZDSAG_CLASIFICATION_CLOUD/zdsag_r_classification.ddls.baseinfo
deleted file mode 100644
index 1718d21..0000000
--- a/src/ZDSAG_CLASIFICATION_CLOUD/zdsag_r_classification.ddls.baseinfo
+++ /dev/null
@@ -1,29 +0,0 @@
-{
-"BASEINFO":
-{
-"FROM":
-[
-"I_CLFNCLASSDEX"
-],
-"ASSOCIATED":
-[
-"I_CLFNCLASSCHARACTERISTICDEX",
-"I_CLFNCLASSDESCRIPTION",
-"I_CLFNCLASSSTATUSTEXT",
-"I_CLFNCLASSTYPETEXT",
-"ZDSAG_PRODUCT_HELPER",
-"ZDSAG_R_CLASSCHARACTERS",
-"ZDSAG_R_CLASSDESCRIPTION"
-],
-"BASE":
-[
-"I_CLFNCLASSDEX"
-],
-"ANNO_REF":
-[],
-"SCALAR_FUNCTION":
-[],
-"VERSION":0,
-"ANNOREF_EVALUATION_ERROR":""
-}
-}
\ No newline at end of file
diff --git a/src/ZDSAG_CLASIFICATION_CLOUD/zdsag_r_classification.ddls.xml b/src/ZDSAG_CLASIFICATION_CLOUD/zdsag_r_classification.ddls.xml
deleted file mode 100644
index 1fb4886..0000000
--- a/src/ZDSAG_CLASIFICATION_CLOUD/zdsag_r_classification.ddls.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
-
- ZDSAG_R_CLASSIFICATION
- E
- Classification Creation R view
- W
-
-
-
-
diff --git a/src/ZDSAG_CLASIFICATION_CLOUD/zdsag_r_classification_extend.bdef.asbdef b/src/ZDSAG_CLASIFICATION_CLOUD/zdsag_r_classification_extend.bdef.asbdef
deleted file mode 100644
index 41fd6d2..0000000
--- a/src/ZDSAG_CLASIFICATION_CLOUD/zdsag_r_classification_extend.bdef.asbdef
+++ /dev/null
@@ -1,19 +0,0 @@
-extension implementation in class zbp_dsag_r_classification_exte unique;
-define authorization context NoCheckWhenSaving
-{
- 'C_TCLA_BKA';
- 'C_KLAH_BKP';
- 'C_KLAH_BKL';
-}
-
-extend behavior for Classification
-{
-}
-
-extend behavior for Description
-{
-}
-
-extend behavior for Characteristics
-{
-}
\ No newline at end of file
diff --git a/src/ZDSAG_CLASIFICATION_CLOUD/zdsag_sd_classification.srvd.srvdsrv b/src/ZDSAG_CLASIFICATION_CLOUD/zdsag_sd_classification.srvd.srvdsrv
deleted file mode 100644
index 998e816..0000000
--- a/src/ZDSAG_CLASIFICATION_CLOUD/zdsag_sd_classification.srvd.srvdsrv
+++ /dev/null
@@ -1,8 +0,0 @@
-@EndUserText.label: 'Service Definition for Classification Creation & Maintenance'
-@ObjectModel.leadingEntity.name: 'ZDSAG_C_CLASSIFICATION'
-define service ZDSAG_SD_CLASSIFICATION {
- expose ZDSAG_C_CLASSIFICATION as Classifications;
- expose ZDSAG_C_CLASSDESCRIPTION as ClassificationDescription;
- expose ZDSAG_C_CLASSCHARACTERS as ClassificationCharacteristics;
- expose ZDSAG_PRODUCT_HELPER as ProductHelper;
-}
\ No newline at end of file
diff --git a/src/ZDSAG_CLASSIFICATION_C1/zbp_dsag_r_classification_exte.clas.abap b/src/ZDSAG_CLASSIFICATION_C1/zbp_dsag_r_classification_exte.clas.abap
deleted file mode 100644
index 1bfa8df..0000000
--- a/src/ZDSAG_CLASSIFICATION_C1/zbp_dsag_r_classification_exte.clas.abap
+++ /dev/null
@@ -1,66 +0,0 @@
-CLASS zbp_dsag_r_classification_exte DEFINITION PUBLIC ABSTRACT FINAL FOR BEHAVIOR OF zdsag_r_classification.
- PUBLIC SECTION.
- TYPES _bapiret2 TYPE STANDARD TABLE OF bapiret2 WITH DEFAULT KEY.
- TYPES _t_zdsag_r_classdescription TYPE STANDARD TABLE OF zdsag_r_classdescription.
- TYPES _t_zdsag_r_classcharacters TYPE STANDARD TABLE OF zdsag_r_classcharacters.
-
- CLASS-METHODS bapi_class_create
- IMPORTING iv_classification TYPE zdsag_r_classification
- it_descriptions TYPE _t_zdsag_r_classdescription
- it_characteristics TYPE _t_zdsag_r_classcharacters
- test_run TYPE abap_bool OPTIONAL
- EXPORTING ev_classinternalid TYPE clint
- CHANGING !return TYPE _bapiret2.
-
- CLASS-METHODS bapi_class_change
- IMPORTING iv_classification TYPE zdsag_r_Classification
- it_descriptions TYPE _t_zdsag_r_classdescription
- it_characteristics TYPE _t_zdsag_r_classcharacters
- test_run TYPE abap_bool OPTIONAL
-
- CHANGING !return TYPE _bapiret2.
-
- CLASS-METHODS bapi_objcl_create
- IMPORTING classnumnew TYPE klasse_d
- classtypenew TYPE klassenart
- objectkeynew TYPE objnum OPTIONAL
- CHANGING !return TYPE _bapiret2.
-
-ENDCLASS.
-
-
-CLASS zbp_dsag_r_classification_exte IMPLEMENTATION.
- METHOD bapi_class_create.
- AUTHORITY-CHECK DISABLE BEGIN CONTEXT zdsag_r_classification~NoCheckWhenSaving.
-
- zdsag_bapi_class_create=>map_4_bapi_class_create( EXPORTING iv_classification = iv_classification
- it_descriptions = it_descriptions
- it_characteristics = it_characteristics
- test_run = test_run
- IMPORTING ev_classinternalid = ev_classinternalid
- CHANGING return = return ).
- AUTHORITY-CHECK DISABLE END.
- ENDMETHOD.
-
- METHOD bapi_class_change.
- AUTHORITY-CHECK DISABLE BEGIN CONTEXT zdsag_r_classification~nocheckwhensaving.
-
- zdsag_bapi_class_change=>map_4_bapi_class_change( EXPORTING iv_classification = iv_classification
- it_descriptions = it_descriptions
- it_characteristics = it_characteristics
- test_run = test_run
-
- CHANGING return = return ).
- AUTHORITY-CHECK DISABLE END.
- ENDMETHOD.
-
- METHOD bapi_objcl_create.
- AUTHORITY-CHECK DISABLE BEGIN CONTEXT zdsag_r_classification~nocheckwhensaving.
- zdsag_bapi_objcl_create=>map_4_bapi_objcl_create( EXPORTING classnumnew = classnumnew
- classtypenew = classtypenew
- objectkeynew = objectkeynew
- CHANGING return = return ).
-
- AUTHORITY-CHECK DISABLE END.
- ENDMETHOD.
-ENDCLASS.
diff --git a/src/ZDSAG_CLASSIFICATION_C1/zbp_dsag_r_classification_exte.clas.xml b/src/ZDSAG_CLASSIFICATION_C1/zbp_dsag_r_classification_exte.clas.xml
deleted file mode 100644
index 397dc5d..0000000
--- a/src/ZDSAG_CLASSIFICATION_C1/zbp_dsag_r_classification_exte.clas.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
-
-
-
- ZBP_DSAG_R_CLASSIFICATION_EXTE
- E
- Behavior Implementation for ZDSAG_R_CLASSIFICATION_EXTEND
- 06
- 1
- X
- X
- X
- ZDSAG_R_CLASSIFICATION
-
-
-
-
diff --git a/src/ZDSAG_CLASSIFICATION_C1/zdsag_bapi_class_change.clas.abap b/src/ZDSAG_CLASSIFICATION_C1/zdsag_bapi_class_change.clas.abap
deleted file mode 100644
index a7ed402..0000000
--- a/src/ZDSAG_CLASSIFICATION_C1/zdsag_bapi_class_change.clas.abap
+++ /dev/null
@@ -1,156 +0,0 @@
-CLASS zdsag_bapi_class_change DEFINITION
- PUBLIC FINAL
- CREATE PUBLIC.
-
- PUBLIC SECTION.
- TYPES _bapi1003_catch_new TYPE STANDARD TABLE OF bapi1003_catch WITH DEFAULT KEY .
- TYPES _bapi1003_catch TYPE STANDARD TABLE OF bapi1003_catch WITH DEFAULT KEY .
- TYPES _bapi1003_charact TYPE STANDARD TABLE OF bapi1003_charact WITH DEFAULT KEY.
- TYPES _bapi1003_charact_new TYPE STANDARD TABLE OF bapi1003_charact_new WITH DEFAULT KEY.
- TYPES _bapiret2 TYPE STANDARD TABLE OF bapiret2 WITH DEFAULT KEY .
- TYPES _t_zdsag_r_classdescription TYPE STANDARD TABLE OF zdsag_r_classdescription.
- TYPES _t_zdsag_r_classcharacters TYPE STANDARD TABLE OF zdsag_r_classcharacters.
-
- CLASS-METHODS map_4_bapi_class_change
- IMPORTING iv_classification TYPE zdsag_r_Classification
- it_descriptions TYPE _t_zdsag_r_classdescription
- it_characteristics TYPE _t_zdsag_r_classcharacters
- test_run TYPE abap_bool OPTIONAL
-
- CHANGING !return TYPE _bapiret2.
-
- PRIVATE SECTION.
- CLASS-METHODS bapi_class_change
- IMPORTING classbasicdata TYPE bapi1003_basic OPTIONAL
- classbasicdatanew TYPE bapi1003_basic OPTIONAL
- classnum TYPE klasse_d OPTIONAL
- classtype TYPE klassenart OPTIONAL
- keydate TYPE bapi_keydate DEFAULT sy-datum
- testrun TYPE testrun DEFAULT abap_false
- CHANGING classdescriptions TYPE _bapi1003_catch OPTIONAL
- classdescriptionsnew TYPE _bapi1003_catch_new OPTIONAL
- classcharacteristics TYPE _bapi1003_charact OPTIONAL
- classcharacteristicsnew TYPE _bapi1003_charact OPTIONAL
- !return TYPE _bapiret2.
-
-ENDCLASS.
-
-
-CLASS zdsag_bapi_class_change IMPLEMENTATION.
- METHOD bapi_class_change.
- CALL FUNCTION 'BAPI_CLASS_CHANGE'
- EXPORTING
- classbasicdata = classbasicdata
- classbasicdatanew = classbasicdatanew
- classnum = classnum
- classtype = classtype
- keydate = keydate
- testrun = testrun
- TABLES
- classdescriptions = classdescriptions
- classdescriptionsnew = classdescriptionsnew
- classcharacteristics = classcharacteristics
- classcharacteristicsnew = classcharacteristicsnew
- return = return
- EXCEPTIONS
- communication_failure = 1
- system_failure = 2
- OTHERS = 3.
- IF sy-subrc <> 0.
- ENDIF.
- ENDMETHOD.
-
- METHOD map_4_bapi_class_change.
- "We also need to pass both current data and new data for CHANGE operation
-
- " For Classifications
- DATA ls_basic_data_current TYPE bapi1003_basic.
- DATA ls_basic_data_new TYPE bapi1003_basic.
-
- " For descriptions
- DATA lt_descriptions_current TYPE STANDARD TABLE OF bapi1003_catch_new WITH DEFAULT KEY.
- DATA lt_descriptions_new TYPE STANDARD TABLE OF bapi1003_catch_new WITH DEFAULT KEY.
- FIELD-SYMBOLS TYPE bapi1003_catch.
-
- " For characteristics
- DATA lt_characteristics_current TYPE STANDARD TABLE OF bapi1003_charact_new WITH DEFAULT KEY.
- DATA lt_characteristics_new TYPE STANDARD TABLE OF bapi1003_charact_new WITH DEFAULT KEY.
-
- TRY.
- zdsag_get_class_detail=>get_classification_details(
- EXPORTING classtype = iv_classification-ClassType
- classnum = iv_classification-Class
- IMPORTING classbasicdata = ls_basic_data_current
- CHANGING classdescriptions = lt_descriptions_current
- classcharacteristics = lt_characteristics_current ).
- CATCH cx_root .
- ASSERT 1 = 2.
- "Or handle exception
- ENDTRY.
-
- " Data from entity 'ZDSAG_R_CLASSIFICATION'---------------------
-
- " We need existing data , along with Modified data, so move as a first step
- ls_basic_data_new = ls_basic_data_current.
- IF iv_classification-ValidityStartDate IS NOT INITIAL.
- ls_basic_data_new-valid_from = iv_classification-ValidityStartDate.
- ENDIF.
- IF iv_classification-ValidityEndDate IS NOT INITIAL.
- ls_basic_data_new-valid_to = iv_classification-ValidityEndDate.
- ENDIF.
- IF iv_classification-ClassStatus IS NOT INITIAL.
- ls_basic_data_new-status = iv_classification-ClassStatus.
- ENDIF.
-
- " Data from entity 'ZDSAG_R_CLASSDESCRIPTION'---------------------
- LOOP AT it_descriptions ASSIGNING FIELD-SYMBOL().
-
- ASSIGN lt_descriptions_new[ langu = -LanguageEdit ] TO .
- IF sy-subrc = 0.
- -catchword = -ClassDescription.
- ELSE.
- APPEND INITIAL LINE TO lt_descriptions_new ASSIGNING .
- CALL FUNCTION 'LANGUAGE_CODE_SAP_TO_ISO'
- EXPORTING
- sap_code = -LanguageEdit
- IMPORTING
- iso_code = -langu_iso.
-
- -langu = -LanguageEdit.
- -catchword = -ClassDescription.
-
- ENDIF.
-
- ENDLOOP.
-
- " Data from entity 'ZDSAG_R_CLASSCHARACTERISTICS'---------------------
- SELECT CharcInternalID,
- Characteristic
- FROM I_ClfnCharcBasic WITH PRIVILEGED ACCESS
- FOR ALL ENTRIES IN @it_characteristics
- WHERE CharcInternalID = @it_characteristics-CharcInternalID
- INTO TABLE @DATA(lt_cabn_details).
- " Characteristics from entity 'ZDSAG_R_CLASSCHARACTERS'---------------------
-
- LOOP AT it_characteristics ASSIGNING FIELD-SYMBOL().
-
- ASSIGN lt_cabn_details[ CharcInternalID = -CharcInternalID ] TO FIELD-SYMBOL().
- IF sy-subrc = 0.
- APPEND INITIAL LINE TO lt_characteristics_new ASSIGNING FIELD-SYMBOL().
- -name_char = -Characteristic.
- ENDIF.
- ENDLOOP.
-
- bapi_class_change( EXPORTING classtype = iv_classification-ClassType
- classnum = iv_classification-Class
- classbasicdata = ls_basic_data_current
- classbasicdatanew = ls_basic_data_new
- testrun = test_run
-
- CHANGING classdescriptions = lt_descriptions_current
- classdescriptionsnew = lt_descriptions_new
- classcharacteristics = lt_characteristics_current
- classcharacteristicsnew = lt_characteristics_new
- return = return ).
- ENDMETHOD.
-ENDCLASS.
diff --git a/src/ZDSAG_CLASSIFICATION_C1/zdsag_bapi_class_create.clas.abap b/src/ZDSAG_CLASSIFICATION_C1/zdsag_bapi_class_create.clas.abap
deleted file mode 100644
index da12fbc..0000000
--- a/src/ZDSAG_CLASSIFICATION_C1/zdsag_bapi_class_create.clas.abap
+++ /dev/null
@@ -1,154 +0,0 @@
-CLASS zdsag_bapi_class_create DEFINITION
- PUBLIC FINAL
- CREATE PUBLIC.
-
- PUBLIC SECTION.
- TYPES _bapi1003_charact TYPE STANDARD TABLE OF bapi1003_charact WITH DEFAULT KEY ##TYPSHADOW.
- TYPES _bapi1003_catch TYPE STANDARD TABLE OF bapi1003_catch WITH DEFAULT KEY ##TYPSHADOW.
- TYPES _bapiret2 TYPE STANDARD TABLE OF bapiret2 WITH DEFAULT KEY ##TYPSHADOW.
- TYPES _t_zdsag_r_classdescription TYPE STANDARD TABLE OF zdsag_r_classdescription.
- TYPES _t_zdsag_r_classcharacters TYPE STANDARD TABLE OF zdsag_r_classcharacters.
-
- CLASS-METHODS map_4_bapi_class_create
- IMPORTING iv_classification TYPE zdsag_r_Classification
- it_descriptions TYPE _t_zdsag_r_classdescription
- it_characteristics TYPE _t_zdsag_r_classcharacters
- test_run TYPE abap_bool OPTIONAL
- EXPORTING ev_classinternalid TYPE clint
- CHANGING !return TYPE _bapiret2.
-
- PRIVATE SECTION.
- CLASS-METHODS bapi_class_create
- IMPORTING classbasicdata TYPE bapi1003_basic
- classnumnew TYPE klasse_d
- classtypenew TYPE klassenart
- testrun TYPE testrun DEFAULT abap_false
- CHANGING classcharacteristics TYPE _bapi1003_charact OPTIONAL
- classdescriptions TYPE _bapi1003_catch
- !return TYPE _bapiret2.
-
-ENDCLASS.
-
-
-CLASS zdsag_bapi_class_create IMPLEMENTATION.
- METHOD bapi_class_create.
- CALL FUNCTION 'BAPI_CLASS_CREATE'
- EXPORTING
- classbasicdata = classbasicdata
- classnumnew = classnumnew
- classtypenew = classtypenew
- testrun = testrun
- TABLES
- classcharacteristics = classcharacteristics
- classdescriptions = classdescriptions
- return = return
- EXCEPTIONS
- communication_failure = 1
- system_failure = 2
- OTHERS = 3.
- IF testrun = abap_true.
- " Required to clean the buffer manually
- CALL FUNCTION 'BUFFER_REFRESH_ALL'. " Tier 3 required else will get warning message
- ENDIF.
- ENDMETHOD.
-
- METHOD map_4_bapi_class_create.
- " 1. Handle conversion for BAPIs
- " 2. Mapping of CDS entity properties to BAPI structures
- " 3. Special handling for retrieving "Classification ID" created using BAPI
- TYPES: BEGIN OF t_data,
- sign TYPE char1,
- option TYPE char2,
- low TYPE char18,
- high TYPE char18,
- END OF t_data.
- DATA ls_basic_data TYPE bapi1003_basic.
-
- DATA lt_descriptions TYPE _bapi1003_catch.
- DATA ls_description TYPE bapi1003_catch.
-
- DATA ls_characteristic TYPE bapi1003_charact.
- DATA lt_characteristics TYPE _bapi1003_charact.
-
- DATA lt_klah TYPE STANDARD TABLE OF klah.
-
- DATA ls_range TYPE t_data.
- DATA lt_range TYPE STANDARD TABLE OF t_data.
-
- " Basic Data from Root entity 'ZDSAG_R_CLASSFICATION'---------------------
- ls_basic_data-valid_from = iv_classification-ValidityStartDate.
- ls_basic_data-valid_to = iv_classification-ValidityEndDate.
- ls_basic_data-status = iv_classification-ClassStatus.
- "
- " Description from entity 'ZDSAG_R_CLASSDESCRIPTION'---------------------
- LOOP AT it_descriptions ASSIGNING FIELD-SYMBOL().
-
- ls_description-langu = -LanguageEdit.
- CALL FUNCTION 'LANGUAGE_CODE_SAP_TO_ISO'
- EXPORTING
- sap_code = ls_description-langu
- IMPORTING
- iso_code = ls_description-langu_iso.
-
- ls_description-catchword = -ClassDescription.
-
- APPEND ls_description TO lt_descriptions.
- CLEAR ls_description.
- ENDLOOP.
-
-
- " Characteristics from entity 'ZDSAG_R_CLASSCHARACTERS'---------------------
- SELECT CharcInternalID,
- Characteristic
- FROM I_ClfnCharcBasic WITH PRIVILEGED ACCESS
- FOR ALL ENTRIES IN @it_characteristics
- WHERE CharcInternalID = @it_characteristics-CharcInternalID
- INTO TABLE @DATA(lt_cabn_details).
-* SELECT *
-* FROM zdsag_r_cabn
-* FOR ALL ENTRIES IN @it_characteristics
-* WHERE CharcInternalID = @it_characteristics-CharcInternalID
-* INTO TABLE @DATA(lt_cabn_details).
-
- LOOP AT it_characteristics ASSIGNING FIELD-SYMBOL().
- READ TABLE lt_cabn_details INTO DATA(ls_cabn_detail) WITH KEY CharcInternalID = -CharcInternalID.
- ls_characteristic-name_char = ls_cabn_detail-Characteristic.
- APPEND ls_characteristic TO lt_characteristics.
- CLEAR ls_characteristic.
- ENDLOOP.
-
- bapi_class_create( EXPORTING classtypenew = iv_classification-ClassType
- classnumnew = iv_classification-Class
- classbasicdata = ls_basic_data
- testrun = test_run
- CHANGING classdescriptions = lt_descriptions
- classcharacteristics = lt_characteristics
- return = return ).
-
- IF test_run = abap_false.
- " BAPI does not explicitly return the "Classification ID -CLINT", so to access that information from buffer
- ls_range-sign = 'I'.
- ls_range-option = 'EQ'.
- ls_range-low = iv_classification-Class.
- APPEND ls_range TO lt_range.
- " Nominated API to retrieve classInternal ID from Buffer
- CALL FUNCTION 'CLSE_SELECT_KLAH_VIA_NAMERANGE'
- TABLES
- imp_exp_klah = lt_klah
- namerange = lt_range
- EXCEPTIONS
- no_entry_found = 1
- OTHERS = 2.
-
- IF sy-subrc = 0.
- DATA(ls_class) = VALUE #( lt_klah[ klart = iv_classification-ClassType
- class = iv_classification-Class ] OPTIONAL ).
- IF ls_class IS NOT INITIAL.
- ev_classinternalid = ls_class-clint.
- ENDIF.
- ELSE.
- ASSERT 1 = 2.
- ENDIF.
- ENDIF.
- ENDMETHOD.
-ENDCLASS.
diff --git a/src/ZDSAG_CLASSIFICATION_C1/zdsag_bapi_objcl_create.clas.abap b/src/ZDSAG_CLASSIFICATION_C1/zdsag_bapi_objcl_create.clas.abap
deleted file mode 100644
index 3d9ea9e..0000000
--- a/src/ZDSAG_CLASSIFICATION_C1/zdsag_bapi_objcl_create.clas.abap
+++ /dev/null
@@ -1,76 +0,0 @@
-CLASS zdsag_bapi_objcl_create DEFINITION
- PUBLIC
- FINAL
- CREATE PUBLIC .
-
- PUBLIC SECTION.
- TYPES _bapiret2 TYPE STANDARD TABLE OF bapiret2 WITH DEFAULT KEY.
-
- CLASS-METHODS map_4_bapi_objcl_create
- IMPORTING classnumnew TYPE klasse_d
- classtypenew TYPE klassenart
- keydate TYPE bapi_keydate DEFAULT sy-datum
- objectkeynew TYPE objnum OPTIONAL
- objectkeynew_long TYPE cuobn90 OPTIONAL
- objecttablenew TYPE tabelle OPTIONAL
- CHANGING !return TYPE _bapiret2.
-
- PROTECTED SECTION.
- PRIVATE SECTION.
- CLASS-METHODS bapi_objcl_create
- IMPORTING classnumnew TYPE klasse_d
- classtypenew TYPE klassenart
- keydate TYPE bapi_keydate DEFAULT sy-datum
- objectkeynew TYPE objnum OPTIONAL
- objectkeynew_long TYPE cuobn90 OPTIONAL
- objecttablenew TYPE tabelle
- CHANGING !return TYPE _bapiret2.
-
-ENDCLASS.
-
-CLASS zdsag_bapi_objcl_create IMPLEMENTATION.
- METHOD bapi_objcl_create.
- CALL FUNCTION 'BAPI_OBJCL_CREATE'
- EXPORTING
- classnumnew = classnumnew
- classtypenew = classtypenew
- keydate = keydate
- objectkeynew = objectkeynew
- objectkeynew_long = objectkeynew_long
- objecttablenew = objecttablenew
- TABLES
- return = return
- EXCEPTIONS
- communication_failure = 1
- system_failure = 2
- OTHERS = 3.
- IF sy-subrc <> 0.
- ENDIF.
- ENDMETHOD.
-
- METHOD map_4_bapi_objcl_create.
- DATA: lv_object TYPE objnum.
-"VD unable to activate ABAP ATC check
- CALL FUNCTION 'CONVERSION_EXIT_MATN1_INPUT'
- EXPORTING
- input = objectkeynew
- IMPORTING
- output = lv_object
- EXCEPTIONS
- length_error = 1
- OTHERS = 2.
-
- bapi_objcl_create( EXPORTING
- classnumnew = classnumnew
- classtypenew = classtypenew
- keydate = sy-datum
- objectkeynew = lv_object
- objectkeynew_long = CONV #( lv_object )
- objecttablenew = 'MARA'
- CHANGING
- return = return
- ).
-
- ENDMETHOD.
-
-ENDCLASS.
diff --git a/src/ZDSAG_CLASSIFICATION_C1/zdsag_bor_event_handler.clas.abap b/src/ZDSAG_CLASSIFICATION_C1/zdsag_bor_event_handler.clas.abap
deleted file mode 100644
index f8790c1..0000000
--- a/src/ZDSAG_CLASSIFICATION_C1/zdsag_bor_event_handler.clas.abap
+++ /dev/null
@@ -1,112 +0,0 @@
-CLASS zdsag_bor_event_handler DEFINITION
- PUBLIC FINAL
- CREATE PUBLIC.
-
- PUBLIC SECTION.
- INTERFACES bi_event_handler_static.
-
- PRIVATE SECTION.
- CLASS-METHODS trigger_email
- IMPORTING i_event_container TYPE REF TO if_swf_ifs_parameter_container
- RETURNING VALUE(rv_evt_obj) TYPE matnr.
-ENDCLASS.
-
-
-CLASS zdsag_bor_event_handler IMPLEMENTATION.
- METHOD bi_event_handler_static~on_event.
- " ------------------------- Classic E-Mail -------------------------------
- " Trigger Classic E-Mail
- " --------------------------------------------------------------------------
-
- DATA lv_evt_obj TYPE matnr.
-
- lv_evt_obj = trigger_email( event_container ).
-
- " ------------------------- EML modification -------------------------
- " Trigger EML Modif
- " --------------------------------------------------------------------------
-
- MODIFY ENTITIES OF zdsag_r_classification
- ENTITY Classification
- UPDATE FIELDS ( validityenddate ) WITH VALUE #( ( ClassInternalID = 0000000068
- ValidityEndDate = '99991231' ) ).
-
- COMMIT ENTITIES.
-
- " ------------------------- RAP Business Event -------------------------
- " Trigger RAP event -to connect to external event
- " --------------------------------------------------------------------------
-
- DATA lt_events TYPE zbp_dsag_r_classification=>tt_events.
-
- SELECT * FROM zdsag_r_classification
- INTO CORRESPONDING FIELDS OF TABLE @lt_events
- WHERE ClassInternalID = 0000000068. " ClassInternal ID
-
- zbp_dsag_r_classification=>raise_event( lt_events ).
-
- COMMIT ENTITIES.
- ENDMETHOD.
-
- METHOD trigger_email.
- TRY.
- i_event_container->get( EXPORTING name = '_EVT_OBJKEY'
- IMPORTING value = rv_evt_obj ).
-
- CATCH cx_swf_cnt_elem_not_found
- cx_swf_cnt_elem_type_conflict
- cx_swf_cnt_unit_type_conflict
- cx_swf_cnt_container.
- " handle exception
- ENDTRY.
-
- " Event created by
-
- DATA lv_created_by TYPE string.
-
- TRY.
- i_event_container->get( EXPORTING name = '_EVT_CREATOR'
- IMPORTING value = lv_created_by ).
-
- CATCH cx_swf_cnt_elem_not_found
- cx_swf_cnt_elem_type_conflict
- cx_swf_cnt_unit_type_conflict
- cx_swf_cnt_container.
- " handle exception
- ENDTRY.
-
- DATA(ls_line) = VALUE soli( line = `Usage of BOR Events in Tier 2 API` ).
- DATA(lv_length) = strlen( lv_created_by ).
-
- lv_length -= 2.
-
- ls_line-line = | Material: { rv_evt_obj } has been assigned with new view by user { lv_created_by+2(lv_length) }. |.
- " -------------
- DATA wa_objcont TYPE solisti1.
- DATA it_objcont TYPE STANDARD TABLE OF solisti1.
- DATA reclist TYPE somlreci1.
- DATA it_reclist TYPE STANDARD TABLE OF somlreci1.
- DATA doc_chng TYPE sodocchgi1.
-
- " Email subject line
- doc_chng-obj_descr = 'Usage of BOR Events in Tier 2 wrapper'.
-
- " Email body
- wa_objcont = ls_line-line.
- APPEND wa_objcont TO it_objcont.
-
- " Receiver list
- reclist-receiver = sy-uname.
- APPEND reclist TO it_reclist.
- " Send the document
- CALL FUNCTION 'SO_NEW_DOCUMENT_SEND_API1'
- EXPORTING document_data = doc_chng
- commit_work = 'X'
- TABLES object_content = it_objcont
- receivers = it_reclist
- EXCEPTIONS too_many_receivers = 1
- document_not_sent = 2
- operation_no_authorization = 4
- OTHERS = 99.
- ENDMETHOD.
-ENDCLASS.
diff --git a/src/ZDSAG_CLASSIFICATION_C1/zdsag_char_d tabl.apis.xml b/src/ZDSAG_CLASSIFICATION_C1/zdsag_char_d tabl.apis.xml
deleted file mode 100644
index 95ec060..0000000
--- a/src/ZDSAG_CLASSIFICATION_C1/zdsag_char_d tabl.apis.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-
-
-
-
-
- ZDSAG_CHAR_D
- TABL
- ZDSAG_CHAR_D
-
-
- TABL
- ZDSAG_CHAR_D
- C1
- RELEASED
- X
-
-
-
-
-
-
diff --git a/src/ZDSAG_CLASSIFICATION_C1/zdsag_char_d.tabl.xml b/src/ZDSAG_CLASSIFICATION_C1/zdsag_char_d.tabl.xml
deleted file mode 100644
index cd40ce5..0000000
--- a/src/ZDSAG_CLASSIFICATION_C1/zdsag_char_d.tabl.xml
+++ /dev/null
@@ -1,80 +0,0 @@
-
-
-
-
-
- ZDSAG_CHAR_D
- E
- TRANSP
- X
- X
- Draft table for entity ZDSAG_R_CLASSCHARACTERS
- E
- A
- 4
-
-
- ZDSAG_CHAR_D
- A
- 0
- APPL0
- N
-
-
-
- MANDT
- X
- MANDT
- 0
- X
- E
-
-
- CLASSINTERNALID
- X
- CLINT
- 0
- X
- E
-
-
- CHARCPOSITIONNUMBER
- X
- KPOSNR
- 0
- X
- E
-
-
- DRAFTUUID
- X
- SDRAFT_UUID
- 0
- X
- E
-
-
- PARENTDRAFTUUID
- SDRAFT_UUID
- 0
- E
-
-
- CHARCINTERNALID
- ATINN_NO_CONV
- 0
- E
-
-
- .INCLUDE
- 0
- SYCH_BDL_DRAFT_ADMIN_INC
- S
- Standard Include for Draft Administration (BDL Syntax Check)
- S
- %ADMIN
-
-
-
-
-
diff --git a/src/ZDSAG_CLASSIFICATION_C1/zdsag_class_d.tabl.xml b/src/ZDSAG_CLASSIFICATION_C1/zdsag_class_d.tabl.xml
deleted file mode 100644
index ee00b71..0000000
--- a/src/ZDSAG_CLASSIFICATION_C1/zdsag_class_d.tabl.xml
+++ /dev/null
@@ -1,124 +0,0 @@
-
-
-
-
-
- ZDSAG_CLASS_D
- E
- TRANSP
- X
- X
- Draft table for entity ZDSAG_R_CLASSIFICATION
- E
- A
- 4
-
-
- ZDSAG_CLASS_D
- A
- 0
- APPL0
- N
-
-
-
- MANDT
- X
- MANDT
- 0
- X
- E
-
-
- CLASSINTERNALID
- X
- CLINT
- 0
- X
- E
-
-
- DRAFTUUID
- X
- SDRAFT_UUID
- 0
- X
- E
-
-
- CLASSTYPE
- KLASSENART
- 0
- E
-
-
- CLASS
- KLASSE_D
- 0
- E
-
-
- CLASSSTATUS
- KLSTATUS
- 0
- E
-
-
- CREATEDBYUSER
- ERNAM
- 0
- E
-
-
- CREATIONDATE
- ERDAT
- 0
- T
- E
-
-
- LASTCHANGEDBYUSER
- AENAM
- 0
- E
-
-
- LASTCHANGEDATE
- AEDAT
- 0
- T
- E
-
-
- VALIDITYSTARTDATE
- VONDAT
- 0
- T
- E
-
-
- VALIDITYENDDATE
- BISDAT
- 0
- T
- E
-
-
- CLASSLASTCHANGEDDATETIME
- TIMESTAMPL
- 0
- E
-
-
- .INCLUDE
- 0
- SYCH_BDL_DRAFT_ADMIN_INC
- S
- Standard Include for Draft Administration (BDL Syntax Check)
- S
- %ADMIN
-
-
-
-
-
diff --git a/src/ZDSAG_CLASSIFICATION_C1/zdsag_classification_utility.clas.xml b/src/ZDSAG_CLASSIFICATION_C1/zdsag_classification_utility.clas.xml
deleted file mode 100644
index 77869c0..0000000
--- a/src/ZDSAG_CLASSIFICATION_C1/zdsag_classification_utility.clas.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-
-
-
- ZDSAG_CLASSIFICATION_UTILITY
- E
- Classification Utility Helper Class
- 1
- X
- X
- X
-
-
-
-
diff --git a/src/ZDSAG_CLASSIFICATION_C1/zdsag_desc_d tabl.apis.xml b/src/ZDSAG_CLASSIFICATION_C1/zdsag_desc_d tabl.apis.xml
deleted file mode 100644
index e34bdaf..0000000
--- a/src/ZDSAG_CLASSIFICATION_C1/zdsag_desc_d tabl.apis.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-
-
-
-
-
- ZDSAG_DESC_D
- TABL
- ZDSAG_DESC_D
-
-
- TABL
- ZDSAG_DESC_D
- C1
- RELEASED
- X
-
-
-
-
-
-
diff --git a/src/ZDSAG_CLASSIFICATION_C1/zdsag_desc_d.tabl.xml b/src/ZDSAG_CLASSIFICATION_C1/zdsag_desc_d.tabl.xml
deleted file mode 100644
index 8f1330f..0000000
--- a/src/ZDSAG_CLASSIFICATION_C1/zdsag_desc_d.tabl.xml
+++ /dev/null
@@ -1,89 +0,0 @@
-
-
-
-
-
- ZDSAG_DESC_D
- E
- TRANSP
- X
- X
- Draft table for entity ZDSAG_R_CLASSDESCRIPTION
- E
- A
- 4
-
-
- ZDSAG_DESC_D
- A
- 4
- APPL1
- X
- N
-
-
-
- MANDT
- X
- MANDT
- 0
- X
- E
-
-
- CLASSINTERNALID
- X
- CLINT
- 0
- X
- E
-
-
- LANGUAGE
- X
- SPRAS
- 0
- X
- D
- E
-
-
- DRAFTUUID
- X
- SDRAFT_UUID
- 0
- X
- E
-
-
- PARENTDRAFTUUID
- SDRAFT_UUID
- 0
- E
-
-
- LANGUAGEEDIT
- SPRAS
- 0
- D
- E
-
-
- CLASSDESCRIPTION
- KLSBEZ
- 0
- E
-
-
- .INCLUDE
- 0
- SYCH_BDL_DRAFT_ADMIN_INC
- S
- Standard Include for Draft Administration (BDL Syntax Check)
- S
- %ADMIN
-
-
-
-
-
diff --git a/src/ZDSAG_CLASSIFICATION_C1/zdsag_get_class_detail.clas.abap b/src/ZDSAG_CLASSIFICATION_C1/zdsag_get_class_detail.clas.abap
deleted file mode 100644
index 8c1fa49..0000000
--- a/src/ZDSAG_CLASSIFICATION_C1/zdsag_get_class_detail.clas.abap
+++ /dev/null
@@ -1,73 +0,0 @@
-CLASS zdsag_get_class_detail DEFINITION
- PUBLIC FINAL
- CREATE PUBLIC.
-
- PUBLIC SECTION.
- TYPES _bapi1003_catch TYPE STANDARD TABLE OF bapi1003_catch_new WITH DEFAULT KEY.
- TYPES _bapi1003_charact_r TYPE STANDARD TABLE OF bapi1003_charact_new WITH DEFAULT KEY.
-
- CLASS-METHODS get_classification_details
- IMPORTING classnum TYPE klasse_d
- classtype TYPE klassenart
- EXPORTING classbasicdata TYPE bapi1003_basic
- CHANGING classdescriptions TYPE _bapi1003_catch OPTIONAL
- classcharacteristics TYPE _bapi1003_charact_r OPTIONAL.
-
-ENDCLASS.
-
-
-CLASS zdsag_get_class_detail IMPLEMENTATION.
- METHOD get_classification_details.
- DATA characteristics TYPE STANDARD TABLE OF bapi_char.
- DATA char_values TYPE STANDARD TABLE OF bapi_char_values .
-
- " Basic Data
- SELECT SINGLE classInternalID,
- validityStartDate,
- validityEndDate,
- classStatus
- FROM i_clfnclass
- INTO (@DATA(lv_classinternalid),
- @classbasicdata-valid_from,
- @classbasicdata-valid_to,
- @classbasicdata-status)
- WHERE ClassType = @classtype
- AND class = @classnum.
-
- " Description
- SELECT Language,
- ClassDescription
- FROM I_ClfnClassDescription
- INTO TABLE @DATA(lt_classification_description)
- WHERE ClassInternalID = @lv_classinternalid.
-
- LOOP AT lt_classification_description ASSIGNING FIELD-SYMBOL().
- APPEND INITIAL LINE TO classdescriptions ASSIGNING FIELD-SYMBOL().
- -langu = -Language.
- CALL FUNCTION 'LANGUAGE_CODE_SAP_TO_ISO'
- EXPORTING
- sap_code = -langu
- IMPORTING
- iso_code = -langu_iso.
-
- -catchword = -ClassDescription.
- ENDLOOP.
-
- " Characteristics- I_ClfnClassCharacteristicDEX even though C1 released gives only 803- again have to map via ZDSAG_R_CABN
- CALL FUNCTION 'BAPI_CLASS_GET_CHARACTERISTICS'
- EXPORTING
- classnum = classnum
- classtype = classtype
- with_values = abap_false
- TABLES
- characteristics = characteristics
- char_values = char_values.
- IF sy-subrc = 0.
-
- ENDIF.
- LOOP AT characteristics ASSIGNING FIELD-SYMBOL().
- APPEND INITIAL LINE TO classcharacteristics ASSIGNING FIELD-SYMBOL().
- -name_char = -name_char.
- ENDLOOP.
- ENDMETHOD.
-ENDCLASS.
diff --git a/src/ZDSAG_CLASSIFICATION_C1/zdsag_r_cabn.ddls.asddls b/src/ZDSAG_CLASSIFICATION_C1/zdsag_r_cabn.ddls.asddls
deleted file mode 100644
index 90002f3..0000000
--- a/src/ZDSAG_CLASSIFICATION_C1/zdsag_r_cabn.ddls.asddls
+++ /dev/null
@@ -1,15 +0,0 @@
-@AccessControl.authorizationCheck: #NOT_REQUIRED
-@EndUserText.label: 'Root View for Characteristics'
-@Metadata.ignorePropagatedAnnotations: true
-@ObjectModel.usageType:{
- serviceQuality: #X,
- sizeCategory: #S,
- dataClass: #MIXED
-}
-/*+[hideWarning] { "IDS" : [ "KEY_CHECK" ] } */
-define view entity ZDSAG_R_CABN
- as select from I_ClfnCharcBasic
-{
- key CharcInternalID,
- Characteristic
-}
diff --git a/src/ZDSAG_PRODUCT_LIST_C1/Readme.md b/src/ZDSAG_PRODUCT_LIST_C1/Readme.md
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/src/ZDSAG_PRODUCT_LIST_C1/Readme.md
@@ -0,0 +1 @@
+
diff --git a/src/ZDSAG_CLASSIFICATION_C1/package.devc.xml b/src/ZDSAG_PRODUCT_LIST_C1/package.devc.xml
similarity index 82%
rename from src/ZDSAG_CLASSIFICATION_C1/package.devc.xml
rename to src/ZDSAG_PRODUCT_LIST_C1/package.devc.xml
index cba476c..5c3d5b6 100644
--- a/src/ZDSAG_CLASSIFICATION_C1/package.devc.xml
+++ b/src/ZDSAG_PRODUCT_LIST_C1/package.devc.xml
@@ -3,7 +3,7 @@
- C1 Released artifacts
+ Product List - C1 Released artifacts
diff --git a/src/ZDSAG_CLASSIFICATION_C1/zdsag_classification_utility clas.apis.xml b/src/ZDSAG_PRODUCT_LIST_C1/zbp_dsag_r_product_ext clas.apis.xml
similarity index 76%
rename from src/ZDSAG_CLASSIFICATION_C1/zdsag_classification_utility clas.apis.xml
rename to src/ZDSAG_PRODUCT_LIST_C1/zbp_dsag_r_product_ext clas.apis.xml
index 2f1fedb..5a9e54d 100644
--- a/src/ZDSAG_CLASSIFICATION_C1/zdsag_classification_utility clas.apis.xml
+++ b/src/ZDSAG_PRODUCT_LIST_C1/zbp_dsag_r_product_ext clas.apis.xml
@@ -3,13 +3,13 @@
- ZDSAG_CLASSIFICATION_UTILITY
+ ZBP_DSAG_R_PRODUCT_EXT
CLAS
- ZDSAG_CLASSIFICATION_UTILITY
+ ZBP_DSAG_R_PRODUCT_EXT
CLAS
- ZDSAG_CLASSIFICATION_UTILITY
+ ZBP_DSAG_R_PRODUCT_EXT
C1
RELEASED
X
diff --git a/src/ZDSAG_PRODUCT_LIST_C1/zbp_dsag_r_product_ext.clas.abap b/src/ZDSAG_PRODUCT_LIST_C1/zbp_dsag_r_product_ext.clas.abap
new file mode 100644
index 0000000..942d57d
--- /dev/null
+++ b/src/ZDSAG_PRODUCT_LIST_C1/zbp_dsag_r_product_ext.clas.abap
@@ -0,0 +1,31 @@
+class ZBP_DSAG_R_PRODUCT_EXT DEFINITION PUBLIC ABSTRACT FINAL FOR BEHAVIOR OF zdsag_r_product.
+
+public section.
+ CLASS-METHODS bapi_objcl_create
+ IMPORTING classnumnew TYPE klasse_d
+ classtypenew TYPE klassenart
+ keydate TYPE bapi_keydate DEFAULT sy-datum
+ objectkeynew TYPE objnum OPTIONAL
+ objectkeynew_long TYPE cuobn90 OPTIONAL
+ objecttablenew TYPE tabelle OPTIONAL
+ EXPORTING classif_status TYPE clstatus
+ CHANGING return TYPE zcl_dsag_bapi_objcl=>t_bapiret2.
+protected section.
+private section.
+ENDCLASS.
+
+
+
+CLASS ZBP_DSAG_R_PRODUCT_EXT IMPLEMENTATION.
+ METHOD bapi_objcl_create.
+ AUTHORITY-CHECK DISABLE BEGIN CONTEXT zdsag_r_product~nocheckwhensaving.
+ zcl_dsag_bapi_objcl=>create( EXPORTING classnumnew = classnumnew
+ classtypenew = classtypenew
+ keydate = keydate
+ objectkeynew = objectkeynew
+ objecttablenew = objecttablenew
+ CHANGING return = return ).
+
+ AUTHORITY-CHECK DISABLE END.
+ ENDMETHOD.
+ENDCLASS.
diff --git a/src/ZDSAG_CLASSIFICATION_C1/zdsag_bapi_objcl_create.clas.xml b/src/ZDSAG_PRODUCT_LIST_C1/zbp_dsag_r_product_ext.clas.xml
similarity index 70%
rename from src/ZDSAG_CLASSIFICATION_C1/zdsag_bapi_objcl_create.clas.xml
rename to src/ZDSAG_PRODUCT_LIST_C1/zbp_dsag_r_product_ext.clas.xml
index 72a45ed..1320b1f 100644
--- a/src/ZDSAG_CLASSIFICATION_C1/zdsag_bapi_objcl_create.clas.xml
+++ b/src/ZDSAG_PRODUCT_LIST_C1/zbp_dsag_r_product_ext.clas.xml
@@ -3,13 +3,15 @@
- ZDSAG_BAPI_OBJCL_CREATE
+ ZBP_DSAG_R_PRODUCT_EXT
E
- Assign Classification to Product/Producst
+ behavior implementation
+ 06
1
X
X
X
+ ZDSAG_R_PRODUCT
diff --git a/src/ZDSAG_CLASSIFICATION_C1/zdsag_product_utility clas.apis.xml b/src/ZDSAG_PRODUCT_LIST_C1/zcl_dsag_bapi_objcl clas.apis.xml
similarity index 78%
rename from src/ZDSAG_CLASSIFICATION_C1/zdsag_product_utility clas.apis.xml
rename to src/ZDSAG_PRODUCT_LIST_C1/zcl_dsag_bapi_objcl clas.apis.xml
index 6e7b28b..e32674b 100644
--- a/src/ZDSAG_CLASSIFICATION_C1/zdsag_product_utility clas.apis.xml
+++ b/src/ZDSAG_PRODUCT_LIST_C1/zcl_dsag_bapi_objcl clas.apis.xml
@@ -3,13 +3,13 @@
- ZDSAG_PRODUCT_UTILITY
+ ZCL_DSAG_BAPI_OBJCL
CLAS
- ZDSAG_PRODUCT_UTILITY
+ ZCL_DSAG_BAPI_OBJCL
CLAS
- ZDSAG_PRODUCT_UTILITY
+ ZCL_DSAG_BAPI_OBJCL
C1
RELEASED
X
diff --git a/src/ZDSAG_PRODUCT_LIST_C1/zcl_dsag_bapi_objcl.clas.abap b/src/ZDSAG_PRODUCT_LIST_C1/zcl_dsag_bapi_objcl.clas.abap
new file mode 100644
index 0000000..e64000b
--- /dev/null
+++ b/src/ZDSAG_PRODUCT_LIST_C1/zcl_dsag_bapi_objcl.clas.abap
@@ -0,0 +1,41 @@
+CLASS zcl_dsag_bapi_objcl DEFINITION
+ PUBLIC
+ FINAL
+ CREATE PUBLIC .
+
+ PUBLIC SECTION.
+ TYPES t_bapiret2 type standard table of bapiret2.
+ CLASS-METHODS create
+ IMPORTING classnumnew TYPE klasse_d
+ classtypenew TYPE klassenart
+ keydate TYPE bapi_keydate DEFAULT sy-datum
+ objectkeynew TYPE objnum OPTIONAL
+ objectkeynew_long TYPE cuobn90 OPTIONAL
+ objecttablenew TYPE tabelle OPTIONAL
+ EXPORTING classif_status TYPE clstatus
+ CHANGING return TYPE t_bapiret2.
+ PROTECTED SECTION.
+ PRIVATE SECTION.
+ENDCLASS.
+
+
+
+CLASS zcl_dsag_bapi_objcl IMPLEMENTATION.
+ METHOD create.
+
+ CALL FUNCTION 'BAPI_OBJCL_CREATE'
+ EXPORTING
+ classnumnew = classnumnew
+ classtypenew = classtypenew
+ keydate = keydate
+ objectkeynew = objectkeynew
+ objectkeynew_long = objectkeynew_long
+ objecttablenew = objecttablenew
+ IMPORTING
+ classif_status = classif_status
+ TABLES
+ return = return.
+
+ ENDMETHOD.
+
+ENDCLASS.
diff --git a/src/ZDSAG_CLASSIFICATION_C1/zdsag_bapi_class_change.clas.xml b/src/ZDSAG_PRODUCT_LIST_C1/zcl_dsag_bapi_objcl.clas.xml
similarity index 79%
rename from src/ZDSAG_CLASSIFICATION_C1/zdsag_bapi_class_change.clas.xml
rename to src/ZDSAG_PRODUCT_LIST_C1/zcl_dsag_bapi_objcl.clas.xml
index 98eb586..040d213 100644
--- a/src/ZDSAG_CLASSIFICATION_C1/zdsag_bapi_class_change.clas.xml
+++ b/src/ZDSAG_PRODUCT_LIST_C1/zcl_dsag_bapi_objcl.clas.xml
@@ -3,9 +3,9 @@
- ZDSAG_BAPI_CLASS_CHANGE
+ ZCL_DSAG_BAPI_OBJCL
E
- BAPI Classification Change
+ Object classification wrapper
1
X
X
diff --git a/src/ZDSAG_PRODUCT_LIST_C1/zcl_dsag_bor_handler_product.clas.abap b/src/ZDSAG_PRODUCT_LIST_C1/zcl_dsag_bor_handler_product.clas.abap
new file mode 100644
index 0000000..2f9b795
--- /dev/null
+++ b/src/ZDSAG_PRODUCT_LIST_C1/zcl_dsag_bor_handler_product.clas.abap
@@ -0,0 +1,199 @@
+CLASS zcl_dsag_bor_handler_product DEFINITION
+ PUBLIC
+ FINAL
+ CREATE PUBLIC .
+
+ PUBLIC SECTION.
+
+ INTERFACES bi_event_handler_static .
+
+ PROTECTED SECTION.
+ PRIVATE SECTION.
+ CLASS-METHODS trigger_email
+ IMPORTING
+ i_event_container TYPE REF TO if_swf_ifs_parameter_container
+ RETURNING
+ VALUE(rv_evt_obj) TYPE matnr.
+ CLASS-METHODS trigger_flp_notification
+ IMPORTING
+ iv_evt_obj TYPE matnr.
+ENDCLASS.
+
+
+
+CLASS zcl_dsag_bor_handler_product IMPLEMENTATION.
+ METHOD bi_event_handler_static~on_event.
+
+ " ------------------------- Maintenance Status -----------------------------
+ " Verify Maintenance Status
+ " --------------------------------------------------------------------------
+ DATA maintenancestatus TYPE statm.
+
+ TRY.
+ event_container->get( EXPORTING name = 'MAINTENANCESTATUS'
+ IMPORTING value = maintenancestatus ).
+
+ CATCH cx_swf_cnt_elem_not_found cx_swf_cnt_elem_type_conflict cx_swf_cnt_unit_type_conflict cx_swf_cnt_container.
+ " handle exception
+ ENDTRY.
+
+ " Only process classification (C) changes.
+ CHECK maintenancestatus EQ 'C'.
+
+
+ " ------------------------- Classic E-Mail -------------------------------
+ " Trigger Classic E-Mail
+ " --------------------------------------------------------------------------
+
+ DATA lv_evt_obj TYPE matnr.
+
+ lv_evt_obj = trigger_email( event_container ).
+ " ------------------------- FLP Notification ------------------------------
+ " Trigger FLP Notiifcation
+ " --------------------------------------------------------------------------
+
+ trigger_flp_notification( lv_evt_obj ).
+
+ " ------------------------- EML modification -------------------------
+ " Trigger EML Modif
+ " --------------------------------------------------------------------------
+
+ cl_abap_tx=>modify( ).
+
+ MODIFY ENTITIES OF zrm_r_classification_m
+ ENTITY Classification
+ UPDATE FIELDS ( validityenddate ) WITH VALUE #( ( ClassInternalID = 0000000068
+ ValidityEndDate = '99991231' ) ).
+ TRY.
+ cl_abap_tx=>save( ).
+ CATCH cx_abap_behv_save_failed INTO DATA(lx_ABAP_BEHV_SAVE_FAILED).
+ "Perform Error Handling in case of Failed keys
+
+ ENDTRY.
+
+ COMMIT ENTITIES.
+
+ " ------------------------- RAP Business Event -------------------------
+ " Trigger RAP event -to connect to external event
+ " --------------------------------------------------------------------------
+
+ DATA lt_events TYPE zbp_dsag_r_product=>tt_events.
+
+ SELECT * FROM zrm_r_classification_m
+ INTO CORRESPONDING FIELDS OF TABLE @lt_events
+ WHERE ClassInternalID = 0000000139. " ClassInternal ID
+
+ zbp_dsag_r_product=>raise_event( lt_events ).
+
+ COMMIT ENTITIES.
+ ENDMETHOD.
+
+
+ METHOD trigger_email.
+
+ TRY.
+ i_event_container->get( EXPORTING name = '_EVT_OBJKEY'
+ IMPORTING value = rv_evt_obj ).
+
+ CATCH cx_swf_cnt_elem_not_found cx_swf_cnt_elem_type_conflict cx_swf_cnt_unit_type_conflict cx_swf_cnt_container.
+ " handle exception
+ ENDTRY.
+
+ " Event created by
+
+ DATA lv_created_by TYPE string.
+
+ TRY.
+ i_event_container->get( EXPORTING name = '_EVT_CREATOR'
+ IMPORTING value = lv_created_by ).
+
+ CATCH cx_swf_cnt_elem_not_found cx_swf_cnt_elem_type_conflict cx_swf_cnt_unit_type_conflict cx_swf_cnt_container.
+ " handle exception
+ ENDTRY.
+
+ DATA(ls_line) = VALUE soli( line = `Usage of BOR Events in Tier 2 wrapper` ).
+ DATA(lv_length) = strlen( lv_created_by ).
+
+ lv_length -= 2.
+
+ ls_line-line = | Material: { rv_evt_obj } has been assigned with classification by user { lv_created_by+2(lv_length) }. |.
+* -------------
+ DATA: wa_objcont TYPE solisti1,
+ it_objcont TYPE STANDARD TABLE OF solisti1,
+ reclist TYPE somlreci1,
+ it_reclist TYPE STANDARD TABLE OF somlreci1.
+ DATA: doc_chng TYPE sodocchgi1.
+
+* Email subject line
+ doc_chng-obj_descr = 'Usage of BOR Events in Tier 2 wrapper'.
+
+* Email body
+ wa_objcont = ls_line-line.
+ APPEND wa_objcont TO it_objcont.
+
+* Receiver list
+ reclist-receiver = 'DREES'.
+ APPEND reclist TO it_reclist.
+ reclist-receiver = 'RAJASEKARANM'.
+ APPEND reclist TO it_reclist.
+ reclist-receiver = 'SUBRAMANIVIG'.
+ APPEND reclist TO it_reclist.
+
+* Send the document
+ CALL FUNCTION 'SO_NEW_DOCUMENT_SEND_API1'
+ EXPORTING
+ document_data = doc_chng
+ commit_work = 'X'
+ TABLES
+ object_content = it_objcont
+ receivers = it_reclist
+ EXCEPTIONS
+ too_many_receivers = 1
+ document_not_sent = 2
+ operation_no_authorization = 4
+ OTHERS = 99.
+
+
+ ENDMETHOD.
+
+
+ METHOD trigger_flp_notification.
+
+ DATA: lt_notif TYPE /iwngw/if_notif_provider=>ty_t_notification,
+ ls_notif TYPE /iwngw/if_notif_provider=>ty_s_notification.
+
+
+ TRY.
+ ls_notif-id = cl_uuid_factory=>create_system_uuid( )->create_uuid_x16( ).
+ CATCH cx_uuid_error.
+ ENDTRY.
+
+ ls_notif-priority = /iwngw/if_notif_provider=>gcs_priorities-high.
+ ls_notif-type_key = 'DevtoberfestApiConsumption'.
+ ls_notif-type_version = '1'.
+ ls_notif-actor_id = sy-uname.
+ ls_notif-recipients = VALUE #( ( id = 'DREES' ) ( id ='RAJASEKARANM' ) ( id = 'SUBRAMANIVIG' ) ).
+ ls_notif-actor_display_text = |Notification from BOR handler was created successfully |.
+ ls_notif-parameters = VALUE #( ( language = sy-langu
+ parameters = VALUE #( ( name = 'product_num'
+ type = /iwngw/if_notif_provider=>gcs_parameter_types-type_string
+ value = iv_evt_obj )
+ ( name = 'class_num'
+ type = /iwngw/if_notif_provider=>gcs_parameter_types-type_string
+ value = '001') ) ) ).
+ APPEND ls_notif TO lt_notif.
+
+ TRY.
+ /iwngw/cl_notification_api=>create_notifications(
+ EXPORTING
+ iv_provider_id = 'Z_DEVTOBERFEST_NOTIF'
+
+ it_notification = lt_notif ).
+ CATCH /iwngw/cx_notification_api .
+ ENDTRY.
+
+ COMMIT WORK.
+
+ ENDMETHOD.
+
+ENDCLASS.
diff --git a/src/ZDSAG_CLASSIFICATION_C1/zdsag_bor_event_handler.clas.xml b/src/ZDSAG_PRODUCT_LIST_C1/zcl_dsag_bor_handler_product.clas.xml
similarity index 89%
rename from src/ZDSAG_CLASSIFICATION_C1/zdsag_bor_event_handler.clas.xml
rename to src/ZDSAG_PRODUCT_LIST_C1/zcl_dsag_bor_handler_product.clas.xml
index 629581d..aa7b4e3 100644
--- a/src/ZDSAG_CLASSIFICATION_C1/zdsag_bor_event_handler.clas.xml
+++ b/src/ZDSAG_PRODUCT_LIST_C1/zcl_dsag_bor_handler_product.clas.xml
@@ -3,7 +3,7 @@
- ZDSAG_BOR_EVENT_HANDLER
+ ZCL_DSAG_BOR_HANDLER_PRODUCT
E
BOR Event handler for Material Master
1
diff --git a/src/ZDSAG_CLASSIFICATION_C1/zbp_dsag_r_classification_exte clas.apis.xml b/src/ZDSAG_PRODUCT_LIST_C1/zcl_dsag_class_assignment_chk clas.apis.xml
similarity index 76%
rename from src/ZDSAG_CLASSIFICATION_C1/zbp_dsag_r_classification_exte clas.apis.xml
rename to src/ZDSAG_PRODUCT_LIST_C1/zcl_dsag_class_assignment_chk clas.apis.xml
index 5f9d51b..9ece4a8 100644
--- a/src/ZDSAG_CLASSIFICATION_C1/zbp_dsag_r_classification_exte clas.apis.xml
+++ b/src/ZDSAG_PRODUCT_LIST_C1/zcl_dsag_class_assignment_chk clas.apis.xml
@@ -3,13 +3,13 @@
- ZBP_DSAG_R_CLASSIFICATION_EXTE
+ ZCL_DSAG_CLASS_ASSIGNMENT_CHK
CLAS
- ZBP_DSAG_R_CLASSIFICATION_EXTE
+ ZCL_DSAG_CLASS_ASSIGNMENT_CHK
CLAS
- ZBP_DSAG_R_CLASSIFICATION_EXTE
+ ZCL_DSAG_CLASS_ASSIGNMENT_CHK
C1
RELEASED
X
diff --git a/src/ZDSAG_PRODUCT_LIST_C1/zcl_dsag_class_assignment_chk.clas.abap b/src/ZDSAG_PRODUCT_LIST_C1/zcl_dsag_class_assignment_chk.clas.abap
new file mode 100644
index 0000000..45cfc95
--- /dev/null
+++ b/src/ZDSAG_PRODUCT_LIST_C1/zcl_dsag_class_assignment_chk.clas.abap
@@ -0,0 +1,46 @@
+CLASS zcl_dsag_class_assignment_chk DEFINITION
+PUBLIC
+FINAL
+CREATE PRIVATE .
+ PUBLIC SECTION.
+ TYPES:
+ t_bapiret2 type standard table of bapiret2.
+ CLASS-METHODS does_obj_classification_exist
+ IMPORTING classnum TYPE klasse_d
+ classtype TYPE klassenart
+ keydate TYPE bapi_keydate DEFAULT sy-datum
+ objectkey TYPE objnum OPTIONAL
+ objectkey_long TYPE cuobn90 OPTIONAL
+ objecttable TYPE tabelle
+ EXPORTING assignment_exists TYPE abap_bool
+ CHANGING return TYPE t_bapiret2 OPTIONAL.
+ PROTECTED SECTION.
+ PRIVATE SECTION.
+ .
+ .
+ENDCLASS.
+
+CLASS zcl_dsag_class_assignment_chk IMPLEMENTATION.
+ METHOD does_obj_classification_exist.
+ CALL FUNCTION 'BAPI_OBJCL_EXISTENCECHECK'
+ EXPORTING
+ classnum = classnum
+ classtype = classtype
+ keydate = keydate
+ objectkey = objectkey
+ objectkey_long = objectkey_long
+ objecttable = objecttable
+ TABLES
+ return = return.
+
+ ASSIGN return[ type = 'S'
+ id = 'CL'
+ number = 731 ] TO FIELD-SYMBOL().
+ IF sy-subrc = 0.
+ -type = 'E'.
+ assignment_exists = abap_true.
+ ELSE.
+ assignment_exists = abap_false.
+ ENDIF.
+ ENDMETHOD.
+ENDCLASS.
diff --git a/src/ZDSAG_CLASSIFICATION_C1/zdsag_get_class_detail.clas.xml b/src/ZDSAG_PRODUCT_LIST_C1/zcl_dsag_class_assignment_chk.clas.xml
similarity index 75%
rename from src/ZDSAG_CLASSIFICATION_C1/zdsag_get_class_detail.clas.xml
rename to src/ZDSAG_PRODUCT_LIST_C1/zcl_dsag_class_assignment_chk.clas.xml
index 53d7c1f..f5d1b36 100644
--- a/src/ZDSAG_CLASSIFICATION_C1/zdsag_get_class_detail.clas.xml
+++ b/src/ZDSAG_PRODUCT_LIST_C1/zcl_dsag_class_assignment_chk.clas.xml
@@ -3,12 +3,11 @@
- ZDSAG_GET_CLASS_DETAIL
+ ZCL_DSAG_CLASS_ASSIGNMENT_CHK
E
- BAPI Classification GET Detail
+ generated ACO class
1
X
- X
X
diff --git a/src/ZDSAG_CLASSIFICATION_C1/zdsag_class_d tabl.apis.xml b/src/ZDSAG_PRODUCT_LIST_C1/zcl_dsag_product_utility clas.apis.xml
similarity index 67%
rename from src/ZDSAG_CLASSIFICATION_C1/zdsag_class_d tabl.apis.xml
rename to src/ZDSAG_PRODUCT_LIST_C1/zcl_dsag_product_utility clas.apis.xml
index 0f68679..f645cc9 100644
--- a/src/ZDSAG_CLASSIFICATION_C1/zdsag_class_d tabl.apis.xml
+++ b/src/ZDSAG_PRODUCT_LIST_C1/zcl_dsag_product_utility clas.apis.xml
@@ -3,13 +3,13 @@
- ZDSAG_CLASS_D
- TABL
- ZDSAG_CLASS_D
+ ZCL_DSAG_PRODUCT_UTILITY
+ CLAS
+ ZCL_DSAG_PRODUCT_UTILITY
- TABL
- ZDSAG_CLASS_D
+ CLAS
+ ZCL_DSAG_PRODUCT_UTILITY
C1
RELEASED
X
diff --git a/src/ZDSAG_CLASSIFICATION_C1/zdsag_product_utility.clas.abap b/src/ZDSAG_PRODUCT_LIST_C1/zcl_dsag_product_utility.clas.abap
similarity index 58%
rename from src/ZDSAG_CLASSIFICATION_C1/zdsag_product_utility.clas.abap
rename to src/ZDSAG_PRODUCT_LIST_C1/zcl_dsag_product_utility.clas.abap
index 1e3a9f1..890640e 100644
--- a/src/ZDSAG_CLASSIFICATION_C1/zdsag_product_utility.clas.abap
+++ b/src/ZDSAG_PRODUCT_LIST_C1/zcl_dsag_product_utility.clas.abap
@@ -1,22 +1,24 @@
-CLASS zdsag_product_utility DEFINITION
+CLASS zcl_dsag_product_utility DEFINITION
PUBLIC
FINAL
- CREATE PUBLIC .
+ CREATE PRIVATE .
PUBLIC SECTION.
CLASS-METHODS enqueue_product
IMPORTING
- i_matnr TYPE matnr
+ i_matnr TYPE char40
EXPORTING
lock_error TYPE abap_boolean.
-
+ CLASS-METHODS dequeue_product
+ IMPORTING
+ i_matnr TYPE char40.
PROTECTED SECTION.
PRIVATE SECTION.
ENDCLASS.
-CLASS zdsag_product_utility IMPLEMENTATION.
+CLASS zcl_dsag_product_utility IMPLEMENTATION.
METHOD enqueue_product.
CALL FUNCTION 'ENQUEUE_EMMARAE'
EXPORTING
@@ -31,4 +33,13 @@ CLASS zdsag_product_utility IMPLEMENTATION.
lock_error = abap_true.
ENDIF.
ENDMETHOD.
+
+ METHOD dequeue_product.
+ CALL FUNCTION 'DEQUEUE_EMMARAE'
+ EXPORTING
+ mode_mara = 'E'
+ mandt = sy-mandt
+ matnr = i_matnr.
+ ENDMETHOD.
+
ENDCLASS.
diff --git a/src/ZDSAG_CLASSIFICATION_C1/zdsag_bapi_class_create.clas.xml b/src/ZDSAG_PRODUCT_LIST_C1/zcl_dsag_product_utility.clas.xml
similarity index 79%
rename from src/ZDSAG_CLASSIFICATION_C1/zdsag_bapi_class_create.clas.xml
rename to src/ZDSAG_PRODUCT_LIST_C1/zcl_dsag_product_utility.clas.xml
index 12a13a7..20a3962 100644
--- a/src/ZDSAG_CLASSIFICATION_C1/zdsag_bapi_class_create.clas.xml
+++ b/src/ZDSAG_PRODUCT_LIST_C1/zcl_dsag_product_utility.clas.xml
@@ -3,9 +3,9 @@
- ZDSAG_BAPI_CLASS_CREATE
+ ZCL_DSAG_PRODUCT_UTILITY
E
- Classification Create BAPI
+ Util for material master
1
X
X
diff --git a/src/ZDSAG_PRODUCT_LIST_C1/zdsag_classification_helper clas.apis.xml b/src/ZDSAG_PRODUCT_LIST_C1/zdsag_classification_helper clas.apis.xml
new file mode 100644
index 0000000..9046636
--- /dev/null
+++ b/src/ZDSAG_PRODUCT_LIST_C1/zdsag_classification_helper clas.apis.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+ ZDSAG_CLASSIFICATION_HELPER
+ CLAS
+ ZDSAG_CLASSIFICATION_HELPER
+
+
+ CLAS
+ ZDSAG_CLASSIFICATION_HELPER
+ C1
+ RELEASED
+ X
+
+
+
+
+
+
diff --git a/src/ZDSAG_CLASSIFICATION_C1/zdsag_classification_utility.clas.abap b/src/ZDSAG_PRODUCT_LIST_C1/zdsag_classification_helper.clas.abap
similarity index 91%
rename from src/ZDSAG_CLASSIFICATION_C1/zdsag_classification_utility.clas.abap
rename to src/ZDSAG_PRODUCT_LIST_C1/zdsag_classification_helper.clas.abap
index 20b64ac..dceed7b 100644
--- a/src/ZDSAG_CLASSIFICATION_C1/zdsag_classification_utility.clas.abap
+++ b/src/ZDSAG_PRODUCT_LIST_C1/zdsag_classification_helper.clas.abap
@@ -1,4 +1,4 @@
-CLASS zdsag_classification_utility DEFINITION
+CLASS zdsag_classification_helper DEFINITION
PUBLIC
FINAL
CREATE PUBLIC .
@@ -27,8 +27,7 @@ ENDCLASS.
-CLASS zdsag_classification_utility IMPLEMENTATION.
-
+CLASS zdsag_classification_helper IMPLEMENTATION.
METHOD enqueue_classification.
CALL FUNCTION 'ENQUEUE_ECKSSKXE'
EXPORTING
diff --git a/src/ZDSAG_CLASSIFICATION_C1/zdsag_product_utility.clas.xml b/src/ZDSAG_PRODUCT_LIST_C1/zdsag_classification_helper.clas.xml
similarity index 79%
rename from src/ZDSAG_CLASSIFICATION_C1/zdsag_product_utility.clas.xml
rename to src/ZDSAG_PRODUCT_LIST_C1/zdsag_classification_helper.clas.xml
index 77c7563..e26a905 100644
--- a/src/ZDSAG_CLASSIFICATION_C1/zdsag_product_utility.clas.xml
+++ b/src/ZDSAG_PRODUCT_LIST_C1/zdsag_classification_helper.clas.xml
@@ -3,9 +3,9 @@
- ZDSAG_PRODUCT_UTILITY
+ ZDSAG_CLASSIFICATION_HELPER
E
- Material /Product Utility Class
+ Classification Helper
1
X
X
diff --git a/src/ZDSAG_CLASSIFICATION_C1/zdsag_r_cabn ddls.apis.xml b/src/ZDSAG_PRODUCT_LIST_C1/zdsag_i_classification_clas_vh ddls.apis.xml
similarity index 76%
rename from src/ZDSAG_CLASSIFICATION_C1/zdsag_r_cabn ddls.apis.xml
rename to src/ZDSAG_PRODUCT_LIST_C1/zdsag_i_classification_clas_vh ddls.apis.xml
index 4b93431..a812a90 100644
--- a/src/ZDSAG_CLASSIFICATION_C1/zdsag_r_cabn ddls.apis.xml
+++ b/src/ZDSAG_PRODUCT_LIST_C1/zdsag_i_classification_clas_vh ddls.apis.xml
@@ -3,13 +3,13 @@
- ZDSAG_R_CABN
+ ZDSAG_I_CLASSIFICATION_CLAS_VH
DDLS
- ZDSAG_R_CABN
+ ZDSAG_I_CLASSIFICATION_CLAS_VH
CDS_STOB
- ZDSAG_R_CABN
+ ZDSAG_I_CLASSIFICATION_CLAS_VH
C1
RELEASED
X
diff --git a/src/ZDSAG_PRODUCT_LIST_C1/zdsag_i_classification_clas_vh.ddls.asddls b/src/ZDSAG_PRODUCT_LIST_C1/zdsag_i_classification_clas_vh.ddls.asddls
new file mode 100644
index 0000000..77dfdf9
--- /dev/null
+++ b/src/ZDSAG_PRODUCT_LIST_C1/zdsag_i_classification_clas_vh.ddls.asddls
@@ -0,0 +1,34 @@
+@AbapCatalog.viewEnhancementCategory: [#NONE]
+@AccessControl.authorizationCheck: #NOT_REQUIRED
+@EndUserText.label: 'Classification class value help'
+@Metadata.ignorePropagatedAnnotations: true
+@ObjectModel.representativeKey: 'Class'
+@Search.searchable: true
+@ObjectModel.dataCategory: #VALUE_HELP
+@ObjectModel.usageType.sizeCategory: #M
+@ObjectModel.usageType.serviceQuality: #A
+@ObjectModel.usageType.dataClass: #MASTER
+@Consumption.ranked: true
+/*+[hideWarning] { "IDS" : [ "KEY_CHECK" ] } */
+define view entity ZDSAG_I_Classification_Clas_VH
+ as select from I_ClfnClass
+{
+ @ObjectModel.text.association: '_ClassDescription'
+ @Search.defaultSearchElement: true
+ @Search.ranking: #HIGH
+ @Search.fuzzinessThreshold: 0.8
+ key Class,
+ @Search.defaultSearchElement: true
+ @Search.ranking: #HIGH
+ @Search.fuzzinessThreshold: 0.8
+ key ClassType,
+ @Consumption.hidden: true
+ ClassInternalID,
+ @Consumption.hidden: true
+ ClassMaintAuthGrp,
+ /* Associations */
+ _ClassDescription
+}
+where
+ ClassType = '001'
+ and ValidityEndDate >= $session.system_date
diff --git a/src/ZDSAG_CLASIFICATION_CLOUD/zdsag_r_classdescription.ddls.baseinfo b/src/ZDSAG_PRODUCT_LIST_C1/zdsag_i_classification_clas_vh.ddls.baseinfo
similarity index 72%
rename from src/ZDSAG_CLASIFICATION_CLOUD/zdsag_r_classdescription.ddls.baseinfo
rename to src/ZDSAG_PRODUCT_LIST_C1/zdsag_i_classification_clas_vh.ddls.baseinfo
index 18938dc..8787849 100644
--- a/src/ZDSAG_CLASIFICATION_CLOUD/zdsag_r_classdescription.ddls.baseinfo
+++ b/src/ZDSAG_PRODUCT_LIST_C1/zdsag_i_classification_clas_vh.ddls.baseinfo
@@ -3,16 +3,15 @@
{
"FROM":
[
-"I_CLFNCLASSDESCRIPTION"
+"I_CLFNCLASS"
],
"ASSOCIATED":
[
-"I_CLFNCLASS",
-"ZDSAG_R_CLASSIFICATION"
+"I_CLFNCLASSDESCRIPTION"
],
"BASE":
[
-"I_CLFNCLASSDESCRIPTION"
+"I_CLFNCLASS"
],
"ANNO_REF":
[],
diff --git a/src/ZDSAG_CLASIFICATION_CLOUD/zdsag_r_classcharacters.ddls.xml b/src/ZDSAG_PRODUCT_LIST_C1/zdsag_i_classification_clas_vh.ddls.xml
similarity index 75%
rename from src/ZDSAG_CLASIFICATION_CLOUD/zdsag_r_classcharacters.ddls.xml
rename to src/ZDSAG_PRODUCT_LIST_C1/zdsag_i_classification_clas_vh.ddls.xml
index 9459fcd..0366859 100644
--- a/src/ZDSAG_CLASIFICATION_CLOUD/zdsag_r_classcharacters.ddls.xml
+++ b/src/ZDSAG_PRODUCT_LIST_C1/zdsag_i_classification_clas_vh.ddls.xml
@@ -3,9 +3,9 @@
- ZDSAG_R_CLASSCHARACTERS
+ ZDSAG_I_CLASSIFICATION_CLAS_VH
E
- Classification Characteristics
+ Classification class value help
W
diff --git a/src/ZDSAG_CLASIFICATION_CLOUD/efff74fe3c61d3871d80ef42aa8920ht.sush.xml b/src/ZDSAG_PRODUCT_LIST_CLOUD/2afb1011ba41ae57762b16c52ccb06ht.sush.xml
similarity index 84%
rename from src/ZDSAG_CLASIFICATION_CLOUD/efff74fe3c61d3871d80ef42aa8920ht.sush.xml
rename to src/ZDSAG_PRODUCT_LIST_CLOUD/2afb1011ba41ae57762b16c52ccb06ht.sush.xml
index 0e86959..c01d686 100644
--- a/src/ZDSAG_CLASIFICATION_CLOUD/efff74fe3c61d3871d80ef42aa8920ht.sush.xml
+++ b/src/ZDSAG_PRODUCT_LIST_CLOUD/2afb1011ba41ae57762b16c52ccb06ht.sush.xml
@@ -3,14 +3,14 @@
- EFFF74FE3C61D3871D80EF42AA8920
+ 2AFB1011BA41AE57762B16C52CCB06
HT
- R3TR G4BA ZDSAG_SB_CLASSIFICATION
+ R3TR G4BA ZUI_DSAG_PRODUCT_O4
5
- EFFF74FE3C61D3871D80EF42AA8920
+ 2AFB1011BA41AE57762B16C52CCB06
HT
X
diff --git a/src/ZDSAG_PRODUCT_LIST_CLOUD/Readme.md b/src/ZDSAG_PRODUCT_LIST_CLOUD/Readme.md
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/src/ZDSAG_PRODUCT_LIST_CLOUD/Readme.md
@@ -0,0 +1 @@
+
diff --git a/src/ZDSAG_CLASIFICATION_CLOUD/package.devc.xml b/src/ZDSAG_PRODUCT_LIST_CLOUD/package.devc.xml
similarity index 84%
rename from src/ZDSAG_CLASIFICATION_CLOUD/package.devc.xml
rename to src/ZDSAG_PRODUCT_LIST_CLOUD/package.devc.xml
index ba4428c..e72026e 100644
--- a/src/ZDSAG_CLASIFICATION_CLOUD/package.devc.xml
+++ b/src/ZDSAG_PRODUCT_LIST_CLOUD/package.devc.xml
@@ -3,7 +3,7 @@
- Classification Cloud Ready
+ Product List - Cloud ready artifacts
5
diff --git a/src/ZDSAG_PRODUCT_LIST_CLOUD/zbp_dsag_r_product.clas.abap b/src/ZDSAG_PRODUCT_LIST_CLOUD/zbp_dsag_r_product.clas.abap
new file mode 100644
index 0000000..48d6f8a
--- /dev/null
+++ b/src/ZDSAG_PRODUCT_LIST_CLOUD/zbp_dsag_r_product.clas.abap
@@ -0,0 +1,31 @@
+CLASS zbp_dsag_r_product DEFINITION PUBLIC ABSTRACT FINAL FOR BEHAVIOR OF zdsag_r_product.
+ PUBLIC SECTION.
+ TYPES tt_events TYPE TABLE FOR EVENT zdsag_r_product~ClassAssigned_2_MATNR.
+ TYPES klasse_d TYPE c LENGTH 000018 .
+ TYPES klassenart TYPE c LENGTH 000003.
+
+ TYPES :BEGIN OF t_action_assignment,
+ classtype TYPE zbp_dsag_r_product=>klassenart,
+ class TYPE zbp_dsag_r_product=>klasse_d,
+ product TYPE matnr,
+ END OF t_action_assignment.
+
+ CLASS-DATA:
+ it_assignment_details TYPE STANDARD TABLE OF t_action_assignment,
+ ls_assignment_detail TYPE t_action_assignment.
+ CONSTANTS:
+ lc_material_master TYPE c LENGTH 000030 VALUE 'MARA',
+ lc_error TYPE bapi_mtype VALUE 'E',
+ lc_classification_type TYPE klassenart VALUE '001',
+ lc_msg_class TYPE symsgid VALUE 'ZDSAG_CLASS_ASSIGN'.
+ CLASS-METHODS
+ raise_event
+ IMPORTING it_events TYPE tt_events.
+ENDCLASS.
+
+CLASS zbp_dsag_r_product IMPLEMENTATION.
+ METHOD raise_event.
+ RAISE ENTITY EVENT zdsag_r_product~ClassAssigned_2_MATNR
+ FROM VALUE #( FOR IN it_events ( Product = -Product ) ).
+ ENDMETHOD.
+ENDCLASS.
diff --git a/src/ZDSAG_PRODUCT_LIST_CLOUD/zbp_dsag_r_product.clas.locals_imp.abap b/src/ZDSAG_PRODUCT_LIST_CLOUD/zbp_dsag_r_product.clas.locals_imp.abap
new file mode 100644
index 0000000..f0b61f5
--- /dev/null
+++ b/src/ZDSAG_PRODUCT_LIST_CLOUD/zbp_dsag_r_product.clas.locals_imp.abap
@@ -0,0 +1,198 @@
+CLASS lhc_ProductList DEFINITION INHERITING FROM cl_abap_behavior_handler.
+ PRIVATE SECTION.
+
+ METHODS get_instance_features FOR INSTANCE FEATURES
+ IMPORTING keys REQUEST requested_features FOR ProductList RESULT result.
+
+ METHODS get_instance_authorizations FOR INSTANCE AUTHORIZATION
+ IMPORTING keys REQUEST requested_authorizations FOR ProductList RESULT result.
+
+ METHODS lock FOR LOCK
+ IMPORTING keys FOR LOCK ProductList.
+
+ METHODS assign_class_to_product FOR MODIFY
+ IMPORTING keys FOR ACTION ProductList~assign_class_to_product.
+
+ENDCLASS.
+
+CLASS lhc_ProductList IMPLEMENTATION.
+
+ METHOD get_instance_features.
+ ENDMETHOD.
+
+ METHOD get_instance_authorizations.
+ ENDMETHOD.
+
+ METHOD lock.
+ READ ENTITIES OF zdsag_r_product IN LOCAL MODE
+ ENTITY ProductList
+ ALL FIELDS WITH CORRESPONDING #( keys )
+ RESULT DATA(Products)
+ FAILED failed
+ REPORTED reported.
+
+ LOOP AT Products INTO DATA(product).
+ zcl_dsag_product_utility=>enqueue_product(
+ EXPORTING
+ i_matnr = product-Product
+ IMPORTING
+ lock_error = DATA(lv_lock_error) ).
+ IF lv_lock_error EQ abap_true.
+ APPEND CORRESPONDING #( product ) TO failed-productlist ASSIGNING FIELD-SYMBOL().
+ -%fail-cause = if_abap_behv=>cause-locked.
+ APPEND CORRESPONDING #( product ) TO reported-productlist ASSIGNING FIELD-SYMBOL().
+ -%msg = new_message_with_text(
+ severity = if_abap_behv_message=>severity-error
+ text = |Instance locked by User { sy-msgv1 }| ).
+ ENDIF.
+ ENDLOOP.
+
+ ENDMETHOD.
+
+ METHOD assign_class_to_product.
+ DATA ls_return TYPE bapiret2.
+ DATA lt_return TYPE zcl_dsag_class_assignment_chk=>t_bapiret2.
+
+ READ ENTITIES OF zdsag_r_product IN LOCAL MODE
+ ENTITY ProductList
+ ALL FIELDS
+ WITH CORRESPONDING #( keys )
+ RESULT DATA(lt_products).
+
+ LOOP AT keys INTO DATA(ls_key).
+ IF line_exists( lt_products[ KEY id Product = ls_key-Product ] ). " Material Found
+
+ " Check if Assignment is already made between Material and Classification
+ zcl_dsag_class_assignment_chk=>does_obj_classification_exist(
+ EXPORTING classtype = zbp_dsag_r_product=>lc_classification_type
+ classnum = ls_key-%param-class
+ keydate = cl_abap_context_info=>get_system_date( )
+ objectkey = CONV #( ls_key-product )
+ objecttable = zbp_dsag_r_product=>lc_material_master
+ IMPORTING assignment_exists = DATA(assignment_exists) ).
+
+ IF assignment_exists = abap_true.
+ ls_return-id = zbp_dsag_r_product=>lc_msg_class.
+ ls_return-number = 007.
+ ls_return-type = zbp_dsag_r_product=>lc_error.
+ ls_return-message_v1 = ls_key-product.
+ ls_return-message_v2 = sy-msgv1.
+ APPEND ls_return TO lt_return.
+ CONTINUE.
+ ENDIF.
+ zdsag_classification_helper=>enqueue_classification(
+ EXPORTING classtype = zbp_dsag_r_product=>lc_classification_type
+ class = ls_key-%param-class
+ IMPORTING lock_error = DATA(lv_lock_error) ).
+
+ IF lv_lock_error = abap_true.
+ ls_return-id = zbp_dsag_r_product=>lc_msg_class.
+ ls_return-number = 003.
+ ls_return-type = zbp_dsag_r_product=>lc_error.
+ ls_return-message_v1 = ls_key-%param-class.
+ ls_return-message_v2 = sy-msgv1.
+ APPEND ls_return TO lt_return.
+ CONTINUE.
+ ENDIF.
+ ELSE. " Material Not Found
+ ls_return-id = zbp_dsag_r_product=>lc_msg_class.
+ ls_return-number = 005.
+ ls_return-type = zbp_dsag_r_product=>lc_error.
+ ls_return-message_v1 = ls_key-product.
+ APPEND ls_return TO lt_return.
+ CONTINUE.
+ ENDIF.
+
+ zbp_dsag_r_product=>ls_assignment_detail-class = ls_key-%param-class.
+ zbp_dsag_r_product=>ls_assignment_detail-product = ls_key-Product.
+
+ APPEND zbp_dsag_r_product=>ls_assignment_detail TO zbp_dsag_r_product=>it_assignment_details.
+ CLEAR ls_return.
+ ENDLOOP.
+
+ LOOP AT lt_return INTO ls_return WHERE type = zbp_dsag_r_product=>lc_error.
+ APPEND VALUE #( product = ls_return-message_v1
+ %msg = new_message( id = ls_return-id
+ number = ls_return-number
+ severity = if_abap_behv_message=>severity-error
+ v1 = ls_return-message_v1
+ v2 = ls_return-message_v2 ) )
+ TO reported-productlist.
+
+ IF ls_return-type = zbp_dsag_r_product=>lc_error.
+ APPEND VALUE #( %key = CORRESPONDING #( ls_key ) )
+ TO failed-productlist.
+ ENDIF.
+ ENDLOOP.
+ ENDMETHOD.
+
+ENDCLASS.
+
+CLASS lsc_ZDSAG_R_PRODUCT DEFINITION INHERITING FROM cl_abap_behavior_saver_failed.
+ PROTECTED SECTION.
+
+ METHODS save_modified REDEFINITION.
+
+ METHODS cleanup_finalize REDEFINITION.
+
+ENDCLASS.
+
+CLASS lsc_ZDSAG_R_PRODUCT IMPLEMENTATION.
+
+ METHOD save_modified.
+ DATA ls_return TYPE bapiret2.
+ DATA lt_return TYPE zcl_dsag_bapi_objcl=>t_bapiret2.
+
+ LOOP AT zbp_dsag_r_product=>it_assignment_details ASSIGNING FIELD-SYMBOL().
+ zbp_dsag_r_product_ext=>bapi_objcl_create( EXPORTING classnumnew = -class
+ classtypenew = zbp_dsag_r_product=>lc_classification_type
+ keydate = cl_abap_context_info=>get_system_date( )
+ objectkeynew = CONV #( -product )
+ objecttablenew = zbp_dsag_r_product=>lc_material_master
+ CHANGING return = lt_return ).
+ LOOP AT lt_return INTO ls_return.
+ IF NOT ( ls_return-type = 'I' AND ls_return-id = 'CL' AND ls_return-number = '732' ).
+ APPEND VALUE #(
+ product = -product
+ %msg = new_message( id = ls_return-id
+ number = ls_return-number
+ severity = SWITCH #( ls_return-type
+ WHEN 'S' THEN if_abap_behv_message=>severity-success
+ WHEN 'E' THEN if_abap_behv_message=>severity-error
+ WHEN 'W' THEN if_abap_behv_message=>severity-warning
+ WHEN 'I' THEN if_abap_behv_message=>severity-information
+ WHEN 'A' THEN if_abap_behv_message=>severity-error )
+ v1 = ls_return-message_v1
+ v2 = ls_return-message_v2
+ v3 = ls_return-message_v3
+ v4 = ls_return-message_v4 ) )
+ TO reported-productlist.
+ ENDIF.
+
+ IF ls_return-type = zbp_dsag_r_product=>lc_error.
+ APPEND VALUE #( product = -product )
+ TO failed-productlist.
+ ELSE.
+ DATA(atleast_one_success_assignment) = abap_true.
+ ENDIF.
+ ENDLOOP.
+ ENDLOOP.
+ IF failed-productlist IS NOT INITIAL AND atleast_one_success_assignment = abap_true.
+
+ CLEAR reported-productlist.
+
+ APPEND VALUE #(
+ product = -product
+ %msg = new_message( id = zbp_dsag_r_product=>lc_msg_class
+ number = 006
+ severity = if_abap_behv_message=>severity-error
+ ) )
+ TO reported-productlist.
+
+ ENDIF.
+ ENDMETHOD.
+
+ METHOD cleanup_finalize.
+ ENDMETHOD.
+
+ENDCLASS.
diff --git a/src/ZDSAG_CLASIFICATION_CLOUD/zbp_dsag_r_classification.clas.xml b/src/ZDSAG_PRODUCT_LIST_CLOUD/zbp_dsag_r_product.clas.xml
similarity index 70%
rename from src/ZDSAG_CLASIFICATION_CLOUD/zbp_dsag_r_classification.clas.xml
rename to src/ZDSAG_PRODUCT_LIST_CLOUD/zbp_dsag_r_product.clas.xml
index 55cded9..c195071 100644
--- a/src/ZDSAG_CLASIFICATION_CLOUD/zbp_dsag_r_classification.clas.xml
+++ b/src/ZDSAG_PRODUCT_LIST_CLOUD/zbp_dsag_r_product.clas.xml
@@ -3,15 +3,15 @@
- ZBP_DSAG_R_CLASSIFICATION
+ ZBP_DSAG_R_PRODUCT
E
- Behavior Implementation for ZDSAG_R_CLASSIFICATION
+ Behavior Implementation for ZDSAG_R_PRODUCT
06
1
X
X
5
- ZDSAG_R_CLASSIFICATION
+ ZDSAG_R_PRODUCT
diff --git a/src/ZDSAG_PRODUCT_LIST_CLOUD/zdsag_c_product.bdef.asbdef b/src/ZDSAG_PRODUCT_LIST_CLOUD/zdsag_c_product.bdef.asbdef
new file mode 100644
index 0000000..b97d9b0
--- /dev/null
+++ b/src/ZDSAG_PRODUCT_LIST_CLOUD/zdsag_c_product.bdef.asbdef
@@ -0,0 +1,9 @@
+projection;
+strict ( 2 );
+use side effects;
+
+define behavior for ZDSAG_C_PRODUCT alias ProductList
+{
+
+ use action assign_class_to_product;
+}
\ No newline at end of file
diff --git a/src/ZDSAG_CLASIFICATION_CLOUD/zdsag_c_classification.bdef.xml b/src/ZDSAG_PRODUCT_LIST_CLOUD/zdsag_c_product.bdef.xml
similarity index 76%
rename from src/ZDSAG_CLASIFICATION_CLOUD/zdsag_c_classification.bdef.xml
rename to src/ZDSAG_PRODUCT_LIST_CLOUD/zdsag_c_product.bdef.xml
index 75d4fdc..a6c35f3 100644
--- a/src/ZDSAG_CLASIFICATION_CLOUD/zdsag_c_classification.bdef.xml
+++ b/src/ZDSAG_PRODUCT_LIST_CLOUD/zdsag_c_product.bdef.xml
@@ -3,25 +3,25 @@
- ZDSAG_C_CLASSIFICATION
+ ZDSAG_C_PRODUCT
BDEF/BDO
- Classification Creation C view
+ Product List - Behavior projection
60
EN
-
- ./zdsag_c_classification/source/main/versions
+ ./zdsag_c_product/source/main/versions
http://www.sap.com/adt/relations/versions
Historic versions
-
- ./zdsag_c_classification/source/main
+ ./zdsag_c_product/source/main
http://www.sap.com/adt/relations/source
text/plain
Source Content
-
- ./zdsag_c_classification/source/main
+ ./zdsag_c_product/source/main
http://www.sap.com/adt/relations/source
text/html
Source Content (HTML)
@@ -29,7 +29,7 @@
EN
5
- ./zdsag_c_classification/source/main
+ ./zdsag_c_product/source/main
ABAP_SOURCE
true
true
diff --git a/src/ZDSAG_PRODUCT_LIST_CLOUD/zdsag_c_product.ddls.asddls b/src/ZDSAG_PRODUCT_LIST_CLOUD/zdsag_c_product.ddls.asddls
new file mode 100644
index 0000000..3b7a23e
--- /dev/null
+++ b/src/ZDSAG_PRODUCT_LIST_CLOUD/zdsag_c_product.ddls.asddls
@@ -0,0 +1,24 @@
+@AccessControl.authorizationCheck: #NOT_REQUIRED
+@EndUserText.label: 'Product List consumption view'
+@Metadata.ignorePropagatedAnnotations: true
+@Metadata.allowExtensions: true
+define root view entity ZDSAG_C_PRODUCT
+ provider contract transactional_query
+ as projection on ZDSAG_R_PRODUCT
+{
+ @Consumption: {
+ semanticObject: 'Material',
+ valueHelpDefinition: [{ entity: { name : 'I_ProductStdVH', element: 'Product' }, label: 'Products by Description' }]
+ }
+ key Product,
+ ProductDescription,
+ BaseUnit,
+ CreationDateTime,
+ ValidityStartDate,
+ CreatedByUser,
+ LastChangeDateTime,
+ LastChangedByUser,
+ /* Associations */
+ _ClassificationHelper,
+ _ProductDescription_2
+}
diff --git a/src/ZDSAG_CLASSIFICATION_C1/zdsag_r_cabn.ddls.baseinfo b/src/ZDSAG_PRODUCT_LIST_CLOUD/zdsag_c_product.ddls.baseinfo
similarity index 56%
rename from src/ZDSAG_CLASSIFICATION_C1/zdsag_r_cabn.ddls.baseinfo
rename to src/ZDSAG_PRODUCT_LIST_CLOUD/zdsag_c_product.ddls.baseinfo
index 167bb55..9fdfca9 100644
--- a/src/ZDSAG_CLASSIFICATION_C1/zdsag_r_cabn.ddls.baseinfo
+++ b/src/ZDSAG_PRODUCT_LIST_CLOUD/zdsag_c_product.ddls.baseinfo
@@ -3,12 +3,17 @@
{
"FROM":
[
-"I_CLFNCHARCBASIC"
+"ZDSAG_R_PRODUCT"
],
"ASSOCIATED":
-[],
+[
+"I_PRODUCTDESCRIPTION_2",
+"ZDSAG_I_CLASSIFICATIONHELPER"
+],
"BASE":
-[],
+[
+"ZDSAG_R_PRODUCT"
+],
"ANNO_REF":
[],
"SCALAR_FUNCTION":
diff --git a/src/ZDSAG_CLASIFICATION_CLOUD/zdsag_c_classification.ddls.xml b/src/ZDSAG_PRODUCT_LIST_CLOUD/zdsag_c_product.ddls.xml
similarity index 77%
rename from src/ZDSAG_CLASIFICATION_CLOUD/zdsag_c_classification.ddls.xml
rename to src/ZDSAG_PRODUCT_LIST_CLOUD/zdsag_c_product.ddls.xml
index dde5db8..9b6cf5a 100644
--- a/src/ZDSAG_CLASIFICATION_CLOUD/zdsag_c_classification.ddls.xml
+++ b/src/ZDSAG_PRODUCT_LIST_CLOUD/zdsag_c_product.ddls.xml
@@ -3,9 +3,9 @@
- ZDSAG_C_CLASSIFICATION
+ ZDSAG_C_PRODUCT
E
- Classification Creation C view
+ Product List consumption view
P
diff --git a/src/ZDSAG_PRODUCT_LIST_CLOUD/zdsag_c_product.ddlx.asddlxs b/src/ZDSAG_PRODUCT_LIST_CLOUD/zdsag_c_product.ddlx.asddlxs
new file mode 100644
index 0000000..8aee2c8
--- /dev/null
+++ b/src/ZDSAG_PRODUCT_LIST_CLOUD/zdsag_c_product.ddlx.asddlxs
@@ -0,0 +1,95 @@
+@Metadata.layer: #CUSTOMER
+@UI:{ headerInfo:{
+ typeName: 'Product',
+ typeNamePlural: 'Products',
+ title: { type: #STANDARD,value: 'ProductDescription', label: 'Product List' }},
+presentationVariant:[{
+ sortOrder: [{ by:'Product',direction:#DESC}],
+ visualizations: [{type: #AS_LINEITEM }] }]
+ }
+annotate entity ZDSAG_C_PRODUCT
+ with
+{
+ @UI.facet: [ {
+ type: #IDENTIFICATION_REFERENCE,
+ label: 'Product',
+ position: 10
+ },
+ { id: 'Assignment',
+ purpose: #STANDARD,
+ type :#LINEITEM_REFERENCE,
+ label: 'Classification Assignments',
+ position: 20,
+ targetElement: '_ClassificationHelper' } ]
+ @EndUserText.label: 'Product'
+ @UI:{
+ selectionField: [{position: 10}],
+ lineItem: [
+ {position:10, label: 'Product ID', importance:#HIGH},
+ {qualifier: 'duplicateCheck', position: 10, label: 'Product Number'},
+ {
+ type:#FOR_ACTION,
+ label: 'Assign Classification To Products',
+ dataAction: 'assign_class_to_product',
+ position: 10,
+ invocationGrouping: #CHANGE_SET
+ }]
+ }
+ @UI.identification: [ {
+ position: 10 ,
+ label: 'Product'
+ },
+ { type: #FOR_ACTION, dataAction: 'assign_class_to_product', label: 'Assign Classification To Product',invocationGrouping: #CHANGE_SET } ]
+ @Search.defaultSearchElement: true
+ @Search.ranking: #MEDIUM
+ Product;
+ @EndUserText.label: 'Product Description'
+ @UI: { lineItem: [ { position:20 } ],selectionField: [ { position: 20 } ] }
+ @UI.identification: [ {
+ position: 20 ,
+ label: 'Product Description'
+ } ]
+ ProductDescription;
+ @EndUserText.label: 'Base Unit'
+ @UI: { lineItem: [ { position:25 } ] }
+ @UI.identification: [ {
+ position: 25 ,
+ label: 'Base Unit'
+ } ]
+ BaseUnit;
+ @EndUserText.label: 'Validity Start Date'
+ @UI: { lineItem: [ { position:30 } ] }
+ @UI.identification: [ {
+ position: 30 ,
+ label: 'Validity Start Date'
+ } ]
+ ValidityStartDate;
+ @EndUserText.label: 'Created on'
+ @UI: { lineItem: [ { position:40 } ],selectionField: [ { position: 40 } ] }
+ @UI.identification: [ {
+ position: 40 ,
+ label: 'Created on'
+ } ]
+ CreationDateTime;
+ @EndUserText.label: 'Created By User'
+ @UI: { lineItem: [ { position:50 } ],selectionField: [ { position: 50 } ] }
+ @UI.identification: [ {
+ position: 50 ,
+ label: 'Created By User'
+ } ]
+ CreatedByUser;
+ @EndUserText.label: 'Last Changed on'
+ @UI: { lineItem: [ { position:60 } ],selectionField: [ { position: 60 } ] }
+ @UI.identification: [ {
+ position: 60 ,
+ label: 'Last Changed on'
+ } ]
+ LastChangeDateTime;
+ @EndUserText.label: 'Last Changed By User'
+ @UI: { lineItem: [ { position:70 } ],selectionField: [ { position: 70 } ] }
+ @UI.identification: [ {
+ position: 70 ,
+ label: 'Last Changed By User'
+ } ]
+ LastChangedByUser;
+}
\ No newline at end of file
diff --git a/src/ZDSAG_CLASIFICATION_CLOUD/zdsag_c_classification.ddlx.xml b/src/ZDSAG_PRODUCT_LIST_CLOUD/zdsag_c_product.ddlx.xml
similarity index 77%
rename from src/ZDSAG_CLASIFICATION_CLOUD/zdsag_c_classification.ddlx.xml
rename to src/ZDSAG_PRODUCT_LIST_CLOUD/zdsag_c_product.ddlx.xml
index 78a5373..cb4e0d7 100644
--- a/src/ZDSAG_CLASIFICATION_CLOUD/zdsag_c_classification.ddlx.xml
+++ b/src/ZDSAG_PRODUCT_LIST_CLOUD/zdsag_c_product.ddlx.xml
@@ -4,8 +4,8 @@
- ZDSAG_C_CLASSIFICATION
- Classification MDE Layer
+ ZDSAG_C_PRODUCT
+ Product list - metadata extension
EN
diff --git a/src/ZDSAG_PRODUCT_LIST_CLOUD/zdsag_class_assign.msag.xml b/src/ZDSAG_PRODUCT_LIST_CLOUD/zdsag_class_assign.msag.xml
new file mode 100644
index 0000000..89b965b
--- /dev/null
+++ b/src/ZDSAG_PRODUCT_LIST_CLOUD/zdsag_class_assign.msag.xml
@@ -0,0 +1,56 @@
+
+
+
+
+
+ ZDSAG_CLASS_ASSIGN
+ E
+ Messages - classification assignment for material
+
+
+
+ E
+ ZDSAG_CLASS_ASSIGN
+ 001
+ Class Type &1 does not exist. Please choose other option.
+
+
+ E
+ ZDSAG_CLASS_ASSIGN
+ 002
+ Classification &1 already exist, please choose a different name .
+
+
+ E
+ ZDSAG_CLASS_ASSIGN
+ 003
+ Classification &1 instance is locked by user &2.
+
+
+ E
+ ZDSAG_CLASS_ASSIGN
+ 004
+ Material &1 is locked by user &2.
+
+
+ E
+ ZDSAG_CLASS_ASSIGN
+ 005
+ Material &1 not found.
+
+
+ E
+ ZDSAG_CLASS_ASSIGN
+ 006
+ Error while assigning Classification to Material
+
+
+ E
+ ZDSAG_CLASS_ASSIGN
+ 007
+ Assignment already exists for Material &1
+
+
+
+
+
diff --git a/src/ZDSAG_PRODUCT_LIST_CLOUD/zdsag_classification_created.ddls.asddls b/src/ZDSAG_PRODUCT_LIST_CLOUD/zdsag_classification_created.ddls.asddls
new file mode 100644
index 0000000..651ad68
--- /dev/null
+++ b/src/ZDSAG_PRODUCT_LIST_CLOUD/zdsag_classification_created.ddls.asddls
@@ -0,0 +1,7 @@
+@EndUserText.label: 'Abstract entity for classification created'
+define abstract entity zdsag_classification_created
+{
+ classificationid : abap.numc(10);
+ ClassType : abap.char(3);
+ Class : abap.char(18);
+}
diff --git a/src/ZDSAG_CLASIFICATION_CLOUD/zdsag_a_classification_create.ddls.baseinfo b/src/ZDSAG_PRODUCT_LIST_CLOUD/zdsag_classification_created.ddls.baseinfo
similarity index 100%
rename from src/ZDSAG_CLASIFICATION_CLOUD/zdsag_a_classification_create.ddls.baseinfo
rename to src/ZDSAG_PRODUCT_LIST_CLOUD/zdsag_classification_created.ddls.baseinfo
diff --git a/src/ZDSAG_CLASIFICATION_CLOUD/zdsag_a_classification_create.ddls.xml b/src/ZDSAG_PRODUCT_LIST_CLOUD/zdsag_classification_created.ddls.xml
similarity index 73%
rename from src/ZDSAG_CLASIFICATION_CLOUD/zdsag_a_classification_create.ddls.xml
rename to src/ZDSAG_PRODUCT_LIST_CLOUD/zdsag_classification_created.ddls.xml
index 2b810df..68827fa 100644
--- a/src/ZDSAG_CLASIFICATION_CLOUD/zdsag_a_classification_create.ddls.xml
+++ b/src/ZDSAG_PRODUCT_LIST_CLOUD/zdsag_classification_created.ddls.xml
@@ -3,9 +3,9 @@
- ZDSAG_A_CLASSIFICATION_CREATE
+ ZDSAG_CLASSIFICATION_CREATED
E
- Abstract Entity for classification creation
+ Abstract entity for classification created
A
diff --git a/src/ZDSAG_PRODUCT_LIST_CLOUD/zdsag_i_characteristichelper.ddls.asddls b/src/ZDSAG_PRODUCT_LIST_CLOUD/zdsag_i_characteristichelper.ddls.asddls
new file mode 100644
index 0000000..cc18d24
--- /dev/null
+++ b/src/ZDSAG_PRODUCT_LIST_CLOUD/zdsag_i_characteristichelper.ddls.asddls
@@ -0,0 +1,25 @@
+@AbapCatalog.viewEnhancementCategory: [#NONE]
+@AccessControl.authorizationCheck: #NOT_REQUIRED
+@EndUserText.label: 'Characteristic Helper'
+@Metadata.ignorePropagatedAnnotations: true
+@ObjectModel.usageType:{
+ serviceQuality: #X,
+ sizeCategory: #S,
+ dataClass: #MIXED
+}
+define view entity ZDSAG_I_CharacteristicHelper
+ as select from I_ClfnClassCharacteristicDEX as ClassCharacteristic
+ inner join I_ClfnCharcDesc as CharcDesc on ClassCharacteristic.CharcInternalID = CharcDesc.CharcInternalID
+{
+ @UI.facet: [{ type: #IDENTIFICATION_REFERENCE,
+ label: 'Characteristics',
+ position: 10 }]
+
+ key ClassCharacteristic.ClassInternalID,
+ key ClassCharacteristic.CharcPositionNumber,
+ key ClassCharacteristic.ValidityEndDate,
+ ClassCharacteristic.CharcInternalID,
+ @UI: { identification: [ { position:10 } ],
+ lineItem: [ { position:10 } ] }
+ CharcDesc.CharcDescription
+}
diff --git a/src/ZDSAG_CLASIFICATION_CLOUD/zdsag_r_classcharacters.ddls.baseinfo b/src/ZDSAG_PRODUCT_LIST_CLOUD/zdsag_i_characteristichelper.ddls.baseinfo
similarity index 80%
rename from src/ZDSAG_CLASIFICATION_CLOUD/zdsag_r_classcharacters.ddls.baseinfo
rename to src/ZDSAG_PRODUCT_LIST_CLOUD/zdsag_i_characteristichelper.ddls.baseinfo
index a648f8b..05132f2 100644
--- a/src/ZDSAG_CLASIFICATION_CLOUD/zdsag_r_classcharacters.ddls.baseinfo
+++ b/src/ZDSAG_PRODUCT_LIST_CLOUD/zdsag_i_characteristichelper.ddls.baseinfo
@@ -3,14 +3,11 @@
{
"FROM":
[
+"I_CLFNCHARCDESC",
"I_CLFNCLASSCHARACTERISTICDEX"
],
"ASSOCIATED":
-[
-"I_CLFNCHARCDESC",
-"ZDSAG_R_CABN",
-"ZDSAG_R_CLASSIFICATION"
-],
+[],
"BASE":
[],
"ANNO_REF":
diff --git a/src/ZDSAG_CLASIFICATION_CLOUD/zdsag_i_materialvh.ddls.xml b/src/ZDSAG_PRODUCT_LIST_CLOUD/zdsag_i_characteristichelper.ddls.xml
similarity index 77%
rename from src/ZDSAG_CLASIFICATION_CLOUD/zdsag_i_materialvh.ddls.xml
rename to src/ZDSAG_PRODUCT_LIST_CLOUD/zdsag_i_characteristichelper.ddls.xml
index 5fe673f..0fb3893 100644
--- a/src/ZDSAG_CLASIFICATION_CLOUD/zdsag_i_materialvh.ddls.xml
+++ b/src/ZDSAG_PRODUCT_LIST_CLOUD/zdsag_i_characteristichelper.ddls.xml
@@ -3,9 +3,9 @@
- ZDSAG_I_MATERIALVH
+ ZDSAG_I_CHARACTERISTICHELPER
E
- Mitigate Material Value Help
+ Characteristic Helper
W
diff --git a/src/ZDSAG_PRODUCT_LIST_CLOUD/zdsag_i_classificationhelper.ddls.asddls b/src/ZDSAG_PRODUCT_LIST_CLOUD/zdsag_i_classificationhelper.ddls.asddls
new file mode 100644
index 0000000..b736189
--- /dev/null
+++ b/src/ZDSAG_PRODUCT_LIST_CLOUD/zdsag_i_classificationhelper.ddls.asddls
@@ -0,0 +1,48 @@
+@AbapCatalog.viewEnhancementCategory: [#NONE]
+@AccessControl.authorizationCheck: #NOT_REQUIRED
+@EndUserText.label: 'Classification Assignment Helper'
+@Metadata.ignorePropagatedAnnotations: true
+@ObjectModel.usageType:{
+ serviceQuality: #X,
+ sizeCategory: #S,
+ dataClass: #MIXED
+}
+define view entity ZDSAG_I_ClassificationHelper
+ as select from I_ClfnObjectClassDEX as Object
+ inner join I_ClfnClass as Class on Class.ClassInternalID = Object.ClassInternalID
+ association [0..*] to ZDSAG_I_CharacteristicHelper as _CharacteristicHelper on $projection.ClassInternalID = _CharacteristicHelper.ClassInternalID
+{
+ @UI.facet: [{ type: #IDENTIFICATION_REFERENCE,
+ label: 'Assignments',
+ position: 10 },
+ { type: #LINEITEM_REFERENCE,
+ label: 'Characteristics',
+ position: 20,
+ targetElement: '_CharacteristicHelper' }]
+
+ key Object.ClfnObjectID,
+ key Object.ClassInternalID,
+ @UI: { identification: [ { position:30 } ],
+ lineItem: [ { position:30 } ] }
+ key Object.ClassType,
+ key Object.ClfnObjectType,
+ key Object.TimeIntervalNumber,
+
+ Object.ClfnObjectTable,
+ Object.ClfnStatus,
+ @UI: { identification: [ { position:40 } ],
+ lineItem: [ { position:40 } ] }
+ Object.ClassPositionNumber,
+
+ @UI: { identification: [ { position:10 } ],
+ lineItem: [ { position:10 } ] }
+ Class.Class,
+ @UI: { identification: [ { position:20 } ],
+ lineItem: [ { position:20 } ] }
+ Class._ClassDescription[1:Language = $session.system_language].ClassDescription,
+ Class.ClassStatus,
+
+ _CharacteristicHelper
+}
+where
+ Object.ClfnObjectTable = 'MARA'
diff --git a/src/ZDSAG_CLASIFICATION_CLOUD/zdsag_product_helper.ddls.baseinfo b/src/ZDSAG_PRODUCT_LIST_CLOUD/zdsag_i_classificationhelper.ddls.baseinfo
similarity index 69%
rename from src/ZDSAG_CLASIFICATION_CLOUD/zdsag_product_helper.ddls.baseinfo
rename to src/ZDSAG_PRODUCT_LIST_CLOUD/zdsag_i_classificationhelper.ddls.baseinfo
index 20128a5..3d5bfd1 100644
--- a/src/ZDSAG_CLASIFICATION_CLOUD/zdsag_product_helper.ddls.baseinfo
+++ b/src/ZDSAG_PRODUCT_LIST_CLOUD/zdsag_i_classificationhelper.ddls.baseinfo
@@ -3,18 +3,16 @@
{
"FROM":
[
-"I_CLFNOBJECTCLASSDEX",
-"I_PRODUCTDESCRIPTION_2"
+"I_CLFNCLASS",
+"I_CLFNCLASSDESCRIPTION",
+"I_CLFNOBJECTCLASSDEX"
],
"ASSOCIATED":
[
-"I_CLFNCLASS",
-"I_PRODUCTDESCRIPTION_2"
+"ZDSAG_I_CHARACTERISTICHELPER"
],
"BASE":
-[
-"I_CLFNOBJECTCLASSDEX"
-],
+[],
"ANNO_REF":
[],
"SCALAR_FUNCTION":
diff --git a/src/ZDSAG_CLASIFICATION_CLOUD/zdsag_product_helper.ddls.xml b/src/ZDSAG_PRODUCT_LIST_CLOUD/zdsag_i_classificationhelper.ddls.xml
similarity index 75%
rename from src/ZDSAG_CLASIFICATION_CLOUD/zdsag_product_helper.ddls.xml
rename to src/ZDSAG_PRODUCT_LIST_CLOUD/zdsag_i_classificationhelper.ddls.xml
index 23e44a5..1a834c1 100644
--- a/src/ZDSAG_CLASIFICATION_CLOUD/zdsag_product_helper.ddls.xml
+++ b/src/ZDSAG_PRODUCT_LIST_CLOUD/zdsag_i_classificationhelper.ddls.xml
@@ -3,9 +3,9 @@
- ZDSAG_PRODUCT_HELPER
+ ZDSAG_I_CLASSIFICATIONHELPER
E
- Product Helper
+ Classification Assignment Helper
W
diff --git a/src/ZDSAG_PRODUCT_LIST_CLOUD/zdsag_material_assigned.evtb.json b/src/ZDSAG_PRODUCT_LIST_CLOUD/zdsag_material_assigned.evtb.json
new file mode 100644
index 0000000..dde92b9
--- /dev/null
+++ b/src/ZDSAG_PRODUCT_LIST_CLOUD/zdsag_material_assigned.evtb.json
@@ -0,0 +1,21 @@
+{
+ "formatVersion": "1",
+ "header": {
+ "description": "Material assigned with New View",
+ "originalLanguage": "en",
+ "abapLanguageVersion": "cloudDevelopment"
+ },
+ "producerNamespace": "test.s4",
+ "producer": "P6D2C7FAB6BA4517254000E6296990390",
+ "producerVersion": "0001",
+ "boName": "EventClassificationAssignment",
+ "boOperation": "Created",
+ "producerType": "test.s4.EventClassificationAssignment.Created.v*",
+ "events": [
+ {
+ "eventVersion": "0001",
+ "entityName": "ZDSAG_R_PRODUCT",
+ "entityEventName": "CLASSASSIGNED_2_MATNR"
+ }
+ ]
+}
diff --git a/src/ZDSAG_PRODUCT_LIST_CLOUD/zdsag_parameter_class_detail.ddls.asddls b/src/ZDSAG_PRODUCT_LIST_CLOUD/zdsag_parameter_class_detail.ddls.asddls
new file mode 100644
index 0000000..eb107fb
--- /dev/null
+++ b/src/ZDSAG_PRODUCT_LIST_CLOUD/zdsag_parameter_class_detail.ddls.asddls
@@ -0,0 +1,8 @@
+@EndUserText.label: 'Parameter for class details'
+
+define abstract entity zdsag_parameter_class_detail
+{
+ @EndUserText.label: 'Class'
+ @Consumption.valueHelpDefinition: [{ entity: { name: 'ZDSAG_I_Classification_Clas_VH', element: 'Class' } }]
+ class : abap.char(18);
+}
diff --git a/src/ZDSAG_CLASIFICATION_CLOUD/zdsag_parameter_matnr_detail.ddls.baseinfo b/src/ZDSAG_PRODUCT_LIST_CLOUD/zdsag_parameter_class_detail.ddls.baseinfo
similarity index 100%
rename from src/ZDSAG_CLASIFICATION_CLOUD/zdsag_parameter_matnr_detail.ddls.baseinfo
rename to src/ZDSAG_PRODUCT_LIST_CLOUD/zdsag_parameter_class_detail.ddls.baseinfo
diff --git a/src/ZDSAG_CLASIFICATION_CLOUD/zdsag_parameter_matnr_detail.ddls.xml b/src/ZDSAG_PRODUCT_LIST_CLOUD/zdsag_parameter_class_detail.ddls.xml
similarity index 74%
rename from src/ZDSAG_CLASIFICATION_CLOUD/zdsag_parameter_matnr_detail.ddls.xml
rename to src/ZDSAG_PRODUCT_LIST_CLOUD/zdsag_parameter_class_detail.ddls.xml
index 0d01f3e..028f64c 100644
--- a/src/ZDSAG_CLASIFICATION_CLOUD/zdsag_parameter_matnr_detail.ddls.xml
+++ b/src/ZDSAG_PRODUCT_LIST_CLOUD/zdsag_parameter_class_detail.ddls.xml
@@ -3,9 +3,9 @@
- ZDSAG_PARAMETER_MATNR_DETAIL
+ ZDSAG_PARAMETER_CLASS_DETAIL
E
- Assignmnet Of Classification to Material
+ Parameter for class details
A
diff --git a/src/ZDSAG_PRODUCT_LIST_CLOUD/zdsag_r_product.bdef.asbdef b/src/ZDSAG_PRODUCT_LIST_CLOUD/zdsag_r_product.bdef.asbdef
new file mode 100644
index 0000000..6407f9c
--- /dev/null
+++ b/src/ZDSAG_PRODUCT_LIST_CLOUD/zdsag_r_product.bdef.asbdef
@@ -0,0 +1,20 @@
+managed implementation in class zbp_dsag_r_product unique;
+strict ( 2 );
+extensible;
+
+define behavior for ZDSAG_R_PRODUCT alias ProductList
+with unmanaged save
+lock master unmanaged
+authorization master ( instance )
+extensible
+{
+ field ( readonly ) Product;
+ action ( features : instance ) assign_class_to_product parameter zdsag_parameter_class_detail;
+
+ side effects
+ {
+ action assign_class_to_product affects $self;
+ }
+
+ event ClassAssigned_2_MATNR parameter zdsag_classification_created;
+}
\ No newline at end of file
diff --git a/src/ZDSAG_CLASIFICATION_CLOUD/zdsag_r_classification.bdef.xml b/src/ZDSAG_PRODUCT_LIST_CLOUD/zdsag_r_product.bdef.xml
similarity index 75%
rename from src/ZDSAG_CLASIFICATION_CLOUD/zdsag_r_classification.bdef.xml
rename to src/ZDSAG_PRODUCT_LIST_CLOUD/zdsag_r_product.bdef.xml
index 1620aca..b5000c1 100644
--- a/src/ZDSAG_CLASIFICATION_CLOUD/zdsag_r_classification.bdef.xml
+++ b/src/ZDSAG_PRODUCT_LIST_CLOUD/zdsag_r_product.bdef.xml
@@ -3,31 +3,31 @@
- ZDSAG_R_CLASSIFICATION
+ ZDSAG_R_PRODUCT
BDEF/BDO
- Classification Creation R view
+ Product List root view
60
EN
-
- ./zdsag_r_classification/source/main/versions
+ ./zdsag_r_product/source/main/versions
http://www.sap.com/adt/relations/versions
Historic versions
-
- ./zdsag_r_classification/source/main
+ ./zdsag_r_product/source/main
http://www.sap.com/adt/relations/source
text/plain
Source Content
-
- ./zdsag_r_classification/source/main
+ ./zdsag_r_product/source/main
http://www.sap.com/adt/relations/source
text/html
Source Content (HTML)
-
- ./zdsag_r_classification/enhancement/elements
+ ./zdsag_r_product/enhancement/elements
http://www.sap.com/adt/relations/enhancements
application/vnd.sap.adt.elementinfo+xml
Enhancements
@@ -35,7 +35,7 @@
EN
5
- ./zdsag_r_classification/source/main
+ ./zdsag_r_product/source/main
ABAP_SOURCE
true
true
diff --git a/src/ZDSAG_PRODUCT_LIST_CLOUD/zdsag_r_product.ddls.asddls b/src/ZDSAG_PRODUCT_LIST_CLOUD/zdsag_r_product.ddls.asddls
new file mode 100644
index 0000000..045ad4d
--- /dev/null
+++ b/src/ZDSAG_PRODUCT_LIST_CLOUD/zdsag_r_product.ddls.asddls
@@ -0,0 +1,21 @@
+@AccessControl.authorizationCheck: #NOT_REQUIRED
+@EndUserText.label: 'Product List root view'
+@Metadata.ignorePropagatedAnnotations: true
+define root view entity ZDSAG_R_PRODUCT
+ as select from I_Product
+ association [0..*] to ZDSAG_I_ClassificationHelper as _ClassificationHelper on $projection.Product = _ClassificationHelper.ClfnObjectID
+ association [0..1] to I_ProductDescription_2 as _ProductDescription_2 on $projection.Product = _ProductDescription_2.Product
+ and _ProductDescription_2.Language = $session.system_language
+{
+ key Product,
+ _ProductDescription_2.ProductDescription as ProductDescription,
+ BaseUnit,
+ CreationDateTime,
+ ValidityStartDate,
+ CreatedByUser,
+ LastChangeDateTime,
+ LastChangedByUser,
+ /* Associations */
+ _ClassificationHelper,
+ _ProductDescription_2
+}
diff --git a/src/ZDSAG_CLASIFICATION_CLOUD/zdsag_i_materialvh.ddls.baseinfo b/src/ZDSAG_PRODUCT_LIST_CLOUD/zdsag_r_product.ddls.baseinfo
similarity index 76%
rename from src/ZDSAG_CLASIFICATION_CLOUD/zdsag_i_materialvh.ddls.baseinfo
rename to src/ZDSAG_PRODUCT_LIST_CLOUD/zdsag_r_product.ddls.baseinfo
index d7bd63f..7e1f03d 100644
--- a/src/ZDSAG_CLASIFICATION_CLOUD/zdsag_i_materialvh.ddls.baseinfo
+++ b/src/ZDSAG_PRODUCT_LIST_CLOUD/zdsag_r_product.ddls.baseinfo
@@ -8,7 +8,8 @@
],
"ASSOCIATED":
[
-"I_PRODUCTDESCRIPTION_2"
+"I_PRODUCTDESCRIPTION_2",
+"ZDSAG_I_CLASSIFICATIONHELPER"
],
"BASE":
[],
diff --git a/src/ZDSAG_CLASSIFICATION_C1/zdsag_r_cabn.ddls.xml b/src/ZDSAG_PRODUCT_LIST_CLOUD/zdsag_r_product.ddls.xml
similarity index 79%
rename from src/ZDSAG_CLASSIFICATION_C1/zdsag_r_cabn.ddls.xml
rename to src/ZDSAG_PRODUCT_LIST_CLOUD/zdsag_r_product.ddls.xml
index 6919638..2556f7f 100644
--- a/src/ZDSAG_CLASSIFICATION_C1/zdsag_r_cabn.ddls.xml
+++ b/src/ZDSAG_PRODUCT_LIST_CLOUD/zdsag_r_product.ddls.xml
@@ -3,9 +3,9 @@
- ZDSAG_R_CABN
+ ZDSAG_R_PRODUCT
E
- Characertistics
+ Product List root view
W
diff --git a/src/ZDSAG_PRODUCT_LIST_CLOUD/zdsag_r_product_extend.bdef.asbdef b/src/ZDSAG_PRODUCT_LIST_CLOUD/zdsag_r_product_extend.bdef.asbdef
new file mode 100644
index 0000000..99ef994
--- /dev/null
+++ b/src/ZDSAG_PRODUCT_LIST_CLOUD/zdsag_r_product_extend.bdef.asbdef
@@ -0,0 +1,10 @@
+extension implementation in class zbp_dsag_r_product_ext unique;
+define authorization context NoCheckWhenSaving
+{
+ 'C_TCLA_BKA';
+ 'C_KLAH_BKP';
+ 'C_KLAH_BKL';
+}
+extend behavior for ProductList
+{
+}
\ No newline at end of file
diff --git a/src/ZDSAG_CLASIFICATION_CLOUD/zdsag_r_classification_extend.bdef.xml b/src/ZDSAG_PRODUCT_LIST_CLOUD/zdsag_r_product_extend.bdef.xml
similarity index 72%
rename from src/ZDSAG_CLASIFICATION_CLOUD/zdsag_r_classification_extend.bdef.xml
rename to src/ZDSAG_PRODUCT_LIST_CLOUD/zdsag_r_product_extend.bdef.xml
index 81be1ba..801a486 100644
--- a/src/ZDSAG_CLASIFICATION_CLOUD/zdsag_r_classification_extend.bdef.xml
+++ b/src/ZDSAG_PRODUCT_LIST_CLOUD/zdsag_r_product_extend.bdef.xml
@@ -3,38 +3,38 @@
- ZDSAG_R_CLASSIFICATION_EXTEND
+ ZDSAG_R_PRODUCT_EXTEND
BDEF/BDO
- Extension Behaviour Definition
+ Product List - Behavior extension
60
EN
-
- ./zdsag_r_classification_extend/source/main/versions
+ ./zdsag_r_product_extend/source/main/versions
http://www.sap.com/adt/relations/versions
Historic versions
-
- ./zdsag_r_classification_extend/source/main
+ ./zdsag_r_product_extend/source/main
http://www.sap.com/adt/relations/source
text/plain
Source Content
-
- ./zdsag_r_classification_extend/source/main
+ ./zdsag_r_product_extend/source/main
http://www.sap.com/adt/relations/source
text/html
Source Content (HTML)
-
- /sap/bc/adt/bo/behaviordefinitions/zdsag_r_classification/source/main
+ /sap/bc/adt/bo/behaviordefinitions/zdsag_r_product/source/main
http://www.sap.com/adt/relations/navigation
base_bdef
EN
5
- ./zdsag_r_classification_extend/source/main
+ ./zdsag_r_product_extend/source/main
ABAP_SOURCE
true
true
diff --git a/src/ZDSAG_CLASIFICATION_CLOUD/zdsag_sb_classification.g4ba.xml b/src/ZDSAG_PRODUCT_LIST_CLOUD/zui_dsag_product_o4.g4ba.xml
similarity index 76%
rename from src/ZDSAG_CLASIFICATION_CLOUD/zdsag_sb_classification.g4ba.xml
rename to src/ZDSAG_PRODUCT_LIST_CLOUD/zui_dsag_product_o4.g4ba.xml
index 3c0d99b..f099140 100644
--- a/src/ZDSAG_CLASIFICATION_CLOUD/zdsag_sb_classification.g4ba.xml
+++ b/src/ZDSAG_PRODUCT_LIST_CLOUD/zui_dsag_product_o4.g4ba.xml
@@ -4,7 +4,7 @@
<_-IWBEP_-I_V4_MSGA>
<_-IWBEP_-I_V4_MSGA>
- ZDSAG_SB_CLASSIFICATION
+ ZUI_DSAG_PRODUCT_O4
/IWBEP/COMMON
DEFAULT
031
@@ -12,18 +12,18 @@
<_-IWBEP_-I_V4_MSGR>
<_-IWBEP_-I_V4_MSGR>
- ZDSAG_SB_CLASSIFICATION
+ ZUI_DSAG_PRODUCT_O4
031
SADL
- ZDSAG_SB_CLASSIFICATION
+ ZUI_DSAG_PRODUCT_O4
5
<_-IWBEP_-I_V4_MSGT>
<_-IWBEP_-I_V4_MSGT>
- ZDSAG_SB_CLASSIFICATION
+ ZUI_DSAG_PRODUCT_O4
E
- Service Binding
+ Product List
diff --git a/src/ZDSAG_CLASIFICATION_CLOUD/zdsag_sb_classification.srvb.xml b/src/ZDSAG_PRODUCT_LIST_CLOUD/zui_dsag_product_o4.srvb.xml
similarity index 78%
rename from src/ZDSAG_CLASIFICATION_CLOUD/zdsag_sb_classification.srvb.xml
rename to src/ZDSAG_PRODUCT_LIST_CLOUD/zui_dsag_product_o4.srvb.xml
index 7c56bc7..d5b0578 100644
--- a/src/ZDSAG_CLASIFICATION_CLOUD/zdsag_sb_classification.srvb.xml
+++ b/src/ZDSAG_PRODUCT_LIST_CLOUD/zui_dsag_product_o4.srvb.xml
@@ -4,28 +4,28 @@
- ZDSAG_SB_CLASSIFICATION
+ ZUI_DSAG_PRODUCT_O4
SRVB/SVB
- Service Binding
+ Product List
5
- ZDSAG_SB_CLASSIFICATION
+ ZUI_DSAG_PRODUCT_O4
ODATA
V4
-
- ZDSAG_SD_CLASSIFICATION
+ ZUI_DSAG_PRODUCT_O4
-
0001
NOT_RELEASED
- /sap/bc/adt/ddic/srvd/sources/zdsag_sd_classification
+ /sap/bc/adt/ddic/srvd/sources/zui_dsag_product_o4
SRVD/SRV
- ZDSAG_SD_CLASSIFICATION
+ ZUI_DSAG_PRODUCT_O4
diff --git a/src/ZDSAG_PRODUCT_LIST_CLOUD/zui_dsag_product_o4.srvd.srvdsrv b/src/ZDSAG_PRODUCT_LIST_CLOUD/zui_dsag_product_o4.srvd.srvdsrv
new file mode 100644
index 0000000..520a81c
--- /dev/null
+++ b/src/ZDSAG_PRODUCT_LIST_CLOUD/zui_dsag_product_o4.srvd.srvdsrv
@@ -0,0 +1,6 @@
+@EndUserText.label: 'product list'
+@ObjectModel.leadingEntity.name: 'ZDSAG_C_PRODUCT'
+define service ZUI_DSAG_PRODUCT_O4 {
+ expose ZDSAG_C_PRODUCT as ProductList;
+ expose ZDSAG_I_ClassificationHelper as ClassificationHelper;
+}
\ No newline at end of file
diff --git a/src/ZDSAG_CLASIFICATION_CLOUD/zdsag_sd_classification.srvd.xml b/src/ZDSAG_PRODUCT_LIST_CLOUD/zui_dsag_product_o4.srvd.xml
similarity index 74%
rename from src/ZDSAG_CLASIFICATION_CLOUD/zdsag_sd_classification.srvd.xml
rename to src/ZDSAG_PRODUCT_LIST_CLOUD/zui_dsag_product_o4.srvd.xml
index 4d071af..d2971ca 100644
--- a/src/ZDSAG_CLASIFICATION_CLOUD/zdsag_sd_classification.srvd.xml
+++ b/src/ZDSAG_PRODUCT_LIST_CLOUD/zui_dsag_product_o4.srvd.xml
@@ -3,12 +3,12 @@
- ZDSAG_SD_CLASSIFICATION
+ ZUI_DSAG_PRODUCT_O4
SRVD/SRV
- Service Definition for Classification Creation & Maintenance
+ product list
EN
EN
- ./zdsag_sd_classification/source/main
+ ./zui_dsag_product_o4/source/main
ABAP_SOURCE
ABAP Development Tools
S