[Project] PO CRUD Program - 프로그램 설명

JIHUN LEE·2024년 6월 3일

전체적인 로직과 함께 유저 친화적인 프로젝트를 진행한 방법에 대해 기술을 해보려 한다.

카쉐어링 기업의 PO(구매오더)를 관리하는 프로그램을 구현하였다.

ER Diagram

2개의 PO테이블과 4개의 Master테이블을 활용하여 ERD를 작성하였다. 큰 틀의 구매오더 문서를 Header 테이블의 값이 되고, 한 문서안에 어떤 품목들이 주문되었는지에 대한 정보는 Item테이블에서 관리할 수 있도록 구성하였다. Master 테이블과 Relation을 설정하여 다른 테이블을 활용하여 값을 가져올 수 있도록 ERD를 설정하였다.

초기 화면


프로그램을 실행했을 때, 초기 화면은 다음과 같다. 구매오더의 조회 조건은 구매오더 코드와 구매 일자를 사용하였다. 구매 일자의 Default Value는 오늘을 기준으로 4개월의 범위가 자동으로 입력될 수 있도록 설정하였다.

기능에 대해서 설명을 하자면, 조회조건에 따른 ALV List출력을 할 수 있는 PO 검색, ALV의 레코드를 선택한 후 해당 구매오더에 대한 상세 정보를 조회할 수 있는 PO 상세, 구매오더를 생성할 수 있는 PO 생성,선택된 구매오더의 정보를 변경할 수 있는 PO 변경이 있다.

알맞은 검색 조건을 입력 한 후 PO 검색을 수행하면 다음 사진과 같이 수행된다.

  • 유효하지 않은 범위를 입력 시 에러 메시지를 띄운다. 물결을 기준으로 앞의 입력값이 뒤의 입력값보다 클 때는 검색이 불가하다.
  • 물결 기준 뒷값을 입력하지 않으면 단건정보만 조회 가능하다.

조건에 맞게 검색된 구매오더 문서(Header)에 대한 정보가 ALV List로 띄워지고, 거래처와 구매 담당자 필드를 선택하면 아래와 같이 Hotspot이 실행되어 선택된 거래처나 구매담당자에 대한 정보를 Popup으로 조회할 수 있는 기능을 구현하였다.

상세 조회

위 사진과 같이 상세조회할 레코드를 선택한 후 PO 상세를 수행하면 Screen이 넘어가 아래와 같은 화면이 구성된다.구매오더 문서(Header)에 대한 정보와 해당 구매오더에서 구매한 품목 및 이하 정보가 ALV List로 출력된다.

먼저 구매오더 문서(Header)에 대한 기능 구현을 보자면, 거래처 상새 정보와 담당자 상세정보를 조회할 수 있는 기능을 구현하였다.

Tab Strip으로 구현하여 거래처를 조회해도 다른 탭으로 이동하여 담당자의 상세 정보를 조회할 수 있는 기능으로 유저 친화적 기능을 구현하였다.

ALV List에는 거래한 품목과 거래 수량, 거래 후 입고될 차고지, 구매 단가의 정보가 조회된다.

위 사진과 같이 하나의 Item을 선택한 후 아이템 상세 정보를 실행하면 아이템에 대한 정보가 Popup으로 띄워진다.
ALV에서는 확인할 필요 없었던 코드에 대한 정보와 비고의 메시지를 확인할 수 있다.

생성화면

초기 화면에서 PO 생성을 실행하면 아래 화면과 스크린이 전환된다.

구매오더코드는 'PO'+'당해년도'+'시퀀스'로 구성이 되는데 최근 구매오더 문서번호를 가져오고 룰에 맞는 코드를 자동으로 부여한다.


위 사진과 같이 구매오더 문서(Header)에 대한 정보를 입력하고 아이템을 생성할 수 있다. 거래처가 입력이 되어야 아이템을 생성할 때 거래처에 따른 품목으로 주문을 생성할 수 있다.

구매오더 아이템 생성버튼을 누르면 위와 같은 팝업이 생성된다.

  • 품목 코드는 거래처에 해당하는 품목만 입력이 가능하고 그렇지 않다면 오류 메시지가 띄워진다.
  • 구매 납품일 역시 구매일자보다 이른 날짜로 입력이 되면 오류 메시지를 띄운다.

위와 같이 값을 입력한 후 저장하면 아래 사진과 같이 저장이 된다. 또한 품목코드를 입력한 후 Enter를 치면 구매 단가가 불려온다. 구매단가는 거래처에서 제공하는 값이기 때문에 엔터를 통해 불러오지만, 구매 시기나 다양한 이유로 구매 단가가 바뀔 수 있기 때문에 Input Field를 활성화시켰다. 아이템 생성 후 PO 저장을 수행하면 정상적으로 구매오더 문서가 생성이 된다.

수정화면

입고처리 되지 않은 구매오더에 한해 구매오더 문서 수정이 가능하다. 수정하고 싶은 구매오더 레코드를 선택하여 PO수정을 수행하면 아래와 같은 스크린으로 전환된다.
구매오더의 코드를 제외한 데이터 수정이 가능하다. 구매오더 삭제 뿐 아니라 구매오더 아이템 생성, 삭제 수정이 가능하다. 구매오더 아이템 수정버튼을 누르면 아래와 같은 팝업이 생성된다.

선택된 레코드에 해당하는 정보를 블러오고 데이터를 수정할 수 있다.
구매오더 아이템을 삭제하고 저장하지 않는다면 DB테이블에 반영되지 않게 개발하였다.

마무리

이상 구매오더 관리 프로그램에 대한 플로우 로직에 대한 글이었다.

ABAP 프로그램을 개발하며 거듭할수록 코드가 깔끔해지고, 인터페이스 역시 유저 친화적으로 사용하려다보니 깔끔해지는 것 같다. 다음 게시글은 이 프로그램을 개발하며 나름 고민하며 개발하였던 부분을 담아 보려한다.

그럼 이만!

profile
Hello I'm Jihun

1개의 댓글

comment-user-thumbnail
2024년 6월 3일

사용자 친화적인 프로그램이 가장 좋죠~~ 저도 노력할게요~~^^

답글 달기