What Is Application Dependency Mapping?
Modern software development is iterative and fast paced. Modern development organizations deploy new versions to production multiple times per day. However, software dependencies can get in the way of development velocity and add significant risk to the development process.
At the most basic level, A software dependency is code that needs other code to work. The “dependency” component performs a specific role or function that the main component needs to operate. A common use of dependencies is when developers integrate third-party libraries into their using tools like Maven, GitHub, or container image registries.
The process of application dependency mapping involves discovering and identifying the interactions of application components with each other and with the underlying hardware infrastructure. It can help development teams understand their dependencies and reduce the risk of failed tests, deployments, or migrations due to dependency issues. This is especially important as organizations adopt continuous integration and continuous delivery (CI/CD) practices.
What Is abapGit?
Advanced Business Application Programming (ABAP) is the main programming language supported by SAP business applications. abapGit is a tool for importing and exporting code from one ABAP system to another.
Using abapGit, developers with an access key can import, edit, and export code at scale. When importing code from a remote repository and overwriting existing ABAP artifacts, it is important to review the code to avoid errors (this is easy given abapGit’s plain text format).
To install abapGit on SAP systems:
- Install the abapGit repository on SAP—set up a link between GitHub and the SAP system to allow the download.
- Keep the abapGit version current—automatically update it by configuring a batch job.
- Monitor the abapGit repository—keep track of fixes and improvements to the product.
To get started, go to the abapGit project repository. Scroll to the documentation link and select the zabapgit.abap link to view the text of the ZABAPGIT_STANDALONE program. Cut and paste this into the system using SE38 or Eclipse.
All SAP systems 7.02 and above support abapGit. If there are errors, it could be the result of inappropriate syntax or an easily fixed issue via GitHub.
After copying the ZABAPGIT program, create a transaction to call it. When calling the transaction, the following screen should appear in SAP GUI:
Image Source: SAP
The abapGit documentation says that SSL must be configured to connect to GitHub, providing instructions to go to the GitHub website on Chrome and select the “locker” (a padlock icon) by the address bar, followed by Certificate.
The remaining instructions should be easy to follow—they include downloading and uploading the certificate to SAP using STRUST. Here is a rundown of the process:
- The developer toolbar opens at the Certificate tab.
- On the Details tab, select Copy to File to export the certificate to a .CER file.
- Open Certification Path and go to the tree’s parent node (downloading all levels of the tree).
In the documentation, the instructions for exporting the certificate can be confusing because they mention navigating to the parent node “until the root”—this refers to exporting multiple certificates. The Certification Path tab should contain a tree of certificates:
Image Source: SAP
At this stage, click on each part of the tree to download the relevant certificate. Select SSL Client SSL Client (Anonymous) in STRUST and choose the SAP system to upload each certificate. The STRUST menu can be complicated to understand—first, select the icon to the left to upload the certificates. Next, select Add to Certificate List and go back to the top of the page to click Save.
When completed, repeat these steps for the GitHub API website (http://api.github.com). Verify that these actions worked by visiting http://docs.abapgit.org/other-test-ssl.html to cut and paste the connection test into the SAP system.
APACK – A Package and Dependency Manager for ABAP
One of the challenges of ABAP is that until recently, there was no package and dependency management solution, like Maven or npm in other languages, which allows users to reuse existing libraries or solutions for their own projects. In ABAP, dependencies had to be declared manually via a README file and manually imported into the project one by one.
Recently, members of the ABAP community introduced APACK, a package and dependency manager for ABAP software projects. APACK allows for reuse and componentization of ABAP code, by assigning unique identifiers to abapGit packages (abapGit is an open source Git client for ABAP projects). The APACK dependency format conforms to Apache Maven’s Project Object Model (POM).
An important aspect of APACK is that it is independent of ABAP package and package interface definitions. This is necessary because abapGit lets users choose the local package name of the imported development objects, so declaring a package name is not universally meaningful. Additionally, globally unique identifiers, including versions, are needed to properly reconcile dependencies between components from different vendors.
Therefore, the APACK descriptor uniquely declares the package and its dependencies on other packages, which are automatically included during import.
Application dependency mapping is an important function in modern development projects, which can help teams understand the structure of their software projects, make troubleshooting easier, and better plan for migrations.
Until recently, the SAP ABAP language did not have a package manager (like npm or Maven in other programming languages). Contributors from the SAP community created an open source package manager called APACK, which is an important first step to gaining visibility into the dependency structure of SAP ABAP projects.
I hope you’ll make use of APACK to make your next ABAP project easier to manage and promote more effective collaboration and maintenance.