Skip to content

Workshop Lab — Git & GitHub for ABAP Cloud ​

This lab verifies that you can perform the Git workflow independently.

Workshop step 2 of 3

Complete Step 1 — Learn before starting this lab. When you finish, continue to Step 3 — Companion for the deeper reference and troubleshooting guide.

You will:

text
prepare a small ABAP package/object
      ↓
create a GitHub repository
      ↓
use abapGit from ADT
      ↓
stage + push an initial version
      ↓
inspect the repository
      ↓
make a second ABAP change
      ↓
stage + push again
      ↓
inspect history + diff
      ↓
explain Git vs ABAP transport lifecycle

The lab is designed to work with one SAP BTP ABAP Trial system.

You do not need a second ABAP system.


Lab information ​

Estimated time60–90 minutes
EnvironmentSAP BTP ABAP Environment / Trial
ToolsEclipse + ADT, abapGit Repositories plug-in, GitHub
Required outputGitHub repository with at least two meaningful commits
ABAP objectZCL_GIT_LAB_### or an instructor-approved existing object
Recommended packageZCOURSE_GIT_### or instructor-approved course package

Rules for the lab ​

Use your suffix ​

Replace:

text
###

with your student/group suffix.


Do not submit secrets ​

Never include:

text
GitHub password
personal access token
2FA code
recovery code
private key

in your source, repository, screenshots, or written answers.

If your instructor asks for evidence of successful authentication, show the resulting repository/commit—not the credential.


Edit ABAP in ADT ​

For this lab, make source changes in:

text
Eclipse + ADT

Do not edit serialized ABAP object files directly in GitHub.


Use meaningful commits ​

You need at least:

text
Commit 1 = initial working state
Commit 2 = a clear, intentional change

Avoid messages such as:

text
update
final
stuff
commit 2

Part 1 — Environment check ​

Confirm each item:

Record:

text
ABAP package:
Student/group suffix:

Do not record passwords or tokens.


Part 2 — Open the abapGit Repositories view ​

In Eclipse:

text
Window
  → Show View
  → Other...

Search for:

text
abapGit Repositories

If the view exists ​

Open it and continue.

If the view is missing ​

Install the ADT plug-in using:

text
Help
  → Install New Software...

Update site:

text
https://eclipse.abapgit.org/updatesite/

Install:

text
abapGit for ABAP Development Tools for Eclipse

Restart Eclipse if requested.

Record:

text
abapGit Repositories view available: Yes / No

Part 3 — Create or choose the ABAP package ​

Use the package assigned by your instructor.

Recommended workshop package:

text
ZCOURSE_GIT_###

If you create a package, place it under the package/superpackage required by the training environment and assign the requested transport when prompted.

Record:

text
Package used:

Part 4 — Create the lab class ​

Create:

text
ZCL_GIT_LAB_###

Description:

text
Git Workshop Lab

Implement:

abap
CLASS zcl_git_lab_### DEFINITION
  PUBLIC
  FINAL
  CREATE PUBLIC.

  PUBLIC SECTION.
    INTERFACES if_oo_adt_classrun.

ENDCLASS.


CLASS zcl_git_lab_### IMPLEMENTATION.

  METHOD if_oo_adt_classrun~main.

    out->write( 'Git lab - initial version' ).

  ENDMETHOD.

ENDCLASS.

Replace ###.

Run:

text
Ctrl + F2
Ctrl + F3
F9

Record the output:

text
________________________________________

Part 5 — Confirm a working initial state ​

Before using Git:

Question:

Why is it useful to create the first commit from a known working state?

Write your answer:

text

Part 6 — Create a GitHub repository ​

In GitHub, create a new repository.

Suggested name:

text
abap-cloud-git-lab-###

Use the visibility required by your instructor.

Initialize it with:

text
README.md

Do not add credentials to the README.

Record:

text
Repository name:
Visibility: Public / Private

Part 7 — Copy the HTTPS URL ​

In the GitHub repository:

text
Code
  → HTTPS

Copy the repository URL.

It should be similar to:

text
https://github.com/<owner>/<repository>.git

Record only the repository URL if your instructor allows it.

Do not append your token to the URL.


Part 8 — Prepare GitHub authentication ​

Use your institution's approved GitHub authentication process.

For a normal personal GitHub HTTPS repository, this may require a personal access token instead of your account password.

Checklist:

Do not write the token below.

Record only:

text
Authentication method used: ______________________

Examples:

text
personal access token
organization-approved credential

Part 9 — Start the first Stage and Push ​

In ADT Project Explorer:

  1. locate your package;
  2. right-click it;
  3. choose:
text
Stage and Push

Supply the Git repository connection information when prompted.

Authenticate using your approved credential.

NOTE

Dialog wording can vary slightly across ADT/backend versions.

Do not paste credentials into ABAP code or commit messages.


Part 10 — Inspect the unstaged changes ​

Before staging anything, inspect what abapGit proposes to export.

Find your class:

text
ZCL_GIT_LAB_###

Also notice any package/repository metadata included in the initial export.

Answer:

Does one ABAP object necessarily appear as exactly one Git file? ​

text

What other kinds of files/metadata do you observe? ​

text

Part 11 — Stage the first change set ​

Stage the files/objects required for the initial working version.

Do not intentionally include unrelated objects from another exercise.

Before committing, verify:


Part 12 — First commit message ​

Write a meaningful first commit message.

Recommended pattern:

text
Add initial ABAP Cloud Git lab example

Your commit message:

text
________________________________________

Question:

Why is your message better than initial or stuff?

text

Part 13 — Commit and push ​

Complete:

text
Commit and Push

Wait for the operation to finish.

Record:

text
Push succeeded: Yes / No

If it failed, use the Companion troubleshooting section before continuing.


Part 14 — Inspect GitHub after Commit 1 ​

Open the repository in GitHub.

Confirm:

Record the first commit message exactly:

text
________________________________________

Part 15 — Find .abapgit.xml ​

Locate:

text
.abapgit.xml

Do not edit it.

Answer:

What is this file for at a high level? ​

text

Why should you not delete it casually? ​

text

Part 16 — Inspect the source folder ​

Find the repository folder containing the serialized ABAP objects.

Commonly this is based under a path such as:

text
/src/

Record:

text
ABAP serialized source folder/path:

Question:

Does the Git folder structure exactly equal your ABAP package tree/name?

Explain:

text

Part 17 — Identify the class files ​

Find the files corresponding to:

text
ZCL_GIT_LAB_###

Record the filenames you can identify:

text
1.
2.
3.

Not every serializer/version will produce the same number of files.

Question:

Why can a single ABAP repository object have more than one serialized file?

text

Part 18 — Make the second ABAP change ​

Return to ADT.

Change the implementation to:

abap
METHOD if_oo_adt_classrun~main.

  out->write( 'Git lab - second version' ).
  out->write( 'This line belongs to commit 2' ).

ENDMETHOD.

Run:

text
Ctrl + F2
Ctrl + F3
F9

Record the new console output:

text

Part 19 — Verify the second working state ​

Before committing:


Part 20 — Stage the second change ​

Right-click the package:

text
Stage and Push

Inspect the proposed changes.

This time, your class should be recognizable as:

text
modified

rather than a completely new object.

Answer:

What changed between the first and second Git states?

text

Part 21 — Stage only the intended change ​

Stage the class change required for Commit 2.

If unrelated files are listed, do not stage them merely because they appear in the view.

Question:

What is the purpose of staging instead of automatically committing every current change?

text

Part 22 — Second commit message ​

Choose a message that describes the actual change.

Example:

text
Update Git lab console output

Your message:

text
________________________________________

Commit and push.


Part 23 — Verify Commit 2 in GitHub ​

Open GitHub's commit history.

Confirm that the repository now has at least two workshop commits.

Record:

text
Commit 1:
Commit 2:

Part 24 — Inspect the Git diff ​

Open the second commit's diff.

Find the source changes corresponding to:

text
Git lab - initial version

changing to:

text
Git lab - second version

and the new line:

text
This line belongs to commit 2

Answer:

What does a diff tell a reviewer that a screenshot of the final source does not?

text

Part 25 — Explain the history ​

Write a two-line history summary:

text
Commit 1:

Commit 2:

Then answer:

Does Git history show only the current source, or does it preserve earlier committed states as well?

text

Part 26 — Git vs activation ​

Complete:

text
Ctrl + F3
  → ______________________________________

Git commit
  → ______________________________________

Then answer:

Can a Git commit activate an ABAP class?

text

Part 27 — Git vs transports ​

Complete:

text
Git / abapGit
  → ______________________________________

ABAP transport / gCTS lifecycle
  → ______________________________________

Then answer:

Should GitHub be treated as a replacement for the normal DEV → TEST → PROD lifecycle in SAP BTP ABAP Environment?

Explain:

text

Part 28 — Supported object types ​

In your own words, explain this statement:

abapGit does not guarantee that every ABAP repository object type can be imported/exported in ABAP Cloud.

text

Why should a developer check current SAP documentation before relying on abapGit for an unfamiliar artifact type?

text

Part 29 — Import workflow reasoning ​

Do not clone the repository into another package in the same system for this required lab.

Instead, put these steps in the correct order:

text
A. Select branch and target package
B. Open abapGit Repositories view
C. Activate imported objects
D. Choose Clone
E. Enter repository URL
F. Select transport request and finish

Your order:

text
1.
2.
3.
4.
5.
6.

Part 30 — Why no same-system clone? ​

Answer:

Why could cloning your repository into another package in the same ABAP system fail or create conflicts?

Use the phrase:

text
system-wide ABAP object names

in your answer.

text

Part 31 — Imported-object activation ​

Imagine you clone an application into a different ABAP system.

It contains:

text
CDS entities
ABAP classes
Service Definition
Service Binding

Explain why the imported objects may need activation after import.

text

Which should conceptually be activated first?

text
Service Definition
or
Service Binding

Answer:

text
________________________________________

Part 32 — GitHub security check ​

Inspect your repository one final time.

Confirm:

If a secret appears anywhere, stop and revoke/rotate it before continuing.


Part 33 — Repository quality check ​

Review your GitHub repository.

A good submission should have:

text
README
.abapgit.xml
serialized ABAP files
meaningful commit history
clear diff between commit 1 and commit 2

It should not contain:

text
credentials
random unrelated course objects
meaningless commit spam

Part 34 — Professional commit exercise ​

Imagine you are later building a RAP application.

Put these changes into a sensible commit sequence:

text
Add persistence table
Add root CDS view
Add managed behavior
Add service projection
Expose OData service

Write five commit messages:

text
1.
2.
3.
4.
5.

Do not use the word:

text
update

by itself as a commit message.


Part 35 — Final reasoning questions ​

Answer in your own words.

1. What is the difference between Git and GitHub? ​

text

2. Where does ABAP source live while you edit it in ADT? ​

text

3. What role does abapGit play? ​

text

4. What does staging mean? ​

text

5. What does a commit represent? ​

text

6. What does push do? ​

text

7. What is .abapgit.xml? ​

text

8. Why can one ABAP class create several Git files? ​

text

9. Why should credentials never be committed? ​

text

10. Why does Git not replace ABAP activation? ​

text

11. Why does abapGit not replace the normal SAP transport lifecycle? ​

text

12. Why may imported objects require multiple activation passes? ​

text

13. Why is a meaningful commit message useful to another developer? ​

text

14. Why did this lab use two commits rather than one final upload? ​

text

15. When would importing/cloning this repository into another ABAP development system be useful? ​

text

Optional challenge 1 — Add a second ABAP object ​

Create another small object in the same package, for example:

text
ZCL_GIT_HELPER_###

Make it a coherent addition to the lab.

Stage and commit it separately with a meaningful message.

Then inspect how its serialization differs from the first class.


Optional challenge 2 — Add project documentation ​

Edit the GitHub repository README using the GitHub interface or an instructor-approved Git workflow.

Document:

text
Workshop purpose
ABAP Cloud requirement
Package naming
How ABAP source is pushed through abapGit

Do not put ABAP credentials or tenant secrets in the README.

Question:

Why can README documentation live in the Git repository even though it is not an ABAP repository object?

text

Optional challenge 3 — Independent import in another system ​

Complete this challenge only if you have access to a different ABAP Cloud development system and instructor permission.

Use:

text
Window
  → Show View
  → Other...
  → ABAP
  → abapGit Repositories

Choose the clone action.

Provide:

text
repository URL
branch
target package
transport request

After import:

text
inspect import log
activate objects
resolve dependencies
run the console class

Do not complete this challenge by importing duplicate object names into the same ABAP system.


Evidence checklist ​

Your instructor may ask you to demonstrate or submit evidence of the following.

Do not include authentication credentials in any evidence.


Submission checklist ​


Useful ADT actions ​

ActionShortcut / menu
Open ABAP Development ObjectCtrl + Shift + A
Syntax checkCtrl + F2
ActivateCtrl + F3
Run console classF9
Open abapGit viewWindow → Show View → Other... → ABAP → abapGit Repositories
Export workflowpackage context menu → Stage and Push
Install plug-inHelp → Install New Software...

Lab outcome ​

When you finish, you should be able to explain and perform this workflow without treating ABAP Cloud like a normal local Git folder:

text
ABAP object in ADT
      ↓
active ABAP repository state
      ↓
abapGit staging
      ↓
Git commit
      ↓
GitHub push
      ↓
Git history + diff

You should also be able to state clearly:

GitHub records and shares serialized ABAP source history; it does not replace ABAP activation or SAP's controlled system transport lifecycle.


Next step ​

Open the workshop companion →