Appearance
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 lifecycleThe lab is designed to work with one SAP BTP ABAP Trial system.
You do not need a second ABAP system.
Lab information
| Estimated time | 60–90 minutes |
| Environment | SAP BTP ABAP Environment / Trial |
| Tools | Eclipse + ADT, abapGit Repositories plug-in, GitHub |
| Required output | GitHub repository with at least two meaningful commits |
| ABAP object | ZCL_GIT_LAB_### or an instructor-approved existing object |
| Recommended package | ZCOURSE_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 keyin 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 + ADTDo 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 changeAvoid messages such as:
text
update
final
stuff
commit 2Part 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 RepositoriesIf 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 EclipseRestart Eclipse if requested.
Record:
text
abapGit Repositories view available: Yes / NoPart 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 LabImplement:
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
F9Record 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.mdDo not add credentials to the README.
Record:
text
Repository name:
Visibility: Public / PrivatePart 7 — Copy the HTTPS URL
In the GitHub repository:
text
Code
→ HTTPSCopy the repository URL.
It should be similar to:
text
https://github.com/<owner>/<repository>.gitRecord 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 credentialPart 9 — Start the first Stage and Push
In ADT Project Explorer:
- locate your package;
- right-click it;
- choose:
text
Stage and PushSupply 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 exampleYour commit message:
text
________________________________________Question:
Why is your message better than
initialorstuff?
text
Part 13 — Commit and push
Complete:
text
Commit and PushWait for the operation to finish.
Record:
text
Push succeeded: Yes / NoIf 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.xmlDo 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
F9Record 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 PushInspect the proposed changes.
This time, your class should be recognizable as:
text
modifiedrather 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 outputYour 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 versionchanging to:
text
Git lab - second versionand the new line:
text
This line belongs to commit 2Answer:
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 finishYour 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 namesin 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 BindingExplain why the imported objects may need activation after import.
text
Which should conceptually be activated first?
text
Service Definition
or
Service BindingAnswer:
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 2It should not contain:
text
credentials
random unrelated course objects
meaningless commit spamPart 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 serviceWrite five commit messages:
text
1.
2.
3.
4.
5.Do not use the word:
text
updateby 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 abapGitDo 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 RepositoriesChoose the clone action.
Provide:
text
repository URL
branch
target package
transport requestAfter import:
text
inspect import log
activate objects
resolve dependencies
run the console classDo 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
| Action | Shortcut / menu |
|---|---|
| Open ABAP Development Object | Ctrl + Shift + A |
| Syntax check | Ctrl + F2 |
| Activate | Ctrl + F3 |
| Run console class | F9 |
| Open abapGit view | Window → Show View → Other... → ABAP → abapGit Repositories |
| Export workflow | package context menu → Stage and Push |
| Install plug-in | Help → 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 + diffYou 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.