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 내부에서 할당만 해주는 방법으로 중복을 제거했다.
위와 같은 노력의 이유는 중복되는 코드를 줄여 데이터 처리 속도를 높이기 위함이다. 해당 프로그램의 데이터는 많지 않기에, 현 시점에서는 차이가 나지 않는다. 하지만 데이터가 많아지게 된다면 차이가 날 것이라고 생각했기 때문이다.
REFRESH 버튼을 누르면 검색 화면을 초기 값으로 되돌린다.
사용자가 기내식을 신청 또는 취소하면, 해당 정보를 기준으로 ALV에 최신 정보를 출력한다. 이 때 추가적으로 신청 혹은 취소하고 싶은 예약 정보가 존재할 것이라고 판단하여 초기값으로 되돌리는 버튼을 추가해주었다.
예약 정보를 조회한 ALV에서 사용자 ID, 항공사 코드, 항공 스케줄, 신청한 기내식 정보 등을 조회하고 싶을 때 해당 EVENT를 통해 정보를 보여줄 수 있다.
사용자는 각각 CUSTOMER NAME, MSTAT, CONNID, FLIGHT DATE 등의 정보를 DOUBLE CLICK 해 추가 정보를 볼 수 있다.
사용자가 해당 EVENT를 실행하면 다음과 같은 LOGIC이 실행된다.
CLASS 내부에 선언되어 있는 METHOD EVENT를 통해 POPUP SCREEN으로 이동하고 해당 PBO, PAI를 거쳐 POPUP에 정보를 다음과 같이 보여준다.
해당 EVENT는 ALV 내 에서 기내식 신청 정보를 누르고 DETAIL 버튼을 누르면 또 다른 ALV를 띄워 과거 이력부터 현재 이력까지 모든 기내식 신청 이력을 보여주는 로직이다. 현재 프로그램에서는 최신 이력만 조회가 가능하기에 이전 기록을 필요로 할 수도 있다고 판단해, 해당 로직을 구현하게 되었다.
사용자가 이해하기 쉽게 각각 기내식 메뉴 정보를 TEXT로 변환해 보여주었고, FUNCTION MODULE과 PERFORM을 사용해서 코드 가독성 및 효율을 증가 시켰다.
실제 상황을 모두 담기 위해서는 더욱 세밀한 코드 구성이 필요하지만, 현실의 모든 경우를 담기에는 데이터의 양과 질 모두 부족하다는 생각이 든다. 앞으로 개발할 프로그램에서는 현실적인 부분들을 추가하고, 발전시킬 수 있는 부분이 있을지 고민해야겠다.
결론적으로!! 코드 구성을 할 때는 중복된 코드를 줄이고 효율적인 작업이 이루어지도록 하자!!!! 요 기 까 지 ~~~!!