Professional Documents
Culture Documents
L04 Basic Concepts
L04 Basic Concepts
1
2
목차
3
Data type
❖ Data type
▪ ABAP 프로그램에서 사용할 Data variable의 타입을 정의
▪ Data type은 Data variable과 독립적으로 선언
▪ TYPES 구문을 사용하여 선언하면 해당 프로그램에서만 사용할
수 있기 때문에 Local Data Type이라고 한다.
▪ Local Data Type은 이미 정의되어 있는 ABAP Data Type을 참
고하여 선언한다.
▪ 예: TYPES dtype TYPE C
▪ ABAP Program의 특징은 ABAP Dictionary의 Data type을 프
로그램에서 참고하여 사용할 수 있다는 것이다.
▪ 테이블 구조를 그대로 변수로 사용할 수 있기 때문에 개발자가 편
리하게 프로그래밍할 수 있도록 도와준다.
4
Data type과 Data variable
❖ Data variables
▪ Data type을 참고하여 선언된다.
▪ 프로그램에서 사용할 수 있는 변수
▪ 프로그램의 실행 시점에 메모리를 차지
▪ ABAP 프로그램에서는 Data variable의 이름을 통해서 값에 접근
할 수 있다.
▪ Data variable은 Data Object와 동일한 의미이다.
▪ ABAP 구문은 Data Object의 이름을 이용해 주소를 확인하고,
Data Type을 참고해 필드의 길이와 소수 자릿수 등과 같은
Contents를 해석하게 된다.
5
Data Types
Data type
elementary complex
6
Data Types
❖ Predefined ABAP Type
▪ Kernel 레벨에서 정의되어 있는 기본 데이터 타입
▪ C, JAVA의 (c, f, i) 타입과 같이 이미 정의되어 있는 데이터 타입
▪ ABAP은 추가로 p, d, t와 같은 타입들이 존재함
❖ Local data type
▪ ABAP 프로그램 내에서 Predefined ABAP type을 이용하여 생성한다.
▪ Predefined ABAP type을 조합하여 여러 필드가 추가된 Structure 타입
을 정의하여 사용할 수 있다.
▪ 예: TYPES dtype [TYPE type l LIKE dobj] …
❖ Global data type
▪ 모든 ABAP 프로그램에서 사용할 수 있는 데이터 타입이다.
▪ ABAP Dictionary Data type은 ABAP 프로그램 내에서 TYPE 구문을 이
용할 수 있다.
▪ 예: TYPES : types TYPE tables.
DATA : gv_data LIKE table-field…
7
Predefined data types in ABAP
8
Data declaration
9
Data declaration
10
Elemental field definition
• Predefined ABAP type을 이용한 데이터 변수 선언:
11
Structured data object definition
• Local 프로그램에서 자주 사용하게 되는 데이터 및 구조를
TYPE으로 선언하여, 프로그램 내에서만 사용할 수 있다.
12
ABAP dictionary를 이용한 Definition
• ABAP dictionary를 이용한 변수 선언:
ABAP Dictionary(Table, Structure, Data Element 등)는 모든
프로그램에서 선언하여 사용할 수 있다.
13
Internal table
❖ Internal table은 프로그램이 실행되는 동안 프로그램 내에서 정의하
여 사용할 수 있는 Local table.
14
Parameter Definition
15
Selection Screen
16
System Values – Structure SY
• Structure SY 는 많은
시스템 변수들을 가지고
있음.
• Structure는 Data
Dictionary (SE11)에서 data
type SYST를 입력하여
확인할 수 있음.
17
DATA 구문
❖ Data variable을 선언할 때 사용하는 구문
1) TYPE
2) Like
18
DATA 구문
3) VALUE int
19
DATA 구문
4) LENGTH n
- 필드의 길이를 설정한다.
- C, N, P, X 타입에서만 사용할 수 있음.
5) DECIMALS n
- DATA type P에서만 사용 가능하며 1 ~ 14 사이의 소수 자리 수를 설정
20
DATA 구문
21
WRITE 구문
• WRITE 구문은 OUTPUT 리스트에 데이터를 쓰는 기능을 주로 하게
되며, 값을 할당하는 (MOVE) 기능도 수행한다.
• 리스트용으로 사용될 때에는 데이터를 LIST BUFFER에 저장한다.
• Syntax: WRITE [/][<pos>][(<len>)] <text>.
• ‘/’: 새로운 라인; ‘pos’: column number; ‘len’: text length
• Simple Text output:
WRITE ‘Hello World’.
• Combination of Substrings and Output of Variable values:
WRITE: ‘Hello’, sy-uname, /5 ‘Nice to see you here’.
Hello Max
Nice to see you here
22
WRITE 구문
23
Data manipulation과 control 구조
• Data manipulation
• Control structures
– Loops
– 조건을 이용한 분기
24
Data manipulation
• Assign: MOVE f TO g or g = f
• Numeric: ADD n TO m or m = m + n
• String: CONCATENATE, SPLIT, SEARCH, REPLACE,
CONDENSE, TRANSLATE …
• Logical:
– For all data types:
25
26
Control structures: 분기 (1)
• IF:
IF <logical expression>.
<instruction 1>.
[ELSEIF <logical expression>.
[<instruction 2>.
[ELSE.
[<instruction 3>.
ENDIF.
• Example:
IF a > b.
WRITE ‘a is bigger than b’.
ELSEIF a < b.
WRITE ‘b is bigger than a’.
ELSE.
WRITE ‘a equals b’.
ENDIF.
27
Control structures: 분기 (2)
• CASE:
CASE <variable name>.
[WHEN <value 1>.
[<instruction 1>.
[WHEN <value 2>.
[<instruction 2>.
[WHEN OTHERS.
[<instruction 3>.
ENDCASE.
• Example:
READ TABLE l_tab_customers INDEX 1 INTO l_str_customer.
CASE sy-subrc.
WHEN 0 or 2.
WRITE: / ‘Entry found’.
WHEN OTHERS.
WRITE: / ‘Entry not found’.
ENDCASE.
28
Control structures: loops
29
Comments
30
Modularization
❖ 재사용성과 유지보수를 위해 ABAP 프로그램을 구조화하고
모듈화한다.
❖ Modularization의 필요성
• Improve the structure of the program.
• Easy to read the code
• Easy to maintain the code
• Avoid redundancy and promotes code reuse
❖ Modularization in ABAP:
• Use of Macros
• Use of includes
• Subroutines
• Function Modules
31
Modularization: Macro
❖ 동일한 Statement set을 하나의 프로그램에서 여러 번 사용하고자 할
경우 Macro를 사용
❖ Macro가 정의된 프로그램 내에서만 호출하여 사용할 수 있음.
❖ Macro는 긴 계산식 또는 복잡한 WRITE statements에 유용함.
❖ 샘플
DATA sum TYPE i.
"Macro definition
DEFINE add_macro.
sum = &1 + &3 + &2.
sum = sum + &3.
END-OF-DEFINITION.
START-OF-SELECTION.
Add_macro 10 20 30.
WRITE sum.
32
Modularization: Include
• Include Program은 소스 코드를 모듈화하기 위해 사용되며, Parameter
인터페이스를 가지지 않는다.
• Include program은 동일한 소스 코드를 다른 프로그램들에서 사용할 수
있도록 한다.
• 사용하고자 하는 다른 프로그램의 데이터 선언이 긴 경우 유용하다.
33
Modularization: Includes
• INCLUDE는 독립적으로 실행될 수 없다.
• INCLUDE 프로그램은 또 다른 INCLUDE를 포함할 수 있다.
• INCLUDE 프로그램은 자기 자신을 호출할 수 없다.
• INCLUDE 프로그램은 complete statement를 가져야 한다.
• Manual check of calling program by software developer necessary
→ does the include program fit logically?
• INCLUDE vs. TOP INCLUDE:
INCLUDE TOP-INCLUDE
no data declaration necessary contains data declaration
operational code considered for all syntax checks
always integrated for compiler
no operational code
34
Modularization: Includes
Include의 단점
35
Modularization: Subroutine (1)
• Subroutine은 모든 ABAP 프로그램에서 정의할 수 있고 호출할 수
있는 procedure
• Subroutine은 보통 내부적으로 호출된다.
• 로컬에서 자주 사용되는 알고리즘 또는 code section을 포함한다.
• 하나의 Function을 시스템 전체에서 재사용하려면 function module을
사용하는 것이 좋다.
• Subroutine은 FORM으로 시작하여 END FORM으로 종료되는 구문:
ENDFORM.
36
예제
REPORT zd_###_019
37
Modularization: Subroutine (2)
38
예제
REPORT zd_###_020
39
Modularization: Subroutine (3)
Subroutine의 유형
❖ Internal
• 프로그램 내에 정의된 Subroutine을 호출하는 경우
• main ABAP/4 program에서 선언된 모든 데이터 오브젝트에 접근 가능
❖ External
• 프로그램 외부에 정의된 Subroutine을 호출하는 경우
• <pass> option을 사용하거나 메모리의 common part에 데이터
오브젝트를 선언해야 함.
40
Modularization: Subroutine(4)
Call an existing subroutine
41
Modularization: Function modules (1)
42
Modularization: Function modules (2)
43
Modularization: Function modules (3)
• Call Syntax:
CALL Function ‘function name’
[EXPORTING par1 = var1]
[IMPORTING par2 = var2]
[CHANGING par3 = var3].
• IMPORTING = Input Parameter
• EXPORTING = Output Parameter
• CHANGING = Parameters that are changed during function execution
Function을 만들 때
Import로 선언한 파라미터가 ABAP
프로그램 내에는 EXPORTING
위치에 존재하고,Export로 선언한
파라미터는 IMPORTING 위치에
존재한다.
44
Modularization: Function Group
❖ Function groups are containers for function modules.
❖ In fact, there are a large number of standard Function Groups.
❖ All of the function modules in a function group can access the
global data of the group.
❖ Like executable programs (type 1) and module pools (type M),
function groups can contain screens, selection screens, and lists.
Points to Note
❖ Function Groups cannot be executed.
❖ The name of a function group can be up to 26 characters long.
❖ When you create a function group or function module, the main
program and include programs are generated automatically.
❖ Function groups encapsulate data.
45
Modularization: Function Group
46
Modularization: Function modules (4)
Function Modules
BAPI
47
Modularization: BAPI’s (1)
48
Modularization: BAPI’s (2)
• BAPI 사용방법:
– BAPI는 SAP 트랜잭션의 기능을 제공한다.
– 적당한 BAPI를 찾고 관련 문서를 숙지한다.
– Function Builder를 통해 BAPI를 테스트한다.
– BAPI를 적용한다.
• 주의사항:
– data type과 필수 data를 주의해야함.
49
Background processing
50
RFC(Remote Function Call)
❖ RFC는 비즈니스 애플리케이션들이 다른 시스템과 정보를 교환하고
커뮤니케이션할 수 있도록 하는 매커니즘이다.
❖ RFC는 2개의 인터페이스로 구성된다.
▪ A calling interface for ABAP Programs
▪ A calling interface for Non-SAP programs.
❖ 어떤 ABAP program도 CALL FUNCTION...DESTINATION 구문을 사용
하여 Remote function을 호출할 수 있다.
❖ DESTINATION parameter는 호출되는 function run을 SAP System
에게 알려준다.
❖ Logical Destination은 SM59에서 정의되고 RFCDES 테이블에 저장
된다.
51
RFC(Remote Function Call)
52
실습: Basic concept
❖ Use data declaration to declare a new data structure
for your variables and use the debugger to get
information about the variables during runtime
❖ Use selection screens and control structure to
create a simple calculation program
❖ Use a function module to separate the calculation
from the main program
53