ABAP 언어에 대한 개념을 정리하는 포스팅입니다.
작성자는 ABAP에 대한 전문가가 아니며, 작성된 정보가 부정확할 수 있으니 게시글은 참고 목적으로만 봐주시면 감사하겠습니다.
1. View
관계형 데이터베이스에서는 여러 개의 테이블이 존재하고 그 테이블들에 데이터가 분산된 경우가 많습니다.
이런 데이터를 한 번에 조회하고자 할 경우 View를 사용합니다.
ABAP의 View도 이와 동일합니다. ABAP 프로그래밍 언어를 사용하여 SAP 데이터베이스의 데이터를 표시하기 위한 가상 테이블로 사용합니다.
이렇듯 View는 가상테이블로 데이터를 다양한 테이블이나 뷰로부터 조합해서 사용할 수 있습니다.
View는 Database, Maintenance, Projection, Help 4가지의 종류가 있습니다.
먼저 Database View는 여러 개의 테이블에서 필요한 데이터들을 추출한 View를 의미합니다.
Database View는 Transparent 테이블만 사용할 수 있습니다.
Database View는 복잡한 데이터 구조를 단순화하고 데이터 액세스를 편리하게 만드는 강력한 도구로 널리 사용됩니다.
Maintenance View는 테이블의 데이터를 유지보수(생성, 수정, 삭제)할 수 있는 뷰 입니다.
Maintenance View는 Maintenance Dialog까지 생성해야 합니다.
여러 개의 테이블을 통해 Maintenance View 생성 시 테이블과 테이블이 Foreign Key(외부 키)로 관계가 맺어져 있어야 합니다.
Projection View를 사용하면 다양한 데이터 소스에서 필요한 필드만 선택하여 가상 테이블을 생성할 수 있습니다. 또한, 복잡한 데이터 모델을 단순화하고 필요한 데이터만 선택하여 효율적으로 처리할 수 있습니다.
Help View는 SAP 시스템에서 주로 데이터 입력 화면에서 사용자가 필드에 값을 입력할 때 도움을 제공하는 데 사용됩니다.
Help View를 사용하여 데이터 입력 화면을 보다 사용자 친화적으로 만들고 입력 오류를 줄일 수 있습니다.
2. Select Option
Select Option은 테이블에서 여러 건을 가져오고 싶을 때 사용하는 구문으로 코드 선언은 다음과 같습니다.
SELECT-OPTIONS: S_DATE FOR SY-DATUM,
S_ENDDATE FOR SY-DATUM.
SELECT-OPTIONS 필드를 정의하기 위해선, SELECT-OPTIONS 키워드 뒤에 FOR가 나와야합니다. FOR 다음에는 시스템 변수 혹은 <테이블 이름-테이블의 컴포넌트>가 나오면 됩니다.
선언하고 실행 시 이런 결과창이 나옵니다.
위 결과창에서 오른쪽에 있는 노란색 버튼은 멀티플 셀렉션이라고 합니다.
Multiple Selection은 사용자가 여러 개의 값을 선택할 수 있는 기능을 의미합니다. 주로 선택 옵션(Select-Option)이나 다중 선택 목록에서 사용됩니다.
SELECT-OPTIONS는 위 사진처럼 나오지만 아래 사진처럼 필드의 값을 고정시킬 수도 있습니다.
필드의 값을 고정 시키기 위해선 아래 코드를 작성해주시면 됩니다.
INITIALIZATION.
SO_CAR-SIGN ='I'.
SO_CAR-OPTION = 'BT'.
SO_CAR-LOW = 'AA'.
SO_CAR-HIGH = 'DL'.
APPEND SO_CAR.
코드에 적혀있는 SIGN, OPTION, LOW, HIGH는 SELECT-OPTIONS의 인터널 테이블입니다.
SIGN: 각 행에 대해 LOW 및 HIGH 필드의 값을 포함할 것인지 아니면 제외할 것인지를 결정합니다. Include, Exclude를 사용합니다 (I, E)
OPTION: 행의 선택 조건에 대한 관계 연산자를 포함합니다.
사용되는 연산자는 EQ(동일), NE(동일하지 않음), GE(이상), GT(초과), LE(이하), LT(미만), BT(사이), NB(사이가 아님)입니다.
LOW: 값의 범위 중 하위 구간을 정의합니다.
HIGH: 값의 범위 중 상위 구간을 정의합니다.
3. Selection-Screen
Selection-Screen은 ABAP 프로그램에서 사용자로부터 입력을 받거나 설정을 조정하기 위한 화면을 나타냅니다. 주로 데이터를 검색하거나 보고서를 실행할 때 사용됩니다.
조회조건으로는 PARAMETERS 문 또는 SELECT-OPTIONS 문을 사용할 수 있습니다. 파라미터 이름은 8자리까지만 가능하며, 8자리 초과시 구문 오류가 발생합니다.
구현 및 호출시 다음과 같은 코드를 사용합니다.
SELECTION-SCREEN BEGIN OF SCREEN 1100.
PARAMETERS: PA_AA TYPE C
SELECT-OPTIONS: SO_AA FOR WA_AA-AA.
SELECTION-SCREEN END OF SCREEN 1100.
CALL SELECTION-SCREEN 1100.
Selection-Screen을 블록 형태로 표시하고 싶으면 아래 코드를 참고해주시면 됩니다.
SELECTION-SCREEN BEGIN OF BLOCK blk1 WITH FRAME.
select-OPTIONS: so_car FOR gs_flight-carrid MEMORY ID car,
so_con FOR gs_flight-connid MEMORY ID con,
so_fdt FOR gs_flight-fldate MEMORY ID day.
SELECTION-SCREEN end OF BLOCK blk1.
SELECTION-SCREEN END OF SCREEN 1100.
작성 시 블록 안에 선택 옵션이 들어갑니다.
선택 옵션을 라디오 버튼 형태로 적용하고 싶다면 아래 코드를 참고해주시기 바랍니다.
SELECTION-SCREEN BEGIN OF BLOCK blk3 WITH FRAME.
PARAMETERS: pa_all RADIOBUTTON GROUP rb1 DEFAULT 'X',
pa_dom RADIOBUTTON GROUP rb1,
pa_int RADIOBUTTON GROUP rb1.
SELECTION-SCREEN END OF BLOCK blk3.
* 라디오 버튼을 한 줄로 표시하려면 SELECTION-SCREEN BEGIN OF LINE ~ END OF LINE 구문을 사용해주시면 됩니다.
선택 옵션을 체크 박스 형태로 적용하고 싶다면 아래 코드를 참고해주시기 바랍니다.
SELECTION-SCREEN BEGIN OF BLOCK blk2 WITH FRAME TITLE text-t01.
SELECTION-SCREEN begin of line.
selection-screen comment 1(20) text-c01.
selection-screen comment 22(10) text-c02 for field pa_chk1.
PARAMETERS: pa_chk1 as CHECKBOX.
selection-screen comment 35(10) text-c03 for field pa_chk2.
PARAMETERS: pa_chk2 AS CHECKBOX. "DEFAULT 'X'.
selection-screen comment 50(10) text-c04.
PARAMETERS: pa_chk3 AS CHECKBOX.
selection-SCREEN END OF line.
SELECTION-SCREEN END OF block blk2.
Selection-Screen