You are on page 1of 106

INDEX

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 메시지 출력.

2 Task 선택하는 방법 3가지


 Menu option을 클릭
 커멘드 필드에 트랜젝션 코드를 입력 (트랜젝션코드는 /N 과 네개의 문자로 구성
 예 : /NSM50), 현재의 Task에 대한 트랜젝션 코드를 알려면 System메뉴에서 Status를 선택
 커멘드 필드에 Fastpath 입력

3 입력필드에 대한 도움말 보기
 커서를 입력란에 두고 F1키를 누르거나 스탠다드 툴바에서 해당하는 버튼을 클릭

4 입력필드에 대한 possible entry 보기


 커서를 입력필드에 두고 F4키를 누르거나 해당 버튼을 클릭

3
Volumn1 : Chapter 1

System Architecture

5 R/3 Basis System “Middleware”


 서로 다른 플랫폼에서 높은 효율을 가지고 수행되며 사용자의 다양한 요구를
만족시킨다.
 The R/3 Basis software ( also called middleware)
 R/3 application의 실행 환경을 제공한다.
 시스템 환경에 맞게 application의 최적 통합을 가능케 한다.
 Defines a stable architecture framework for system enhancements
 entire 시스템을 위한 관리자적 도구를 포함한다.
 resource와 시스템 component의 분산이 가능하다.
 분산된 시스템과 비 SAP product의 interface를 제공한다.
 Basic System에 포함된 기술적 특성
 client/server 환경을 위한 especially suit된 구조
 관계 데이터베이스들 간의 utilize 가능
 GUI

6 Overview of SAP System Architecture


 R/3 application의 portability의 안전성을 위해 시스템 소프트웨어의 인터페이스는
독립적인 level을 포함한다.
 이 level 위에서 모든 R/3 component들의 함수적인 것은 특정 하드웨어와 소프트웨어
환경에 독립적이다.
 Process control은 interface들의 interact하다. 이것들은 스케쥴링이나 storage 관리
같은 서비스들을 운영체제 환경에 partially left하게 한다. 어쨌든 portability와
performance의 이유때문에 SAP 시스템에 internally한다.
 Application presentation의 possibilities는 user interface에서 제동된다.

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의 집합체.

8 R3 Client/Server Three-Level Computer Hierarchy

9 The SAP Dispatcher


 Central control 같은 application server의 central process작업을 관리하며, R/3
application을 위한 resource들을 관리한다 (O/S와 같이).

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

10 Dialog Step Dataflow


 SAPGUI : 사용자가 화면에서 질의하고 응답받은 것을 자신의 포멧으로 바꾸고
dispatcher에 전달한다.
 Dispatcher : SAPGUI와 work process간의 정보 교환을 관리하여 모든 사용자가 적은
work process들을 공유한다.
 Processing이 끝나면 dispatcher는 work process의 결과들은 SAPGUI(interprets the
data and generates the output screen)에 돌려준다.

11 R/3 Application Server


 The main components of an R/3 Application Server:
 Dispatcher as central control instance
 Configurable number of work processes for processing ABAP/4 programs
 Mutually used main storage buffer in shared memory

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.

12 R/3 Application Services


 Dialog processing
 Update
 Lock management (enqueue/dequeue)
 Background processing (batch)
 Message
 CPI-C Gateway
 spool

13 R/3 Instance (Central System)


 Instance : 하나 또는 그 이상의 services를 제공하는 R/3 System의 components를
묶어놓은 administrative unit이다. 이 services는 동시에 시작하고 끝나게 되며, 어떤
instance에 속한 components는 common instance profile에서 parameters로서
specified 되어진다.
 A central R/3 System은 모든 필요한 SAP services를 포함하는 단일 instance로
구성된다.
 각각의 instance는 자신의 SAP buffer area를 가진다.

14 R/3 Database Interface


 ABAP/4 instruction들의 Open SQL instruction들로 변환한다.
 database instruction들로 corresponding한다.
 R/3 database interface는 Open SQL instruction들의 interpretation 하는 동안 syntax를
검사한다. 그리고 SAP buffer들에 optimum utilization을 공급한다. (각 application

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

ABAP/4 Development WorkBench

1. ABAP4
 ABAP(Advanced Business Application Programming) 은 어플리케이션 프로그래밍을
위해 SAP에서 개발한 4세대 프로그래밍 언어

2. ABAP4 Development WorkBench


 소프트웨어 개발 사이클을 전체를 커버하는 SAP 툴을 제공
 SAP에서 제공하는 R/3 어플리케이션에 대한 Enhancement 또는 customer 자체 개발
모두에 유용
 ABAP4 Development WorkBench에 의해 개발된 모든 어플리케이션은 SAP에서
지원하는 모든 플랫폼, DB, GUI에서 어떤 수정도 필요없이 실행 가능

3. ABAP4 General Programming


 Dialogue Programming
 Batch Input
 Host Communication
 Sequential datasets

4. ABAP4 Program Attributes


 Type
 1 : Report(Online program)
 M : Dialog Program
 I : Include Program
 Status
 T : Test program
 P : SAP Standard production program
 K : Customer program
 S : System program
 Application
 S : Basis
 G : General Ledger
 Authorization Group

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

11. ABAP/4 Dictionary


 ABAP/4 Dictionary는 data system 관리를 위한 정보의 중심이다.
 data의 정의를 관리하거나 만드는 기능을 한다.
 Active
 Dictionary 내의 어떤 변화가 있을 때 ABAP/4 프로그램이나 스크린에 즉시 영향을
미치기 위해서는 active 즉 generate 되어야 한다.
 Run-time 시 interpreter는 active된 가장 최근의 data로 작업을 한다.

12. Basic Dictionary Objects


 Table
 Fields는 독립적인 object가 아니며 table 내에서만 유지된다. 즉, object가 아니고
구분되는 이름에 불과하다.
 Data element의 존재를 가정한다.
 Data element
 Short description과 같은 table fields의 의미적인 속성(semantic attributes)을
정의한다.
 Domain 의 존재를 가정한다.
 Domain
 Field type, field length와 같은 table fields의 기술적인 속성(technical attributes)을
정의한다.
 다른 dictionary object의 참조없이 정의할 수 있다.

13. Dual Level Domain Concept


 Technical Domain
 Business object의 속성을 설명하는 중심 object.
 field의 값의 범위(external format과 length, fixed value 또는 fixed table등을 설정)
를 나타낸다.
 Semantic Domain
 Data element에 의존하는 fields 들의 특별한 setting에 사용되는 domain의
사용목적을 나타낸다.

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

ABAP/4 Data and Statements

1. ABAP/4 Data Types and their Attributes.


Data Type Meaning Remarks
P Packed number 2 digit가 1byte에 저장,For commercial problem
I Integer
F Floating point no. For mathematical problem
N Numeric text
C Text
D Date(yyyymmdd)
T Time(hhmmss)
X hexadecimal

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

1. Branching to Debugging Mode


 ABAP/4 Editor initial screen에서 debugging function을 호출.
 Program에서 breakpoints를 설정한 후 program 실행.
 Selection Screen에서, command field에 /h를 입력.

2. The Most Important Debugging Functions


 Single Step : 다음 program line을 실행한다.
 Execute : 그 라인에 속하는 모든 processing steps를 실행시킨다.
 Continue : 다음 breakpoint 또는 program의 끝까지 실행시킨다.
 Table : Internal Table의 내용을 보여준다.
 Breakpoint : breakpoint 설정.
 Editor : ABAP/4 Editor로 간다.
 Hexadecimal display : 16진수 형식으로 data를 보여준다.
 Replace : debugging 도중에 data를 변경할 수 있게 한다.

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의 속성을
그대로 가져오고자 할 때 사용.

2. Internal Table (이하 iTab으로 표기)


 구성요소 : header line (이하 H.L로 표기)과 동일한 구조를 가진 일련의 table lines.
 H.L은 field string과 같은 structure를 가진다.
 H.L은 iTab의 work area (이하 W.A로 표기)이다.
 iTab을 채울 때, data는 먼저 H.L에 놓이게 된다.

3. Transporting Values Field by Field


 MOVE-CORRESPONDING <f1> TO <f2>.
 ABAP/4 data structure f1과 f2에서 field name이 동일한 field들만 값들을 옮긴다.
즉, 그러한 field들 사이에
MOVE <f1>-<field name> TO <f2>-<field name>.
을 수행하고 다른 field들은 그대로 남는다.

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 …. 제
외)

 DATA: <iTab> LIKE <type> OCCURS <num>.


 DATA: <iTab> LIKE <type> OCCURS <num> WITH HEADER LINE.
 DATA: <field> TYPE <type> OCCURS <num>.
 하나의 field만을 가지는 H.L 없는 iTab.
 <iTab>[]
 H.L이 있는 <iTab>을 H.L 없이 body 만을 address 할 때.
② Filling
 APPEND <W.A> TO <iTab>.
 COLLECT <iTab>.
③ Processing
 LOOP AT <iTab> … ENDLOOP.
 LOOP AT <iTab> INTO <W.A> … ENDLOOP.
④ Reading
 READ TABLE <iTab> INTO <W.A> WITH KEY ….
⑤ Changing
 INSERT <W.A> INTO <iTab> INDEX <i>.
 MODIFY <iTab> FROM <W.A> INDEX <i>.
⑥ Deleting
 CLEAR <iTab>.
 With H.L의 REFRESH와 같이 table 전체를 지운다.
 C.f.) with H.L의 CLEAR.
⑦ Complex Structures
 ITab without H.L은 multi-dimensional internal table을 만드는 것이 목적이다.

21
Volumn1 : Chapter 7

ABAP/4 Open SQL

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 에 저장.

3. Loop Processing without Restriction


 SELECT * FROM ...
ENDSELECT.

4. Loop Processing with Restriction


 SELECT * FROM ...
WHERE …
ENDSELECT.
 where절 등에 의해 비교연산자를 통해 제한할 수 있다.

5. Reading Single Columns


 SELECT <a1> <a2> ... INTO (<f1>, <f2>, ... ) FROM ...
WHERE ....
ENDSELECT.
 몇 개의 선택한 column만 읽어옴.
 SELECT MAX( <a> )
MIN( <a> )
AVG( <a> )
SUM( <a> )

22
COUNT(*) FROM <table> INTO (..., ..., ...)
WHERE ... .

6. Reading Data Component by Component


 SELECT ... INTO CORRESPONDING FIELDS OF <wa>.
 SELECT ... INTO CORRESPONDING FIELDS OF TABLE <itab>.
 overwrite
 SELECT ... APPENDING CORRESPONDING FIELDS OF TABLE <itab>.
 append

7. Select with Range


 SELECT * FROM <table> WHERE <table field> BETWEEN <field1>
AND <field2>.

8. Select with Template


 SELECT * FROM <table> WHERE <table field> LIKE ... .
 “_” : 한 문자
“%” : 문자열

9. Select with List


 SELECT * FROM <table> WHERE <table field> IN (..., ...).

10. Select with IN Operator


 SELECT * FROM <table> WHERE <table field> IN <itab>.

11. Dynamic Table Name


 SELECT * FROM (<table>) INTO <wa>.
 runtime시 변수를 받으므로 CPU time도 많이 걸리고, 대소문자를 가린다. 그리고 text field
에 있는 Numeric character들은 정확히 보이지 않을 수 있다.

12. Dynamic WHERE Clause


 SELECT * FROM (<table>) WHERE (<itab>).
 where절 등을 문자 변수로 처리하여 source의 분석 및 Debugging 하기가 힘들다.

13. Reading Database Tables into Internal Tables


 SELECT * FROM (<table>) INTO TABLE <itab>.

23
 SELECT * FROM (<table>) APPENDING TABLE <itab>.
 한꺼번에 읽어서 internal table에 저장하므로 Loop를 돌며 하나씩 읽는 것보다 빠르다.

14. Select Additions


 SELECT * FROM (<table>) FOR ALL ENTRIES IN <itab>
WHERE <condition>.
 중복된 라인은 결과에 포함되지 않는다.
 ORDER BY PRIMARY KEY 와 ORDER BY f1 … fn 과는 같이 사용할 수 없다.
 SELECT * FROM (<table>) ORDER BY <field1> <field2> …
PRIMARY KEY.
 <itab>에 포함된 field들은 C type이어야 하고 최대 length가 72여야 한다.
 SELECT <a1> <a2> ... INTO <f1>, <f2>, ... FROM <table> GROUP BY ... .
 group화 하고자 하는 field가 select문 안에 꼭 있어야 한다.
 SELECT * FROM <table> BYPASSING BUFFER.
 Application server의 table buffer에 있는 data가 아니라 database에 있는 data를 직접
읽고자 할 때.

24
Volumn1 : Chapter 8

Authorization Check

1. Principles
 R/3 시스템상에서 각 user에게 접근 가능한 데이터의 종류와 접근 종류를 부여하고
필요할 경우 checking하도록 함.
 Authorization과 authorization check를 위한 템플릿으로 사용됨(껍데기)

Authorization ‘Display’ for Object S_CARRID


CARRID: *
ACTVT: Display
Object : S_CARRID
CARRID(Airline Carrier)
ACTVT(Activit)

Authorization ‘ Change’ for Object S_CARRID


CARRID: LH
ACTVT: Change

 위의 예에서 CARRID, ACTVT는 authorization 필드이며 Authorization을 정의한다.


 Authorization은 Authorization object에 정의된 actipm 을 수행하기 위한 권한을
보여준다.
 몇 개의 Authorization은 하나의 profile을 구성하며 profile은 User’s master Record의
구성요소가 된다.

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.

4. Subroutine들의 정의(define)와 호출(call)


 Subroutine을 선언할 때, 예약어(key word)인 FORM과 ENDFORM을 사용한다. FORM
뒤에 이름을 지정한다(최고 30 문자).
 투명함(clarity)을 목적으로, 사용하는 모든 subroutine들을 프로그램 마지막에 함께
둔다.
 Subroutine을 호출(call)할 때 PERFORM 구문을 사용한다. subroutine의 이름을
PERFORM 구문 뒤에 적는다.
 Nested subroutine call, recursive subroutine call 양쪽의 방법으로 실행할 수 있다.

5. Global and Local Data


 Subroutine안에 local data를 정의한다.
 DATA 구분을 사용하여 subroutine이 호출됐을 때 memory 공간을 가지는 internal
structure을 생성할 수 있다.
 TABLES 구문으로 선언된 structure는 항상 global하다. 만일 subroutine안에서
지역적(locally)으로 table work area를 사용하고 싶다면, LOCAL 구문을 사용하여
정의할 수 있다.
 Subroutine내부에 위치할 수 있는 것
 formal parameters : 공식적인 parameter들
 locally declared field : 내부에 선언된 field
 global data : 전역 변수

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.

9. Type 검사를 갖는 Parameter 전달


 Subroutine의 formal parameter의 값이 확실한(certain) type을 가질 것을 보증하려면
FORM 구문 안에 그것을 상술한다. 이럴 경우 TABLES, USING 또는 CHANGING뒤의
formal parameter의 목록 뒤에 TYPE <t> 나 LIKE <f>를 기입한다.
 PERFORM문을 가지고 subroutine을 호출할 때 PERFORM문 안에 있는 actual
parameter들의 type들이 그들의 formal parameter들에 상술 된 type에 적합한지
아닌지를 시스템(system)이 검사한다. 만일 type이 적합하지 않으면 internal subroutine
call을 위해 문법을 검사하는 동안 시스템은 error message을 출력한다.
 Subroutine을 호출했을 때 다음에 type들의 type 검사(check)를 이용 가능하다.
 no type, TYPE ANY : 시스템이 any type의 actual parameter들을 인정한다. actual
parameter의 모든 속성(attribute)들이 formal parameter로 전달된다.
 TYPE TABLE : 시스템은 actual parameter가 internal table인지 아닌지를
검사한다. 모든 속성과 table의 structure는 actual parameter로부터 formal
parameter로 전달된다.
 TYPE C, N, P or X : 시스템은 actual parameter가 C, N, P 또는 X type인지
아닌지를 검사한다. parameter의 길이(length)와 그것의 DECIMALS 명세서
(specification) (type P를 위해)가 actual parameter로부터 formal parameter로
전달된다.

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.

10. Parameter로 structure 전달하기


 적절한 formal parameter 뒤에 LIKE 나 TYPE을 기술함으로써 data structure(field
string, internal table의 header line, table work area)들을 전달할 수 있다.
 만일 formal parameter의 type을 정하지 않았다면, subroutine내의 field string의 single
field들은 addressed 되어지지 않는다.

11. Parameter로 internal table들 전달하기


 USING이나 TABLE을 사용하여 전달할 수 있는데, USING과는 달리 TABLES는 Header
line 과 같이 internal table을 전달한다.
 Internal Table들은 항상 call by reference이며, table에 type을 assign하기 위해선
STRUCTURE를 사용.
PROGRAM RSAAA10E.
DATA: TAB LIKE SFLIGHT OCCURS 50 WITH HEADER LINE.

PERFORM calc_write1 USING TAB[].
PERFORM calc_write2 TABLES TAB.

FORM calc_write1 USING TABBODY LIKE TAB[].

ENDFORM.
FORM calc_write2 TABLES ITAB STRUCTURE TAB.

ENDFORM.

12. External Subroutines

29
 PERFORM <name> (<program>) USING ... .
 Runtime 시에 호출.
 호출된 프로그램은 ABAP/4 Dictionary tables의 work area를 공유한다.
 Internal subroutine과 마찬가지로, formal parameter에 type을 할당할 수 있다. type이
맞지 않으면 runtime error 발생.

13. Function Modules


 Function library에 저장되고, Function group에 분류되어 있다.
 Function group의 Function들은 유사한 목적을 가지거나 같은 data basis를 갖는 것들로
되어있다.

14. Function Module들의 directory


 ABAP/4 Editor에서 program내에 삽입하여 function module을 호출한다.
 Function module의 이름을 모르면 possible entries 푸쉬 버튼을 눌러 Repository
Information System에 접근하여 다른 criteria에서 사용하는 function library를 탐색한다.
 Object browser의 ABAP/4 development workbench의 초기 화면에서 function library를
사용하여 새로운 function module을 만들거나 기존의 것을 edit할 수 있다.

15. Documenting and calling functions


 Input과 output parameter들은 각 function module에 정의되어 있다.
 function module이 호출될 때, EXPORTING parameter의 filed와 field string들은
function module로 전달된다. 호출한 프로그램으로 돌아올 때, IMPORTING parameter
로 값(value)이 전달된다.
 parameter는 main 프로그램에서 다음과 같이 할당 된다.
formal parameter = actual parameter
 IMPORT과 EXPORT는 사용자의 관점(function module인가? 호출하는 프로그램인가?)
에 따라 달라진다.

16. Describing the Interface


 Export parameter는 by value또는 by reference로 값을 전달한다.
 Export parameter에서 actual parameter의 specification은 option이다.
 Import parameter는 by value또는 by reference로 값을 전달한다.
 Import parameter는 default value를 가질 수 있다. literal, number constant, system
field(SY-DATUM, SY_LANGU), SPACE가 default value가 될 수 있다.

17. CHANGING Parameter

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는 생략될 수 있다.

18. Passing Internal Tables


 Internal table들이 전달될 때 그것은 복사되지 않는다.(call by reference)
 Internal table들이 structure를 참조(reference)하도록 할당할 수 있다. 이 structure는
ABAP/4 Dictionary Object이어야 한다. Type과 length 검사가 할당된 basis의 actual
parameter을 위해 수행된다.
 모든 parameter들과 같이 table들은 선택적으로 flag될 수 있다.

19. Exception Handling


 Function module을 생성할 때 exception을 정의 할 수 있다. 호출하는 프로그램이
exception을 어떻게 처리할 것인지를 결정한다.
 여러 개의 exception에 대해 같은 error number를 할당할 수 있다.
 OTHERS 문항은 명백히 할당하지 않은 모든 error number를 포함한다.
 Function module의 실행 동안 exception이 발생하면, 그것은 function module자체에서
처리(handle)하거나 호출한 프로그램으로 즉시 제어를 옮긴다.
 어떤 function module에 대해서도 general exception ERROR_MESSAGE를 할당할 수
있다.

20. Function module의 생성


 Function module은 function group에 속해 있다. 각 function group은 release된 function
module들의 권한을 부여 받은 사람들에게 할당된다.
 Function group의 모든 function module들은 ABAP/4 프로그램에서 관리된다.
 Function module의 이름은 30자 까지 쓸 수 있고 오직 문자, 숫자, special underline
문자 (_)로 구성될 수 있다. Function group 이름의 시작은 Z와 function module 이름의
시작은 Z_는 customer를 위해 예약되어 있다.

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자 까지 가능하다.

22. Program / Editor


 Function module과 관련된 data 선언들과 구문(statement)들은 FUNCTION ...
ENDFUNCTION block에 쓴다.
 Local data type을 선언할 수 있다.

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가 출력된다.

24. Global Data / Local Memory


 Function group의 모든 function module들과 subroutine들이 global data를 이용할 수
있기를 원하면 field와 internal table들을 생성하는 데 Global data function을 사용할 수
있다. Table Work Area(TABLES)는 항상 global하다.
 Function module program에서 선언한 function module의 local field들은 function
module이 호출될 때마다 initial되어진다.
 Global field들은 particular function group에 속한 function module이 최초로 호출될 때
initial되어진다. 같은 function group내의 이 function module 또는 다른 function module
들이 다시 호출될 때, global data는 마지막 호출된 때의 자료를 이용가능.
Volumn1 : Chapter 10

32
Workbench Organizer

1. Managing Development Projects in the WBO


 Development project를 시작하면, project leader가 change request를 만들고 project
팀원들에게 그것을 할당한다. WBO는 project number (<sid>K9<nnnnn>)를 change
request에 할당한다.
 또한 WBO는 각각의 project 팀원을 위한 task를 만든다. Project 팀원이 Repository
object를 change request에 할당한다면, Repository object는 그 팀원의 task에 들어오게
된다. 즉, task는 development project에서 processing 중인 모든 Repository object를
포함한다.
 Project 팀원이 일을 끝마칠 때, task를 release하게 된다. 그 다음 task objects가
change request로 넘겨진다. 모든 project 팀원들이 task를 release 했을 때, project
leader는 change request를 release한다. 따라서, change request는 development
project 내에서 만들어지거나 변경된 모든 Repository objects를 포함한다.

2. Classification of Repository Objects


 Development project에서 Repository object를 만들고 변경시킬 때, 개발자는
Repository object를 development class에 할당한다. Development classes는 같은
functional area의 objects를 함께 묶는다. 모든 development class의 objects는 같은
transport path를 가진다.
 Development classes는 Repository objects의 논리적 division을 허용한다.
 Development classes를 할당한 후에, 개발자는 Repository object를 change request에
할당한다. Repository objects가 논리적 division을 하는 반면, change request는 project-
related division을 한다. Change request는 modification 동안에 locked 되어지고 끝날
때 released 되어진다.
 WBO는 development project 내의 task를 자동으로 할당한다.

3. Actions on Project Completion


 개발 업무가 끝나면, 개발자는 task를 release한다.
 Project가 끝나면, project manager는 change request를 release한다. Change request
의 objects에 걸린 모든 lock은 release된다.
 Release 후에 transportable change requests 만이 transport system으로 전송된다.

4. Functions of a Change Request


 Change request에서 project에서 일할 개발자를 결정한다.

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 이다.

6. Originals and Copies


 Original
 최초로 만든 object.
 Correction : original object를 고치는 것.
 Copy
 최초로 만든 object 이외의 모든 것.
 모든 customer systems에 있는 SAP objects는 copies이다.
 Repair : copy를 고치는 것.
 Transports는 original objects를 overwrite 하지 못한다. 따라서 단방향으로 밖에
진행하지 못한다.

7. Task Attributes
 Development/correction은 object를 만들거나 original을 변경할 때 할당된다.
 Repair는 copy를 변경할 때 적용된다.

8. Modifications
 SAP copies를 변경하는 것.

9. Registering Developers in SSCR


 처음으로 Repository object를 만들거나 변경할 때, 개발자는 OSS에서 등록된 key를
받아야 한다.
 개발자로서의 등록 과정.
 OSS에 Log On.
 Reg. Developm.를 선택.

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들을 분석할 수 있다.

2. Runtime Analysis : 초기화면


 Transaction code나 program 명을 입력한다.
 Options
 logging의 범위 제한 (측정의 범위가 아님)
 Restriction to
 만일 Function module을 선택한다면, 프로그램의 특수한 function module
분석으로 제한한다.
 Execute
 조건으로 지정한 프로그램을 시작하고 그것의 실행 step을 측정한다.
 각 측정의 결과들은 분리된 화일에 default로 저장된다. 이것은 8일 동안 보관되거나
삭제(만일저장 공간이 새로운 화일을 요구할 경우)된다. Perform.files 함수(function)를
사용하여 존재하는 화일의 list를 볼 수 있다.

3. Gross/Net Times
 Gross time : 특정 unit을 수행하는데 소요된 총 시간.
 Net time : Gross time에서 다른 modularization unit이 호출된 시간을 뺀 시간.
 퍼센트나 마이크로 세컨드로 표시할 수 있다.

4. GET RUN TIME 구문


 GET RUN TIME FIELD <f>.
 GET RUN TIME이 처음 호출될 때, field <f>가 초기화된다. 각각의 잇달아 일어나는
PROGRAM RSAAA14A.
호출에서는DATA: T1<f>가
field TYPE처음I, 호출된 이후의 CPU 시간량을 갖고 잇다.
T2 TYPE I,
RUN_TIME TYPE I.

GET RUN TIME FIELD T1.
Statement sequence
GET RUN TIME FIELD T2. 36
RUN_TIME = T2 – T1.
5. Summary
 ABAP/4 runtime analysis utility function은 완전한 프로그램 실행의 분석과 program
component들을 선택성을 평가한다.
 ABAP/4의 GET RUN TIME 구문을 사용하여 어떤 구문 순서(statement sequence)를
측정한다.
 SQL Trace function은 database operation들의 상세한 분석을 제공한다.

Volumn2 : Chapter 1

37
ABAP/4 Dictionary Part ll

내용: ABAP/4 Dictionary의 기능, 특성

16. Aggregate Object : Views (Chapter 6 상세설명있음)


 Aggregate Object란 몇 개의 transparent table로부터 만들어져 ABAP4 Dictionary애
존재하게 된다.
 View란 프로그래밍이나 F4 help를 위해 사용하게 되며 ABAP4 Dictionary table의 응용
화면이라 할 수 있다. 상세 내용은 chapter 6에서 다룬다.

17. Aggregate Object : Matchcodes


 Key를 모를 때 다른 선택 조건을 이용하여 입력 필드에 possible entry를 띄울 때
이용한다. 예를 들어 입력 필드가 비행편명(4299)일 경우 일반적으로 노선 구간만을
알고 있는 경우가 대부분이다. 이 경우 possible entry에 노선구간과 편명을 나타내어
주면 입력필드를 쉽게 채울 수 있을 것이다
 SAP에서 제공하는 R/3 어플리케이션에 대한 Enhancement 또는 customer 자체 개발
모두에 유용
 ABAP4 Development WorkBench에 의해 개발된 모든 어플리케이션은 SAP에서
지원하는 모든 플랫폼, DB, GUI에서 어떤 수정도 필요없이 실행 가능

18. Aggregate Object : Lock Objects


 두명 이상의 user가 동시에 동일한 data를 edit할 수 없도록 할 목적으로 사용하며 lock
object는 어떤 data를 어떻게 lock 시킬 것인가를 결정한다.
 Lock Mode
 shared : 다수의 user가 동시에 동일한 데이터를 display 할 수 있으나 한 user가
edit를 하는 순간 다른 user는 더 이상 access 불가
 exclusive : 한 명의 user에게만 display와 edit가 가능하도록 한다.
 Lock object가 activate 되었을 때 locking(enqueue) 및 unlocking(dequeue) 라는
function module이 생성되며 이 모듈은 트랜잭션의 시작과 끝에 각각 호출된다.

19. Consistency Between ABAP4 Dictionary and DB


 TRANS type으로 테이블이 active 될 때, DB utility를 통해 자동적으로 database에
생성된다.

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을 사용할 것을 권장한다.

2. Domain / Value Table / Fixed Values


 Domain
 Field의 값이 가질 수 있는 범위를 describe한다.
 Value Table
 Domain의 field 들이 입력 받을 수 있는 값들의 범위를 가지는 table.
 Value table은 foreign key를 설정해야지만 check table이 된다. 그렇지 않다면 어떤
체크도 행해지지 않는다.
 Fixed Values
 Domain의 value range를 제한할 수 있는 값들.
 Screen entries가 만들어질 때 check values로 사용된다.

3. Semantic Characteristics of a Foreign Key


 Cardinality (check : foreign)
C : 0 or 1
 1:1 C:1 N ; 1 이상
CN : 0 이상
 1:C C:C
 1:N C:N
 1 : CN C : CN
 Foreign Key Field Type

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

4. SAP System에서 Foreign Key Field의 사용처


 Data Model : Specification, Documentation, Quality
 Screen : Input check
 Help : List of possible entries
 Aggregate : View, Matchcode, Lock object

5. Special Foreign Key의 종류


 Generic Foreign Keys : foreign key relationship을 check하지 않겠다.
 Constant Foreign Keys : foreign key 값으로 상수 값만 사용하겠다.
 Adapted Foreign Key : check table의 primary key field에 대해 같은 technical 속성을
가지는 field가 foreign key table에 존재하지 않을 때, 그 field는 foreign key table에
포함되지 않는 field에 할당될 수 있다.

6. Include
 다른 table의 substructure로 table을 삽입하는 것.
 Table은 전체 table로서만 삽입될 수 있다.
 Foreign Key Definition은 상속된다.

Volumn2 : Chapter 3

40
Repository Information System for ABAP/4 Dictionary

내용: Repository Information System의 간단한 설명과 특별한 기능

20. Information System: Typical Queries


 Repository Information System은 테이블, 필드, 도메인, data elements, lock objects,
views, matchcode 등의 object에 대한 정보를 retrive할 때 사용된다.
 Repository Information System을 이용하는 전형적인 Query는 다음과 같다.
- attribute로 object 찾기 ( list all object of type X with attribute Y)
- Where used list 이용 (list all object or program which use certain type or
table)
- 테이블간 관계 (foreign key relationship)
- modification 정보 (list all object of type X, modified by user Y)
- Data display (list all data records with attribute Y of table X)

21. Overview: Repository Information System-Data Dictionary


ABAP/4 Repository Info.
+ Modeling
Data Dictionary
Basic Object
Domains
Data Element
Structure
…..
Other Objects
Matchcode Objects
……
Fields
Structure fields
Table fields
…….
+ Programming
+ Environment

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를 가질 수 있다.

3. Active and Revised Version


 Active version : runtime environment (ABAP/4 Processor, database interface 등등)의
components에 의해 access 되어지는 version.
 Revised version : activation 후에 변경되었지만 아직 re-activated 되지 않은 version.
Revised version은 아직 activation이 되지 않았기 때문에 runtime system에 아무런
영향을 미치지 않음.

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 되어짐.

6. Levels of the Mass Activation


 1st level : 모든 object의 internal characteristic(naming convention이 일치 여부, attribute
의 일치 여부)를 check 후 external characteristic(value table 또는 reference table의
존재 여부) check.
 2nd level : partially activate된 object를 check하여 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.

9. Types of Structural Adjustment


 database table을 지우고 다시 만들 때.
 table에 있는 data는 잃게 된다.
 database catalog (ALTER TABLE)를 변경했을 때.
 database에 있는 table의 정의만이 바뀐다.
 table에 있는 data는 그대로 존재한다.
 ABAP/4 Dictionary에 있는 table에 대한 indexes는 다시 만들어진다.

45
 table을 convert했을 때

10. Conversion Step


 table에 lock을 건다.
 table의 이름을 바꾼다. (index를 지운다.)
 ABAP/4 Dictionary에서 revised version을 activate 시킨다.
 임시 table로부터 새로운 table로 data가 load됨.
 index를 새로 만든다.
 구버전의 table이 삭제된다.
 lock을 해제한다.

11. Append Structures


 정확히 하나의 table에 할당된 structure로서 table 자체를 modify 하지 않고 field를
추가할 수 있게 해줌. (SAP table에 자기가 원하는 field가 없을 때, upgrade시 문제없음)
 하나의 Append Structure는 한군데의 table에서만 사용될 수 있다.
 Pooled and cluster table에 대해선 append structure를 사용할 수 없다.
 긴 field를 포함한(LCHR or LRAW와 같은) table에도 사용할 수 없다.
 field 이름은 ‘YY’ 또는 ‘ZZ’로 시작해야 함.

46
Volumn3: Chapter 1

Logical Databases

1. DB Accesses
 ABAP/4 Open SQL Interface
 EXEC-SQL Interface
 IMPORT / EXPORT Interface

2. Logical DB를 통한 DB Access


 ABAP/4 Program이 data를 read하고 process 하는 데 사용할 수 있는 Interface.
 ABAP/4 Program에 data를 제공하는 순서는 logical DB의 tree 구조에 의해 결정된다.
 Programs에 프로그램을 complete 할 수 있는 interface(user input checking 와 error
dialog를 포함)를 제공한다.
 ABAP/4 program에 GET events에 대한 읽은 data를 PUT statement를 통해 제공한다.
 Report program에서 쓰인다.
 RSDBST00 : logical DB에 대한 정보를 제공하는 report

3. Logical DB를 구성하는 objects


 Structure
 Selection screen
 Database program

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으로 바로 넘어간다.

11. Events in Connection with Logical Databases


 START-OF-SELECTION event : system이 logical DB가 data를 retrieve 한다고 말하기
전에 발생한다.
 END-OF-SELECTION event : logical DB에 관한 모든 events가 진행된 후에 발생한다.
 GET <table> event : logical DB가 상응하는 table entry를 읽고, report에 그것을
제공했을 때 발생한다.
 GET <table> LATE event
 모든 subordinate tables가 진행되고, system이 같은 table의 다음 table entry를
request 할 때 발생한다.
 즉, 한 건이 끝나고 다음 건으로 넘어가기 직전에 발생하는 event로서 주로 sub-
total을 낼 때 사용한다.

48
49
Volumn3: Chapter 3

Sorting and Control Levels

1. Sorted List with Control Levels


 같은 structure를 가진 datasets를 다룰 땐 internal table을 사용.
 structure가 다른 datasets를 다룰 땐 Intermediate Dataset을 사용.

2. Sorting an Internal Table


 SORT <tab> BY <field1> <field2> … .
 Sort key가 명시되지 않으면 type P, I, F fields를 제외한 fields에 의해 sort된다.

3. Control Levels : Internal Tables


 Internal table에서 LOOP 문을 사용할 때 사용할 수 있다.
 사용하기 전에 반드시 Internal Table을 sorting 해야 한다.

 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 들은 모두 ‘*’로 채워진다.

 AT FIRST. SUM. … ENDAT.


 AT NEW <field>. SUM. … ENDAT.
 AT END OF <field>. SUM. … ENDAT.
 AT LAST. SUM. … ENDAT.
 Type P, I, F에 해당하는 fields 들의 sum을 구한다.

4. Control Break Processing Concept 1


 다음 순서를 따라야 한다.

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 한다.

6. Generating an Intermediate Dataset


 Record type을 정의하기 위한 절차
 필요한 record type(field groups, FIELD-GROUPS)을 선언한다.
 Field group HEADER는 항상 있어야 한다. 이 group은 sort에서 사용할 모든 fields를
포함하고 있어야 한다.
 필요한 field를 field group에 assign한다 (INSERT : <tab>-<field> INTO <field group>).
 EXTRACT
 실제 data가 들어간다.

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.

8. Control Break Processing Concept 2


 INSERT: F1 F2 INTO HEADER,
F3 F4 INTO RECORD.

END-OF-SELECTION.
SORT BY F1 F2.
LOOP.
AT FIRST. <statements>. ENDAT. // Control Header Processing
AT NEW F1. <statements>. ENDAT. // Control Header Processing
AT NEW F2. <statements>. ENDAT. // Control Header Processing
AT RECORD. <statements>. ENDAT. // Single Record Processing
AT END OF F2. <statements>. ENDAT. // Control Footer Processing
AT END OF F1. <statements>. ENDAT. // Control Footer Processing
AT LAST. <statements>. ENDAT. // Control Footer Processing
ENDLOOP.

53
Volumn3: Chapter 5

Programs in Background Processing

1. Scheduling Background Jobs


 Job을 만들기 위해선 Job definition function을 사용하라.
 Job을 정의하기 위해선 System -> Services -> Jobs or System -> Services ->
Reporting -> Program -> Background or SM36
 Job을 schedule하기 위해선 job name, program name, variant, user name(for
authorization check)이 필요하다.
 Scheduling process를 끝내기 위해선 Save를 선택하라. Save를 선택하기 전에 start
date, repeat interval and print parameters를 입력할 수 있다.

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’.

3. Activating the Title and Status


 SET PF-STATUS <name>.
 Status name : 8 alphanumeric characters and 대문자여야 한다.
 SET TITLEBAR <name>
WITH field1 … field9.

4. Event AT USER-COMMAND
 AT USER-COMMAND.
 user가 해당 function을 activate 시킬 때 발생한다.
 SY-UCOMM
 assigned된 function code를 저장한다.
 user가 선택한 메뉴의 function code

56
Volumn3: Chapter 9

Windows

1. The Window Statement


 WINDOW STARTING AT X1 Y1
ENDING AT X2 Y2.
 GUI status type에서 “List in dialog box”를 선택해야 한다.
 … WITH FRAME TITLE
 SET TITLEBAR.
 Modal dialog box이다.
 Push button은 가지지만 menu bar나 standard toolbar는 가지지 않는다.

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

2. Statements for Linking Components



Without Return With Return
Transaction LEAVE TO TRANSACTION CALL TRANSACTION
Report SUBMIT SUBMIT AND TRANSACTION

 ABAP/4 PGM은 ABAP/4 Report 또는 Transaction을 Call 할 수 있다.


 CALL / SUBMIT ... AND RETURN 구문은 새로운 data area(system roll area)에 Called
components를 start 시킨다.
 BACK function을 수행하면 Calling PGM으로 되돌아 간다.(Report만 적용)
 LEAVE TO / SUBMIT WITHOUT RETURN 구문은 Called PGM 이 같은 roll area에
Active 되며 이전PGM 은 사용할 수 없다.

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 등)

4. EXPORT / IMPORT를 통한 Data 전송


 EXPORT <datacluster> TO MEMORY.
 IMPORT <datacluster> FROM MEMORY.
 Export/Import는 2개의 ABAP/4 PGM 들간의 DATA를 주고받는다.
 datacluster : data object의 이름( field, field string, work area, internal table )
 IMPORT에서 메모리가 empty일 때는 SY-SUBRC는 0이 아니다.
 EXPORT <datacluster> TO DATABASE. : Disk에 저장하고 읽어온다.
 IMPORT <datacluster> FROM DATABASE.

5. The EXPORT and IMPORT Statements


EXPORT

61
<field1> FROM <fielda>
<field2> FROM <fieldb>
: :
TO MEMORY
ID <id>.

IMPORT
<field1> TO <fielda>
<field2> TO <fieldb>
: :
FROM MEMORY
ID <id>.

: <id> - field or literal 32 characters max.


 TO와 FROM은 option
 ID <id>를 사용함으로써 global memory를 각각 address할 수 있는 여러 개의 logical
memory areas로 나눌 수 있다.

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>를 구동시킨다.

7. Starting A Report With A Value Table


RANGES: TAB FOR SPFLI-CARRID.

AT USER COMMAND.

MOVE: SPFLI-CARRID TO TAB-LOW,


‘I’ TO TAB-SIGN,
‘EQ’ TO TAB-OPTION.
APPEND TAB.

SUBMIT RSBBB012 AND RETURN WITH CARRID IN TAB.

SUBMIT RSBBB013 AND RETURN VIA SELECTION-SCREEN


WITH CARRID = SPFLI-CARRID.
 RANGE로 SELECTION-OPTION에 의해 생성되는 INTERNAL TABLE 과 같은 구조의
INTERNAL TABLE 을 정의할 수 있다
 RSBBB012 에는 CARRID 의 selection set 이 전달되고,
 RSBBB013 에는 CARRID 의 하나의 값만 전달된다.

8. Returning from a Called Report

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

1. Defining Functional Areas

 Functional area는 datasets(일반적으로, logical databases)에 관한 특별한 view이다.


 Functional area를 만들 때, 먼저 dataset을 고르고, access 될 수 있는 dataset의 fields
를 결정한다.
 Functional area는 user group에 할당된다.
 Primary dataset (functional area type)을 결정하고, secondary data (tables, additional
fields)를 primary data에 할당한다.

2. Classification of Query Users


 End user : Creating and processing queries
 모든 end user는 적어도 하나 이상의 user group에 assigned 되어져야 한다.

65
 한 명의 user는 여러 user groups에 할당될 수 있다.
 System administrator
 Functional areas, user groups, transports를 관리한다.
 End user에 대한 환경을 정의한다.
 Translator : Functional areas, user groups, queries에 있는 texts를 foreign language로
translate한다.

3. Assignment Between Functional Areas and User Groups

 Queries는 user group에 할당된다. 그 group의 user들은 그 queries에 접근할 수 있다.


 하나의 functional area는 여러 user group에 할당될 수 있다.
 여러 functional areas는 하나의 user group에 할당될 수 있다.

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를 저장할 수 있다.

7. Creating and Changing Queries

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

Introduction to Dialog Programming

12. The Main Components of a Dialog Program


 Development environment
 Screen Painter, Menu Painter : screen templates와 screen program을 만들고
디자인할 때 사용.
 ABAP/4 program (module pool) : processing logic을 정의한다.
 ABAP/4 Dictionary : data structure를 정의한다.
 Runtime environment
 Dialog processor : dialog program의 흐름을 제어한다.
 ABAP/4 processor

13. Screen 생성 순서
 Screen Attribute를 이용하여 기본환경 설정.
 Fullscreen Editor를 이용한 화면 design.
 Field list를 이용한 field attribute 정의.
 Screen Flow Logic 작성.

14. ABAP/4 program 구성 요소


 TOP include program(MZxxxTOP) : Global data, Dictionary structures
 PBO module(MZxxxO01)
 PAI module(MZxxxI01)
 Subroutines(MZxxxF01)
 참고 : Main은 SAPMZxxx 또는 SAPMYxxx. event는 MZxxxE01.

15. Communication : Screen – ABAP/4 Module Pool


 Screen flow logic은 각각의 screen에 대해서 다음 두 개의 events로 나뉘어 진다.
 PROCESS BEFORE OUTPUT event (PBO) : screen이 display되기 전에 실행된다.
 PROCESS AFTER INPUT event (PAI) : 사용자가 ENTER 키를 누른 후에
실행된다.
 모든 PBO module이 끝나면, ABAP/4 work area에 있는 fields들의 내용들이 screen
work area의 동일한 이름을 가진 fields들로 복사된다.

68
 모든 PAI module이 진행되기 전에, screen work area에 있는 fields들의 내용들이
ABAP/4 work area의 동일한 이름을 가진 fields들로 복사된다.

16. Dialog Program 만들기


 Program을 create한다. Program 이름은 SAPMT로 시작한다.
 Program Attribute 정의
 Type : M(Module pool)
 Application : S(Basis Component)
 만약 logical database를 사용한다면 Logical Database로 적는다.
 Screen 정의
 Type : Normal
 ABAP/4 Dictionary Fields를 이용
 Screen Painter를 사용하여 화면 Design
 Field Attribute 정의
 PBO, PAI module 정의
 Transaction code 생성
 Customer transaction은 Z 또는 Y로 시작해야 한다.

17. Field Format Check


 Dialog Process는 Input 된 field를 format Check( 날짜자리에 날짜format인지, 숫자
자리에 문자가 들어 오지 않았는지 등..) 한다.
 Input format 이 맞지 않으면 error message를 발생시켜 다시 입력하도록 한다.
 Obligatory Field

18. Foreign Key Checking


 Screen Field가 ABAP/4 Dictionary Table ( Foreign Key Table )의 Field일 때.
 Check Table이 ABAP/4 Dictionary에 정의 되어 있을 때.
 Foreign Key Table Field와 Check table key field가 같은 Domain일 때.
 Check table이 Value Table 의 Domain으로 Assign되어 있을 때.
 Value table은 foreign key field와 check table field 사이의 foreign key 정의를 통해서
check table이 된다.
 Check Table Field가 check table 의 key field 여야 한다.
 F4로 check table 내용을 볼 수 있다.
 F1으로 Data element의 Documentation을 볼 수 있다.

19. Setting next Screen Dynamically

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.

20. Reading Function Codes in Programs


 사용자가 특정 기능들을 선택할 수 있도록 pushbuttons를 정의하고 각각에 function
code를 할당한다. 사용자가 pushbutton을 누르면, PAI event가 발생하며, 4byte 길이의
OK format을 가지는 OKCODE로 그 function code가 전달된다.
 SAVE_OKCODE = OKCODE.
CLEAR OKCODE.
CASE SAVE_OKCODE.
WHEN ‘MORE’.

WHEN ‘NEXT’.

ENDCASE.
 SAVE_OKCODE 를 사용하는 이유 : 같은 화면에서 ENTER KEY 를 누르면 기존의
FUNCTION CODE 가 OKCODE 에 남아서 이상 작동할 수 있는 소지가 있다.

21. Menu Painter


 SET PF-STATUS ‘PF100’.
 메뉴생성(각 PUSH BOTTON, MENU)에서 FUNCTION CODE 발생.
 현재 화면의 PBO MODULE에서 만든다.
 8자까지.
 SY-PFKEY : 현재 화면의 status.
 SET PF-STATUS <8자> EXCLUDING ‘MORE’ : MENU PAINTER에서 ‘MORE’를
deactivate 시킨다.
 SET TITLEBAR ‘100’.
 TITLE 생성.
 현재 화면의 PBO MODULE에서 만든다.
 3자까지.
 SY-TITLE : 현재 화면의 TITLE.

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

1. Graphical Element 정의하기

 Radio Button을 정의할 땐 이들을 group으로 묶어야 한다.

 Checkbox 또는 Radio Button이 선택되면 해당 field는 ‘X’ 값을 가지게 된다.

 각 Pushbutton에는 function code가 할당되어야 한다. Pushbutton이 클릭되면 해당

function code가 OK_Code로 넘겨지게 된다.

2. Automatic Field Input Checking : Fixed Values

 Screen field를 해당 fixed value가 속한 domain을 참조하도록 하면 F4 key를 입력하게

되면 possible entry가 생긴다.

 Fixed Value가 정의되어 있으면, dialog processor가 자동으로 입력 값을 체크한다.

3. Field Input Checking in the Module Pool with Error Dialog

 MODULE 문 앞에 FIELD 문을 사용.

 PROCESS AFTER INPUT.

FIELD <screen field>

MODULE <module>.

 FIELD 문에서 명시된 field에 대해서만 해당 module이 실행되게 한다.

 Module이 ‘E’나 ‘W’ message가 생기게 하면, PBO를 수행하지 않고 Screen이 다시

뜨며 재입력을 요구하게 된다. FIELD statement를 쓰지 않을 경우 필드에 재입력할 수

72
없다.

4. Field Group Checking

 입력 체크를 필요로 하는 field가 여러 개일 경우.

 PROCESS AFTER INPUT.

CHAIN.

FIELD: screen field1,

screen field2,

screen fieldn.

MODULE <module>.

ENDCHAIN.

5. Process Control in Error Dialog : Restart Point

 어느 CHAIN 또는 FIELD 문에서 message가 발생했는지를 찾는다.

 해당 CHAIN 내에 존재하는 FIELD 문에 있는 모든 field 명을 조사한다.

 PAI module 내에서 결정된 field를 포함하고 있는 첫번째 FIELD 문을 찾는다.

 찾은 CHAIN 또는 FIELD 문에서 다시 시작한다.

6. Default Values in SAP Memory

 SAP Memory에 저장되는 값들은 session과 session 사이에서 그대로 유지된다.

 SET parameter : PAI의 field 값들을 SAP memory로 복사한다.

 GET parameter : PBO의 마지막에(module pool로부터 data 전송이 끝난 후에), SAP

memory로부터 field 값들을 복사해 온다.

7. Dynamic Screen Sequence

73
 SET SCREEN nnnn.

 다음 screen을 임시로 overwrite한다.

 Screen nnnn은 같은 module pool에 있어야 한다.

 현재 screen을 끝낸 후에 nnnn screen이 진행되고, 호출한 screen으로 되돌아 오지

않는다.

 현재 screen에서 LEAVE SCREEN 문을 사용한다면, 나머지를 실행시키지 않고

바로 nnnn screen이 진행된다.

 바로 nnnn screen을 실행시키고자 한다면,

SET SCREEN nnnn. LEAVE SCREEN.

또는,

LEAVE TO SCREEN nnnn.

을 사용하라.

 CALL SCREEN nnnn.

 Screen nnnn은 같은 module pool에 있어야 한다.

 현재 위치에서 nnnn screen이 진행되고, 호출한 screen으로 되돌아 온다.

 SET SCREEN 0. LEAVE SCREEN.

또는,

LEAVE TO SCREEN 0.

을 쓰면 호출 위치로 되돌아 가고, 호출한 screen의 나머지 부분이 실행된다.

 CALL SCREEN nnnn.

STARTING AT x1 y1

ENDING AT x2 y2.

 CALL SCREEN nnnn.

STARTING AT x1 y1.

8. Conditional Execution of Modules

 PROCESS AFTER INPUT.

74
FIELD <screen field>

MODULE <name> ON INPUT.

 해당 field가 초기값과 다른 값을 가지고 있을 때만 수행한다.

 PROCESS AFTER INPUT.

CHAIN.

FIELD <screen field 1>,

<screen field 2>,

<screen field n>.

MODULE <name> ON CHAIN-INPUT.

ENDCHAIN.

 여러 개의 입력 field 중 하나라도 초기값과 다른 값을 가지고 있을 때 수행한다.

 PROCESS AFTER INPUT.

FIELD <screen field>

MODULE <name> ON REQUEST.

 해당 field가 새 입력 값을 가질 때만 수행한다.

 PROCESS AFTER INPUT.

CHAIN.

FIELD <screen field 1>,

<screen field 2>,

<screen field n>.

MODULE <name> ON CHAIN- REQUEST.

ENDCHAIN.

75

 여러 개의 입력 field 중 하나라도 새 입력 값을 가질 때 수행한다.

 AT EXIT-COMMAND.

 현재 입력 field의 상태에 상관없이 현재 screen을 빠져 나갈 때 사용한다.

 해당 Function의 Type을 ‘E’로 선언해야 한다.

 FIELD 문과 함께 사용할 수 없다.

 각각의 PAI는 AT EXIT-COMMAND 문을 가지는 MODULE 문을 하나씩 밖에 가질

수 없다.

9. Menu Painter : Function Types

 E : AT EXIT-COMMAND를 사용할 때

 T : Transaction Code를 메뉴에 등록해서 사용할 때

10. Area Menus

 Dialog Programs를 호출하기 위해 Transaction Codes를 모아서 만든다.

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를 실행하지 않는다.

3. Update Function Module


 Commit work를 만날 때까지 function 수행할 것을 log table에 정의해 놓는다.
 function을 만들 때 administration section에서 V1 update로 할 것인지 V2 update로 할
것인지 결정해야 한다.
 V1 : 즉각 수행해야 할 update
 V2 : V1이 선행된 후 수행될 update
 Immediate start, no start – update 수행 후 error 발생시 log로 보여준다.

4. Rollback
 Dialog Program : ROLLBACK WORK 사용.
 Update Program : Message Annn. 사용 (Abend Message가 발생하면 Rollback이
자동으로 발생한다.)

5. Perform <subroutine> on commit


 parameter를 넘길 수 없다.
 Update request들이 internal table에 저장된다.
 Commit work를 만났을 때 실행한다.
 같은 subroutine이 여러 번 호출되면 가장 마지막의 것만 실행한다.

78
Volumn4: Chapter 4

SAP Locking Concept

11. DB Lock

 다수의 user가 하나의 database를 사용하는 경우를 대비하여 필요

 update문이 발생하면 database에서 적당한 lock을 건다.

 DB transaction 동안 걸린 lock은 transaction이 끝날 때 db system에서 lock을 release

시킨다.

 R/3 system은 스크린이 바뀔 때 마다 implicit commit이 발생하여 lock이 해지된다.

12. SAP Locking Concept

 몇 개의 스크린이 바뀌는 동안 지속적으로 lock을 하기에는 db lock이 불편하다.

 SAP transaction이 lock table에 table record를 lock entry를 setting 하고 transaction이

79
끝날 때 해제한다.

 Lock이 걸린 table에 다른 user가 access하는 경우 해당하는 error message가 뜬다.

 processing이 끝날 때 lock은 dialog program에 의해 explicitly release 되어야 하며 user

가 다음과 같은 명령어를 사용하면 자동적으로 explicitly release 된다.

(command field에서 /n, leave program, leave to transaction, A message)

13. SAP Lock Object

 Lock request를 하기위해서는 ABAP/4 dictionary에 lock object를 정의해야 한다.

 lock object는 primary table로 구성되는데 name은 EY, EZ로 시작해야 하며 lock

argument는 key field로부터 만들어 진다.

 해당 테이블에 아무런 lock이 걸린 상태가 아니면 shred, exclusive lock 모두 가능하며

shared lock이 이미 걸려진 상태면 shared lock만 가능하다. 어떤 lock이 걸려진

상테에서는 exclusive lock은 걸 수 없다.

 lock object가 activate되면 system은 ENQUEUE function module과 DEQUEUE

function module을 생성하며 각각은 ENQUEUE_<lock object>, DEQUEUE_<lock

object>라는 이름을 가진다.

 Enqueue function을 호출하면 dialog program이 lock entry를 setting 한다.

 만약 export parameter에 하나라도 값이 빠지면 해당되는 모든 record에 lock이 걸린다.

 모든 lock object를 지우기 위해서는 function module DEQUEUE_ALL을 사용하면 된다.

 Lock table을 display 하려면 Transaction code SM12, 또는 Tools – Administration –

monitoring – lock entry에서 가능하다.

14. ENQUEUE function의 특별한 parameter

 Mode_<table>lock mode에 의해 정의된 lock mode를 override한다

 _SCOPE : 1 – dialog program 2 (default) – update program 3 – dialog program &

update program

 initial value에 lock 걸때 X_<lock argument>

80
Volumn4: Chapter 5

Dynamic Screen Modification

1. Dynamic Screen Modification: Example


 어떤 field attribute들을 일시적으로 바꿀 수 있다.
 또한 동적으로 field 들을 숨기는 편이함을 사용할 수 있다.
 예) Change <-> Display 버튼

2. Table SCREEN / Modifiable Field Attributes


SCREEN-NAME Field name
SCREEN-GROUP1 Modification group 1
SCREEN-GROUP2 Modification group 2
SCREEN-GROUP3 Modification group 3
SCREEN-GROUP4 Modification group 4
SCREEN-REQUIRED Required field
SCREEN-INPUT Input field
SCREEN-OUTPUT Output field
SCREEN-INTENSIFIED Highlighted field
SCREEN-INVISIBLE Invisible field
SCREEN-LENGTH Field length
SCREEN-ACTIVE Active field
SCREEN-DISPLAY_3D 3-dimensional field
SCREEN-VALUE_HELP Field with value help
SCREEN-REQUEST Input exists (PAI only)
 Table SCREEN
 System Table로서, screen painter에 저장된 field 들과 그것의 attribute 들을 갖는다.

81
 Screen field나 modifiable attribute가 자동으로 저장된다.
 PBO가 실행될 때 Screen Table도 초기화 된다.
 SCREEN-REQUEST는 내부사용용이다.
 Modification Group
 4개 까지 가능 (이름은 3자까지).

3. Dynamic Screen Modification


 PBO module에 기술
 Field 와/또는 field group(SCREEN table에서 loop를 돈다)의 attribute를 SCREEN table
에서 바꿀 수 있다. (LOOP AT SCREEN WHERE …와 READ TABLE SCREEN)은
지원되지 않는다.)
 attribute를 active 하려면 1을 할당하고, deactivate 하려면 0을 할당한다.
 바꾼 값을 저장하려면 MODIFY SCREEN.을 적어야 한다. 그렇지 않으면 WORK AREA
에만 수정되어져서 다음 번에는 적용이 안 된다.
 Screen painter에서 invisible로 정의된 필드는 SCREEN-ACTIVE = 1 구문 같은 동적
작업을 사용하여 ACTIVATE 할 수 없다. 그러나 visible한 field는 inactivate 할 수 있다.
 SCREEN-ACTIVE = 0. 은 SCREEN-INVISIBLE = 1, SCREEN-INPUT = 0, SCREEN-
OUTPUT = 0 과 같다.
 예)
loop at screen.
If screen-group1 = ‘SEL’.
Screen-input = 1.
Endif.

If screen-name = ‘SFLIGHT-CARRID’.
Screen-active = 0.
Endif.

Modify screen.
Endloop.

82
Volume 4: Chapter 6

Table Control

15. Table Control (Function Scope)

 data를 display 하거나 edit 할 때, Table grid를 조절하거나 column 위치를 수정하기

위하여 사용한다.

 또한 select 된 문장이 highlight 되거나 다수의 line을 선택할 때, scroll bar 등을 나타낼

때 사용한다.

 현재의 display 상태를 사용할 수도 있고 변경할 수도 있으며 변경한 것을 variant에

저장할 수 있음

16. Principles of Table Control

 Performance를 위해 internal table를 사용한다. table control에는 재가 areark 하나만

있어 LOOP .. ENDLOOP 문을 사용하여 데이터를 읽거나 변경한다.

 PBO module에서는 internal table의 하나의 라인으로부터 table control의 하나의

라인이 채워진다.

 비슷하게 PAI module에서는 table control 라인의 변경된 부분을 해당하는 internal table

로 복사한다.

17. module Pool에서 table control 정의

 CONTROLS ctrl TABLEVIEW USING SCREEN scr.

83
 CONTROLS 구문은 ABAP/4 dictionary에 정의된 CXTAB_CONTROL type과 같은

table view를 정의한다.

 REFRESH CONTROL ctrl FROM SCREEN 구문은 table control을 초기값으로 setting

한다.

18. Table controls in the Flow logic 1

 Internal table을 이용

 flow logic에서 Loop statement를 사용하여 internal table을 읽는다.

 읽어야 할 entry는 CURSOR <ctrl>-CURRENT_LINE 구문을 사용하면 된다. 이때

시스템에서는 <ctrl>-CURRENT_LINE을 <ctrl>-TOP_LINE + SY-STEPL로 부터

계산한다.

19. Table controls in the Flow logic 2

 Flow logic에서 internal table 없이 LOOP statement를 사용하는 경우 PBO module에서

데이터를 읽어야 하고 이 module은 루프가 한번 돌 때 마다 호출된다.

 EXIT FROM STEP-LOOP을 사용하여 해당하는 internal table entry가 없는 경우 table

control에 blank line이 나타나지 않도록 해줘야만 한다.

20. Changing Table control

 Table control 의 attributes 를 변경할 수도 있는데 이 때는 PBO module 의 LOOP 와

ENDLOOP 사이에서 SCREEN table 을 변경한다.

84
Volumn4: Chapter 7

Linking Program Components

1. Linking Dialog and List Processing


 List processing에서 screen processing으로 branch
 CALL SCREEN as full screen or modal dialog box
 Return to list processing
 Screen processing에서 list processing으로 branch
 Branch to list processing
 Return to dialog processing

2. Branching from List to Dialog Processing


 사용자들에 의해 발생된 function 들에 응답하는 interactive event들
 AT LINE-SELECTION.
 AT USER-COMMAND.
 SY-UCOMM : 사용자에 의해 발생된 function code 값을 갖고 있다.
 CALL SCREEN 구문 사용 : dialog box나 full screen 형태로 screen을 호출하는데 사용.
 호출된 screen은 호출한 report의 component이다.
 SET SCREEN 0. 그리고 LEAVE SCREEN.
 LEAVE TO SCREEN 0. 와 같다.
 screen이 처음으로 호출된 장소로 돌아간다.

3. Branching from Dialog to List Processing


 LEAVE TO LIST-PROCESSING.
 Dialog(screen) processing에서 list processing으로 branch.
 list를 처리하는데 list processing과 연관된 모든 구분들을 사용할 수 있다. (WRITE,
ULINE, SKIP 등과 list-specific event 들)
 list를 display 하기 전 현재 screen의 모든 PAI module 들을 실행한다.
 SET PF-STATUS SPACE. : standard list status 상태로
 LEAVE TO LIST-PROCESSING AND RETURN TO SCREEN <scr>.
 List processing이 마쳐지면 dialog processing은 순서에 따른 다음 screen을
실행한다.

85
 이 때 AND RETURN TO SCREEN <scr>. 문장을 사용하여 다음 screen을 무효로
할 수 있다.
 사용자가 F3(BACK)을 누르거나 LEAVE LIST-PROCESSING 구문을 사용하여
program-driven 된 경우, List processing은 마쳐진다.

4. List in Modal Dialog Box


 SUPPRESS DIALOG
 Screen 상의 list를 dialog box 형태로 display 하길 원할 경우, PBO 안에 위의
구문을 사용하여 display를 억제할 수 있다.
 LEAVE TO LIST-PROCESSING AND RETURN TO SCREEN 0.
 list를 떠날 때 호출한 screen으로 돌아오는 것을 확실히 하기 위해 사용한다.

5. Calling a Report
 report를 호출하고 실행시키기 위해 SUBMIT 문을 사용한다.
 VIA SELECTION-SCREEN
 Report selection-screen이 displayed된다.
 default로 selection-screen을 보여주지 않는다.
 AND RETURN
 report의 수행이 끝났을 때 호출한 곳으로 돌아온다.
 report를 호출하는 동안, logical database를 read process를 위해 사용할 수 있다.

6. The SUBMIT Statement (Syntax and Example)


 SUBMIT <report> VIA SELECTION SCREEN AND RETURN
WITH <parameter> <relational operator> <value> SIGN <s>
WITH <parameter> BETWEEN <value1> AND <value2> SIGN <s>
WITH <parameter> NOT BETWEEN <value1> AND <value2> SIGN <s>
WITH <select-option> IN <selection table>
….

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된다.

9. Parameter Passing(SAP Memory)


 SET PARAMETER ID id FIELD f.
 SAP memory에 값을 저장
 GET PARAMETER ID id FIELD f.
 SAP memory로부터 값을 retrieve
 ADD SKIP FIRST SCREEN
 Dialog program을 호출했을 때 첫번째 screen을 background로 처리하도록 한다.

10. Data Transfer Between Programs(ABAP/4 Memory)


 EXPORT TO MEMORY
 ABAP/4 memory로 ABAP/4 variable들의 현재 value들(data cluster 같은 것)을
복사한다.
 다른 data cluster들을 identify 하기 위해 추가적인 ID(최고 32 글자)를 사용한다.
 이미 존재하는 어떤 data cluster도 덮어쓴다.
 IMPORT FROM MEMORY
 To retrieve data from ABAP/4 memory
 FREE MEMORY ID <id>.
 To release a data cluster

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

Automatic and Programmed


Help Function

21. Standard F1 and F4 functionality

 Help (F1) 와 Possible entries (F4) 는 시스템에서 제공하는 기본 function이다.

 사용자가 field text, input field에서 F1을 누르는 경우 data element의 documentation이

display 되며 input field에서 possible entry key 또는 F4를 누르는 경우 possible value

값이 display 된다.

22. Extended F4 functionality : help view

 F4를 누르면 해당되는 check table의 키 필드가 display 되는데 다른 필드를 보여주고자

할 때 따로 help view를 정의하여 주면 된다.

 help view를 정의할 때는 view name과 primary table을 결정하고 view type은 H로 한다.

관련된 table이 있으면 secondary table에 지정하고 selection condition을 정의한다.

23. Extended F4 functionality : Matchcode Search

 Match code는 key를 모르는 상태에서 record에 직접 access 하는데 사용되는 검색

조건이다.

 matchcode는 조건을 지정하고 몇 개의 테이블로부터 만들며 F4를 누를 때 R/3 system

에서 input help로써 display 된다는 점에서 index와 구별된다.

 Field list에서 matchcode attribute에 matchcode object를 설정하면 되는데 이름은 4

자리로 하고 모든 가능한 필들를 선택한다. 화면에 선택할 필드는 target field

에기입한다.

 Match code id는 1자리, update type은 I로 지정하고 parameter id와 SPA/GPA를 설정할

수 있다.

89
24. Programmed F1 and F4 Functionality

 POH(Process on hilp-request)와 POV(Process on Value request)는 자동적으로

서로간 테이터를 교환하지 않는다.

 POH의 예

PROCESS ON HELP-REQUEST

FIELD field WITH ‘0001’ . – data element의 document 번호

FIELD field WITH variable. – document 번호를 variable로 저장

FIELD field MODULE X WITH variable – variable 가진 X module 실행

FIELD field MODULE Y – Y module 실행

 사용 가능 Function

- HELP_OBJECT_SHOW

- HELP_OBJECT_SHOW_FOR_FIELD

- DYNP_VALUES_READ

- DYNP_VALUES_UPDATE

 POV

- PROCESS ON VALUE-REQUEST

- FIELD field module Z.

- 사용 가능한 function

- HELP_VALUE_GET_WITH_DD_NAME

- HELP_VALUES_GET_NO_DD_NAME

- HELP_VALUES_GET_EXTEND

Volumn4: Chapter 9

Number Assignment

1. Number Range Object


 Menu : ABAP/4 Workbench -> Development -> Other tools -> Number ranges.
 Transaction SNRO.

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 등의 정보 확인.

3. Unbuffered Access to Table NRIV


 각각의 number ranges의 data는 table NRIV에 저장된다.
 DB에서 직접 access.
 LUW가 종료될 때 까지 number range object는 lock 걸린다.
 장점 : gap이 없다.
 단점 : lock이 걸리므로 속도가 늦다.

4. Access via Number Range Buffer


 Number range를 application server에 할당
 할당한 것을 다 읽으면 다시 DB에서 다음 범위를 읽는다.
 장점 : 속도가 빠르다.
 단점 : Gap이 생긴다.

Volumn4: Chapter 10

Creating Change Documents

1. Structure of Change Documents


 Cluster table CDCLS가 포함하고 있는 structure : CDHDR(document header),
CDPOS(document item), PCDHDR(planned change document header),
PCDPOS(planned change document items).

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가 자동으로 할당된다.

2. Change Document Objects


 Tools -> ABAP/4 Workbench -> Development -> Other tools -> Change Documents
 customer에 속하는 change document object 이름은 Y 또는 Z로 시작해야 한다.

3. Reading Change Documents


 Change documents를 analyze 하기 위해서 SAP program RSSCD100을 사용할 수
있다.

4. Function Groups for Processing Change Documents


 SCD0 : change documents를 만들 때.
 SCD1 : change documents를 읽고 formatting할 때.
 SCD2 : change documents를 읽고 formatting할 때.
 SCD3 : planned documents를 읽고 formatting할 때.
 SCD4 : change documents와 planned documents를 지울 때.
 SCD5 : archived change documents를 managing할 때.

Volume 6: Chapter 1

Sequential Files

25. Over View

 Sequential file은 R/3 system과 외부(legacy) 시스템과의 데이터를 교환하기 위한

interface이다. Legacy system에서 R/3 system으로 import, R/3 system에서 legacy

92
system으로 export 하기 위한 매개체로서의 역할을 한다.

 sequential file은 READ DATASET, TRANSFER를 이용하며 application server가 볼 수

있어야 하며, presentation server에 있는 file은 processing 되지 않는다.

26. Files Processing

 Data record를 sequential file에 쓰거나 읽기 전에 해당 file이 open 되어져야 한다.

 Processing 후에는 file을 close 시켜 준다.

 프로그램에서는 파일을 호출할 때는 파일이 위치한 경로명과 실제 파일명을 적어야

한다. 예) ‘usr/sap/T30/<file name>’

 파일명의 format은 operating system에 따라 다르며 function module FILE_GET_NAME

을 이용하여 logical file name으로 부터 physical file name을 얻을 수 있다.

27. Opening a File

 File을 열기위해서 ‘OPEN DATASET <file name>’ statement를 이용한다. 성공이면

까지 SY-SUBRC는 0 또는 8로 셋팅 된다. option을 선택하지 않으면 file은 reading 으로

인식한다.

 FOR OUT option은 쓰기 위해 열 때 사용하며 만약 file이 존재하면 내용들이 지워지고.

file이 없으면 generate 된다.

 FOR INPUT option은 읽기 위해 열 때 사용하며 file이 이미 open 되어져 있으면 커서는

파일의 처음에 위치한다.

 FOR APPENDING option은 file의 끝에 쓰기위해 열 때 사용한다. 파일이 없으면

generate 한다. 파일이 open 되어 있으면 커서는 끝에 위치한다.

28. Opening a file – Binary and Text Mode

 OPEN DATASET <file name> FOR <option1> 에 추가할 수 있는 option으로 IN

BINARY MODE와 IN TEXT MODE가 있다.

 IN BINARY MODE는 default 이다.

 IN TEXT MODE option을 사용하여 file을 open 하면 시스템은 해당 file이 line structure

93
를 가진다고 인식한다. Data area가 라인에 비해 크면 남은 area는 공백으로 채워지며

그 반대일 경우 데이터를 잃어 버리게 된다.

29. Opening a File – AT POSITION

 OPEN statement에 AT POSITION <position> option을 추가하면 바이트 단위로

파일의 위치를 정해줄 수 있다.

 MESSAGE <field>를 사용하면 파일을 여는 도중 에러가 발생할 때 operating system의

message가 field<field>에 기록된다.

30. Transferring Data Records

 TRANSFER statement는 하나의 data record를 sequential file에 전달한다.

 TRANSFER 전에 데이터 record를 field나 structure에 두어야 하며 가능한 structure는

field 또는 table work area 이다.

 TRANSFER 도중 에러가 발생하면 프로그램을 종료한다.

31. Reading Data Records

 각 READ DATASET 구문은 sequential file로 부터 하나의record를 읽는다.

 만약 해당하는 file이 open 되어 있지 않으면 READ DATASET은 file을 open 한다.

 파일의 끝에 도달하면 SY-SUBRC값이 4로 셋팅 되며 그 외는 0으로 셋팅 된다. File이

open 되어 지지 않으면 8이 셋팅 되고, 에러가 발생하면 프로그램이 종료된다.

32. Closing/Deleting a Sequential File

 Sequential file을 explicitly 닫기 위해서는 CLOSE DATASET <file name> 구문을

사용한다.

 프로그램에서 모든 open된 file은 스크린이 바뀔 때 마다 implicitly close 된다.

 file을 explicitly open 또는 close 하면 readability가 좋아진다. 또 OPEN DATASET 을

94
사용하면 file을 open 하다가 에러가 발생하여 프로그램이 종료하는 것을 피하기 위해

MESSAGE를 사용할 수 있다.

 Sequential file을 explicitly delete하기 위해서 DELETE DATASET <file name> 구문을

사용한다. 성공적일 경우 SY-SUBRC 값은 0으로 셋팅 된다.

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

Special Features of Batch Input Processing


33. Transaction End in Batch Input

 Batch input processing

 Update

 Return to SAP main menu

 Leave To Transaction

 No Batch Input capability

 Start a new transaction

 Call transaction ‘xxxx’

 Leave to Transaction ‘xxxx’

 ‘/nxxxx’

 ‘/i/’ (exit mode)

 Batch input processing 중에, update나 returning to the SAP main menu 등으로

transaction을 빠져 나올 수 있다.

 Delete mode function은 batch input에서 지원되지 않는다.

34. Report RSBDCSUB

 Session processing에 대한 scheduling을 할 수 있다.

 report RSBDCSUB에 대해 variant를 설정해 놓고, background job으로 설정해 놓으면,

session processing에 대한 예약을 할 수 있다.

35. Authorization for Batch Input Processing

 Authorization S_BDC_MONI는 batch input processing에서 권한 체크를 위해 쓰인다.

이를 통해 session에 대한 제한을 둘 수 있다. (특정 session에 대한 행위 제한)

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

36. Over view

 Batch input과는 달리, CALL TRANSACTION은 data를 queue file을 거치지 않고 직접

dialog interface로 보낸다. Screen의 data를 잠시 저장하기 위해 internal table (BDC

table, batch input에서의 구조와 동일) 을 이용한다. 프로그램상에서 해당되는

transaction을 부르면, 시스템은 BDC table의 데이터를 DB에 복사하게 된다.

37. The call Transaction statement

CALL TRANSACTION <transaction code>

USING <BDC table>

MODE <display mode>

UPDATE <update mode>

MESSAGE INTO <mess tab>

 Batch input에서 처럼 display mode를 결정할 수 있다.

 batch input과 달리 CALL TRANSACTION에서는 update mode까지 결정을 할 수 있다.

Asynchronous type 두 가지가 있다.

 Message into는 부른 transaction으로부터 나오는 메시지를 internal table에 저장하게

하는데, internal table은 structure BDCMSGOLL 형식을 가져야 한다.

 Batch input과는 달리 error logging은 없다. 대신 return code를 check하여 수행결과를

알아볼 수 있다.

 권한 check는 transaction을 부른 user의 권한을 check 한다.

103
 BDC table에는 한건의 transaction만 들어가 있기 때문에, 다음에 부를 때에는 refresh

로 table 내에 테이터를 지우고 새롭게 집어 넣은 후 transaction을 불러야 한다.

Batch Input Call Transaction

Return code NO YES

Error Yes NO

Processing Time delayed Immediately

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

You might also like