abapGit Integration

Leveraging the already well-known open-source software abapGit, we now provide an interface to integrate all Neptune DXP artifacts with GitHub. This will allow you to have side-by-side your ABAP artifacts with your Neptune DXP artifacts, making it possible to store, version, and deploy full solutions across systems using GitHub.

Prerequisites

For this extension to work, the developer version of abapGit is required. Please make sure you follow these prerequisites:

How it works?

AbapGit allows you to connect one SAP package to one GitHub repository, enabling you to then pull and push the contents of that package from and to the GitHub repository. All Neptune DXP artifacts now allow you to assign an SAP package so that you can integrate these artifacts along with your SAP objects.

abapgit package assignment

The serializers for the Neptune DXP artifacts will turn the table contents of the artifacts into JSON files. Wherever there is javascript, typescript, CSS, or HTML code sections in the artifacts, those sections will be serialized into ".js", ".ts", ".css", and ".html" files. As an example, for applications, the serializer will pick up the CSS code and create a ".css" file, all coded events and scripts will be converted into ".js" files. These files can be edited and then pulled back to the application with the new code.

abapgit files example

The name of the serialized files will be composed of the following parts: "NAME / DESCRIPTION of the artifact" @ "key of the artifact"."Object Type"."name of the table"."Name of the object"."event"."extension of file".

  • "NAME / DESCRIPTION of the artifact" - Optional, Artifacts where the Key is the name of the artifact will not have this part of the file name.

  • "name of the table" - "/" is replaced with "#".

  • "Name of object" and "event" - Only present for applications.

Artifacts that have the key type "CHAR" will be presented with the key itself as the name of the artifact in the abapGit list of objects.

abapgit exemple app

Artifacts with the key type "GUID" will have the GUID displayed as the name of the artifact, but the name of the artifact will be displayed in the file names.

abapgit exemple guid
  • Fields containing information regarding "Created/Updated By", "Creation/Update Date", "Creation/Update Time", as well as "Server URL" and "SAP Client", are removed on the serialization process.

  • When pulling Neptune DXP artifacts:

    • If it’s new to the system, these fields will be automatically populated except for "Server URL" and "SAP Client", these two fields need to be maintained manually in the artifact, for example in Launchpads.

    • If it already exists in the system, only the fields regarding "Update" information will be updated, and if the "Server URL" and "SAP Client" are already maintained, the values will be kept.

Due to some limitations, we needed to map our artifacts to a 4-character code, so it can be integrated within abapGit. In the table below you can check the mapping of the Neptune DXP artifact to the abapGit object type that will be displayed in the list of objects. This can also be consulted in the system using table /NEPTUNE/ATY.

abapGit Object Type Neptune DXP Artifact Type key type

ZN00

Metadata

ZN01

App

CHAR

ZN02

API

GUID

ZN03

Launchpad

CHAR

ZN04

TileGroup

GUID

ZN05

Tile

GUID

ZN06

Policy

GUID

ZN07

Launchpad Layout

GUID

ZN08

TileLayout

GUID

ZN09

Enhancement

CHAR

ZN10

Login Page

CHAR

ZN11

Sticky Banner

CHAR

ZN12

Splash Screen

CHAR

ZN13

Custom Color

CHAR

ZN14

RichText Template

GUID

ZN15

Custom JS Helper

GUID

ZN16

Documentation

CHAR

ZN17

RFC Mapping

CHAR

ZN18

Media Library

GUID

ZN19

Media Pack

GUID

ZN20

URL Alias

GUID

ZN21

oData

GUID

ZN22

Mobile Client

CHAR

ZN23

Global i18n models

CHAR

ZN24

Tile Group Layout

CHAR

Deployment

You will need to perform two steps to enable this extension in your system.

First step

Download and install our extension class in your system, or pull it from GitHub using abapGit.

Second step

If this is the first time implementing abapGit user exits, you will need to create a class named ZCL_ABAPGIT_USER_EXIT with interface ZIF_ABAPGIT_EXIT, then it is necessary to implement the code shown below in the mentioned methods. The full user exit guide for abapGit can be found here.

If you already have the abapGit user exit class implemented, please add and adjust the code shown below to the mentioned methods.

CHANGE_SUPPORTED_OBJECT_TYPES

// Change supported object types to recognize Neptune DXP Artifacts
  method zif_abapgit_exit~change_supported_object_types.

    data: lt_neptune_types type /neptune/cl_abapgit_user_exit=>ty_object_types_tt,
          ls_neptune_types like line of lt_neptune_types.

    data ls_types like line of ct_types.

    lt_neptune_types = /neptune/cl_abapgit_user_exit=>change_supported_object_types( ).
    loop at lt_neptune_types into ls_neptune_types.
      ls_types = ls_neptune_types.
      append ls_types to ct_types.
    endloop.

  endmethod.

CHANGE_TADIR

// Include Neptune DXP Artifacts in the internal tadir table
  method zif_abapgit_exit~change_tadir.

    data: lt_neptune_tadir type /neptune/cl_abapgit_user_exit=>ty_tadir_tt,
          ls_neptune_tadir like line of lt_neptune_tadir.

    data ls_tadir like line of ct_tadir.

    lt_neptune_tadir = /neptune/cl_abapgit_user_exit=>change_tadir( iv_package = iv_package ).
    loop at lt_neptune_tadir into ls_neptune_tadir.
      move-corresponding ls_neptune_tadir to ls_tadir.
      append ls_tadir to ct_tadir.
    endloop.

  endmethod.

Changelog

The changelog can be found in the GitHub repository here.