본문 바로가기

SAP SCRIPT,SKILL

Sap Open Sql n

R/3 Architecture

Sap는 R/3 기본적으로 세개의 Layer를 분류

1. R/3 Architecture

1. Presentation Layer

개인 컴퓨터를 의미 SAP GUI를 구성하는 소프트웨어 컴포넌트 정보를 가지고있다 

R/3 시스템과 사용자 간의 인터페이스 제공


2. Application Layer

SAP의 모든프로그램은 Application Server에서 구동. SAPGUI는단지 터미널의 역할만 한다. 

운영 서버의 Application Layer는 하나 또는 여러 개의 Application Server와

하나의 Message Server로 구성된다. Message Server는 Application Server와 통신하며

부하가 적은 서벼에 사용자가 로그온되도록 한다. 여러 개의 Application Server를 구동하

는 것은 시스램의 부하를 분산하기 위한 목적이다. SAP에는 Appli떠tion Server 레벨에서

Local Buffer가 존재하며 , ABAP DictionaIY 테이블 레벨에서 버퍼 설정을 하게 되면 데

이터베이스까지 접근하지 않고 Local Buffer에서 데이터를 읽어온다. 이것은 SAP의 성능

을 향상시키는데 기여하며, OPENSQL을 사용할 때만 가능하다.


3.Database Layer

SAP의 모든 데이터를 데이터베이스 테이블에 저장하는 계층 

마스터 데이터 트랜잭션 데이터 R/3시스템의 모든 데이터를 저장 

ABAP 개발자는 ABAP Dictionary를 통해 데이터 베이스구조 스키마를 관리



2. SQL 정의


Structured Query Language ABAP 프로그램의 OPEN SQL에서는 DML언어만 사용


DML 데이터 처리 언어

DDL 데이터 정의

DCL 데이터 제어언어


3. SQL 종류


1. Open Sql

  ABAP 명령어로 구성서로 다른 DBMS환경 오라클 MS_SQL과 같은 DB에서도 같은 명령어를 사용한다

SELECT문과 같은 DML사용 Local Buffer를 사용 네이티브보단 사용법이 간단하다 


OPEN SQL의 Command Set(SELECT. UPDATE. DELETE 등)을 사용할 수 있다.

OPEN SQL로 해결이 되지 않는 복잡한 SQL은 N~πVESQL을 이용할 수 있다.


1. Natice Sql

 데이터 베이스에 직접 접속하여 DML DDL언어를 사용 




4. OPEN SQL 데이터 읽기


1. Reading Data 명령어


1. SELECT (result)

SELECT 구문은 조회하고자 하는 테이블 필드명을 나열할 수 있으며 , 한 건

또는 여러 라인을 조회.

2. INTO (target) 

SELECT에서 읽어온 데이터를 변수에 저장하며 이 변수를 ABAP 프로그램

에서사용.

3. FROM (source)

 FROM 구문은 SELECT 할 테이블을 지정해준다.

위치는 INTO 이전/이후 모두 둘 수 있다.

4. WHERE (cond)

조건 절 

5. GROUP BY (FILED)

여러 라인의 결과를 그룹으로 지정하여 하나의 결과를 얻을 수 있다. ,

그룹별 합계를 구할 경우 GROUP BY를 사용.

6. HAVING (cond)

GROUP의 조건을 설정하는 WHERE 구문이다.

7. order by (source)

조회된 데이터를 정렬







1.SELECT 구문


데이터베이스 테이블에서 필요한 데이터 READ


1. Single Line

하나의 라인 값을 읽어오고자 할 경우 사용 단 정확한 조건을 정확하게 알고 있어야한다 

Where조건에 유일한 킷값이 추가되어야 한다 


2. Several Lines

여러 라인을 조회할때 사용 이것을 abap에서는 internal table이라고 부른다.

인터널 테이블은 abap 메모리에 생성되는 데이터를 저장 할 수 있는 가상의 테이블


INTO 구문의 결과가 저장되는 곳이 인터널 테이블이 아니라 필드 또는 WORK AREA일 때에 ENDSELECT를 사용


인터널 테이블을 사용하여 작성하는것이 더 효율적


3. AS 

칼럼 명에 별명을 지정



2. INTO 구문


 SELECT 구문에서 조회한 결과 값을 저장하는 기능을 수행한다


1) 구조체 Work Area


여러 칼럼의 한라인만 조회하고자 할경우 Work Area에 값을 할당한다. * 에스터리스트 기호를 사용하면 전체 칼럼을 읽어오고

CORRESPONDING FIELDS OF 구문을 사용하면 Work area의 동일 필드명에 값을 할당한다

* 비효율적이다.



2) Internal Table


여러라인을 조회할 경우 인터널 테이블을 사용한다



3) Single Field


테이블의 개별 칼럼을 조회하거나 2개의 필드를 조회할 경우


SELECT carrid connind into (gv_carrid, gv_connind) from sflight.




3.FROM 구문


SELECT 할 대상 테이블을 지정한다

이 다음에는 하나의 테이블을 지정 혹은 여러개의 테이블을 JOIN 가능





3.4 INNER JOIN OUTER JOIN



4.WHERE 구문 


SELECT 적중 수를 줄요 주고 사용자가 원하는 데이터를 정확하게 선택 할 수 있도록 하는 조건


EQ, = 같음

NE <> >< 같지않음

LT < 작음


LE <= 작거나 같음


GT > 큼


GE >= 크거나 같음



EX)

WHERE COLl BETWEEN 1 AND 10

WHERE COL2 LIKE ’ ABC ’


IN구문을 사용할시 여러 조건에 속한 경우 값을 가져온다

IN('서울','조건')과 같이 사용



5.  Grouping 구문


AVG,COUNT,MAX,MIN,STDDEV(표준편차),SUM,VARIANCE(분산)