abapGit needs to be installed and set up according to the official documentation:
* [Installation](https://docs.abapgit.org/user-guide/getting-started/install.html)
* [SSL Setup](https://docs.abapgit.org/user-guide/setup/ssl-setup.html) (SSL certificates for api.github.com)
* [Proxy Configuration](https://docs.abapgit.org/user-guide/setup/settings-global.html) 

## Installation 

Execute abapGit using the report *ZABAPGIT_STANDALONE* or transaction code *ZABAPGIT*, click on *New Online*. 

Fill the field *Git repository URL* with *https://github.com/rku-it-GmbH/cds2alv.git*.

The default package name is *ZCDS_ALV*, create the package, if it does not already exist.

Create the Online Repository and pull all contents to your system. 

Check if the Viewcluster *ZVC_CDS_ALV_FW* works properly, it may be necessary to generate the Maintenance Views in Function Group *ZCDS_ALV_TABLES* manually.

## Setup

### Maintain the Viewcluster *ZVC_CDS_ALV_FW*

#### Intent-Based Navigation
Define the Intent-Based Navigation for the semantic objects and actions you want to use in your CDS Views. 

#### Intent-Based Navigation (Exits)
If the features offered by the framework are insufficient for ypur use case, you can use an exit class to implement the navigation for a specific CDS view.

#### Program Extensions
These are Plugins to enhance the features of the reports generated by the framework.
They allow you to replace the steps for selection and display.

##### Extension Parameters
Program Extensions typically need additional parameters that need to be added to the selection screen. In this view you can define these additional parameters. 

Please be aware that the parameter names must be unique globally, so two extensions using the same parameter names cannot be active at the same time. 

#### Implementation
The framework's factory class uses an Inverison of Control container to resolve the dependencies between the various classes.
This allows for replacing the default classes with other classes implementing the same interface.

In this view you can register global alternative implementing classes for the framework's interfaces.

Please be aware that the IoC container is not able to resolve cyclic dependencies, so you need to make sure that your collection of implementing classes does not lead to any cyclic dependencies. 

### Maintain Number Range Interval for View Entity Reports
Originally when designing the framework we decided to name the reports using a prefix and the name of the underlying database view of the CDS views.
As CDS View Entities do not have underlying database views the need for an alternative solution arose.

As of now the solution is to create a unique name by numbering the reports. To this end the framework uses the Number Range *ZCDS_ALV_N* with interval *00*.
This interval needs to be defined in order for the framework to generate reports for CDS View entities.