SQL 및 기본 SQL 열기 SAP ABAP

이 튜토리얼의 목표는 여러분에게 가르치는 것이 아닙니다. SQL 또는 데이터베이스 개념이지만 ABAP의 SQL 다양성을 소개하기 위해

ABAP/4 프로그래밍 언어에는 두 가지 유형의 SQL이 사용됩니다.

  1. 네이티브 SQL
  2. 오픈 SQL.

Open SQL을 사용하면 R/3 시스템이 사용하는 데이터베이스 플랫폼에 관계없이 ABAP 사전에 선언된 데이터베이스 테이블에 액세스할 수 있습니다.

기본 SQL을 사용하면 ABAP/4 프로그램에서 데이터베이스별 SQL 문을 사용할 수 있습니다. 이는 ABAP 사전에 의해 관리되지 않는 데이터베이스 테이블을 사용할 수 있으므로 R/3 시스템의 일부가 아닌 데이터를 통합할 수 있음을 의미합니다.

Open SQL은 R/3 시스템의 중앙 데이터베이스에서 작업을 수행하는 ABAP 명령문 세트로 구성됩니다. 작업의 결과와 오류 메시지는 사용 중인 데이터베이스 시스템과 무관합니다. 따라서 Open SQL은 지원되는 모든 데이터베이스 시스템에 대해 균일한 구문과 의미 체계를 제공합니다. SAP. Open SQL 문만 사용하는 ABAP 프로그램은 사용 중인 데이터베이스 시스템에 관계없이 모든 R/3 시스템에서 작동합니다. Open SQL 문은 ABAP 사전에서 생성된 데이터베이스 테이블에서만 작동할 수 있습니다.

기본 Open SQL 명령

  • SELECT
  • INSERT
  • UPDATE
  • 수정
  • 삭제
  • 커서 열기, 가져오기, 커서 닫기

예시

TABLES SBOOK.

DATA C TYPE CURSOR,

WA LIKE SBOOK.

OPEN CURSOR C FOR SELECT * FROM SBOOK WHERE CARRID = 'LH '

AND CONNID = '0400'

AND FLDATE = '19950228'

ORDER BY PRIMARY KEY.

DO.

FETCH NEXT CURSOR C INTO WA.

IF SY-SUBRC <> 0.

CLOSE CURSOR C.

EXIT.

ENDIF.

WRITE: / WA-BOOKID, WA-CUSTOMID, WA-CUSTTYPE,

WA-SMOKER, WA-LUGGWEIGHT, WA-WUNIT,

WA-INVOICE.

ENDDO.

0400년 28월 02.1995일 Lufthansa 항공편 XNUMX의 승객 목록을 출력하십시오.

공개 SQL 반환 코드

모든 Open SQL 문은 다음 두 시스템 필드에 반환 코드를 채웁니다.

SY-SUBRC

모든 Open SQL 문 다음에, 작업이 성공하면 시스템 필드 SY-SUBRC에 값 0이 포함되고, 실패하면 0이 아닌 값이 포함됩니다.

SY-DBCNT

Open SQL 문 뒤의 시스템 필드 SY-DBCNT에는 처리된 데이터베이스 라인 수가 포함됩니다.

네이티브 SQL

이미 언급했듯이 기본 SQL을 사용하면 데이터베이스별 SQL 문을 사용할 수 있습니다. ABAP 프로그램.

Native SQL 문을 사용하려면 먼저 EXEC SQL 문을 오고 그 뒤에 ENDEXEC 문을 와야 합니다.

통사론

EXEC SQL [PERFORMING <form>].

  <Native SQL statement>

ENDEXEC.

기본 SQL 문 뒤에는 마침표가 없습니다. 또한 기본 SQL 문의 줄 시작 부분에 반전된 쉼표(“) 또는 별표(*)를 사용하면 일반 ABAP 구문에서처럼 주석이 추가되지 않습니다. 선택한 항목에서 테이블 및 필드 이름이 대소문자를 구분하는지 알아야 합니다. 데이터베이스.

원시 SQL문에서 데이터는 호스트 변수를 사용하여 데이터베이스 테이블과 ABAP 프로그램 간에 전송됩니다. 이는 ABAP 프로그램에서 선언되며 Native SQL 문 앞에는 콜론(:)이 붙습니다. 기본 구조를 호스트 변수로 사용할 수 있습니다. 예외적으로 INTO 절의 구조는 모든 필드가 개별적으로 나열된 것처럼 처리됩니다.

Open SQL에서와 마찬가지로 ENDEXEC 문 다음에는 SY-DBCNT에 처리된 라인 수가 포함됩니다. 거의 모든 경우에 SY-SUBRC는 ENDEXEC 문 뒤에 값 0을 포함합니다.

Open SQL – 성능 규칙

SQL의 성능과 ABAP 프로그램의 성능을 개선하려면 다음 규칙을 준수해야 합니다.

결과 세트를 작게 유지

  • where 절 사용
  • 데이터베이스에서 하나의 레코드만 필요한 경우 가능하면 SELECT SINGLE을 사용하십시오.

전송되는 데이터의 양을 최소화하세요

  • 줄 수를 제한하세요.
  • 테이블에서 특정 필드만 필요한 경우 SELECT를 사용하십시오. INTO … 문
  • 열 수 제한
  • 집계 함수 사용

데이터 전송 횟수 최소화

  • 중첩된 선택 루프 방지
  • 대체 옵션은 SELECT .. FOR ALL ENTRIES 문을 사용하는 것입니다. 이 문은 내부 테이블의 LOOP 동안 많은 수의 SELECT 또는 SELECT SINGLE 문을 수행하는 것보다 훨씬 더 효율적일 수 있습니다.
  • 사전 보기 사용
  • FROM 절에 조인 사용
  • where 절에 하위 쿼리 사용

검색 오버헤드 최소화

  • where 절에 인덱스 필드 사용
  • 데이터베이스에 액세스할 때 항상 올바른 인덱스가 사용되고 있는지 확인하십시오.

데이터베이스 부하 감소

  • BufferING
  • 논리적 데이터베이스
  • 반복적인 데이터베이스 액세스 방지

내부 테이블을 사용하여 Buffer 기록

  • 동일한 SELECT를 여러 번 실행하는 것을 방지하려면(따라서 중복 선택이 발생함) HASHED 유형의 내부 테이블을 사용하여 성능을 향상시킬 수 있습니다.