1. ABAP 기본 개념
1. ABAP란 무엇이며, SAP 시스템에서 어떤 역할을 하는지 설명해 주세요.
- ABAP(Advanced Business Application Programming)는 SAP 시스템에서 비즈니스 로직을 구현하는 고급 프로그래밍 언어입니다.
- 주로 SAP ERP, S/4HANA 등의 백엔드 개발에 사용되며, 데이터 처리, 사용자 인터페이스, 보고서 생성, 인터페이스 개발 등의 역할을 수행합니다.
2. ABAP의 주요 데이터 타입에는 어떤 것들이 있으며, 각각의 특징은 무엇인가요?
-
Elementary Data Types:
C (Character): 문자열 저장
N (Numeric): 숫자 형식의 문자
D (Date): YYYYMMDD 형식
T (Time): HHMMSS 형식
I (Integer), F (Floating Point), P (Packed Number)
-
Complex Data Types:
Structures (다양한 데이터 타입을 포함한 객체)
Internal Tables (배열과 비슷한 개념)
3. ABAP의 주요 구성 요소(Structure, Table, Report 등)는 무엇인가요?
- Structure: 여러 필드를 포함하는 데이터 형식
- Table: 데이터 저장을 위한 기본 단위
- Report: 데이터를 조회하고 처리하는 프로그램
- Function Module: 재사용 가능한 함수
- Class & Methods: 객체지향 프로그래밍을 지원
4. ABAP과 Java, Python 같은 다른 프로그래밍 언어와의 차이점은 무엇인가요?
- SAP 전용 언어로 ERP 환경과 밀접하게 연관
- 데이터베이스 OPEN SQL 내장, SAP 테이블과 연동이 쉬움
- 트랜잭션 기반 개발(예: SE38, SE80 등 SAP GUI 사용)
- 최신 SAP 환경에서는 ABAP on HANA를 지원
5. ABAP 프로그램의 실행 흐름과 주요 이벤트(EVENTS)는 어떻게 동작하나요?
- LOAD-OF-PROGRAM: 프로그램 로드 시 실행
- INITIALIZATION: 초기화 블록
- AT SELECTION-SCREEN: 선택 화면 이벤트
- START-OF-SELECTION: 데이터 조회 시작
- END-OF-SELECTION: 데이터 조회 완료 후 출력
- TOP-OF-PAGE / END-OF-PAGE: 페이지 헤더 및 푸터
2. 데이터베이스 및 내부 테이블
6. ABAP에서 내부 테이블(Internal Table)의 개념과 사용 목적은 무엇인가요?
- SAP 내부에서 임시 데이터를 저장하는 구조
- 대량의 데이터를 효율적으로 처리할 수 있도록 사용됨
- TYPES, DATA 선언 후 STANDARD TABLE, SORTED TABLE, HASHED TABLE 지정 가능
7. Standard Table, Sorted Table, Hashed Table의 차이점과 각각을 언제 사용하는 것이 좋은가요?
- Standard Table: 기본 배열 구조, 검색 속도 느림
- Sorted Table: 정렬된 데이터 저장, 이진 검색 사용 가능
- Hashed Table: 해시 알고리즘 기반 검색, 키 기반 빠른 조회 가능
8. ABAP에서 데이터베이스 접근을 위해 사용하는 주요 SQL 문법(SELECT, INSERT, UPDATE, DELETE 등)은 무엇인가요?
SELECT * FROM ztable INTO TABLE lt_data.
INSERT INTO ztable VALUES wa_data.
UPDATE ztable SET field = 'value' WHERE condition.
DELETE FROM ztable WHERE condition.
9. OPEN SQL과 NATIVE SQL의 차이점은 무엇인가요?
- OPEN SQL: SAP가 제공하는 DBMS 독립적인 SQL
- NATIVE SQL: 특정 DBMS(SQL Server, Oracle 등) 전용 SQL, 성능 최적화 가능
10. SELECT SINGLE과 SELECT UP TO 1 ROWS의 차이점은 무엇인가요?
SELECT SINGLE은 인덱스를 활용하여 빠르게 한 개의 레코드 검색
SELECT UP TO 1 ROWS는 조건에 맞는 여러 개의 데이터 중 첫 번째 행 반환
3. 성능 최적화 및 디버깅
11. ABAP 프로그램의 성능을 분석하고 최적화하는 방법에는 어떤 것이 있나요?
- ST05 SQL Trace 사용하여 성능 분석
- FOR ALL ENTRIES 활용 (JOIN이 어려운 경우)
- 병렬 처리 및 인덱스 최적화
12. ST05(SQL Trace)와 SAT(Runtime Analysis)를 사용하여 성능을 분석하는 방법을 설명해 주세요.
- ST05: SQL 실행 로그를 추적하여 DB 성능 분석
- SAT: 프로그램 실행 시간을 측정하여 병목 현상 파악
13. LOOP AT 내부 테이블 사용 시 성능을 최적화하는 방법은 무엇인가요?
- READ TABLE 사용하여 불필요한 LOOP 방지
- SORTED TABLE, HASHED TABLE 활용
14. 병렬 처리(Parallel Processing) 기법과 이를 활용하는 방법을 설명해 주세요.
CALL FUNCTION 'FM_NAME' IN BACKGROUND TASK 사용
4. ABAP 개발 및 모듈 관련 질문
15. ALV(ABAP List Viewer) Report의 장점과 기본적인 사용법을 설명해 주세요.
- GUI 기반의 가독성 높은 표 형태 데이터 출력
REUSE_ALV_GRID_DISPLAY 사용
16. BDC(Batch Data Communication)와 LSMW의 차이점과 각각의 장점은 무엇인가요?
- BDC: 커스텀 가능하지만 개발 필요
- LSMW: 표준 기능으로 데이터 마이그레이션 지원
- SAP Script: 기본적인 출력 양식 (구식)
- SmartForms: 그래픽 기반 양식, 다국어 지원
- Adobe Forms: 최신 UI, PDF 지원
5. 최신 ABAP 기술 및 실무 적용
18. SAP HANA에서 ABAP 성능을 개선하기 위해 필요한 기법은 무엇인가요?
- CDS View, AMDP(ABAP Managed Database Procedures) 활용
- 코드를 HANA DB 레벨에서 실행하여 성능 향상
19. ABAP RESTful Programming Model(RAP)이란 무엇이며, 기존의 ABAP 개발 방식과의 차이점은 무엇인가요?
- 클라우드 환경에서 OData 기반 RESTful API 제공
20. SAP S/4HANA로의 전환(Migration) 시 기존 ABAP 코드에서 고려해야 할 사항은 무엇인가요?
- CDS View로 변환, Open SQL 최적화, SELECT * 사용 지양
3. 성능 최적화 및 디버깅
21. ABAP 프로그램의 성능을 분석하고 최적화하는 방법에는 어떤 것이 있나요?
- SQL Trace (ST05): 데이터베이스 쿼리 실행 성능 분석
- Runtime Analysis (SAT, SE30): 프로그램 실행 속도 측정
- INDEX 활용: 적절한 필드에 인덱스를 추가하여 검색 성능 향상
- JOIN 및 FOR ALL ENTRIES 최적화: 적절한 방법을 선택하여 데이터 조회
22. ST05(SQL Trace)와 SAT(Runtime Analysis)를 사용하여 성능을 분석하는 방법을 설명해 주세요.
- ST05 (SQL Trace): 데이터베이스 쿼리 실행 로그를 확인하여 병목 지점을 분석
- SAT (Runtime Analysis, SE30): ABAP 코드 실행 시간 및 성능 분석
23. LOOP AT 내부 테이블 사용 시 성능을 최적화하는 방법은 무엇인가요?
- 내부 테이블을 SORTED TABLE 또는 HASHED TABLE로 사용하여 검색 속도 향상
READ TABLE을 사용하여 불필요한 반복문 제거
LOOP AT ... WHERE 절을 사용하여 불필요한 데이터 필터링
24. 병렬 처리(Parallel Processing) 기법과 이를 활용하는 방법을 설명해 주세요.
CALL FUNCTION ... IN BACKGROUND TASK를 사용하여 백그라운드 프로세스를 활용
CALL FUNCTION ... STARTING NEW TASK를 사용하여 병렬 실행
- 병렬 처리 시 SHARED MEMORY 및 RFC 사용을 고려
25. ABAP에서 실행 시간을 측정하는 방법(예: GET RUN TIME FIELD)은 무엇인가요?
GET RUN TIME FIELD lv_time.을 사용하여 실행 시간을 측정
cl_abap_runtime 클래스를 활용하여 정밀한 성능 분석
26. SELECT 문을 최적화할 때 고려해야 할 사항은 무엇인가요?
- SELECT * 대신 필요한 필드만 조회
- WHERE 절에 인덱스 필드 포함
- JOIN과 FOR ALL ENTRIES의 적절한 사용
27. ABAP 디버깅(Debugging) 기능을 활용하는 방법과 주요 기능은 무엇인가요?
- SE80 또는 SE38에서 Breakpoint 설정
- Watchpoint를 활용하여 특정 변수 값 변화 감지
- Debugging 모드에서 Field 변경 및 변수 모니터링 가능
28. INDEX를 활용하여 성능을 개선하는 방법과 주의해야 할 점은 무엇인가요?
- 인덱스 필드를 WHERE 절에서 사용하여 검색 성능 향상
- 너무 많은 인덱스는 오히려 INSERT, UPDATE 성능 저하를 초래
29. Standard Table과 Hashed Table을 비교하여 성능 차이를 설명해 주세요.
- Standard Table: 순차 검색, 성능 저하 가능
- Hashed Table: 키 기반 검색, 성능 우수
30. Nested Loop와 Parallel Cursor 기법의 차이점과 성능 최적화 방법을 설명해 주세요.
- Nested Loop: 이중 반복문으로 데이터 처리 (성능 저하 가능)
- Parallel Cursor: SORT 후 두 개의 내부 테이블을 병렬로 비교하여 성능 개선
4. ABAP 개발 및 모듈 관련 질문
31. ALV(ABAP List Viewer) Report의 장점과 기본적인 사용법을 설명해 주세요.
- 데이터를 가독성 높은 테이블 형태로 출력
REUSE_ALV_GRID_DISPLAY 함수 사용
- 사용자 정의 가능한 정렬 및 필터 기능 지원
32. BDC(Batch Data Communication)와 LSMW의 차이점과 각각의 장점은 무엇인가요?
- BDC: 커스텀 가능하지만 개발 필요
- LSMW: 표준 기능을 활용한 데이터 마이그레이션
- SAP Script: 고전적인 출력 양식 (이제 거의 사용되지 않음)
- SmartForms: GUI 기반의 양식 관리 (주로 사용됨)
- Adobe Forms: 최신 기술, PDF 출력 지원
34. RFC(Remote Function Call)의 개념과 사용 사례를 설명해 주세요.
- SAP 시스템 간 또는 SAP ↔ 외부 시스템 간의 통신
CALL FUNCTION 'FUNCTION_NAME' DESTINATION 'RFC_DEST' 사용
- SAP 시스템 간 또는 외부 시스템 간 데이터 교환을 위한 표준 메시지 형식
- 주요 트랜잭션:
WE20 (파트너 프로파일), WE30 (IDoc 타입 관리)
36. ABAP Proxy와 Web Services의 차이점과 각각의 활용 사례를 설명해 주세요.
- ABAP Proxy: SAP 내부 웹 서비스 호출에 적합
- Web Services (SOAP, REST): SAP ↔ 외부 시스템 간 통신에 활용
37. User Exit, BADI, Enhancement Spot의 차이점과 각각을 활용하는 방법은 무엇인가요?
- User Exit: 기존 기능을 수정하는 확장 지점 (고전적 방식)
- BADI (Business Add-In): 객체지향적인 확장 기법
- Enhancement Spot: 최신 방식의 코드 확장
38. SAP Fiori와 OData 서비스 개발 시 ABAP과의 연계 방식은 어떻게 되나요?
- OData 서비스 (SAP Gateway) 사용하여 Fiori UI와 통신
- ABAP에서는 CDS View, SEGW 트랜잭션을 활용하여 OData 생성
39. CDS View(Core Data Services)와 기존 ABAP Dictionary View의 차이점은 무엇인가요?
- CDS View: HANA 최적화된 데이터 모델, SQL 성능 향상
- Dictionary View: 단순 데이터 조회 용도
40. SAP UI5와 ABAP의 연관성 및 개발 방식에 대해 설명해 주세요.
- SAP UI5는 SAP Fiori UI 프레임워크
- ABAP과는 OData 서비스 (SEGW)와 연결
5. 최신 ABAP 기술 및 실무 적용
41. SAP HANA에서 ABAP 성능을 개선하기 위해 필요한 기법은 무엇인가요?
- AMDP, CDS View 활용
- SELECT * 지양, 인메모리 최적화 SQL 사용
42. ABAP on HANA에서 CDS View와 AMDP(ABAP Managed Database Procedure)의 차이점은 무엇인가요?
- CDS View: HANA 최적화 SQL
- AMDP: HANA DB의 Stored Procedure 직접 실행
43. ABAP RESTful Programming Model(RAP)이란 무엇이며, 기존의 ABAP 개발 방식과의 차이점은 무엇인가요?
- SAP 클라우드 환경에서 OData API 기반 개발 방식
44. SAP가 강조하는 클린 코드(Clean ABAP) 원칙과 이를 준수하는 방법은 무엇인가요?
- 객체 지향 설계 원칙 준수, 재사용성 증가, 성능 최적화
50. SAP S/4HANA로의 전환(Migration) 시 기존 ABAP 코드에서 고려해야 할 사항은 무엇인가요?
- CDS View 전환, Open SQL 최적화, GUI 기반 프로그램을 Fiori로 변경