좋아요, 그럼 오늘은 SAP 기초 1일차 수업을 “컴공 3학년 수준 + 이미 프로그래밍 가능 + HANA 경험 있음” 기준으로 진행할게요.
즉, ABAP 기초를 빠르게 훑고 SAP의 개발 구조를 이해하는 데 집중하겠습니다.
📚 오늘 진도 — SAP 개발자 기초 입문 (1일차)
1. SAP 개발 환경 구조 이해
SAP는 ERP 시스템 + 개발 플랫폼이에요.
Java, Python과 달리 SAP는 거대한 애플리케이션 서버 안에서 코드를 작성하고 실행합니다.
구성 요소
- Application Server: ABAP 프로그램이 실행되는 공간
- Database Server: HANA DB (또는 다른 DB)
- Client/GUI: SAP GUI 또는 Fiori Launchpad (웹 UI)
- Development Workbench(SE80): ABAP 개발 IDE 역할
중요 T-Code
- SE80 : Object Navigator (개발 메인 툴)
- SE38 : 프로그램 실행/편집
- SE37 : Function Module (RFC 포함)
- SE11 : Data Dictionary (테이블/뷰/타입 관리)
- SE16N : 테이블 데이터 조회
- ST22 : Dump 분석 (Java의 stack trace 느낌)
2. ABAP 기본 문법 맛보기
ABAP는 C언어 계열 구조지만, SQL과 굉장히 밀접합니다.
자바로 치면 JDBC를 코드 중간에 자연스럽게 쓰는 느낌이에요.
Hello World 예제
REPORT z_hello_world.
WRITE 'Hello, SAP World!'.
** Report는 자바의 main 같은 프로그램 시작점 선언 역할
** z_hello_world 라는 독립 실행형 ABAP 프로그램을 만든다
** sap 내부에서 이 이름으로 프로그램 호출이 가능하다
** sap에서는 사용자 정의 프로그램, 테이블, 함수 이름 앞에는 Z 또는 Y를 붙이는 게 규칙
변수 선언 & 데이터 타입
DATA: lv_name TYPE string VALUE 'SAP',
lv_age TYPE i VALUE 30.
WRITE: / 'Name:', lv_name,
/ 'Age:', lv_age.
- TYPE string : 가변 문자열
- TYPE i : 정수(Integer)
- / : 줄바꿈
** WRITE = 출력 명령 / java 의 System.out.printLn();** WRITE에 : 를 붙이면 여러 항목을 콤마로 나열 가능** WRITE 는 디버깅, 리포트 출력용으로 자주 쓴다
** 출력 형식을 지정할 수도 있다.WRITE lv_age RIGHT-JUSTIFIED. → 숫자 오른쪽 정렬WRITE lv_name UNDER 'Customer'. → 지정한 텍스트 바로 아래에 출력
3. Internal Table (ABAP의 핵심 자료구조)
SAP는 DB 데이터 → Internal Table에 담아 처리하는 구조입니다.
(Python의 리스트, Java의 ArrayList + Struct 느낌)
TYPES: BEGIN OF ty_person,
name TYPE string,
age TYPE i,
END OF ty_person.
DATA: lt_people TYPE TABLE OF ty_person,
ls_person TYPE ty_person.
ls_person-name = 'Alice'.
ls_person-age = 25.
APPEND ls_person TO lt_people.
ls_person-name = 'Bob'.
ls_person-age = 30.
APPEND ls_person TO lt_people.
LOOP AT lt_people INTO ls_person.
WRITE: / ls_person-name, ls_person-age.
ENDLOOP.
💡 팁: Internal Table을 다루는 능력이 ABAP 생산성의 절반을 좌우합니다.
OK
4. Open SQL — DB 연동 기초
ABAP는 HANA DB와 직접 연결되지만, DB 종류와 상관없이 Open SQL 문법으로 접근합니다.
(Java에서 JPA/Hibernate, Python에서 ORM 비슷)
" SAP 사용자 정보를 조회하는 예제 프로그램 "
" Internal Table 선언 (여러 행을 저장) "
DATA: lt_users TYPE TABLE OF usr02,
ls_user TYPE usr02.
" usr02 테이블에서 최대 10행을 조회하여 lt_users에 저장 "
SELECT * FROM usr02 INTO TABLE lt_users UP TO 10 ROWS.
" Internal Table의 각 행을 순회 "
LOOP AT lt_users INTO ls_user.
" 사용자 ID(BNAME)와 마지막 로그인 일자(TRDAT)를 한 줄씩 출력 "
WRITE: / ls_user-bname, ls_user-trdat.
ENDLOOP.
- usr02 : SAP 사용자 마스터 테이블
- UP TO 10 ROWS : 결과 제한
OK
5. RFC 개념 맛보기
RFC(Remote Function Call)는 SAP 간/외부 시스템과 통신하는 핵심 기술입니다.
- ABAP RFC : SE37에서 Function Module 생성 후 RFC Enabled 설정
- 사용 예시:
- 다른 SAP 시스템 모듈 호출
- Java/Python에서 SAP 데이터 가져오기
- 오늘은 개념만, 실습은 다음 차시에
6. 오늘의 실습 미션
- SE38에서 Z_HELLO_WORLD 프로그램 작성
- Internal Table에 3명 정보 입력 후 LOOP로 출력
- SE11에서 USR02 테이블 구조 확인
- Open SQL로 USR02에서 5명 사용자 조회 프로그램 작성
📌 오늘 배운 핵심 요약
- SAP는 Application Server 내부에서 ABAP 실행
- 개발 주요 T-Code: SE80, SE38, SE37, SE11, SE16N
- ABAP 기본 문법 → Internal Table → Open SQL
- RFC는 SAP 통신의 핵심 (추후 심화)
다음 진도에서는 ABAP 데이터 딕셔너리 + 모듈화(Function Module) + RFC 실습으로 넘어갈 수 있어요.
원하시면 제가 내일차 분량으로 RFC Enabled Function Module을 직접 만들고 Java에서 호출하는 예제까지 준비해 드릴게요.
'DB > ORACLE,HANA' 카테고리의 다른 글
| Oracle 권한이 있는 테이블 확인 쿼리 (0) | 2025.07.01 |
|---|---|
| S/4HANA - 특정 구분자로 이루어진 문자열 부분 추출 - SUBSTRING_REGEXPR / REGEXP_SUBSTR (0) | 2025.02.06 |
| S/4HANA에서 문자·숫자만 남기기 REGEXP_REPLACE와 REPLACE_REGEXPR 함수 사용법 (0) | 2025.02.05 |
| [Oracle] 자주 쓰는 쿼리 (0) | 2023.05.17 |
| PL/SQL 테이블 구조, 테이블 칼럼만 보는 단축키 (0) | 2023.04.06 |