ABAP 에서 사용되는 용어들, 특히 JAVA 와 유사한 기능을 하는 용어들을 정리해보려 한다.
DATA
키워드를 사용해 변수를 선언하며, 데이터 타입과 길이를 명시함
DATA: age TYPE I VALUE 25, " 정수형 변수
name TYPE STRING VALUE 'John', " 문자열 변수
is_adult TYPE ABAP_BOOL. " 부울형 변수
IF age > 18.
is_adult = abap_true.
ELSE.
is_adult = abap_false.
ENDIF.
자바에서는 변수 선언 시 데이터 타입을 먼저 명시함
int age = 25;
String name = "John";
boolean isAdult = age > 18;
문자열 처리에 여러 내장 함수를 사용함
CONCATENATE
, SPLIT
, SHIFT
, CONDENSE
등이 사용됨
문자열 처리에 String 클래스와 관련 메서드들을 사용함
concat()
, split()
, trim()
등의 메서드가 주로 사용됨
조건문은 IF ... ENDIF
, CASE ... ENDCASE
형태로 사용됨
IF age > 18.
WRITE: / 'Adult'.
ELSE.
WRITE: / 'Not an Adult'.
ENDIF.
루프는 LOOP AT ...ENDLOOP
구조로 사용됨
DATA: lt_numbers TYPE TABLE OF I WITH EMPTY KEY,
lv_number TYPE I.
APPEND 1 TO lt_numbers.
APPEND 2 TO lt_numbers.
APPEND 3 TO lt_numbers.
APPEND 4 TO lt_numbers.
APPEND 5 TO lt_numbers.
LOOP AT lt_numbers INTO lv_number.
WRITE: / lv_number.
ENDLOOP.
조건문은 IF
또는 SWITCH
로 구현됨
if (age > 18) {
System.out.println("Adult");
} else {
System.out.println("Not an Adult");
}
- 루프는 `for`, `while`, `foreach` 와 같은 구문으로 처리됨
```java
int[] numbers = {1, 2, 3, 4, 5};
for (int number : numbers) {
System.out.println(number);
}
함수 모듈 호출은 CALL FUNCTION
문으로 실행됨
메서드는 CALL METHOD
문을 사용하여 호출됨
FORM add_numbers USING a TYPE I
b TYPE I
CHANGING result TYPE I.
result = a + b.
ENDFORM.
DATA result TYPE I.
PERFORM add_numbers USING 5 10 CHANGING result.
WRITE: / result.
단순히 메소드이름()
으로 호출함
클래스의 메소드는 object.메소드이름()
으로 호출함
public int addNumbers(int a, int b) {
return a + b;
}
int result = addNumbers(5, 10);
System.out.println(result);
예외처리는 TRY ... CATCH ... ENDTRY
구조를 사용하여 에러를 처리함
주로 함수 모듈이나 메서드 내에서 발생한 에러를 처리하는 데 사용됨
동일하게 try ... catch ... finally
구문을 사용함
** ABA 에서는 주로 SAP 시스템 내 특정 에러 처리를 위한 예외 구조가 있음
sy-subrc
: 최근 실행된 명령의 성공 여부를 나타냄 (0은 성공, 4는 실패)
sy-datum
: 현재 날짜를 저장하는 시스템 변수
시스템 변수 대신 명령의 성공 여부를 반환하는 boolean
값이나 직접 관리하는 변수를 사용함
Open SQL 을 사용하여 SAP 데이터베이스에 접근함
데이터는 내부 테이블 (lt_employees) 에 담고, LOOP AT
을 통해 순회함
DATA: lt_employees TYPE TABLE OF zemployees,
ls_employee TYPE zemployees.
SELECT * FROM zemployees INTO TABLE lt_employees.
LOOP AT lt_employees INTO ls_employee.
WRITE: / ls_employee-name.
ENDLOOP.
JDBC 또는 Hibernate 등을 사용하여 데이터베이스에 접근함
String query = "SELECT * FROM employees";
Statement stmt = connection.createStatement();
ResultSet rs = stmt.executeQuery(query);
while (rs.next()) {
System.out.println(rs.getString("name"));
}