ABAP을 배운지 1달이 좀 넘었습니다.
처음엔 답도 없이 막막했지만, 최근엔 혼자 공부도 해보고, 멘토링 실습을 통해 많은 정보를 찾고, 또 직접 코드를 분석해보면서 ABAP에 대해 배우고 있습니다.
하지만 막상 퀴즈를 풀 때면 머리가 초기화되는 걸 보면 아직도 많이 모르고 부족하다고 생각합니다.
특히 퀴즈가 주어지면 퀴즈의 내용을 읽어가면서 코드를 짜야하는데, 1번을 안보고 2번, 3번부터 보고 코드를 짜려는 생각을 하고 있습니다. 순서에 맞춰 짜야되는데 그렇게 하고 있지 않은거죠.
특히 오늘 진행했던 퀴즈에선 테이블을 만들고 그에 대한 외부키 지정, 컴포넌트에 할당한 데이터 엘리먼트와 엘리먼트에 대한 도메인까지 잘 만들어서 할당시켜놓고, 스크린에서 레이아웃을 못만들어서 쩔쩔매던 모습을 보면 아직도 순서를 맞추지 못하고 있다고 생각합니다. 따로따로 나눠서 보면 할 수 있는데 말이죠.
그래서 전 다음과 같은 원칙을 지키려고 합니다. 나중에 또 달라질 수도 있겠지만 지금 당장은 자주 쓰일 거 같을테니 그냥 그렇게 하겠습니다.
1. 프로그램 제안서를 확인
2. 관련된 테이블 생성, 테이블에 컴포넌트 입력하고 데이터 엘리먼트 선언, 데이터 엘리먼트가 없으면 엘리먼트 생성
3. 컴포넌트에 대한 개인 키, 외부 키 지정
4. 생성해야 할 프로그램을 확인(모듈 풀, 레포트)
* 모듈 풀 프로그램은 트랜잭션 코드(T-Code)가 반드시 필요하다. 또한, 반드시 스크린을 만들어야 한다.
5. Include 생성 (TOP, I01, O01, F01, E01) > 생성 후 활성화
6. 스크린 생성 > 스크린에 표시될 레이아웃 생성
7. TOP, I01, O01, F01, E01 등에 적절한 구문 작성
앞에서 신세한탄을 좀 했지만 사실, 오늘은 진도를 나가지 않고 퀴즈 2개를 진행했습니다.
그렇기에 적을 내용이 많이 없어서, 해설을 들으면서 몰랐던 부분을 확인하고, 정리하고자 합니다.
1. 퀴즈에서 원하는 정답은 Flight Date 필드의 값을 오늘 날짜를 기준으로 작년 1달을 고정값으로 잡는 것이었습니다.
이번 달이 1월이니 퀴즈에서 원하는 답은 작년 12월이겠죠, 아래 사진처럼요.

처음엔 내용 자체가 이해가 안됐지만 코드를 보니 그렇게 어려웠던 내용은 아니었던 것 같습니다. 근데 당시엔 몰랐으니까 어려웠던 거고, 이젠 알아야겠죠?
1-1. 원하는 답을 구하기 위해선 먼저 HIGH 값을 선언합니다. HIGH 값은 사진에서 23.12.31에 해당합니다.
* Select-Options는 4가지의 컴포넌트를 가지고 있습니다. (SIGN, OPTION, LOW, HIGH)
1-2. sy-datum(현재 날짜) 시스템 변수를 이용해 현재 날짜의 년, 월을 읽어오고 일을 01로 바꿔줍니다. 이러면 24.01.01이 됩니다.
1-3. HIGH 값이 24.01.01이 되었으니 저번 달이 나오게 하기 위해 1을 뺍니다. 날짜는 24.01.00이 될 수 없으니, 23.12.31로 돌아갑니다.
1-4. LOW 값은 계산된 HIGH 값에서 날짜의 년, 월을 읽어오고 일을 01로 바꿔줍니다. 이러면 23.12.01이 됩니다.

2. 이 구문은 저번 실습때 했던 거였는데..... 제가 까먹은 겁니다. 3번은 안까먹는다 생각하고 기록해놓겠습니다.
2-1. PA_ALL 변수는 모든 항공편을 받아오는 변수입니다. 모든 항공편을 받아오는 것은 어렵지 않기에 넘어가겠습니다.
2-2. PA_DOM 변수는 국내선을 받아오는 변수입니다. 국내선은 국내에서 출발하여 국내로 도착하는 것이기에 COUNTRYFR값과 COUNTRYTO값이 똑같아야 합니다. 그렇기에 아래와 같은 구문을 입력해주시면 됩니다.
2-3. PA_INT 변수는 국제선을 받아오는 변수입니다. 국내선은 국내에서 출발하여 해외로 도착하는 것이기에 COUNTRYFR값과 COUNTRYTO값이 달라야 합니다. 그렇기에 아래와 같은 구문을 입력해주시면 됩니다.
