[SAP ABAP] Flight Meal CRUD PROGRAM

송의찬·2024년 3월 12일
3

ABAP 탐험

목록 보기
3/6
post-thumbnail

기내식 신청 CRUD PROGRAM

이번 블로그에서는 직접 설계부터 코드 구현까지 진행한 기내식 신청 CRUD PROGRAM에 대해서 이야기 하려고 한다. 그럼 시작~~

CODE FLOW

  • 기본적으로 프로그램을 시작하면 곧바로 모든 정보가 보이는 것이 아니다!! 어떠한 액션이 발생하면 PAI를 타게 되고, PAI LOGIC에 맞게 정보를 가져오게 된다. 다음은 해당 프로그램에서 사용된 액션 코드들이다.

BASIC FLOW LOGIC

  • CRUD PROGRAM에서는 CREATE, UPDATE, INSERT, DELETE가 동작한다. 모든 CRUD 구현 과정은 중요하지만, 특히 DELETE 구문 구현할 때는 DB TABLE 자체 정보를 지울 수 있기 때문에, 상시 주의해서 코드를 구현해야 한다.

  • 아래 그림은 이번 프로그램에서 이루어지는 SCREEN FLOW 이다. 기본 프로그램에서부터 각각의 CRUD가 다음과 같이 동작한다.

  • SEARCH 버튼은 ALV에 사용자에게 필요한 정보를 보여주는 것이 주 목적이다. 때문에 SEARCH 버튼을 누르면, DB TABLE에서 SELECT를 통해 필요한 정보들을 가져온다.

  • 코드 구현 시 효율을 중시하는 필자이기에 데이터 처리 속도를 높이기 위해 CDS VIEW를 활용했고, LOOP문 활용 시 중복 코드를 제거하기 위해 노력했다.

  • 예를 들어 ITAB에 데이터 추가 시, 도메인 관련 텍스트를 LOOP문 외부에서 FUNCTION MODULE을 사용해 ITAB에 담았고, 이후 LOOP 내부에서 할당만 해주는 방법으로 중복을 제거했다.

  • 위와 같은 노력의 이유는 중복되는 코드를 줄여 데이터 처리 속도를 높이기 위함이다. 해당 프로그램의 데이터는 많지 않기에, 현 시점에서는 차이가 나지 않는다. 하지만 데이터가 많아지게 된다면 차이가 날 것이라고 생각했기 때문이다.

ACTION NO.2 : DETAIL

  • 조회된 예약 정보를 선택하고 Detail 버튼을 누르면 신청한 기내식 메뉴 및 식사 종류를 자세하게 보여준다. 만일 사용자가 메뉴를 변경하고 싶다면 취소 후 변경할 수 있다.

ACTION NO.3 : ADD

  • 기내식을 새롭게 신청하는 사람들을 위해 해당 로직을 구성하였다. ALV 내에서 선택한 후에 ADD버튼을 누르면 CALL SCREEN을 만나 기내식 신청 화면으로 이동한다.

  • 기내식 신청이 가능한 날짜는 비행기 출항 이틀 전까지 가능하기 때문에, 비행기가 이미 출발했거나, 기간이 지났다면 추가할 수 없도록 제한을 걸었다.

ACTION NO.4 : CANCEL

  • 이미 신청한 기내식을 취소하고 싶어하는 사람들을 위해 로직을 구성했다. ALV 내에서 예약 정보를 선택한 후에 Cancel 버튼을 누르면 기내식 신청 취소가 완료된다.

  • 기내식 취소 신청 또한 비행기 출항 이틀 전까지 가능하기 때문에, 비행기가 이미 출발했거나, 기간이 지나면 추가할 수 없도록 제한을 걸었고, 신청한 기내식이 없다면 취소가 이루어지지 않는다.

ACTION NO.5 : REFRESH

  • REFRESH 버튼을 누르면 검색 화면을 초기 값으로 되돌린다.

  • 사용자가 기내식을 신청 또는 취소하면, 해당 정보를 기준으로 ALV에 최신 정보를 출력한다. 이 때 추가적으로 신청 혹은 취소하고 싶은 예약 정보가 존재할 것이라고 판단하여 초기값으로 되돌리는 버튼을 추가해주었다.

EVENT : DOUBLE CLICK

  • 예약 정보를 조회한 ALV에서 사용자 ID, 항공사 코드, 항공 스케줄, 신청한 기내식 정보 등을 조회하고 싶을 때 해당 EVENT를 통해 정보를 보여줄 수 있다.

  • 사용자는 각각 CUSTOMER NAME, MSTAT, CONNID, FLIGHT DATE 등의 정보를 DOUBLE CLICK 해 추가 정보를 볼 수 있다.

  • 사용자가 해당 EVENT를 실행하면 다음과 같은 LOGIC이 실행된다.

  • CLASS 내부에 선언되어 있는 METHOD EVENT를 통해 POPUP SCREEN으로 이동하고 해당 PBO, PAI를 거쳐 POPUP에 정보를 다음과 같이 보여준다.

DOUBLE CLICK : CUSTOMER NAME

DOUBLE CLICK : MSTAT

  • 해당 EVENT는 ALV 내 에서 기내식 신청 정보를 누르고 DETAIL 버튼을 누르면 또 다른 ALV를 띄워 과거 이력부터 현재 이력까지 모든 기내식 신청 이력을 보여주는 로직이다. 현재 프로그램에서는 최신 이력만 조회가 가능하기에 이전 기록을 필요로 할 수도 있다고 판단해, 해당 로직을 구현하게 되었다.

  • 사용자가 이해하기 쉽게 각각 기내식 메뉴 정보를 TEXT로 변환해 보여주었고, FUNCTION MODULE과 PERFORM을 사용해서 코드 가독성 및 효율을 증가 시켰다.

DOUBLE CLICK : CONNID

DOUBLE CLICK : FLIGHT DATE

KEY POINT!!!

  • 실제 상황을 모두 담기 위해서는 더욱 세밀한 코드 구성이 필요하지만, 현실의 모든 경우를 담기에는 데이터의 양과 질 모두 부족하다는 생각이 든다. 앞으로 개발할 프로그램에서는 현실적인 부분들을 추가하고, 발전시킬 수 있는 부분이 있을지 고민해야겠다.

  • 결론적으로!! 코드 구성을 할 때는 중복된 코드를 줄이고 효율적인 작업이 이루어지도록 하자!!!! 요 기 까 지 ~~~!!

profile
Best efficiency, customer satisfaction

0개의 댓글