Professional Documents
Culture Documents
Introduction
System Architecture
ABAP/4 Development WorkBench ABAP/4 Dictionary I
ABAP/4 Data and Statements
Debugging
Internal Tables
ABAP/4 Open SQL
Authorization Check
Modularization
Workbench Organizer
Runtime Analysis
ABAP/4 Dictionary Part ll
Relationships Between Tables in the ABAP/4 Dictionary
Repository Information System for ABAP/4 Dictionary
Changing Tables
Logical Databases
Sorting and Control Levels
Programs in Background Processing
Menu Painter
Windows
Special Techniques
Linking Components
ABAP/4 Query
Introduction to Dialog Programming
1
Additional Techniques
in Screen Painter and Menu Painter
Asynchronous Update
SAP Locking Concept
Dynamic Screen Modification
Table Control
Linking Program Components Automatic and Programmed
Help Function
Number Assignment
Creating Change Documents
Sequential Files
Special Features of Batch Input Processing
Call Transaction
2
Volumn1 : Chapter 0
Introduction
1 Window 구성 요소
타이틀바
메뉴바
커멘드 필드 : 트랜잭션 코드를 직접 입력.
스탠다드 툴바 : 기본적으로 제공되는 툴을 모아 둠
어플리케이션 툴바 : 개발자가 정의한 어플리케이션들을 버튼으로 만들어 둠
Status 바 : Warning, Error, information 메시지 출력.
3 입력필드에 대한 도움말 보기
커서를 입력란에 두고 F1키를 누르거나 스탠다드 툴바에서 해당하는 버튼을 클릭
3
Volumn1 : Chapter 1
System Architecture
4
Communication interface는 정보의 전기적인 변화의 channel에 정의한다.
7 Client/Server Principles
Server : software 관점에서 보면 software component에 의해 제공되는 것을 service
라고 하는데, 그러한 component는 process 또는 process의 group으로 구성되어지며
이것을 해당 service의 Server라고 한다.
Clients : service를 사용하는 software components.
SAP System : 같은 database에 할당되어지는 모든 software components의 집합체.
5
Main tasks:
work process를 통해 load되는 트랜젝션의 분산
presentation level의 interfacing
communication activity들의 organizing
Tasks during initialization:
Reading profile parameters
Creating and initializing semaphores
Generating roll areas
Starting work processes
Logging on to the message server
6
Main storage management in 3.0 : release 3.0이 시작되면,
Roll area의 아주 작은 부분만이 work process의 internal roll area에 복사된다.
User context의 first part가 work process의 roll area로 복사되거나 복사되어
나간다. context가 변경될 때마다.
User context의 다른 part들은 work process들이 pointer들에의해 접근될때마다
shared memory에 reside 된다.
따라서 context의 majority는 pointer에 의해 address된다.
This obviates complicated copy activity.
User context의 직접 접근 가능한 area was previously limited to the roll area is now
expanded in shared memory. as needed.
User context data의 많은 부분은 internal table들을 포함하고 이들의 expandable,
directly accessible area.
7
server의 shared memory에 지역적으로 위치)
buffer에 저장된 data는 application들에 의해 frequently하게 사용된다. database server
는 읽기를 위해 접속될 필요가 없다. Especially technical data(특별히 기술적인 data),
다음과 같은 ABAP/4 program들, screen들 그리고 ABAP/4 dictionary information, 또한
business parameter (다음과 같은 available number areas)은 실행중인 system에서는
대부분 변동없이 유지된다. 또한 client-caching을 위한 highly suit 된다.
business application data가 주로 읽히는 것과 같다.
추가적으로 R/3 database interface는 sophisticated cursor-caching을 제공한다. 이것은
multiple time에 once-established access의 재사용을 시도한다는 것이다.
ABAP/4 application은 또한 EXEC-SQL instruction을 사용하여 database에 직접 접근할
수 있다. ABAP/4-OpenSQL 대신에 R/3 database interface는 다른 DBMS들을
지원한다.
15 Clients
Commercial, organizational and technical term안에, R/3 system의 client는 self-
contained unit이다.
Clients have their own
Customizing facility
Application data
User master records
R/3 System에서 Clients의 역할
Development/test : 사용자는 자신의 customizing activity들을 위해 development와
test를 사용한다. 또 자신의 Repository object들의 개발을 위해 기억하라 어쨌든
모든 Repository object들은 모든 client에서 접근할 수 있고 수정 가능하다.
Quality assurance : 사용자는 quality assurance client를 사용할 수 있다. 자신의
customizing을 위해 testing 후에 quality assurance client를 reset하는 것은 SAP
recommend한다. 사용자는 다른 client에서 test data를 hold해 사용한다.
Training
Production : production client는 테스트된 customizing setting과 사용자의
Repository object들을 받는다. SAP은 사용자가 정의한 단 하나의 production
client를 recommend한다.
8
Volumn1 : Chapter 2
1. ABAP4
ABAP(Advanced Business Application Programming) 은 어플리케이션 프로그래밍을
위해 SAP에서 개발한 4세대 프로그래밍 언어
9
TADIR (Object list를 관리하는 테이블)에 등록된 Authorization Group선택
5. ABAP4 Editor
Command mode
PC mode with line numbering
PC mode without line numbering
6. ABAP4 Syntax
프로그램은 각각의 statement로 구성된다
각statement는 period로 끝나야 하며
Statement의 첫번째 word는 키워드 임
Statement는 들여쓸 수 있으며 다수의 line이 될수도 있다.
7. Chained Statement
몇 개의 연속되는 동일한 statement는 콜론을 사용하여 하나의 Statement로 만든다.
예) write ‘xyz’.
write name Write: ‘xyz’, name, counter.
write counter
8. Comments
Column1에 *마크가 있으면 라인 전체가 코멘트 처리된다
라인중의 “ 표시는 그 이후의 문장이 코멘트 처리된다
9. Select
SELECT 문은 테이블의 레코드를 읽기위해 사용
SHOW <table> 또는 푸쉬버튼 ‘I’는 테이블의 구조(필드명, 필드속성)를 알고자 할 때
사용
사용 예) SELECT * FROM SBOOK.
WRITE: / SBOOK-CARRID, SBOOK-CONNID.
ENDSELECT.
조건을 지정하기 위하여 WHERE문을 사용할 수 있다.
SELECT * FROM SBOOK
WHERE CARRID = ‘LH’.
<STATEMENT>
ENDSELECT.
IF SY-SUBRC NE 0.
10
<STATEMENT>
ENDIF.
ENDSELECT 후에 SY-SUBRC(System sub return code)값을 확인한다. 0이면
Success, 그 외의 값은 failure.
10. Write
사용 예) WRITE: 5’DATE’, 20 SY-DATUM,
/5 ‘TIME’, 20 SY-UZEIT.
ULINE: /5(30).
SKIP2.
WRITE: /TEXT-001.
5번째 칼럼에 DATE를 쓰고 20번째 칼럼에 시스템 날짜를 기록.
한 칸 띄우고 5번째 칼럼에 ‘TIME’이라고 쓰고 20번째 칼럼에 시스템 시각을 기록.
한 칸 띄우고 5번째 칼럼부터 30번째 칼럼까지 underline 긋는다.
두개의 라인을 공백처리.
TEXT 심볼 001번을 인쇄. 텍스트 심볼을 사용할 경우의 잇점으로는 수정이 필요한
경우 소스를 고칠 필요가 없다는 것이다.
11
Volumn1 : Chapter 3 ABAP/4 Dictionary I
12
14. Transparent Tables
Logical table 정의인 ABAP/4 Dictionary가 activated 되어지면, Database 내에 자동으로
Physical table 정의가 생성된다.
15. Structure
database에 저장되어지는 table을 정의하는 것 외에도, 프로그램에서 계산을
수행하거나 프로그램 사이에 또는 ABAP/4 Dictionary에서 data를 주고받을 때 data의
structure를 정의하는 것.
structure에 있는 data는 program의 runtime시에만 존재한다.
13
Volumn1 : Chapter 4
2. Constants
Number literal for the data types P, I
Text Literal for the data type C, N
Other data types have no type-specific constants. Should always use text literal.
Type P에 소수를 assign하려면 text literal로 해주어야 함.
3. Data 선언
데이터의 속성을 정의하는 것으로 메모리를 차지하지 않는다
TYPES statement를 이용하여 사용자 정의가 가능함
예) TYPES: MYTYPE TYPE I,
NAME1 (25),
DATE1 LIKE SY-DATUM.
특수문자로는 underbar만 가능함
특별히 지정하지 않으면 Char로 정의됨
초기을 주려면 VALUE parameter를 이용
예) DATA : COUNTER TYPE I,
NAME1(25) VALUE ‘SAP’,
FIRST_OWN TYPE I VALUE 12,
14
4. 유사 속성을 가진 필드 선언
기선언한 필드와 같은 속성을 가진 필드를 선언할 때 LIKE 이용
참조 필드는 internal field, database field 모두 가능
CLEAR 는 필드값을 초기값으로 만든다
예) TYPES: NAMETYPE1 LIKE SCUSTOM-NAME,
NAMETYPE2 (25).
DATA: NAME1 TYPE NAMETYPE1,
NAME2 TYPE NAMETYPE2,
NAME3 LIKE NAME1.
CLEAR <FIELD>
5. DATA TYPE에 따른 출력 형태
P, I, FN Type은 right-justified 형태로 출력되며 그 외는 left-justified에 따름.
6. Value Assignment
MOVE <a> TO <b>와 같은 형태 예) MOVE ‘SAP’ TO NAME!.
소스와 타겟간 타입이 맞지않을 때는 자동적으로 시스템에서 자동으로 조정함
Type adjustment
간단한 연산자도 포함할 수 있다(ADD, SUBTRACT, MULTIFLY, DEVIDE)
7. 연산식 표현
각 괄호와 연산자는 공백을 줘서 구분해 주어야 함,
DIV, MOV는 결과값으로 integer를 리턴함
Function STRLEN은 CHAR 스트링의 길이를 리턴
8. Parameter로 필드 선언
PARAMETERS : PAR1 TYPE P,
PAR2 DEFAULT ‘X’,
PAR3 LIKE SY-DATUM.
PARAMETERS로 선언을 하면 실행시 input 필드가 나타나 User가 직접 입력한다.
초기값을 주기위해서는 VALUE가 아닌 DEFAULT옵션을 사용한다
9. Control Statement
IF <logical expression>.
<statement>
ELSEIF <logical expression>.
15
<statement>
ELSE
<statement>
ENDIF.
ELSE, ELSEIF 는 선택사항임
CASE <field>.
WHEN <value>.
<statement>
WHEN <value2>.
<statement>
WHEN OTHERS.
<statement>
ENDCASE.
WHEN OTHERS는 선택
DO <n> TIMES.
<statement>
ENDDO.
<n> TIMES는 선택사항으로 없을 경우 termination statement를 만들어 줘야함
Loop index는 SY-INDEX
WHILE <logical expression>.
<statement>
ENDWHILE.
CHECK <logical expression>.
loop 내에서 사용되어 false 이면 current loop를 빠져나감
loop 밖에서 사용되어 false 이면 current prossing block 빠져나감
EXIT.
loop 내에서 만나는 경우 Current loop의 프로세스를 끝낸다
sub routine 내에서 만나는 경우 current subroutine을 종료함
16
Volumn1 : Chapter 5
Debugging
17
Volumn1 : Chapter 6
Internal Tables
1. Field Strings
논리적으로 함께 속하는 field들의 group.
Address 방법
[field string]-[field name]
<field string> 자체를 address 할 수 있다. 그러나 이것은 type C field로서
다루어진다. 즉 어떤 type conversion도 일어나지 않으며, 따라서 packed field 같은
경우처럼 원하는 결과를 얻지 못할 수도 있다.
예) write: <field string>.
TABLES 문으로 table work area를 정의하면 그것은 field string과 같은 structure를
가진다.
Field String 선언 :
DATA: BEGIN OF <name>.
…
END OF <name>.
LIKE : 미리 선언된 internal fields나 ABAP/4 Dictionary에서 정의된 fields의 속성을
그대로 가져오고자 할 때 사용.
18
4. ABAP/4 Dictionary Structures 사용하기.
INCLUDE STRUCTURE <name>.
iTab이나 field string으로 ABAP/4 Dictionary Table의 Structure를 사용하게 해준다.
Field names, attributes, conversion routines, internal report structure를 사용할 수 있다.
iTab이 create된다는
것을 알린다.
5. Internal Tables with H.L
① Internal Tables 선언 :
DATA: BEGIN OF <name> OCCURS <num>,
… iTab 의 size 로 서 예 측
END OF <name>. 불가능할 때 0으로 둔다.
② Filling
APPEND <iTab>.
H.L의 contents를 iTab의 제일 밑에 추가한다.
APPEND <iTab> SORTED BY <field>.
Ranked list를 generate한다.
새 entry를 추가하면 descending으로 re-sort된다.
table이 OCCURS에서 지정한 수만큼 찬 상태에서 더해진다면 table의 제일 밑의
entry가 제거된다.
APPEND <W.A> TO <iTab>.
H.L이 아닌 identically structured field인 <W.A>서부터 <iTab>에 추가한다.
SELECT * FROM SFLIGHT.
MOVE-CORRESPONDING SFLIGHT TO FLIGHTINFO_LIST.
APPEND FLIGHTINFO_LIST.
ENDSELECT.
OCCURS에서 지정한 line 개수 이상 저장 가능.
SELECT * FROM SFLIGHT.
MOVE-CORRESPONDING SFLIGHT TO FLIGHTINFO_LIST.
APPEND FLIGHTINFO_LIST SORTED BY PRICE.
ENDSELECT.
OCCURS에서 지정한 line 수를 넘지 못한다.
COLLECT <iTab>.
Type P, I, F를 제외한 type의 fields 중 값이 같은 field 끼리 type P, I, F의 field들의
합을 구한다.
③ Sorting
SORT <iTab> BY <field1> <field2> … .
Default : ascending
19
SORT <iTab>.
Type P, I, F를 제외한 모든 field들에 대해 ascending order로 sorting한다.
④ Processing
LOOP AT <iTab> … ENDLOOP.
LOOP AT <iTab> WHERE <조건> … ENDLOOP.
SY-SUBRC = 0 이면 success.
SY-TABIX : H.L에 있는 현재 읽은 레코드가 몇 번째 레코드인가.
⑤ Reading
READ TABLE <iTab> WITH KEY <K1>=<V1> <K2>=<V2> … <Kn>=<Vn>.
key값이 일치하는 <iTab>의 첫번째 entry를 읽어온다.
READ TABLE <iTab> INDEX <tab-index>.
⑥ Changing
INSERT <iTab> INDEX <i>.
i번째 entry 앞에 삽입.
MODIFY <iTab> INDEX <i>.
overwrite
DELETE <iTab> INDEX <i>.
DELETE … WHERE <조건>.
DELETE … FROM <n1> TO <n2>.
N1, n2 포함.
DELETE … FROM <n>.
DELETE … TO <n>.
⑦ Deleting
CLEAR <Tab>.
H.L을 각각의 type에 따라 initialize한다.
REFRESH <Tab>.
모든 table entries를 delete 한다. table에 사용된 memory space는 release되지
않으며 H.L은 그대로 남는다.
FREE <Tab>.
모든 table entries를 delete 한다. table에 사용된 memory space까지 release
되며 H.L은 그대로 남는다.
⑧ Information
DESCRIBE TABLE <iTab>
LINES <line_count>
OCCURS <occur_count>.
Table entry 들의 개수와 table 정의에서 OCCURS의 값을 되돌린다.
20
6. Internal Tables without H.L
① Internal Tables 선언 :
DATA: <iTab> TYPE <type> OCCURS <num>.
필요 시 증가 시킬 수 있다.
(APPEND … SORTED BY …. 제
외)
21
Volumn1 : Chapter 7
1. Open SQL
표준 SQL을 따르며 SAP의 form을 포함한다.
이 Open SQL을 통하여 Database table에 access가 가능하며, tables는 ABAP/4 Repository
에 정의되어져야 하며, primary key를 가지고 있어야 한다.
SELECT는 authorization checks를 하지 않는다.
2. Single Access
SELECT SINGLE * FROM ... .
하나의 table entry를 읽는다.
WHERE 조건에 full key로 체크 해야하며 그렇지 않을 경우 warning MSG.
처음 만난 record를 table work area 에 저장.
22
COUNT(*) FROM <table> INTO (..., ..., ...)
WHERE ... .
23
SELECT * FROM (<table>) APPENDING TABLE <itab>.
한꺼번에 읽어서 internal table에 저장하므로 Loop를 돌며 하나씩 읽는 것보다 빠르다.
24
Volumn1 : Chapter 8
Authorization Check
1. Principles
R/3 시스템상에서 각 user에게 접근 가능한 데이터의 종류와 접근 종류를 부여하고
필요할 경우 checking하도록 함.
Authorization과 authorization check를 위한 템플릿으로 사용됨(껍데기)
2. Authorization Check
AUTHORITY-CHECK statement이용한다.
AUTHORITY-CHECK OBJECT ‘S_CARRID’
ID ‘CARRID’ FIELD ‘LH’
ID ‘ACTVT’ FIELD ‘02’.
IF SY-SUBRC NE 0.
<statement carried when authorization check failed>
ENDIF.
SELECT 문은 Authorization check를 수행하지 않으므로 프로그램의 Select Loop
안에서 체크해 주어야 한다.
25
Volumn1 : Chapter 9
Modularization
3. Modularization의 개요
프로그램을 모듈화(Modularization) 할 때 이점
만일 프로그램이 같거나 유사한 구문 순서(statement sequence)를 여러 다른
장소에 포함한다면 이것을 모듈화 하여 피할 수 있다.
프로그램을 읽기 쉽게 하고 그것의 구조를 개선한다.
프로그램 컴포넌트(component)의 재사용을 가능케 한다.
Subroutine을 사용하는 3가지 시나리오
같은 ABAP/4프로그램에 subroutine과 호출이 같이 있다. (internal call)
Subroutine은 외부 프로그램에 있다. (external call)
Function library에 저장되고 function group에 할당된 function module.
26
6. Actual parameter로부터 formal parameter로 값 전달
Subroutine이 호출될 때, main 프로그램은 interface를 통하여 subroutine으로 data를
전달할 수 있다. Subroutine에서 예정한 어떤 data도 호출중인 프로그램에서 이용할 수
있다.
프로그램과 subroutine은 parameter를 통하여 통신한다. Subroutine이 정의될 때
formal parameter들을 지정한다. Subroutine이 호출될 때 actual parameter들을
지정한다.
Actual과 formal parameter들의 할당은 그들이 위치에 따른다. 각 formal parameter는
하나의 actual parameter에 지정되기 때문에 actual parameter와 formal parameter는
같은 수여야 한다.
두 종류의 parameter- input parameter들과 output parameter들- 가 있다. Input
parameter들은 call by value로 선언하고, output parameter들은 call by reference나 call
by value and result로 선언한다.
7. Parameter 전달의 종류
call by value : Subroutine이 호출될 때, formal parameter들은 actual parameter들의
복사본(copy)을 생성한다.(자신의 memory 공간을 갖는다)
Call by value and result : Formal parameter들은 자신의 memory 공간을 갖는다.
subroutine을 떠날 때 formal parameter의 값(value)을 actual parameter의 memory
공간에 복사한다.
Call by reference : Subroutine이 호출될 때, actual parameter들의 address를 formal
parameter로 전달한다. 만일 formal parameter의 값(value)을 변경하면 main
프로그램의 field content들 또한 변경된다.
8. Type을 갖는 Parameter 전달
Subroutine의 formal parameter의 값이 특별한(particular) type을 가질 것을 보증하려면
FORM 구문 안에 그것의 data type을 할당할 수 있다. 이럴 경우 TABLES, USING 또는
CHANGING뒤의 formal parameter의 목록 뒤에 TYPE <t> 나 LIKE <f>를 기입한다.
PERFORM문을 사용하여 subroutine을 호출할 때, PERFORM 안에 있는 actual
parameter들의 type들이 그들의 formal parameter들에 적합한지 아닌지를 시스템
(system)이 검사한다.
Subroutine을 호출했을 때 사용할 수 있는 다양한 type 검사(check)
no type, TYPE ANY : 시스템은 actual parameter의 any type들을 인정한다. actual
parameter의 모든 속성(attribute)들이 formal parameter로 전달된다.
TYPE TABLE : 시스템은 parameter가 internal table인지 아닌지를 검사한다.
27
속성과 table structure는 actual parameter로부터 formal parameter로 전달된다.
TYPE C, N, P or X : 시스템은 actual parameter가 C, N, P 또는 X type인지
아닌지를 검사한다. parameter의 길이(length)와 DECIMALS의 number ( type P)가
actual parameter로부터 formal parameter로 전달된다.
TYPE D, F, I or T, D LIKE <f>, TYPE <ud> : 이 type들은 완전히 확정된다.
시스템은 actual parameter의 data type이 그것의 formal parameter와 완전히
일치하는지 검사한다. (<ud> = user defined)
PROGRAM RSAAA10B.
...
PERFORM <name> USING
a1 a2 a3 a4 a5.
…
FORM <name> USING
VALUE(f1)
VALUE(f2)
VALUE(f3)
f4
CHANGING VALUE(f5).
<statements>
ENDFORM.
28
TYPE D, F, I or T, D : 이 type들은 완전히 확정된다. 시스템은 actual parameter의
LIKE <f>, TYPE <ud> data type이 그것의 formal parameter의 type과 완전히
맞는지 검사한다. (<ud> = user defined)
PROGRAM RSAAA10C.
DATA: REVENUE … .
…
PERFORM <name> USING
a1 a2 a3 a4 a5.
…
FORM <name> USING
VALUE(f1) TYPE P
VALUE(f2) TYPE I
VALUE(f3) TYPE P
f4 LIKE REVENUE
CHANGING VALUE(f5) TYPE P.
<statements>
ENDFORM.
29
PERFORM <name> (<program>) USING ... .
Runtime 시에 호출.
호출된 프로그램은 ABAP/4 Dictionary tables의 work area를 공유한다.
Internal subroutine과 마찬가지로, formal parameter에 type을 할당할 수 있다. type이
맞지 않으면 runtime error 발생.
30
CHANGING Parameter는 field나 field string을 갖고 있다. function module이 호출됐을
때 프로그램으로부터 function module로 값을 전달하고, return 시에 function module
로부터 프로그램으로 값을 돌려 받는다.
CHANGING parameter는 by value또는 by reference로 값을 전달한다.
CHANGING parameter는 호출될 때 항상 value를 가지고 있어야 한다.
Parameter를 전달할 때 만일 default value이거나 import parameter가 선택적으로 flag
되어 있으면 actual parameter는 생략될 수 있다.
21. Interfaces
Formal parameter들의 이름으로 ABAP/4 Dictionary object들의 이름은 사용하지
못한다.
31
Formal parameter들로 ABAP/4 Dictionary로부터 field들 또는/그리고 structure들을
참조하여 명확하게 기술할 수 있다.
Import parameter들에 default 값을 할당할 수 있다. 이것들로는 system field들(SY-
DATUM, SY-LANGU), literal들 또는 미리 정의되어 있는 필드인 SPACE가 가능하다.
Import parameter들은 by value로 전달되고, export parameter들은 by value and result
그리고 table parameter들은 by reference로 전달(pass)된다.
Exception 이름은 30자 까지 가능하다.
23. Exceptions
Exception들의 이름들은 function module의 interface 부분에 정의한다.
프로그램 안에서 아래의 구문으로 exception을 발생시킬 수 있다.
RAISE <exception>. 또는
MESSAGE ... RAISING <exception>.
만일 호출하는 프로그램이 exception을 처리하면, 제어(control)는 어떤 메시지 출력도
없이 즉시 호출하는 프로그램으로 돌아간다. 이 경우 EXPORT parameter는 항상 initial
value들로 set되어 있다.
만일 호출하는 프로그램이 exception을 처리하지 않으면 function module은 RAISE문
이후에 종료(terminate)된다. 이와 같이 RAISING이 추가된 MESSAGE의 경우 용도에
맞는 message가 출력된다.
32
Workbench Organizer
33
Change request documentation은 변경에 관한 완전한 description을 가진다.
Change request를 release할 때, 모든 object에 대한 완전한 version이 version
database에 저장된다. 나중에 다시 Repository object를 편집할 때, 현재 version이
완전한 copy가 되고, old version과 new version 사이의 차이점이 version database에
저장된다.
5. Local Objects
Local objects는 WBO와 transport system에 의해 controlled 되지 않는다.
Local objects는 change request에 할당되지 않은 채 만들어지고 변경되기 때문에,
version이 존재하지 않고 transported될 수 없다.
Local objects에 대한 development class는 $TMP 이다.
7. Task Attributes
Development/correction은 object를 만들거나 original을 변경할 때 할당된다.
Repair는 copy를 변경할 때 적용된다.
8. Modifications
SAP copies를 변경하는 것.
34
Customer installation을 선택, 그리고 continue.
External Installation Number dialog box에서 installation number를 입력, 그리고 continue.
(installation number를 찾기 위해선, System -> Status를 선택 )
Contact Persons dialog box에서 desired name 선택.
External Installation Number dialog box에서 continue 선택.
Developer Registration dialog box에서 user name 입력 후 Register 선택.
system이 보여주는 20자의 developer key를 복사하라.
Volumn1 : Chapter 11
35
Runtime Analysis
1. Performance 측정
Runtime analysis
CPU 총 사용시간 측정.
분석 도중에는 프로그램 소스를 수정할 수 없다.
GET RUN TIME FIELD <f>.
선택한 statement sequence가 소비하는 CPU 시간을 측정.
소스 코드 수정 가능 (필요한 statement를 insert)
SQL Trace function 사용.
log와 database operation들을 분석할 수 있다.
3. Gross/Net Times
Gross time : 특정 unit을 수행하는데 소요된 총 시간.
Net time : Gross time에서 다른 modularization unit이 호출된 시간을 뺀 시간.
퍼센트나 마이크로 세컨드로 표시할 수 있다.
Volumn2 : Chapter 1
37
ABAP/4 Dictionary Part ll
Volumn2: Chapter 2
38
Relationships Between Tables in the ABAP/4 Dictionary
1. Foreign Key란?
Field level에서 정의되어야 한다.
data의 consistency를 보장하기 위해.
어떤 table fields의 combination이 다른 table에서 primary key여야 한다.
Table T1에서의 foreign key field는 Table T2의 primary key fields에 assign 되어야 한다.
이 때 T1 Table을 Foreign Key Table 또는 Dependent Table이라 하고, T2 Table을
Check Table 또는 Referenced Table이라 한다.
foreign key field의 data는 대응하는 check table의 field에 존재해야 한다. 즉, SELECT
문이 screen에서 field check 하기 전에 foreign key 정의로부터 자동적으로 generate
된다.
Check field : data 입력을 최종적으로 결정해 주는 foreign key fields 중의 한 field
Check Field와 대응하는 Foreign Key는 같은 Domain을 사용해야 한다. 다른 Foreign
Key Fields들에 대해서는 data element의 존재, data type과 field length의 일치로
충분하다. 그러나 같은 domain을 사용할 것을 권장한다.
39
Not specified
Non-key fields / non-candidates
Key fields / candidates
Key fields of a text table
Text table : language field (SPRAS)가 key field로 사용되는 table
Candidate field : key field와 같이 묶일 수 있는 field
6. Include
다른 table의 substructure로 table을 삽입하는 것.
Table은 전체 table로서만 삽입될 수 있다.
Foreign Key Definition은 상속된다.
Volumn2 : Chapter 3
40
Repository Information System for ABAP/4 Dictionary
41
22. Possible Selections
모든 object에 대해 다음과 같은 selection이 가능하다.
- standard selection: 선택한 object에 대한 일반적인 정보를 선택
- Additional selection: Check table 사용여부 등의 특별한 속성과 관련된 선택
가능
- Settings: customer object에 대해서만 선택한다든지 하는 제약조건을 이용한
선택 가능
23. Functions
Repository Information System에서는Object를 display 하거나 maintnance하는
기능외에도 다음과 같은 operation들이 가능하다.
- Logical database, Table, Entity type, Lock object에 대한 Where used list 실행
- Table의 data display
- Print
Volumn2: Chapter 4
42
Changing Tables
1. Transparent Tables
ABAP/4 Dictionary에서 logical table definition을 generate 했을 때 database내에
dictionary의 table과 똑같은 physical table이 같은 table 이름과 같은 field이름으로
database에 자동적으로 생성된다.
ABAP/4 dictionary는 논리적 테이블 정의로써 structure와 같이 field만 정의되어 있고
실제 data는 갖고 있지 않음.
database는 실제 table을 의미하며 fields 및 data를 갖고 있음.
2. Structures
프로그램에서 계산이 수행되거나 프로그램들 사이에 data가 전송될 때, 정의되는 data
의 구조.
Structures는 tables와 같은 식으로 정의되지만, database의 object와 일치하지는
않는다.
structure는 ABAP/4 Dictionary 안에서 정의되고 activate 되어짐.
Transparent tables에서는 data가 database에 저장될 수 있지만, Structures는
프로그램의 runtime 시에만 temporarily하게 data를 가질 수 있다.
4. Runtime Objects
Runtime system과 관계 있는 table에 대한 정보(domain, data element, table definition)
를 수집한다.
Table을 activation 하는 동안에 generate된다.
Table에 대한 정보(field 수, 모든 table field의 총 길이, key field의 수, 모든 key field의
총길이, table이 client specific 한지 여부, buffered 방법)를 저장하고 있음. 또, table field
에 대한 정보(field 이름, table에서의 field 위치, data type, 길이, 소수점 위치, reference
field, check table, conversion routine 등)도 갖고 있음.
43
5. Activation Types
Online activation
Mass activation
큰 objects의 set이 동시에 activated 되어져야 할 때, RDDMASG0 프로그램 사용.
Upgrade 시에 발생한다.
background로 작업할 것을 권장
Mass activation의 장점
관련된 table이 한번에 reactivate 되어짐.
관련된 object(domain, 및 관련된 value table)가 함께 activate 되어짐.
7. Regeneration Reports
Time stamps : internal representation이 다시 generated 되어질 필요가 있는지
결정한다.
regeneration은 program이 호출되어졌을 때 자동으로 수행된다.
44
8. Database Utility
ABAP/4 Dictionary와 relational database 사이의 interface이다.
database에 있는 ABAP/4 Dictionary에 정의된 objects를 생성, 삭제하게 한다.
conversions를 지원한다.
모든 operations는 logged되어지고 Database Utility로부터 볼 수 있다.
여러 analysis options를 제공한다.
DB의 table이 record를 갖고 있는지 check.
DB에서 table의 정의를 display.
table의 runtime object 를 display.
database table과 runtime object의 일치성 check.
Dictionary maintenance와 runtime object에서의 table 정의의 일치성 check.
45
table을 convert했을 때
46
Volumn3: Chapter 1
Logical Databases
1. DB Accesses
ABAP/4 Open SQL Interface
EXEC-SQL Interface
IMPORT / EXPORT Interface
4. Logical DB의 장점
Selection screen에 대해 consistent하고 user-friendly한 design을 implement할 수 있게
한다.
DB accesses에 대해 input checks와 authorization checks를 implement할 수 있게 한다.
Read accesses에 대해 performance 향상을 가능케 한다.
5. Reading Data
GET : report processing과 logical DB를 link한다.
GET이 SELECT와 다른 점
하나의 EVENT
Authorization check를 한다.
47
6. Scenarios
Logical DB는 같은 logical DB를 사용하는 program 들에 대해 consistent user interface
를 implement 할 수 있게 해 준다.
Central data에 대한 Authorization checks는 centrally 하게 정의된다.
Logical DB내에서의 performance 향상은 관계된 모든 program들에 영향을 미친다.
7. GET <table>.
8. GET <table> FIELDS <field name1> <field name2> … .
화면의 Attribute 부분에서 Logical DB와 연결을 시켜야 사용할 수 있다.
9. Events
START-OF-SELECTION.
ABAP/4 program이 시작하면 system이 실행시킨다.
어떤 event에 explicitly하게 할당되지 않은 key words를 system이 자동으로
START-OF-SELECTION event로 할당하고 실행시킨다.
END-OF-SELECTION.
program의 끝에 실행시킨다.
10. STOP
Loop를 빠져 나올 때 사용하며, END-OF-SELECTION으로 바로 넘어간다.
48
49
Volumn3: Chapter 3
AT FIRST. … ENDAT.
loop에 들어가면 제일 먼저 실행되는 control level
AT LAST. … ENDAT.
loop를 다 수행하고 빠져나오기 전에 실행되는 control level
AT NEW <field>. … ENDAT.
해당 record의 값이 바뀔 때마다.
AT END OF <field>. … ENDAT.
해당 record가 끝날 때마다.
Subtotal 사용할 때.
지정한 <field> 다음에 (오른쪽에) 위치한 field 들은 모두 ‘*’로 채워진다.
50
DATA: BEGIN OF <tab> OCCURS 100,
F1 … ,
F2 … ,
F3 … ,
END OF <tab>.
…
SORT <tab> BY F1, F2.
LOOP AT <tab>.
AT FIRST. <statements>. ENDAT.
AT NEW F1. <statements>. ENDAT.
AT NEW F2. <statements>. ENDAT.
<single record processing>
AT END OF F2. <statements>. ENDAT.
AT END OF F1. <statements>. ENDAT.
AT LAST. <statements>. ENDAT.
ENDLOOP.
5. Intermediate Dataset
여러 table을 합치면 ITab의 size가 커져서 high data redundancy가 생기고, 여러 개의
ITabs를 쓰면 program이 복잡해 진다는 단점이 있다.
두 tables이 다른 record types를 가지고 있으면 intermediate datasets를 generate 할 수
있다.
HEADER : key field에 해당하는데, 반드시 존재해야 하며, 이것을 이용해서 sort 한다.
51
7. Sorting and Processing an Extract
EXTRACT 문으로 generated 되어진 Intermediate Datasets는 END-OF-SELECTION
event에서 sorted 되어지고 processed 되어진다.
Sorted dataset은 LOOP 문 안에서 사용되어진다.
LOOP 문 안에서
AT <field group>. … ENDAT.
AT FIRST. … ENDAT.
AT LAST. … ENDAT.
AT NEW <sort field>. … ENDAT.
AT END OF <sort field>. … ENDAT.
들을 사용할 수 있다.
AT END OF. … ENDAT. 과
AT LAST. … ENDAT. 안에서 SUM(<numfield>) 와 CNT(<headerfield>) 를 사용할 수
있다.
Syntax Description
SORT BY <field1> <field2> … .
<field i> Fields in field group HEADER Addition :
ASCENDING/DESCENDING
AT <field group> WITH <field group>.
…
ENDAT.
AT END OF <sort field>.
WRITE: …, SUM(<numfield>), CNT(<headerfield>).
ENDAT.
52
AT LAST.
IF CNT(<headerfield>) … .
MOVE SUM(<numfield>) … .
ENDAT.
53
Volumn3: Chapter 5
54
Volumn3: Chapter 7
Menu Painter
1. GUI Interface
GUI elements : Title bar, Menu bar, Standard tool bar, Application tool bar.
각각의 report에 대해서 menu bar를 만들고, 각각의 status에 할당한 후 active or inactive를
정의한다.
GUI status types
SCREEN : menu bar, pushbuttons, input/output fields를 가지는 fullscreen.
MODAL DIALOG BOX : menu bar는 가지지 않고, 단지 pushbutton만 가진다.
LIST : menu bar, pushbuttons, standard list functions를 가지는 fullscreen,
LIST IN DIALOG BOX : dialog box에 있는 list box로서 windows에 사용되어져야 한다.
pushbuttons는 만들 수 있지만, menu bar는 만들 수 없다.
Menu Painter 실행방법
Workbench에서 Menu Painter 선택.
Tcode : SE41
ABAP/4 editor에서 SET PF-STATUS <status>의 status 이름에 커서를 위치시키고,
더블클릭을 하거나 F2를 누른다.
Menu Bar에 8개까지 menu를 정의할 수 있으며, System과 Help menu는 system이
자동으로 제공한다.
각각의 menu에 대해서 15 options를 정의할 수 있다.
각각의 function key에 대해서 4자의 function code를 정의한다.
Function types
‘T’ : function code가 transaction code임.
‘S’ : system function을 trigger한다.
‘ ‘ : program 내에서 쓰이는 function.
2. Status-Assignment
SET PF-STATUS <status>.
SY-LSIND : list의 level 저장.
SY-PFKEY : 현재 active한 status 저장.
예)
REPORT RSDEMO01.
55
…
END-OF-SELECTION.
SET PF-STATUS ‘BASE’.
…
AT LINE-SELECTION.
CASE SY-PFKEY.
WHEN ‘BASE’.
SET PF-STATUS ‘BOOK’.
…
WHEN ‘BOOK’.
SET PF-STATUS ‘FLI2’.
…
ENDCASE.
…
TOP-OF-PAGE DURING LINE-SELECTION.
CASE SY-PFKEY.
WHEN ‘CARR’.
…
4. Event AT USER-COMMAND
AT USER-COMMAND.
user가 해당 function을 activate 시킬 때 발생한다.
SY-UCOMM
assigned된 function code를 저장한다.
user가 선택한 메뉴의 function code
56
Volumn3: Chapter 9
Windows
57
Volumn3: Chapter 10
Special Techniques
1. SCROLL 문
SCROLL LIST
TO FIRST PAGE
TO LAST PAGE
TO PAGE <p>
FORWARD <n> PAGES
BACKWARD
TO COLUMN <n>
LEFT BY <m> PLACES
RIGHT BY <m> PLACES
INDEX <i>. : SY-LSIND의 값에 해당
SET LEFT SCROLL-BOUNDARY
현재 write position (SY-COLNO)을 scroll area의 왼쪽 boundary로 고정시킨다.
Return Code SY-SUBRC
0 : Scrolling performed
4 : List limit
8 : List does not exist (INDEX)
2. Horizontal Scrolling
SY-STACO : 현재 화면에 start column
SCROLL LIST RIGHT.
SCROLL LIST LEFT.
3. Field Selection
GET CURSOR
… FIELD <field1>
… VALUE <field2>
… LINE <line>.
현재 cursor의 위치를 알 수 있다.
58
4. Positioning the Cursor
SET CURSOR
… FIELD <field1>
… <column> <field2>
… LINE <line>.
59
Volumn3: Chapter 11
Linking Components
1. Objectives
서로 다른 요소들(Reports, Transactions) 간의 연결.
SPA/GPA memory 또는 global Export/Import memory 를 이용한 각 요소들간의 Data
전송 Option.
Calling a Report
Calling a Transaction
3. SPA/GPA를 통한 Data 전송
SET PARAMETER ID <ID> FIELD <F1>.
SPA/GPA
Global
Parameter ID : Data element level에 3글자로 정의한다.
단점 : field value 값 하나만 전달할 수 있다.
SET PARAMETER 문을 사용해서, SPA/GPA Memory에 parameter ID와 값을 저장할
수 있다. transaction이 호출될 때, screen input fields에 대한 default 값으로 SPA/GPA
Memory에 저장되어 있는 값을 자동으로 사용한다. 이 때 GET PARAMETER option이
60
해당 parameter ID에 대해서 active된다.
SET PARAMETER 의 결과는 runtime에 알 수 있다.(error 등)
61
<field1> FROM <fielda>
<field2> FROM <fieldb>
: :
TO MEMORY
ID <id>.
IMPORT
<field1> TO <fielda>
<field2> TO <fieldb>
: :
FROM MEMORY
ID <id>.
6. SUBMIT 구문
SUBMIT <report>
AND RETURN
VIA SELECTION-SCREEN
AND RETURN EXPORTING LIST TO MEMORY
WITH <p> <op> <f1>
WITH <p> BETWEEN <f1> AND <f2>
WITH <p> IN <tab>
USING SELECTION-SET <v>.
USING SELECTION-SETS OF PROGRAM <prog>
WITH SELECTION-TABLE <seltab>
: <p> - selection table 이나 parameter field 의 이름 (SHOW DATABASE <dba>)
: <op> - EQ, NE, CP, NP, GE, LT, LE, GT
: <f1> - field 이름이나 상수
: <f2> - field 이름이나 상수
: <seltab> - RSPARAMS 구조의 internal table
62
: <tab> - RANGES 에 의해 선언된 Internal table
: <v> - selection variant 의 이름
: SELECTION-SET : variant
SUBMIT 문은 ABAP/4 report를 시작한다.
default로 selection screen은 보여지지 않는다. ( OPTION : VIA SELECTION-SCREEN
)
VIA SELECTION-SCREEN : Selection screen을 나타내고자 할 때.
WITH / USING 구문을 사용하여 SELECTION VALUE를 건네줄 수 있다.
RANGES를 가지고, SELECT-OPTIONS에서 만들어진 ITAB과 같은 구조를 가지는
ITAB을 선언할 수 있다.
RS_REFRESH_FROM_SELECTOPTIONS 함수는 현재 설정된 PARAMETER와
SELECTION CRITERIA를 <SELTAB>에게 넘겨준다.
SUBMIT <report> AND RETURN USING SELECTION-SETS OF PROGRAM <prog>
은 PROGRAM <prog> 의 변수를 가지고 <report>를 구동시킨다.
AT USER COMMAND.
63
LEAVE
LEAVE PROGRAM
Calling program으로 processing을 되돌린다.
Standard icon에 있는BACK, %EX, RW function 들은 이전 PGM(CALLING PGM)의
다음 구문으로 되돌아간다.
9. Calling a Transaction
LEAVE TO TRANSACTION <tcod>
CALL TRANSACTION <tcod>
AND SKIP FIRST SCREEN.
AND SKIP FIRST SCREEN을 사용하면, called transaction의 처음화면이 나타나지
않는다.
CALL TRANSACTION <tcod> USING <itab> 은 internal table을 건네주는 batch input
process를 실행시킬 수 있다.
10. SUMMARY
REPORT 에서 다른 ABAP/4 Report 또는 Transaction 을 Call 할 수 있다.
새로운 data area(system roll area)에 Called components(CALL MODE)를 OPEN
시킨다.
CALLED PGM 을 LEAVE 하면 Calling PGM 으로 되돌아 간다.
Called PGM 이 같은 roll area 에 Active 되면 이전 PGM 은 사용할 수 없고 같이
종료된다.( RETURN 이 없는 경우 )
SPA/GPA memory 또는 global Export/Import memory 를 이용한 각 요소들간의 Data
전송.
SPA/GPA PARAMETER 는 input FIELD 에 값을 넘겨줄 수 있으며 다른 SESSION 에도
영향을 미친다.
global ABAP/4 MEMORY 에는 ABAP/4 data structure 의 어떤 종류의 내용도 저장할
수 있으며 called chain 안의 프로그램들간에 데이터를 주고받을 때 사용한다. 다른
SESSION 에는 영향을 미치지 않는다.
SUBMIT 구문의 PARAMETER 를 이용하면 CALLED REPORT 의 SELECTION
SCREEN 값을 넘겨줄 수 있다.
64
Volumn3: Chapter 12
ABAP/4 Query
65
한 명의 user는 여러 user groups에 할당될 수 있다.
System administrator
Functional areas, user groups, transports를 관리한다.
End user에 대한 환경을 정의한다.
Translator : Functional areas, user groups, queries에 있는 texts를 foreign language로
translate한다.
4. Defining a Query
이름 : Aqbbmmqq (bb : user group의 이름, mm : coded client, qq : query의 이름)
5. Running a Query
To start queries : System -> Services -> ABAP/4 Query.
To create, change and start queries (Development Workbench에서) :Environment ->
ABAP/4 Query -> Queries.
Authorization object S_QUERY를 사용할 수 있다.
6. Saving Lists
Query report에 의해 generate된 lists를 background memory에 저장할 수 있다.
Presentation server에 local file로서 lists를 저장할 수 있다.
66
8. Summary
ABAP/4 Query 는 R/3 standard system 에 포함되지 않은 ABAP/4 report 를 generate
하는데 사용된다. ABAP/4 programming knowledge 를 가지지 않은 사용자들을 위한
것이다.
Queries 는 user group 에 할당되어진다. 이 group 에 속한 user 들은 이 queries 에
접근할 수 있도록 authorized 되어진다.
하나의 functional area 는 여러 user groups 에 할당될 수 있다.
여러 functional areas 는 하나의 user group 에 할당될 수 있다.
하나의 user group 에 할당된 queries 는 그 group 에 있는 users 들에 의해 공유된다.
query 는 항상 특별한 functional area 에 대해서 만들어진다. 이 functional area 는 user
group 에 할당되어져야 한다.
user 는 user 자신의 user group 에 할당된 모든 queries 를 access 할 수 있다.
67
Volumn4: Chapter 1
13. Screen 생성 순서
Screen Attribute를 이용하여 기본환경 설정.
Fullscreen Editor를 이용한 화면 design.
Field list를 이용한 field attribute 정의.
Screen Flow Logic 작성.
68
모든 PAI module이 진행되기 전에, screen work area에 있는 fields들의 내용들이
ABAP/4 work area의 동일한 이름을 가진 fields들로 복사된다.
69
Screen Attribute에서 next screen을 nnn으로 지정해 준다.
SET SCREEN nnn.
LEAVE SCREEN.
줄여서 LEAVE TO SCREEN nnn.
SCREEN nnn은 같은 module pool에 있어야 함.
Cf. CALL SCREEN nnn. : Return to Original Call location.
70
22. Defining the Interface
Menu bar는 8개 까지 menu를 가질 수 있다. 그 중의 2개는 system이 자동으로
제공하는 System과 Help menu이다. 따라서 개발자는 6개 까지 정의할 수 있다.
하나의 menu는 separator line을 포함해서 15개의 entries 까지 가질 수 있다.
23. Summary
Top include(optional)를 가지는 type ‘M’(module pool)의 program.
Top include 또는 main program에서 global data를 정의한다.
Module pool에 대한 screen들을 만든다.
Screen layout을 정의한다.
Field list(field attribute)를 maintaining한다.
Flow logic에서 module call을 정의한다.
Module pool에서 module을 만든다. (general processing, dialog messages, GUI title,
GUI status)
Transaction codes를 정의한다.
71
Volumn4: Chapter 2
Additional Techniques
in Screen Painter and Menu Painter
MODULE <module>.
72
없다.
CHAIN.
screen field2,
screen fieldn.
MODULE <module>.
ENDCHAIN.
73
SET SCREEN nnnn.
않는다.
또는,
을 사용하라.
또는,
LEAVE TO SCREEN 0.
STARTING AT x1 y1
ENDING AT x2 y2.
STARTING AT x1 y1.
74
FIELD <screen field>
CHAIN.
ENDCHAIN.
해당 field가 새 입력 값을 가질 때만 수행한다.
CHAIN.
ENDCHAIN.
75
…
AT EXIT-COMMAND.
수 없다.
E : AT EXIT-COMMAND를 사용할 때
76
Volumn4: Chapter 3
Asynchronous Update
1. 용어 정리
Dialog Step : 현재의 PAI module에서 다음 화면의 PBO module 까지.
PBO module이 실행되어질 때 implicitly commit이 발생한다.
사용자가 Enter를 누르거나, function key를 누름으로써 function을 activate
시키거나, menu로부터 function을 고르거나 double-click 할 때 시작한다. 그리고
다음 화면이 나타나면 끝난다.
현재 화면의 PAI module과 다음 화면의 PBO module이 실행된다.
각각의 dialog step은 update requests를 포함할 수 있다.
SAP LUW : commit work(rollback work)에서 다음 commit work(rollback work) 까지.
SAP Transaction : Dialog step들로 구성된다.
DB Transaction : DB commit(rollback)에서 다음 DB commit(rollback) 까지.
Update Requests : Update, Insert, Delete
2. Asynchronous Update
연속된 dialog steps를 하나의 unit(SAP LUW) 단위로 update requests를 묶어서
수행한다.
77
하나의 LUW 단위의 Dialog step들의 update request 들은 모두 log table에 flag와 함께
저장된다.
Commit work가 발생했을 때 log table에 들어있던 update request들을 한꺼번에
수행한다.
Commit work 발생시에는 update task와 다음 SAP LUW가 동시에 발생한다.
Update를 할 때 table이 Master/Detail 관계이면 우선 Master 먼저 Update하고 detail을
처리한다.
Rollback work 문은 LUW를 끝내고 update를 실행하지 않는다.
4. Rollback
Dialog Program : ROLLBACK WORK 사용.
Update Program : Message Annn. 사용 (Abend Message가 발생하면 Rollback이
자동으로 발생한다.)
78
Volumn4: Chapter 4
11. DB Lock
시킨다.
SAP transaction이 lock table에 table record를 lock entry를 setting 하고 transaction이
79
끝날 때 해제한다.
lock object는 primary table로 구성되는데 name은 EY, EZ로 시작해야 하며 lock
update program
80
Volumn4: Chapter 5
81
Screen field나 modifiable attribute가 자동으로 저장된다.
PBO가 실행될 때 Screen Table도 초기화 된다.
SCREEN-REQUEST는 내부사용용이다.
Modification Group
4개 까지 가능 (이름은 3자까지).
If screen-name = ‘SFLIGHT-CARRID’.
Screen-active = 0.
Endif.
Modify screen.
Endloop.
82
Volume 4: Chapter 6
Table Control
data를 display 하거나 edit 할 때, Table grid를 조절하거나 column 위치를 수정하기
위하여 사용한다.
또한 select 된 문장이 highlight 되거나 다수의 line을 선택할 때, scroll bar 등을 나타낼
때 사용한다.
저장할 수 있음
라인이 채워진다.
비슷하게 PAI module에서는 table control 라인의 변경된 부분을 해당하는 internal table
로 복사한다.
83
CONTROLS 구문은 ABAP/4 dictionary에 정의된 CXTAB_CONTROL type과 같은
REFRESH CONTROL ctrl FROM SCREEN 구문은 table control을 초기값으로 setting
한다.
Internal table을 이용
계산한다.
84
Volumn4: Chapter 7
85
이 때 AND RETURN TO SCREEN <scr>. 문장을 사용하여 다음 screen을 무효로
할 수 있다.
사용자가 F3(BACK)을 누르거나 LEAVE LIST-PROCESSING 구문을 사용하여
program-driven 된 경우, List processing은 마쳐진다.
5. Calling a Report
report를 호출하고 실행시키기 위해 SUBMIT 문을 사용한다.
VIA SELECTION-SCREEN
Report selection-screen이 displayed된다.
default로 selection-screen을 보여주지 않는다.
AND RETURN
report의 수행이 끝났을 때 호출한 곳으로 돌아온다.
report를 호출하는 동안, logical database를 read process를 위해 사용할 수 있다.
7. Calling a Transaction
CALL TRANSACTION : list나 dialog processing에서 dialog program을 호출할 때 사용.
LEAVE PROGRAM : dialog program을 떠나서 그것을 호출한 곳으로 돌아갈 때.
LEAVE TO TRANSACTION
다른 dialog program을 시작할 때 사용
이 경우 program이 호출된 곳으로 돌아오지 못한다.
86
8. Data Transfer Techniques
SAP memory & ABAP/4 memory : 다른 program들 (report 또는 program) 사이의
자료전송에 사용
SAP memory
간단한 field 값을 저장하기 위한 user-specific memory area이다.
User session의 존속 기간동안 유지된다.
SAP memory의 내용은 screen field의 default value로 사용된다.
모든 external modi는 SAP memory를 access할 수 있다.
이것은 internal modi 간의 자료 전송이 제한될 때 적합하다.
ABAP/4 memory
Internal modi 사이의 ABAP/4 variables(fields, field strings, internal tables,
complex objects)를 transfer 하기 위한 memory area이다.
각각의 external modus(방법)는 자신의 ABAP/4 memory를 갖는다.
사용자가 어떤 external modus(방법)을 종결지을 때, 관련된 ABAP/4 memory가
release된다.
11. 요약
87
list processing과 dialog processing을 ABAP/4 program에서 결합하기 위해, CALL
SCREEN과 LEAVE TO LIST-PROCESSING(또는 SUBMIT report) 구문을 사용한다.
Function module을 사용하여 dialog들을 캡슐화 할 수 있다.
ABAP/4 program으로부터 SUBMIT을 사용하여 report를 호출하거나 CALL
TRANSACTION을 사용하여 transaction을 호출할 수 있다.
호출한 프로그램과 호출된 프로그램 사이에 자료를 전송하기 위해 ABAP/4 memory와
SAP memory를 사용한다.
88
Volume 4: Chapter 8
사용자가 field text, input field에서 F1을 누르는 경우 data element의 documentation이
display 되며 input field에서 possible entry key 또는 F4를 누르는 경우 possible value
값이 display 된다.
F4를 누르면 해당되는 check table의 키 필드가 display 되는데 다른 필드를 보여주고자
help view를 정의할 때는 view name과 primary table을 결정하고 view type은 H로 한다.
조건이다.
에기입한다.
Match code id는 1자리, update type은 I로 지정하고 parameter id와 SPA/GPA를 설정할
수 있다.
89
24. Programmed F1 and F4 Functionality
POH의 예
PROCESS ON HELP-REQUEST
사용 가능 Function
- HELP_OBJECT_SHOW
- HELP_OBJECT_SHOW_FOR_FIELD
- DYNP_VALUES_READ
- DYNP_VALUES_UPDATE
POV
- PROCESS ON VALUE-REQUEST
- 사용 가능한 function
- HELP_VALUE_GET_WITH_DD_NAME
- HELP_VALUES_GET_NO_DD_NAME
- HELP_VALUES_GET_EXTEND
Volumn4: Chapter 9
Number Assignment
90
Customer object의 number range object 이름은 Y 또는 Z로 시작해야 한다.
number range objects를 sub-objects로 분류할 수 있다.
To-year ID : 회계연도
Numbers의 길이를 바로 명시하지 말고, NUMC 또는 CHAR type의 domain으로 이름을
지어야 한다. 그리고 field 길이는 20자 까지이다.
Percentage for warning : 여유분을 표시 만약 초과시에는 경고 메시지.
External check : 내부의 system이 할당할 것인가 외부에서 user가 할당할 것인가 결정.
2. 이용가능 함수
NUMBER_GET_NEXT : 다음 번호를 입력하지 않아도 결정하는 함수
NUMBER_CHECK : number가 number range 안에 포함되어 있는지 check하는 함수
(external)
NUMBER_GET_INFO : interval limits, current status 등의 정보 확인.
Volumn4: Chapter 10
91
Change document는 document header(table name, last changed by, date, etc.)와
document items(key of changed table entry, name of the changed field, old and new
value, change indicator)로 구성되어 있다.
Change document가 generate 될 때, change document number가 자동으로 할당된다.
Volume 6: Chapter 1
Sequential Files
92
system으로 export 하기 위한 매개체로서의 역할을 한다.
인식한다.
IN TEXT MODE option을 사용하여 file을 open 하면 시스템은 해당 file이 line structure
93
를 가진다고 인식한다. Data area가 라인에 비해 크면 남은 area는 공백으로 채워지며
사용한다.
94
사용하면 file을 open 하다가 에러가 발생하여 프로그램이 종료하는 것을 피하기 위해
Sequential file을 explicitly delete하기 위해서 DELETE DATASET <file name> 구문을
95
Chapter2. Introduction to Batch Input Processing
1. Overview
BDC 를 사용하는 목적은 외부시스템으로부터 데이터를 불러올 때, 데이터가
일관성을 유지할 수 있고, 사용자가 일일이 입력해야 하는 번거러움을 없앨 수
있기 때문이다.
2. Problem Overview
외부 시스템의 데이터가 아무런 체크 없이 SAP system 을 들어와서는 안 된다.
테이블에 걸려 있는 foreign key 라든지, 다른 조건들을 만족하는지에 대한
체크를 꼭 거쳐야 한다.
3. Technique Overview
많은 양의 데이터는 BDC(batch data communication)을 통해서 SAP system 으로
들어 오게 된다.
Batch input 은 자동적으로 이루어지게 된다.
일반적으로 사용자는 데이터를 조작할 때 dialog program 에서 하게 되는데,
데이터를 import 시킬 때도 실제 dialog program 에서 입력되는 과정을 거치도록
한다. Dialog program 에서는 데이터에 대한 체크가 이루어지므로, 데이터에
대한 체크를 거칠 수 있다.
Dialog program 에서 이루어지는 체크를 보면 다음과 같다. : Format check,
Automatic value range check(against check table or fixed value range),
Conversion of user data to program data and vice-versa, Field default
value.
Sequential files 로 만들어진 데이터는 변형을 통해 batch input session
모양으로 queue file 에 저장되게 된다. Batch input session 에는 business
processes (transaction)가 저장되어 있다.
Batch input session 에 저장되어 있는 데이터들은 dialog program 에 입력이 되어
실제 SAP system 으로 들어가게 된다.
4. Batch Input Processing
Sequential file – batch input program – queue file – batch input function –
SAP system
5. Batch Input Program
data 는 Batch Input Program 을 통하여 queue file 로 들어가게 된다.
96
Batch input program 은 sequential files 로부터 데이터를 읽어 들이게 된다. 이
때 loop 를 돌면서 structure 에 데이터를 읽어 들이게 되는데, 이 때 한
structure 에 들어있는 데이터는 한 번의 transaction 에 이용되는 데이터이다.
이 structure 를 이용하여 BDC table 에 데이터를 채워 넣는다. (BDC table 은
screen program 이 데이터를 읽어 들이기 위해 사용되는 table 이다.) 한 개의
BDC table 은 한 번의 transaction 에 필요한 데이터가 들어있다.
6. Batch Input Queue File
Batch input function 은 batch input session 에 들어있는 데이터를 SAP system 에
집어 넣기 위해 사용된다. Batch input function 은 해당되는 transaction 을
부른 후 데이터를 screen 에 집어 넣는다. 그 후 데이터는 log file 에 들어가게
되고, 최종적으로 SAP system 으로 들어가게 된다.
7. Format of a Batch Input Session
Batch input session 에는 header 부분과 data 부분으로 이루어지는데, header
부분은 Data Dictionary 의 APQI structure 의 구조를 가지며, data 부분은 APQD
structure 구조를 가진다.
8. Creating a Batch Input Session
Batch input program 은 연속적인(직렬) batch input session 들은 만들 수
있으나, 병렬(parallel)로는 만들 수 없다.
9. Function Module for Batch Input Program
Batch input session 을 만들기 위해서는 다음과 같은 함수를 이용한다.
BDC_OPEN_GROUP, BDC_INSERT, BDC_CLOSE_GROUP
10. Function Module BDC_OPEN_GROUP
이 함수를 통해 batch input session 을 open 한다.
Client(client), group(session name), user(user name)은 꼭 입력해야 하는
parameter 이다.
holddate(가장 빨리 시작할 날짜), keep(성공적으로 수행된 후 지울 것인가 말
것인가)은 option 이다.
sy-subrc 를 통해 결과를 알아볼 수 있다.
User type 은 꼭 입력되어야 하며, BDC type 이어야 한다. (이 의미는 user 가 가진
권한 중 BDC 를 실행할 수 있는 권한을 가져야 한다는 말이다.) user 에 대한
권한 check 는 background 로 batch input session 을 실행했을 때 수행된다.
그러나 on line 으로 batch input session 을 수행할 때는 그 transaction 을
수행한 user 의 권한을 체크한다.
11. Function Module BDC_INSERT
이 함수는 하나의 transaction 에 쓸 데이터를 session 에 집어넣기 위해 쓰인다.
97
데이터를 보내기 위해서는 BDC table 이 필요하다. 마찬가지로 이 테이블 안에는
하나의 transaction 을 위한 데이터가 들어있다.
다음 parameter 는 꼭 입력해야 한다.
TCODE : transaction code
DYNPROTAB : BDC table
12. BDC table
BDC table 은 위와 같은 구조를 가지고 있다.
BDC table 은 한 개의 transaction 을 위한 데이터를 가지고 있다.
Field name 은 값이 바뀌어질 필드의 이름만 넣으면 된다. 나머지는 screen
program 이 자동적으로 불러오게 된다.
13. Defining the BDC table
BDC table 은 internal table 로서 Data Dictionary 의 ‘BDCDATA’의 구조를 갖는다.
Program, field name 은 대소문자의 구별이 없지만, field content 는 대소문자를
구별한다.
14. Function Module BDC_CLOSE_GROUP
이 함수를 통해 batch input session 을 닫는다.
sy-subrc 를 통해 수행 결과를 알 수 있다.
15. Processing Mode
만들어진 batch input session 을 application function (transaction code)에
대입시키는 방법에는 다음과 같이 3 가지 방법이 있다.
Program screen Start field name field content
98
Foreground : Display all dialog steps
이 모드에서는 transaction 의 모든 screen 이 display 된다. 만약 session 이
비정상적으로 종료되었다면 restart 함수를 통해 session 에 대한 overview
를 살펴볼 수 있으며, 다시 수행시킬 수도 있다. 권한 체크는 이 session 을
수행시킨 user 의 권한을 체크한다.
Display errors only : Display dialog stpes only for error or termination
message
에러가 발생했을 경우에만 screen 이 display 된다. 권한 체크는 session 을
수행시킨 user 에 대해 체크한다.
Background : Display steps not displayed, processing takes place in the
background.
session 의 background 로 실행된다. 권한 체크는 session 의 user 가 이 작업을
background 로 돌릴 수 있는지에 대한 체크가 이루어진다.
위 세 가지 모드 전부, update mode 는 synchronous 로 실행된다. 즉 지금 수행한
update 는 완료된 후에만 다음 transaction 으로 들어갈 수 있다. 그러나 session
을 수행시키는 또 하나의 방법인 call transaction 은 asynchronous mode 로
수행할 수도 있다. 그리고 여기서는 log 로 session 의 수행상태를 검색하지만,
call transaction 에서는 sy-subrc 로 체크한다.
16. Batch Input Processing
foreground 나 display error only mode 로 session 을 수행할 때, /n, /bdel,
/bend, /bda, /bde 등을 통해 session 을 빠져 나오거나 지울 수 있다.
17. Session Status
session 의 상태는 system 에 의해서 관리되고 있는데 다음과 같은 상태에 있다.
Processed, Incorrect, To be processed, Creating, Processing, Background
system 은 에러 때문에 수행할 수 없는 transaction 들을 파악하여, session 에
이러한 transaction 들을 남겨 놓는다. 이러한 session 들은 나중에 다시
수정하거나, 수행시킬 수 있다.
18. Creating and Processing Sessions
Sequential file 을 통해 session 을 만드는 시점과 application function 을 통해
session 을 수행시키는 시점은 서로 다르다.
Batch input system 에서는 batch input session 을 수행시킬 때 SPA/GPA parameter
를 수행하지 않는다.
99
Volume 6: Chapter 1
Update
Leave To Transaction
‘/nxxxx’
Batch input processing 중에, update나 returning to the SAP main menu 등으로
transaction을 빠져 나올 수 있다.
100
Chapter3. BDC
19. Overview
Customer System – Customer Transfer Program – Sequential File – Batch Input
Program – Queue File
SAP 에서는 자체적으로 batch input program 을 제공한다. 그러므로 사용자가 직접
batch input program 을 만들 필요가 없다. 그러나 조건이 있는데, sequential
files 가 SAP 에서 원하는 형식으로 되어 있어야 한다.
20. Sequential Dataset in SAP Format
Sequential files 의 data 형식은 SAP batch input program 에서 읽을 수 있는
형식이어야 한다.
SAP 에서는 어떤 형식이 필요한가에 대해 ABAP/4 Data Dictionary 에서 제공한다.
21. Data Analysis
Legacy system 에서 SAP system 으로 전송하기 위해서는 두 시스템 간의 데이터에
대한 조사가 있어야 한다.
22. Transfer Program
Customer transfer program 의 역할은 legacy system 에서 만든 sequential files 를
SAP 에서 읽을 수 있는 형식의 sequential files 로 바꾸는 것이다.
23. Importing SAP Structure
SAP 에서 읽을 수 있는 형식의 sequential files 를 만들기 위해서는 SAP Data
Dictionary 에서 가지고 있는 structure 가 필요하다. 이 때 legacy system 에서
ABAP/4 를 사용하고 있다면 table 명령을 통해 이용할 수 있다.
그러나 만약 legacy system 에서 ABAP/4 를 쓰지 않고 다른 언어(C, Cobol, PL/1
등등)를 사용할 때를 대비하여 SAP 에서는 SAP 에서 쓰이는 data 형식을 해당하는
언어로 바꾸어 주는 프로그램을 제공한다. 이 프로그램을 이용하여 해당 언어로
쓰여진 transfer program 에서 그 형식을 포함하면 된다.
24. Initializing and Converting
Batch input structure 에서 field 의 초기값을 무엇으로 할 것인지 (아무 값도
없는 sequential file 의 field 들은 항상 초기값으로 채워져 있어야 한다.),
어떠한 field 들은 batch input 으로 넘어갈 필요가 없는지에 대한 결정이
있어야 한다.
SAP system 으로 import 시킬 때, 값을 assign 하지 않을 field 들에 대해서는
어떤 특별한 기호를 이용해야 한다. (default 는 ‘/’) 그러나 바꿀 수도
있으며, 항상 batch input 의 structure 는 초기값으로 setting 을 해 놓아야
한다.
SAP batch input structure 의 형식은 항상 type C 이므로, transfer program 에서는
항상 데이터 타입이나 길이를 변환시키는 conversion 이 필요하다.
101
25. Other Tasks of a Transfer Program
Customer system 에서 자체적으로 data 에 대한 check 도 있어야 한다. 여기서
문제가 발생한 data 들은 customer error table 로 들어가게 된다.
26. Batch Input, Call, Transaction, Direct Input
Batch input 의 대용으로, direct input technique 을 사용하는 application-
specific program 이 있다. 10000 이 넘는 transaction 을 전송할 때는
performance 면에서 상당한 효과를 볼 수 있다. Call Transaction 처럼, direct
input 은 데이터를 즉각즉각 update 시킨다.(session 으로 생성되지 않는다.)
그러나 batch input 과 call transaction 과는 달리, screen 이 관여되지 않는다.
프로그램 내에서 함수를 호출하는데, 이 함수는 데이터를 검사하고 그것들을
database table 에 입력을 한다. 에러가 발생시에는 다시 시작하는 mechanism 을
제공하기 때문에, program 은 background 로만 돌릴 수 있다.
27. Task of a Transfer Program
Define old structure
Import SAP structure
Initialize SAP structure
Read data record
Check data
Convert data
Place data in SAP structure
Transfer data record to sequential file
28. Data Transfer with Batch Input
Analyze data
Generate SAP structure
Design transfer program
Create sequential file
Create batch input program
Create batch input session
Analyze results
Evaluate errors
102
Volume 6: Chapter 5
Call Transaction
알아볼 수 있다.
103
BDC table에는 한건의 transaction만 들어가 있기 때문에, 다음에 부를 때에는 refresh
Error Yes NO
104
Chapter4. Local Files
29. Overview
ABAP/4 program 은 application server 에서 실행되며 sequential file 을 조작할 수
있다. 또한 ABAP/4 program 을 이용해서 local file (presentation server 에
속한다.)을 조작할 수도 있다.
Upload, download 명령을 이용하여 file 을 internal table 로 internal table 의
내용을 file 로 부를 수 있다.
30. DOWNLOAD and UPLOAD
Function module DOWNLOAD 는 internal table 의 내용을 local sequential file 로
download 한다.
Function module UPLOAD 는 local sequential file 의 내용을 internal table 로
upload 한다.
Local file 에 대해선 절대 경로명을 명시해야 한다.
31. Function Module DOWNLOAD
CALL FUNCTION ‘DOWNLOAD’
EXPORTING
BIN_FILESIZE = <file length for binary files>
CODEPAGE = <do not use>
FILENAME = <file name – default value>
FILETYPE = <file type – default value>
ITEM = <header for file dialog>
MODE = <write mode>
WK1_N_FORMAT = <value column format for WK1 file type>
WK1_N_SIZE = <value column width for WK1 file type>
WK1_T_FORMAT = <text column format for WK1 file type>
WK1_T_SIZE = <text column width for WK1 file type>
IMPORTING
ACT_FILENAME = <file name – entered value>
ACT_FILETYPE = <file type – entered value>
FILESIZE = <number of bytes downloaded>
TABLES
DATA_TAB = <transfer file>
32. Function Module UPLOAD
CALL FUNCTION ‘UPLOAD’
EXPORTING
CODEPAGE = <do not use>
105
FILENAME = <file name – default value>
FILETYPE = <file type – default value>
ITEM = <header for file dialog>
IMPORTING
FILESIZE = <file length>
TABLES
DATA_TAB = <transfer table for file contents>
33. Sequential File and Local File
Sequential file 의 내용을 internal table 을 통해 local sequential file 로
복사하기 위해 READ DATASET 과 DOWNLOAD 를 사용할 수 있다.
반대로, local sequential file 로부터 sequential file 로 data 를 transfer 하기
위해 UPLOAD 와 TRANSFER 를 사용할 수 있다.
34. Other Function Modules
WS_DOWNLOAD and WS_UPLOAD : file name 과 file type 이 명시되지 않고,
exceptions 가 호출 프로그램에서 다루어져야 한다는 것을 제외하면 DOWNLOAD,
UPLOAD 와 같다.
WS_QUERY : 다른 환경 변수 뿐만 아니라, file 의 존재와 크기를 체크한다.
WS_EXECUTE : presentation server 에서 프로그램을 시작한다.
106