ABAPGit을 이용해 내 파일 백업하기
개요
Git은 강력한 버전 관리 도구인 만큼 파일을 백업하는 데도 매우 유용하다. SAP GUI에 저장되어 있는 나의 모든 소중한 패키지들을 나의 GitHub에 안전하게 올리는 방법을 단계별로 알아보자.
🛠 Prerequisites (사전 준비)
1. ABAPGit 설치
먼저 시스템에 ABAPGit이 설치되어 있어야 한다.
🔗 참고 링크: ABAPGit 설치 가이드
나의 경우, 다행히 서버에 이미 설치가 되어 있어서 바로 이용할 수 있었다.(누군가 설치해뒀다 ㅋㅋ)
설치가 완료되면 SE38에서 ZABAPGIT 프로그램을 실행해 위와 같은 화면을 볼 수 있다.
💡 Tip: 로컬 컴퓨터에서 GitHub으로 푸시하려면 PC에도 Git이 설치되어 있어야 한다.
📦 Package 정리
ABAPGit은 패키지 단위로 코드를 올리는 구조다. 즉, 1개의 루트 패키지 = 1개의 Repository가 된다. 하나의 Repository에 모든 파일을 백업하는 것이 관리하기 편하므로, 먼저 패키지 트리를 예쁘게 정리해보자.
1단계. 루트 패키지 생성
ABAPGit은 지정한 루트 패키지의 하위 패키지들까지 모두 긁어온다. SE21 트랜잭션에서 새로운 최상위 루트 패키지를 하나 만들어 준다.
- 생성한 패키지 이름:
ZGITROOT_B30
2단계. 기존 패키지를 하위로 이동
SE80에서 백업할 패키지를 클릭한 후, Super Package(상위 패키지) 필드에 앞서 만든 루트 패키지(ZGITROOT_B30)를 지정한다. 이렇게 하면 위계 관계가 형성된다.
⚠️ 주의사항: 로컬 패키지(
$TMP)는 하위 패키지로 지정할 수 없다.
따라서 $TMP에 있는 로컬 오브젝트들은 새로운 패키지를 만들어 복사해 주어야 했다. 나의 경우 백업해야 할 패키지가 총 4개 있었다:
ZPACB30_01ZS4D430B30ZS4D437B30Local Objects ($TMP)
💡 로컬 패키지 옮기기 노가다(?) 꿀팁
SE21에서 새로운 패키지(ZMYTMP_B30)를 만들고 $TMP 내용을 모두 옮겨줘야한다.
SE03을 활용하면 편하다고 하는데, 권한이 잠겨(locked) 있어서 사용할 수 없었다 😭. 결국 무식하지만 확실한 방법을 썼다:
- 옮기고 싶은 오브젝트들을 최대한 많이 드래그
- 마우스 우클릭 후
Additional Functions➡️Change Package Assignment선택- 새 패키지(
ZMYTMP_B30)로 변경!
루트 패키지와 그 아래 서브 패키지들이 깔끔하게 정리된 모습.
🔗 3단계. ABAPGit 연결
원래 정석대로라면 GitHub에 Repository를 만들어두고 온라인으로 직접 연결해야 한다.
위처럼 레포지토리를 만들고 HTTPS 링크를 복사한 뒤,
ABAPGit에서 Create Online Repo를 누르면 끝이다! …하지만
현재 교육 서버 환경에서는 외부 네트워크가 막혀 있었다. 인증서를 이용한 우회 접속도 가능하지만, 혹시 모를 에러와 혹시라도 서버가 이상하게 노출되면 내 탓이니까 방지하기 위해 Offline 모드로 우회하는 방법을 선택했다.
💾 오프라인으로 로컬에 다운로드 후 GitHub에 올리기
1. New Offline Repository 만들기
ABAPGit에서 Offline Repository를 생성한다. 이때 패키지들이 계층 구조로 얽혀 있으므로 Folder Logic을 반드시 Full로 선택해야 한다.
2. Export하여 로컬에 다운로드
생성된 레포지토리에서 Export 버튼을 눌러 압축 파일(zip)을 로컬 PC로 다운로드하고 압축을 푼다.
3. 로컬 터미널에서 GitHub으로 Push
다운로드 받은 폴더를 열고, 터미널(Git Bash 등)에서 아래 명령어를 순서대로 입력한다.
1
2
3
4
5
6
git init
git add .
git commit -m "feat: 첫 ABAP 소스 코드 백업"
git remote add origin 본인_레포지토리_주소.git
git branch -M main
git push -u origin main
위와 같이 GitHub에 무사히 코드가 올라간 것을 확인할 수 있다. 저장소를 확인해 보면 수많은 메타데이터 파일들과 함께, 내가 직접 작성했던 .abap 프로그램 소스코드들이 안전하게 백업되어 있다.
✅ 마무리
일단 로컬 소스를 GitHub에 안전하게 대피시켰다! 나중에 SAP GUI 환경이 초기화된 후, 이 코드를 다시 Pull 받았을 때 정상적으로 작동하는지는 추후 테스트를 해봐야한다.
나중에 초기화가 되고 복구 테스트를 진행한 뒤 후기로 다시 돌아오겠다!