ABAP

ABAP
ABAP/4
패러다임객체 지향, 구조화, 필수
설계자SAP SE
첫 등장1983; 39년 전 (1998년)
안정적 해제
7.55[1] / 2020년 9월 2일; 18개월(2020-09-02)[2]
타이핑 규율정적, 강력, 안전, 명목적
OS크로스 플랫폼
웹사이트scn.sap.com/community/abap%20scn.sap.com/community/abap
주요 구현
SAP R/2, SAP R/3, SAP S/4HANA
영향을 받은
목표-C,[citation needed] COBOL,[citation needed] SQL[citation needed]

ABAP(Advanced Business Application Programming, 원래 "일반 보고서 작성 프로세서"[3]를 위해 Allgemeiner Berichts-Aufbeitungs-Prozessor, 독일어)는 독일의 소프트웨어 회사 SAP SE가 만든 고급 프로그래밍 언어다.비즈니스 애플리케이션 구축을 위한 SAP NetWeaver 플랫폼의 일부인 SAP NetWeaver Application Server를 프로그래밍하는 언어로 자바와 함께 현재 포지셔닝되어 있다.

소개

ABAP는 1980년대에 처음 개발된 많은 응용 프로그램별 4세대 언어(4GL) 중 하나이다.원래 대기업이 재료관리와 재무관리회계용 메인프레임 비즈니스 애플리케이션을 구축할 수 있도록 한 플랫폼인 SAP R/2의 보고서 언어였다.

ABAP는 전에는 "일반적인 보고서 작성 프로세서"를 뜻하는 독일어인 Allgemeiner Berichts-Aufbeitungs-Prozessor의 약칭이었으나, 후에[when?] English Advanced Business Application Programming으로 이름이 바뀌었다.ABAP는 모든 플랫폼, 언어 및 단위를 지원하는 기본 데이터베이스 레벨로부터 높은 수준의 추상화를 제공하는 LDB(논리 데이터베이스) 개념을 포함한 최초의 언어 중 하나이다.

ABAP 언어는 원래 개발자들이 SAP R/3 플랫폼을 개발하기 위해 사용하였다.또한 SAP 고객이 SAP 애플리케이션을 향상시키기 위해 사용하기 위한 것으로, 고객은 맞춤형 보고서와 ABAP 프로그래밍과의 인터페이스를 개발할 수 있다.그 언어는 프로그래밍 경험이 있는 더 많은 기술 고객들에게 맞추어졌다.

ABAP는 SAP가 1992년에 처음 출시한 클라이언트-서버 R/3 시스템용 프로그램을 만드는 언어로 남아 있다.1990년대까지 컴퓨터 하드웨어가 진화하면서, 점점 더 많은 SAP 애플리케이션과 시스템이 ABAP로 작성되었다.2001년까지 가장 기본적인 기능을 제외한 모든 기능이 ABAP에 기록되었다.1999년에 SAP는 R/3 릴리스 4.6과 함께 ABAP Objects라고 불리는 ABAP에 대한 객체 지향 확장을 발표했다.

SAP의 현재 개발 플랫폼 NetWeaver는 ABAP와 Java를 모두 지원한다.

ABAP는 비즈니스 애플리케이션, 운영 체제 및 데이터베이스 사이에 추상화를 가지고 있다.이를 통해 애플리케이션은 특정 서버나 데이터베이스 플랫폼에 직접 의존하지 않고 플랫폼 간에 쉽게 포팅될 수 있다.

SAP Netweaver는 현재 UNIX(AIX, HP-UX, Solaris, Linux), Microsoft Windows, IBM System i(이전의 iSeries, AS/400), IBM System z(이전의 zSeries, S/390)에서 z/OS를 실행한다.지원되는 데이터베이스는 HANA, SAP ASE(이전의 Sybase), IBM Db2, Informix, MaxDB, OracleMicrosoft SQL Server(Informix 지원은 SAP Basis 릴리즈 7.00에서 중단됨)[4]이다.

ABAP 런타임 환경

모든 ABAP 프로그램은 SAP 데이터베이스 내부에 위치한다.그것들은 Java나 C++ 프로그램과 같은 별도의 외부 파일에 저장되지 않는다.데이터베이스에서 모든 ABAP 코드는 두 가지 형태로 존재한다. 소스 코드는 ABAP Workbench 도구로 보고 편집할 수 있으며 생성된 코드는 Java 바이트 코드와 다소 유사한 바이너리 표현이다.ABAP 프로그램은 SAP 커널의 일부인 런타임 시스템의 제어 하에 실행된다.런타임 시스템은 ABAP 문을 처리하고, 화면의 흐름 논리를 제어하며, 이벤트에 대응하는 것(예: 사용자가 화면 버튼을 클릭하는 것)을 담당한다. 이 점에서 Java VM과 비교할 수 있는 가상 머신으로 볼 수 있다.ABAP 런타임 시스템의 핵심 구성요소는 데이터베이스 인터페이스로, 데이터베이스 독립형 ABAP 문("Open SQL")을 기본 DBMS("Native SQL")가 이해하는 문("Native SQL")으로 변환한다.데이터베이스 인터페이스는 ABAP 프로그램을 대신하여 관계형 데이터베이스와의 모든 통신을 처리한다. 또한 테이블 버퍼링과 자주 액세스하는 데이터 등과 같은 추가 기능을 애플리케이션 서버의 로컬 메모리에 포함하고 있다.

SAP 시스템 및 환경

모든 SAP 데이터가 존재하며 모든 SAP 소프트웨어는 SAP 시스템의 컨텍스트에서 실행된다.시스템은 중앙 관계형 데이터베이스와 이 데이터베이스의 데이터와 프로그램에 접근하는 하나 이상의 애플리케이션("인스턴스")으로 구성된다.SAP 시스템에는 하나 이상의 인스턴스가 포함되지만 대부분 크기 조정 및 성능의 이유로 더 많은 인스턴스가 포함될 수 있다.여러 인스턴스가 있는 시스템에서 로드 밸런싱 메커니즘은 로드가 사용 가능한 애플리케이션 서버에 고르게 분산되도록 보장한다.

웹 애플리케이션 서버(가로경)의 설치는 일반적으로 개발용 시스템, 테스트 및 품질 보증용 시스템, 생산용 시스템 등 3개 시스템으로 구성된다.이 환경은 더 많은 시스템(예: 단위 시험 및 사전 생산 시험을 위한 별도 시스템)을 포함할 수도 있고 더 적은 수의 시스템(예: 별도의 QA 없이 개발 및 생산만)을 포함할 수도 있다. 그럼에도 불구하고 3개는 가장 일반적인 구성이다.ABAP 프로그램이 생성되어 개발 시스템에서 첫 번째 테스트를 거친다.그 후에 그들은 풍경 속에 있는 다른 시스템으로 분배된다.이러한 조치는 동시성 제어(예: 두 개발자가 동시에 동일한 코드를 변경할 수 없도록 방지), 버전 관리, QA 및 생산 시스템에 프로그램 배치 등을 담당하는 CTS(Change and Transport System)의 통제 하에 이루어진다.

웹 애플리케이션 서버는 데이터베이스 계층, 애플리케이션 계층, 그리고 프레젠테이션 계층의 세 계층으로 구성된다.이러한 계층은 동일한 물리적 시스템에서 실행되거나 다른 물리적 시스템에서 실행될 수 있다.데이터베이스 계층은 관계형 데이터베이스와 데이터베이스 소프트웨어를 포함한다.애플리케이션 계층 지식은 시스템의 인스턴스나 인스턴스를 포함한다.비즈니스 트랜잭션과 ABAP 개발을 포함한 모든 애플리케이션 프로세스는 애플리케이션 계층에서 실행된다.표시 계층은 시스템 사용자와의 상호작용을 처리한다.ABAP 응용 프로그램 서버에 대한 온라인 액세스는 "SAP GUI"라고 하는 독점적인 그래픽 인터페이스를 통해서나 웹 브라우저를 통해서도 가능하다.

소프트웨어 레이어

ABAP 소프트웨어는 소프트웨어 구성요소에 배치된다.이에 대한 예는 다음과 같다.

  • SAP_BASIS는 모든 ABAP 시스템에서 요구되는 필수 기술 기반 계층이다.
  • SAP_ABA에는 비즈니스 파트너 및 주소 관리와 같은 모든 종류의 비즈니스 애플리케이션에 필요한 기능이 포함되어 있다.
  • SAP_UI는 SAP UI5 애플리케이션을 생성하는 기능을 제공한다.
  • BBPCRM은 비즈니스 응용프로그램의 예로서, 이 경우 CRM 응용프로그램
  • SAP ABAP는 ERP 프로그래밍 언어다.

트랜잭션

SAP 용어의 트랜잭션은 프로그램의 실행이다.SAP 시스템에서 ABAP 코드를 실행하는 일반적인 방법은 트랜잭션 코드를 입력하는 것이다(예: VA01은 "판매 주문서 작성"을 위한 트랜잭션 코드임).트랜잭션은 시스템 정의 또는 사용자별 역할 기반 메뉴를 통해 호출할 수 있다.또한 모든 SAP 화면에 나타나는 명령 필드에 트랜잭션 코드를 직접 입력하여 시작할 수 있다.거래는 또한 ABAP 문구를 통해 프로그래밍 방식으로 호출될 수 있으며 거래에 맡긴다.거래의 일반적인 개념은 SAP 용어로 LUW(Logical Unit of Work)라고 불린다.[citation needed] 짧은 형태의 거래 코드는 T-code이다.

ABAP 프로그램의 유형

다른 프로그래밍 언어와 마찬가지로 ABAP 프로그램은 실행 가능한 단위 또는 라이브러리로서, 다른 프로그램에 재사용 가능한 코드를 제공하며 독립적으로 실행 가능한 것은 아니다.

ABAP는 두 가지 유형의 실행 프로그램을 구분한다.

  • 보고서
  • 모듈 풀

보고서는 사용자가 선택적으로 매개변수 집합(예: 데이터의 하위 SET에 대한 선택)을 입력하고 프로그램은 입력 매개변수를 사용하여 대화형 목록 형태로 보고서를 생성하는 비교적 단순한 프로그래밍 모델을 따른다."보고서"라는 용어는 보고서가 데이터를 수정하도록 설계될 수 있다는 점에서 다소 오해의 소지가 있을 수 있다; 이러한 프로그램을 보고서라고 부르는 이유는 그들이 생산하는 산출물의 "리스트 지향적" 성격 때문이다.

모듈 풀은 화면 모음을 사용하여 사용자 상호작용의 더 복잡한 패턴을 정의한다."화면"이란 사용자가 보는 실제의 물리적 이미지를 말한다.각 화면에도 "흐름 논리"가 있는데, 이는 스크린에서 암묵적으로 호출되는 ABAP 코드를 가리키는 것으로, "PBO"(출력 전 프로세스)와 "PAI"(입력 후 프로세스) 섹션으로 나뉜다.SAP 문서에서 "dynpro"(동적 프로그램)라는 용어는 화면과 화면 흐름 로직의 조합을 가리킨다.

실행 불가능한 프로그램 유형은 다음과 같다.

  • 포함 모듈 - 이 모듈들은 세대별로 호출 장치에 포함되며, 대형 프로그램을 세분화하는 데 종종 사용된다.
  • 서브루틴 풀 - 여기에는 ABAP 서브루틴(FORM/ENDFORM 문으로 둘러싸인 코드 블록 및 PERAGE로 호출됨)이 포함되어 있다.
  • 기능 그룹 - 이들은 독립된 기능 모듈의 라이브러리(Function/ENDFunction에 의해 폐쇄되고 Call Function과 함께 호출됨)이다.
  • 객체 클래스 - 이것들은 Java 클래스 및 인터페이스와 유사하다; 첫 번째 방법 및 속성 집합을 정의하고, 두 번째 방법에는 인터페이스를 구현하는 클래스가 명시적 코드를 제공해야 하는 "빈" 방법 정의가 포함되어 있다.
  • 인터페이스 - 객체 클래스와 동일
  • 유형 풀 - 데이터 유형 및 상수의 컬렉션을 정의하십시오.

ABAP 프로그램은 개별 문장(발표문)으로 구성된다.성명에서 첫 번째 단어는 ABAP 키워드라고 불린다.각각의 진술은 마침표로 끝난다.단어는 항상 적어도 하나의 공백으로 구분되어야 한다.진술은 당신이 원하는 대로 들여쓸 수 있다.키워드, 추가 및 피연산자를 사용하는 ABAP 런타임 시스템은 대문자와 소문자를 구분하지 않는다.

진술은 한 줄 이상으로 확장될 수 있다.한 줄에 여러 개의 문장이 있을 수 있다(권장하지는 않지만).첫 번째 열의 별표 *로 시작하는 행은 ABAP 런타임 시스템에서 주석 행으로 인식되며 무시된다.이중 인용 부호(")는 행의 나머지 부분이 주석임을 나타낸다.

개발환경

ABAP에는 두 가지 가능한 발전 방법이 있다.가용성은 ABAP 시스템의 출시 여부에 따라 달라진다.

ABAP 워크벤치

ABAP Workbench는 ABAP 시스템의 일부로서 SAP GUI를 통해 액세스된다.그것은 프로그램을 편집하기 위한 다른 도구들을 포함하고 있다.이 중 가장 중요한 것은 (거래 코드가 괄호 안에 표시됨)이다.

  • 보고서, 모듈 풀, 포함 및 서브루틴 풀(SE38) 작성 및 편집용 ABAP 편집기
  • 데이터베이스 테이블 정의 처리 및 전역 유형 검색용 ABAP 사전(SE11)
  • 사용자 인터페이스 설계를 위한 메뉴 작성기(메뉴 바, 표준 도구 모음, 응용프로그램 도구 모음, 기능 키 할당) (SE41)
  • 화면 및 흐름 논리 설계를 위한 화면 작성기(SE51)
  • 기능 모듈용 Function Builder(Function Builder)
  • ABAP용 클래스 작성기 객체 클래스 및 인터페이스(SE24)

Object Navigator(트랜잭션 SE80)는 이러한 다양한 도구에 통합된 단일 인터페이스를 제공한다.

ABAP 개발 도구

공식적으로 "ABAP in Eclipse"로 알려진 ABAP Development Tools(ADT)는 ABAP를 개발하기 위한 Eclipse 플랫폼용 플러그인 세트다.[5]

이 시나리오에서 ABAP 개발자는 컴퓨터에 필요한 도구를 설치하고 로컬에서 작동하지만 백엔드와의 지속적인 동기화가 수행된다.

ABAP 사전

ABAP 사전에는 SAP 시스템의 데이터에 대한 모든 메타데이터가 포함되어 있다.데이터에 대한 참조(예: 테이블, 뷰 또는 데이터 유형)는 사전에서 얻을 수 있다는 점에서 ABAP Workbench와 밀접하게 연결되어 있다.개발자는 ABAP Dictionary 트랜잭션(직접 또는 ABAP Workbench 내의 SE80 Object Navigator를 통해)을 사용하여 이 메타데이터를 표시하고 유지 관리한다.

사전 오브젝트가 변경되면 변경된 오브젝트를 참조하는 프로그램은 다음에 프로그램이 실행될 때 자동으로 새 버전을 참조한다.ABAP는 해석되기 때문에 변경된 사전 객체를 참조하는 프로그램을 다시 컴파일할 필요가 없다.

사전 개체의 가장 중요한 유형에 대한 간략한 설명은 다음과 같다.

  • 테이블은 기본 관계형 데이터베이스에 존재하는 데이터 컨테이너다.대부분의 경우 ABAP 사전의 표 정의와 데이터베이스(동일한 이름, 동일한 열)의 동일한 표 정의 사이에는 일대일 관계가 있다.이 표들은 "투명하다"라고 알려져 있다.투명하지 않은 테이블에는 두 가지 유형이 있다: "풀링된" 테이블은 ABAP 사전에 독립된 엔터티로 존재하지만 데이터베이스 수준에서 큰 물리적 테이블("풀")로 함께 그룹화된다.풀링된 테이블은 예를 들어 구성 데이터를 포함하는 작은 테이블이다."클러스터된" 테이블은 기본 키를 기반으로 물리적으로 "클러스터"로 그룹화된다. 예를 들어, 클러스터된 테이블 H가 판매 송장에 대한 "헤더" 데이터를 포함하고 있는 반면, 다른 클러스터된 테이블 D는 송장 라인 항목을 가지고 있다고 가정한다.그런 다음 H의 각 행은 데이터베이스의 "클러스터 테이블" 내에서 D의 관련 행과 물리적으로 그룹화된다.성능을 향상시키기 위해 고안된 이러한 유형의 클러스터링은 일부 관계형 데이터베이스 시스템에서도 기본 기능성으로 존재한다.
  • 인덱스는 자주 사용되는 선택 조건에 대해 테이블 데이터에 대한 액세스를 가속화한다.모든 SAP 테이블에는 테이블과 함께 암시적으로 생성되며 기본 키 고유성을 적용하는 데 사용되는 "기본 인덱스"가 있다.추가 인덱스(고유 지수 또는 비고유 지수)를 정의할 수 있으며, 이를 "2차 인덱스"라고 한다.
  • 보기는 기본 데이터베이스에서와 동일한 목적으로 조인 조건 - 여러 표의 열(및/또는 행) 하위 집합을 정의한다.뷰는 가상 테이블이기 때문에(다른 테이블의 데이터를 참조) 상당한 공간을 차지하지 않는다.
  • 구조는 여러 개의 필드로 구성된 복잡한 데이터 유형이다(C/C++의 구조체와 유사).
  • 데이터 요소는 테이블 또는 구조 필드에 대한 의미론적 내용을 제공한다.예를 들어, 수십 개의 테이블과 구조물은 (완제품, 원료, 자원 등) 가격을 제시하는 필드를 포함할 수 있다.이 모든 필드는 동일한 데이터 요소 "PRES"를 가질 수 있다.
  • 도메인은 데이터 요소의 구조적 특성을 정의한다.예를 들어, 데이터 요소 PRASS는 가격을 두 개의 소수점을 가진 숫자 필드로 정의하는 할당된 도메인을 가질 수 있다.도메인은 또한 가능한 가치들의 목록을 제공하는 데 있어서 의미론적 내용을 전달할 수 있다.예를 들어 도메인 "BOOLEN"은 길이 1과 대/소문자를 구분하지 않는 "문자" 유형의 필드를 정의할 수 있지만 가능한 값을 "T"(참) 또는 "F"(거짓)로 제한할 수도 있다.
  • 검색은 사용자가 데이터 필드에 대해 가능한 값을 보고자 할 때 고급 검색 전략을 제공하는 데 도움이 된다.ABAP 런타임은 (예: 모든 기존 고객 번호와 같은 필드에 대한 모든 값을 나열함으로써) 암묵적 지원을 제공하지만, 검색은 지리적 위치, 신용 등급 등에 따라 고객 검색을 제공함으로써 이러한 기능을 개선하는 데 사용될 수 있다.
  • 잠금 객체는 데이터를 변경할 때 애플리케이션 레벨 잠금을 구현한다.

ABAP 구문

ABAP 구문에 대한 이러한 간략한 설명은 유비쿼터스 "Hello World" 프로그램에서 시작된다.

안녕 세계

보고서 테스트. 쓰기 '헬로 월드'. 

이 예에는 다음 두 가지 문장이 있다.REPORT그리고WRITE프로그램이 화면에 목록을 표시한다.이 경우 리스트는 싱글 라인 '헬로 월드'로 구성된다.REPORT진술은 이 프로그램이 보고서라는 것을 나타낸다.이 프로그램은 다음 구성 요소를 교체한 후 모듈 풀일 수 있음REPORT와 진술하다.PROGRAM.

사슬로 묶인 문장

첫 번째 부분(맨 왼쪽)이 동일한 연속 문구를 체인 오퍼레이터를 사용하여 "체인" 문으로 결합할 수 있음:. 문장의 공통부분은 대장 왼쪽에 쓰여 있고, 서로 다른 부분은 대장 오른쪽에 쓰여 있고, 쉼표로 구분되어 있다.콜론 오퍼레이터는 공백 없이 앞의 토큰에 직접 부착된다(아래 예에서 볼 수 있듯이, 위의 토큰 목록에 있는 쉼표에도 동일하게 적용된다).

체인은 종종 에 사용된다.WRITE진술들 WRITE예를 들어 FLIGHINFO라는 구조에서 세 개의 필드를 표시하려면 다음 명령어를 입력하십시오.

쓰기 플라이린포-시티프롬. 쓰기 플라이린포-시티토. 쓰기 플라이린포-에어렙토. 

문구를 체인으로 묶으면 보다 읽기 쉽고 직관적인 형태가 된다.

쓰기: 플라이린포-시티프롬, 플라이린포-시티토, 플라이린포-에어렙토. 

연쇄 성명에서 제1부(대장 이전)는 성명 이름에만 국한되지 않는다.연속된 진술의 전체 공통 부분은 대장 앞에 배치할 수 있다.예:

교체 'A' 와 함께 'B' INO . 교체 'A' 와 함께 'B' INO 이름. 교체 'A' 와 함께 'B' INO 도시명. 

체인 형태로 다음과 같이 다시 쓸 수 있다.

교체 'A' 와 함께 'B' INO: , 이름, 도시명. 

평.

ABAP에는 텍스트를 주석으로 정의하는 두 가지 방법이 있다.

  • 행의 맨 왼쪽 열에 별표(*)가 있으면 전체 행이 주석으로 된다.
  • 행의 어느 곳이나 큰따옴표(")를 사용하면 해당 행의 나머지 부분이 주석으로 된다.

예:

*************************************** ** 프로그램: 예약 ** ** 작성자: Joe Byte, 07-Jul-2007 ** ***************************************  보고서 예약.  * 데이터베이스에서 항공편 예약 읽기 선택 * From 플라이린포   어디에 클래스 = 'Y'       "Y = 이코노미   OR    클래스 = 'C'.      "C = 비즈니스 (...) 

공간

ABAP의 코드는 공백에 민감하다.

x = a+b(c). 

변수 c에 의해 정의된 길이로 b부터 시작하여 변수 a의 하위 문자열에 할당한다.

x = a + b( c ). 

변수 x에 변수 a의 합과 방법 b에 대한 호출의 결과를 변수 c에 할당한다.

ABAP 성명

제한된 언어별 문장의 집합을 정의하고 라이브러리를 통해 대부분의 기능을 제공하는 C/C++ 또는 자바와 같은 언어와 대조적으로, ABAP에는 방대한 양의 내장 문장이 포함되어 있다.이러한 문장은 전통적으로 문장과 같은 구조를 사용했으며 기호를 피하여 ABAP 프로그램을 비교적 장황하게 만들었다.그러나 ABAP 언어의 최신 버전에서는 더 엄격한 스타일이 가능하다.[6]

문 기반 구문(COBOL에서 유래한 구문) 대 표현 기반 구문(C/Java에서 유래한 구문)의 예:

추가 세금  프라이스. *은(는) 에 해당함 프라이스 = 프라이스 + 세금 . 

데이터 유형 및 변수

ABAP는 일련의 내장 데이터 유형을 제공한다.또한 ABAP 사전에 정의된 모든 구조, 테이블, 뷰 또는 데이터 요소를 사용하여 변수를 입력할 수 있다.또한 객체 클래스 및 인터페이스는 유형으로 사용될 수 있다.

내장 데이터 유형:

유형 설명
I 정수
P 포장 소수점
F 부동소수점
N 문자 숫자
C 캐릭터
D 날짜
T 시간
X 16진수(원시 바이트)
가변 길이 문자열
엑스스트링 가변 길이 원시 바이트 배열

날짜 변수 또는 상수(타입 D)는 AD 1월 1일 이후 일 수를 포함한다.시간 변수 또는 상수(타입 T)에는 자정 이후 시간(초)이 포함된다.두 가지 유형의 특별한 특징은 정수 및 문자 문자열(날짜의 경우 "YYYYMMDD", 시간의 경우 "hhmms" 내부 포맷으로) 모두 액세스할 수 있으며, 이를 날짜 및 시간 처리에 사용할 수 있다는 점이다.예를 들어, 아래 코드 조각은 전월의 마지막 날을 계산한다(참고: SY-DATUM은 현재 날짜를 포함하는 시스템 정의 변수임).

데이터 LAST_EOM    유형D.  "마지막 월말 날짜"  * 오늘 날짜부터 시작   LAST_EOM = SY-데이텀. * YYYYMMDD 문자열의 문자 6 및 7(0-상대)을 "01"로 설정, * 당월 초하루 주기   LAST_EOM+6(2) = '01'. * 하루 빼기   LAST_EOM = LAST_EOM - 1.    쓰기: '전월의 마지막 날은', LAST_EOM. 

모든 ABAP 변수를 사용하려면 명시적으로 선언해야 한다.이들은 개별 문장과 명시적 타이핑으로 선언할 수 있으며, ABAP 7.40 이후, 유추된 타이핑으로 인라인으로 선언할 수 있다.

명시적으로 입력된 선언

일반적으로 모든 선언은 첫 번째 실행 문 앞에 코드 모듈(프로그램, 서브루틴, 함수)의 맨 위에 배치된다. 이 배치는 규약이며 강제 구문 규칙이 아니다.선언은 이름, 유형, 길이(해당되는 경우), 추가 한정자(예: 포장된 소수점 필드의 묵시적 소수점 수) 및 선택적으로 초기 값으로 구성된다.

* 원시 유형: 데이터: 카운터      유형I,       유효성     유형I 가치 60,       택스레이트(3)   유형P 십진수 1,       (20) 유형C,       설명  유형.  * 사전 유형: 데이터: 오리진       유형 국가.  * 내부 테이블: 데이터: T_FLIGHTS    형식 표 플라이린포,       T_LOUP     해시 테이블 유형 FLT_LOOKUP.  * 개체: 데이터: 예약      형식 참조 기준 CL_FLT_BOOKing. 

연속된 DATA 문을 연결하기 위해 콜론을 사용하는 것에 주목하십시오.

인라인 선언

ABAP 7.40부터 변수를 인라인으로 선언할 수 있는 구문은 다음과 같다.

데이터(variable_name) = '가치'. 

이러한 유형의 선언의 경우, 예를 들어 방법 서명 또는 데이터베이스 테이블 구조로 형식을 정적으로 추론할 수 있어야 한다.

이 구문은 OpenSQL 문에서도 가능하다.

선택 * From 에꼬  @데이터(lt_ekko) 어디에 에베른 EQ @lv_ebeln. 

ABAP 객체

ABAP 언어는 "ABAP Objects"[7]라고 알려진 기능을 통해 객체 지향 프로그래밍을 지원한다.이것은 응용 프로그램을 단순화하고 더 쉽게 제어할 수 있도록 하는 데 도움이 된다.

ABAP Objects는 기존 언어와 완벽히 호환되기 때문에 ABAP Objects를 사용하는 프로그램에서 기존 문장과 모듈화 단위를 사용할 수 있으며, 기존 ABAP 프로그램에서도 ABAP Objects를 사용할 수 있다.ABAP Objects 프로그램에서는 구문 확인이 더 강하며, 특정 문장의 일부 구문 형태(대개 구문)는 허용되지 않는다.

물체는 각각의 행동에 캐릭터를 결합하는 캡슐을 형성한다.개체는 프로그래머가 일대일로 실제 문제와 제안된 소프트웨어 솔루션을 매핑할 수 있도록 해야 한다.예를 들어, 비즈니스 환경에서 대표적인 물체는 '고객', '주문' 또는 '인보이스'이다.릴리즈 3.1 이후 SAP Web Application Server ABAP의 BOR(Business Object Repository)에는 이러한 개체의 예가 수록되어 있다.BOR 오브젝트 모델은 다음 릴리스에서 BOR 오브젝트 유형을 ABAP 클래스 라이브러리로 마이그레이션하여 ABAP 오브젝트에 통합될 것이다.전체적으로 객체지향에 대한 포괄적인 도입은 ABAP 객체에 대한 이 도입의 한계를 훨씬 뛰어넘을 것이다.이 문서에서는 객체 지향에 보편적으로 사용되며 ABAP 객체에서도 발생하는 용어의 선택을 소개한다.이후 섹션에서는 이러한 용어가 ABAP 객체에서 어떻게 사용되는지에 대해 자세히 논의한다.이 섹션의 끝에는 객체 방향에 대한 제목 선택과 함께 추가 판독 목록이 포함되어 있다.

  • 개체는 클래스의 인스턴스(instance of class.그들은 데이터를 포함하고 서비스를 제공한다.데이터는 개체의 속성을 형성한다.이 서비스는 방법(운영 또는 기능이라고도 함)으로 알려져 있다.일반적으로 방법은 개체 방법에만 보이는 개인 데이터(개체의 속성 또는 상태)에서 작동한다.따라서 객체의 속성은 사용자가 직접 변경할 수 없고, 다만 객체의 방법에 의해서만 변경될 수 있다.이것은 개체의 내부 일관성을 보장한다.
  • 클래스는 물체를 묘사한다.기술적 관점에서 오브젝트는 클래스의 런타임 인스턴스다.이론적으로, 단일 계급을 기초로 한 많은 물체들이 만들어질 수 있다.클래스의 각 인스턴스(개체)는 고유한 ID와 속성에 대한 고유한 값 집합을 가지고 있다.
  • 개체 참조는 프로그램에서 개체를 식별하고 가리키는 데 사용할 수 있는 고유한 주소다.개체 참조는 개체의 속성과 메서드에 대한 액세스를 허용한다.

객체 지향 프로그래밍에서 객체는 대개 다음과 같은 속성을 갖는다.

  • 캡슐화 - 개체는 다른 사용자에 대한 자원(속성 및 방법)의 가시성을 제한한다.모든 물체는 다른 물체가 그것과 어떻게 상호작용할 수 있는지를 결정하는 인터페이스를 가지고 있다.사물의 구현은 캡슐화, 즉 사물의 외부에 보이지 않는 것이다.
  • 상속 - 새로운 클래스를 도출하는 데 기존 클래스를 사용할 수 있다.파생 클래스는 슈퍼 클래스의 데이터와 방법을 상속한다.그러나 기존 방법을 덮어쓸 수 있고, 새로운 방법을 추가할 수도 있다.
  • 다형성 - 동일(동일명칭) 방법들은 서로 다른 계급에서 다르게 작용한다.ABAP Objects에서, 다형성(polymorphism)은 상속 중 방법을 재정의하고 인터페이스라고 불리는 구조를 사용하여 구현된다.

CDS 보기

ABAP 핵심 데이터 서비스(ABAP CDS)는 AS ABAP에 대한 일반 CDS 개념의 구현이다.ABAP CDS는 애플리케이션 서버의 중앙 데이터베이스에 의미 데이터 모델을 정의할 수 있게 한다.AS ABAP에서 이러한 모델은 데이터베이스 시스템과 독립적으로 정의될 수 있다.이들 모델의 엔티티는 ABAP 사전에 정의된 기존 데이터베이스 테이블 및 뷰와 비교할 때 향상된 액세스 기능을 제공하여 오픈 SQL 기반 애플리케이션을 최적화할 수 있도록 한다.이는 AS ABAP가 SAP HANA 데이터베이스를 사용할 때 특히 명확하며, 인메모리 특성은 최적의 방식으로 구현될 수 있기 때문이다.

데이터 모델은 ABAP CDS 구문의 ABAP CDS에 제공된 데이터 정의 언어(DDL)와 DCL(데이터 제어 언어)을 사용하여 정의된다.이러한 언어를 사용하여 정의된 오브젝트는 ABAP 사전에 통합되어 여기서도 관리된다.

CDS 소스 코드는 Eclipse 기반 ABAP 개발 도구(ADT)에서만 프로그래밍할 수 있다.DDL(데이터 정의 언어)과 DCL(데이터 제어 언어)은 서로 다른 편집기를 사용한다.[8]

특징들

SAP NW ABAP SQL 결합 SQL 세트 작업 SELECT 절
7.40 SP05
  • 이너 조인
  • 좌측 외부 조인
  • 우측 외부 조인
  • 유니온
  • 유니온 올
  • 어디에
  • 그룹화 기준
  • 하고 있다
  • A.S.
7.40 SP08
7.50
7.51
  • 교차 결합
SAP NW ABAP 리터럴스 산술 연산자 조건식
7.40 SP05
  • SELECT 목록에서(예: 리터럴로 FieldName)
  • RHS 값으로
  • +
  • -
  • 부울 연산자
    • NOT, AND, OR
  • 비교 연산자
    • BIDE, =, <>, <, <=, >=, LIKE
    • IS [NOT] NULL(WHERE 조건에만 해당)
7.40 SP08
  • / (플로트 기반 분할)
7.50
7.51
  • RHS 값으로서의 기능
SAP NW ABAP 집계함수 숫자 함수 문자열 함수
7.40 SP05
  • AVG([DISTinct])
  • 맥스.
  • SUM( [DISTinte])
  • COUNT([DISTinct] )
  • 카운트(*)
  • CEIL
  • MOD
  • 서브스크린
  • LPAD
7.40 SP08
  • ABS
  • DIV(Integer 기반 분할)
  • DIGNITY (십진수 기반 분할)
  • 바닥
  • 라운드
  • CONCAT
  • 교체
7.50
  • CONCAT_WITH_SPACE
  • INSTR
  • 왼쪽
  • 길이
  • LTRIM
  • 맞다
  • RPAD
  • RTRIM
7.51
  • 반환 유형을 지정하기 위한 AVG( [AS] )
  • FLTP_TO_DEC
  • 상부
  • 더 낮게
SAP NW ABAP 바이트 문자열 함수 날짜 및 시간 함수 기타 함수
7.40 SP05
  • 예를 들어, CAST에서 내장 DDIC 유형으로.납작하게 하다
7.40 SP08
  • 코네체
  • 통화_CONVERSION
  • UNIT_CONVERSION
  • 십진_시프트
7.50
  • 빈토헥스
  • 헥스토빈
  • DATS_DAYS_BEYNEWER
  • DATS_ADD_DAYS
  • DATS_ADD_MAUNS
  • DATS_IS_VALID
  • TIMS_IS_VALID
  • TSTMP_IS_VALID
  • TSTMP_Current_UTCTIMestamp
  • TSTMP_SEBERS_BEYNE
  • TSTMP_ADD_SE초
  • 캐스트
    • 데이터 요소(예: CHAR80)에 연결
    • 내포될 수 있다
7.51
  • ABAP_SYSTEM_TIMEZONE
  • ABAP_USER_타임존
  • TSTMP_TO_DATS
  • TSTMP_TO_TIMS
  • TSTMP_TO_DST
  • DATS_TIMS_TO_TSMP
  • 캐스트
    • 보존 유형
    • 다른 유형에 대한 Sstring
    • CLNT, LANG, TIMS, UNIT to 데이터 요소 유형 CHAR 및 Sstring
    • CHAR, Sstring, NUMC to ACCP 및 그 반대의 경우
    • 피연산자로서 집계 함수
SAP NW ABAP 조건부(CASE) 식 확장성 (관리되지 않음) 연결
7.40 SP05
  • "단순" CASE(스위치 문과 같은 동작)
  • 내포된 CASE 문
  • $EXTENT*(데이터베이스 테이블 확장 지원)
  • 경로 식:
    • 목록 선택
    • FROM 절
    • WHERE 절
    • HAVING조항
  • 경로 식에서 조건 필터링(예:Products._Texts[ lagu = 'EN' ] as english_name
7.40 SP08
  • "Searched" CASE("Searched" CASE"와 같은 행동...그렇지 않은 경우)
  • 뷰 확장
7.50
  • CAST 함수에서 CAST 식을 피연산자로 사용할 수 있음
  • 입력 매개 변수, 경로 표현식, 변환, 날짜 및 시간 함수를 포함한 EXTEND VIEW
7.51
  • RHS 값으로서의 기능
  • 집계 함수, 그룹화 기준 조항 및 유니온을 사용하여 뷰 확장
  • UNION과 뷰의 연관 정의
  • 연결에 대한 기본 필터(기본 필터 포함)
  • 경로 필터에서 카디널리티 "대수(*:)를 지정할 수 있음
SAP NW ABAP 세션 변수 입력 매개 변수 기타
7.40 SP05
  • 주요 요소
7.40 SP08
  • 대부분의 DB에 대한 입력 매개 변수
7.50
  • $115.user(동기식 이름)
  • $192.client(sy-mandt)
  • $165.system_언어(동기 언어)
  • AnyDB의 입력 매개 변수
  • 테이블 기능(SAP HANA만 해당)
7.51
  • $165.system_date(sy-datum)
  • 메타데이터 확장

[9]

ABAP의 내부 테이블

내부 테이블은 ABAP 언어의 중요한 특징이다.내부 테이블은 C++의 구조체 벡터 또는 자바의 물체 벡터와 유사하게 정의된다.이들 언어와 가장 큰 차이점은 ABAP가 내부 표의 내용에 쉽게 접근하고 조작할 수 있는 문장의 컬렉션을 제공한다는 점이다.ABAP는 배열을 지원하지 않는다는 점에 유의하십시오. 다중 요소 데이터 객체를 정의하는 유일한 방법은 내부 테이블을 사용하는 것이다.[citation needed]

내부 테이블은 고정 구조의 가변 데이터 세트를 ABAP의 작업 메모리에 저장하는 방법이며, 동적 배열의 기능을 제공한다.데이터는 한 줄씩 저장되며, 각 행의 구조는 동일하다.

내부 테이블은 프로그램 내에서 데이터베이스 테이블의 내용을 저장하고 포맷하는 데 사용하는 것이 바람직하다.또한 구조와 관련된 내부 테이블은 ABAP 프로그램에서 복잡한 데이터 구조를 정의하는 중요한 수단이다.

다음 예제는 데이터베이스 테이블 VBRK 형식의 두 필드가 있는 내부 테이블을 정의한다.

* 구조화 유형 먼저 정의 종류들: 시작 t_vbrk,          VBELN 유형VBRK-VBELN,          ZUONR 유형VBRK-ZUONR,        종료 t_vbrk.  * 이제 정의된 t_vbrk 유형의 내부 테이블을 정의하십시오. 데이터 : gt_vbrk 형식 표준 표 t_vbrk,        gt_vbrk_2 형식 표준 표 t_vbrk.   "더 많은 테이블을 정의해야 함  * 필요한 경우 구조(내부 테이블의 선)를 정의하십시오. * 유형 또는 내부 표와 관련된 정의: 데이터 : gs_vbrk 유형t_vbrk,        gs_vbrk_2 LOKE LOVEL OF gt_vbrk_2.  * 필요한 경우 테이블 유형 정의 가능 종류들 tt_vbrk 형식 표준 표 t_vbrk. 

역사

다음 목록은 ABAP 언어의 역사에서 몇 가지 중요한 이정표에 대한 대략적인 개요만 제공한다.자세한 내용은 ABAP - 릴리스별 변경을 참조하십시오.

버전 출시일자 주요 변경 사항
4.6C 2000년 5월
  • ABAP 객체
6.40 2004
7.0 2006
  • 스위치 프레임워크/향상 개념
7.02
  • 다음과 같은 표현
    수표 lcl=>mi(1) + 복근( -2 ) >= 3. 
7.40 2012-11-29
  • "코드 푸시다운"—기본 데이터베이스의 고급 기능 사용
  • 생성자 표현식(새, 값, REF, CONB, CAST, 정확, 콘덴트, 스위치)
  • 부분적으로 구현된 테스트 클래스 인터페이스
  • 표 식
  • 내부 테이블 라인 존재/라인 인덱스 기능
7.40 SP05 2013년 12월
  • MOVE-내부 테이블에 대한 대응
  • 생성자 식의 LET 식
  • 해당 연산자
  • CDS 보기
  • ABAP 관리 데이터베이스 절차
7.40 SP08 2014년 9월
  • FOR 표현식
  • 생성자 연산자 RENSE
  • 생성자 식의 시작 값
  • 내부 테이블의 그룹화 기준
  • 표 식에 대한 필터 식 및 기본값
  • INT 문 뒤에 SQL 인라인 선언 열기
  • 선택적 인터페이스 방법
7.50 2015년 11월
  • 새로운 내장 데이터 유형 INT8
  • 관계식 IS 인스턴스(instance of)
  • SQL 호스트 식 열기
  • 개방형 SQL 표현식 라운드, CONCAT, LPAD, 길이, 교체, 오른쪽, RTRIM 및 하위 문자열
  • SQL 경로 표현식 열기
  • 개방형 SQL 선택 유니언
  • SQL INSERT FROM 하위 쿼리 열기
7.51 2016년 10월
  • 열거형
  • Open SQL의 공통 테이블 식
  • SQL/CDS CROSS 조인 열기
  • CDS 클라이언트 처리
  • CDS의 메타데이터 확장
  • 개방형 SQL/CDS의 날짜 및 시간
  • 개방형 SQL/CDS의 부동 소수점
7.52 2017년 9월
  • 내부 테이블의 가상 정렬
7.54 2019년 9월
  • 새로운 내장 데이터 유형
  • 새로운 기본 제공 ABAP 유형utclong
  • 계산 할당
  • 타임스탬프의 소수점 자리 수
  • 클라이언트 처리
  • 의 확장자INTO
  • 연결 정의
  • 새 집계 함수STRING_AGG
  • 새로운 내장 기능
  • 덧셈DISTINCTAggregate 함수의 선택 사항COUNT
  • 창 표현식
  • 수정된 SQL 조건
  • 임시 계층 구조
  • 새 계층 네비게이터
  • SQL 식의 집계 식
  • CAST매트릭스 수정
  • 구문 검사에서 엄격한 모드
  • 리터럴 및 호스트 상수에 대한 구문 검사
  • 데이터베이스 힌트에 대한 주석
  • 요소 해제 주석
  • 다음 후 CDS 엔티티 지정USING
  • 논리 스키마에 대한 따옴표
  • 덧셈in place성명의late numbering
  • 덧셈in class ... unique
  • 수행의 외부 이름
  • 정적 필드 컨트롤
  • 처리기 메서드의 임의 이름
  • 동작 풀 예외 없음
  • 엔티티 조작 언어
  • TYPE STRUCTURE FOR
  • 응답 정보
  • 절대 유형 이름
  • 비즈니스 서비스
  • 업데이트의 권한 부여 확인
  • Implicative Message Type inIF_T100_DYN_MSG
  • 테스트 클래스 사용
  • 덧셈COMBINATION MODE OR AND성명의GRANT SELECT ON
  • 덧셈REDEFINITION성명의GRANT SELECT ON
  • 술어VOID
  • 덧셈IN SCENARIO성명의GRANT SELECT ON
  • 성명의 일반적 측면 조건DEFINE ROLE
  • 새로운 변종INHERITING CONDITIONS FROM SUPER
  • 다른REPLACING연산자
  • 일반 측면의 정의
  • ABAP CDS 계층 구조에 대한 DCL 제한
  • 트랜잭션 투영 뷰 도면요소에 대한 DCL 제한사항
7.55 2020년 9월
  • 내부 ABAP 문 EXPORT NAMETAB는 더 이상 사용할 수 없으며 런타임 오류로 이어진다.
  • 내부 ABAP 성명 Import NAMETAB는 하향 호환성을 이유로 여전히 부분적으로 지지되고 있다.DDIC 테이블 유형의 항목에 대한 모든 액세스는 런타임 오류로 이어진다.다른 접근은 ATC로부터의 오류로 이어진다.
  • 별도의 nameetab 필드 설명을 위한 이전 네이티브 데이터베이스 테이블 DDNTF는 더 이상 지원되지 않으며 삭제될 것이다.
  • 이제 CDS 투영 보기에서 외부 데이터 소스에 대한 새로운 연결을 정의할 수 있다.
  • CDS 보기 엔티티라는 새로운 종류의 CDS 보기를 사용할 수 있다.
  • 사용자 세션당 가능한 ABAP 세션 수를 결정하는 프로파일 매개 변수 rdisp/max_alt_mode의 기본값은 6에서 16으로 강화되었으며, 현재는 사용자 세션당 최대 ABAP 세션 수와 동일하다.
  • 시공자 연산자 REXT의 추가 뒤에 있는 할당에서는 계산 할당 연산자 +=, +=, *=, /= 또는 &&=를 지금 사용할 수 있으며, 각 규칙이 적용된다.
  • Perl 호환 정규식 지원
  • Verbatim Replacements
  • 새 탐지 가능한 예외 CX_SY_STRING_SIZE_TO_LARGE
  • 소수 부동 소수점 번호에 대한 옵션 CONFERNATION 포맷
  • SQL: 새 aggregate 함수 LEVE_PRECY_LOSS
  • SQL: 창 기능 내의 옵션 창 프레임 사양
  • SQL: 새 창 기능 FERT_VALUE 및 LAST_VALUE
  • SQL: TIMESTAMPL, DATS 및 TIMS에 대한 새로운 날짜/시간 변환 기능
  • SQL: 새 타임스탬프 함수 UTCL_CURRENT, UTCL_ADD_SEBYS 및 UTCL_SEBYNEW
  • SQL: 새로운 날짜 함수 DATN_DAYS_BEY, DATN_ADD_DAYS 및 DATN_ADD_MAUNTs
  • SQL: ORDER BY 조항 이후의 새 추가: NULS First 및 NULS LAST
  • SQL: 새로운 Aggregate 함수 MIDE, STDEV, VAR, CORR 및 CORR_SPEARMAN
  • SQL: as_geo_json 새 지오메트리 변환 함수
  • SQL 조건 수정
  • SQL: 새 창 함수 NTAILE
  • SQL: SELECT, INT Target - 이제 FROM 절제가 동적인 경우에도 호스트 변수를 인라인으로 선언할 수 있음
  • SQL: to_clob 및 to_blob으로 변환 함수 새로 만들기
  • SQL: 새로운 통화 변환 함수 통화 변환
  • SQL: 이제 스트리밍 및 로케이터를 SQL 표현식에 사용할 수 있음
  • SQL: 기본 SQL 식에 허용되는 추가 데이터 유형
  • SQL: 계층 로드 옵션
  • SQL: 입력된 리터럴
  • SQL: 새 문자열 함수
  • SQL: UPDATE FROM 절에 추가
  • SQL: 엄격한 구문 검사 모드
  • CDC 액세스:리터럴 조건에서 IS [NOT] INTERT 요소를 사용하여 확인
  • CDC 액세스:다음 시간 동안 추가 바이패스
  • CDC 액세스:사용자 조건에서 사용자 이름 확인
  • CDC 액세스:데이터 유형
  • CDC 액세스:측면 바이패스 조건
  • CX_NO_CHECK 예외 선언

참고 항목

참조

  1. ^ ABAP — 릴리스별 변경 사항:릴리스 7.5x의 변경 사항
  2. ^ 새로운 세대의 CDS 보기: CDS 보기 엔티티
  3. ^ ""ABAP History". SAP-technical.com". Archived from the original on 2017-11-15. Retrieved 2010-08-09.
  4. ^ 제품 가용성 매트릭스 참조
  5. ^ "Get Started with the ABAP Development Tools for SAP NetWeaver SAP Blogs".
  6. ^ 식이 많은 ABAP 프로그램의 예
  7. ^ "Classes", SAP NetWeaver 7.0, retrieved 10 August 2009
  8. ^ "ABAP Keyword Documentation".
  9. ^ "Core Data Services (CDS) ABAP Feature Matrix SAP Blogs".

외부 링크