기본적인 ABAP Programming 개발 순서부터 SD의 최종 종착지인 매출까지 (물론 세금계산서 등등도 있지만..) 프로그램을 완성시켜보려한다.
지난 글에서는 이전 글에서 만들어놓은 프로그램을 구성하려면 어떤 부분부터 고민해야하는지 같이 알아보았다.
이번 글에서는 구상한 부분을 토대로 프로그램 개발을 진행할 것이다.
프로그램을 만드는 방법은 하단의 링크를 통해 확인하면 된다.
✔ ABAP 프로그램 만들기 - 개발
1. TOP INCLUDE
해당 INCLUDE에는 전역변수를 선언해준다.
TABLES의 경우 SELECT-OPTION, SQL등에서 사용할 테이블 구조를 선언해 주면된다.
DATA에 선언한 gt_list의 경우 화면에 뿌려주기 위한 변수들을 담은 인터널테이블이다.
변수 | 의미 |
GT | Global Table |
GV | Global Variable |
GS | Global Structure |
2. 데이터 불러오기
START-OF-SELECTION 아래에 PERFORM get_data 를 선언 후 더블클릭하여 F01 Include에 생성해준다.
해당 PERFORM문은 우리가 쿼리로 출력하였던 SQL문을 그대로 가져다와 선언해준다.
단, SQL EDITOR에서는 Alias를 . 으로 구분해주었다면 abap에서는 ~ 표시로 구분해주어야한다.
INTO CORRESPONDING 구문은 TOP INCLUDE에 선언한 gt_list 테이블에 필드명이 일치하는 값을 자동으로 매칭시켜 집어넣겠다는 의미이다.
IF gt_list[] IS INITIAL의 경우는 SQL 조회 결과 후 테이블에 아무런 변화가 없는 경우 즉, 조회결과가 없는 경우를 걸러내기 위한 제어문이다.
3. 데이터 확인하기
사진을 보면 IF문 왼쪽에 빨간색 중단점 체크를 해두었다.
( 해당 체크의 의미는 해당 지점부터 디버깅을 하겠다는 의미이다. )
해당 체크를 한 후 F8을 통하여 프로그램 실행을 하게되면 체크한 부분에서 프로그램 작동이 멈추게 될 것이다.
그 다음 우측하단에 GT_LIST[]라는 변수를 더블클릭하면 해당 테이블에 조회된 내역들이 나오게된다.
내역들이 정상적으로 조회된다면 쿼리를 올바르게 옮긴것이며, 조회되지않는 조건을 잘못 입력하였는지 검토가 필요하다.
4. 조회 화면 생성하기
실제로 조회하였을 때 사용자에게 보여질 화면을 선언해주어야한다.
본 글에서는 화면번호를 100으로 지정하여 선언해 주었다.
위의 이미지 순서대로 생성해주고 마지막 STATUS_0100은 O01 INCLUDE에 생성하주면된다.
조회화면 내에서 상단의 돌아가기 버튼들을 활성화시키고 제목을 설정하는 내용이다.
오브젝트를 생성하시겠습니까라고 한 이후 인터페이스 설정화면이 나오는데, 기능키 아래에 사진과 같이 BACK, EXIT, CANC를 입력 후 하나씩 더블클릭하여 기능유형 'E' 명령어종료를 선택하여 저장 후 활성화(CTRL + F3) 해준다.
- E : Exit-Command
저장 후 활성화를 누르지않으면 기능이 활성화 되지않으니 유의하셔야합니다.
해당 작업을 하는 이유는 상단의 버튼을 눌렀을 때 EVENT TRIGGER에서 버튼별로 BACK, EXIT, CANC 값을 인식하기 때문입니다. BACK을 눌렀을 때 이루어질 작업 등 여러가지 개발을 진행할 수 있습니다.
그 다음은 TITLE BAR를 생성해주는 것입니다.
위의 이미지와 같이 주석해제 후 입력해주신 후 더블클릭하면 제목을 입력하는 화면이 나옵니다.
이렇게 뒤로가기, 나가기, 취소하기 버튼 활성화 및 프로그램 화면 명칭 세팅이 완료되었습니다.
5. ALV 화면만들기
자 아까 선언해주었던 스크린 100번에 돌아와서 보면 상단에 →레이아웃 버튼이 있을 것이다 해당 버튼을 눌러보자
좌측 하단의 CUSTOM CONTAINER 버튼을 클릭 후 오른쪽 네모박스에 최대크기로 그려준다.
- 본인이 원하는 화면 사이즈대로 줄일 수 있다.
세팅 후 더블클릭하면 우측의 설정창이 나오는데 해당 설정 창에서 우리의 CUSTOM CONTAINER명을 CON1으로 입력해준다.
세팅 후 스크린 페인터도 저장 후 활성화(CTRL + F3) 해준 후 종료시킨다.
그 다음에는 TOP INCLUDE에 첫번째 이미지의 변수들을 선언해준다.
각각의 변수들은 이후 선언할 ALV에서 ALV관련된 데이터를 담는 역할을 한다.
아래에 정리할 ALV 기능별로 어떤 변수를 어떻게 활용하는지 보면 좋을 것 같다.
변수 선언 후 MODULE make_alv_0100을 선언해 주고 더블클릭하여 O01에 생성해준다.
마지막 이미지와 똑같이 코딩해준다.
이미지 상
1번 컨테이너 객체 생성의 경우 레이아웃에서 설정해주었던 CON1 컨테이너를 불러오는 역할을 한다.
2번 ALV 객체생성의 경우 1번에서 생성한 컨테이너 객체를 기반으로 ALV객체를 생성한다.
3번 필드카탈로그 세팅의 경우는 ALV 화면에 조회 될 컬럼들의 명칭을 지정하는 역할을 한다.
이미지 상
1번 레이아웃 타입설정의 경우 화면에 뿌려질 ALV의 옵션들을 지정하는 역할을 한다.
SEL_MODE | A : 여러 행, 열 선택가능 ( 행 선택 버튼 표시 ) B : 단일행, 열 선택가능 ( 행 선택 버튼 미표시 ) C : 여러 행, 열 선택가능 ( 행 선택 버튼 미표시 ) D : 여러 행, 열 및 셀별로 선택 ( 행 선택 버튼 표시 ) SPACE : B의 역할과 동일 |
CWIDTH_OPT | 열 너비 컬럼별 자동조절 |
SMALLTITLE | TITLE의 SIZE 기준 |
ZEBRA | 화면에 노출되는 색이 얼룩말 처럼 진한 행과 연한 행이 반복되는 듯하게 보여주는 설정 |
위의 선언한 옵션들에 대한 설명이다.
이외에도 많은 기능이 있으니 추후에 자세히 다루도록 하겠다.
2번 정렬 방식 세팅은 프로그램 조회 시 지정한 컬럼들 기준으로 자동 정렬되게 해준다.
3번 ALV 호출은 앞에서 세팅한 내용들을 기반으로 ALV를 화면에 그리도록해주는 함수를 사용하는 역할을 한다.
함수를 보면 앞에서 선언한 변수들이 기재되어 있는것을 볼 수 있다.
4번 REFRESH의 경우 이미 ALV가 한번 호출된 상태라면 객체를 다시 생성할 필요 없이 보여지는 화면만 다시 호출하면 된다.
6. EXIT 옵션 설정
화면과 같이 EXIT 관련 모듈을 선언해주고 더블클릭하여 I01에 상기 이미지와 같이 작성해준다.
I01에 선언해주는 이유는 사용자가 화면이 호출된 이후에 시스템에 신호를 보내는 작업이기 때문에다.
Proccess After Input(PAI)의 뜻을 이해할 수 있다.
SY-UCOMM이라는 변수에 사용자가 입력한 버튼이 가지고있는 값이 들어오게 되고 우리는 그 변수를 기반으로 어떤 작업을 할지 코딩해주면 된다.
결과 화면
이렇게 우리가 쿼리로 만든 내용을 화면에 ALV로 띄우는 것까지 성공하였다.
여기까지만 해도 문제는 없지만, 다음에는 get_data에 선언한 쿼리의 조회조건(where)에는 우리가 직접 보고싶은 거래처와 일자를 지정했는데 이 부분을 Selection Screen을 통해 지정하는 법을 다뤄보고 디테일한 부분들을 수정하여 프로그램을 완성 시켜볼 예정이다.
내용이 많아 부족한 부분이나 틀린부분이 있을 수 있습니다.
보시다가 문의 사항이 있으시다면 댓글로 문의 부탁드립니다.
감사합니다. :D
'SAP > ABAP' 카테고리의 다른 글
[ABAP/SD] 매출조회 프로그램 만들기(5) (1) | 2024.11.08 |
---|---|
[ABAP/SD] 매출조회 프로그램 만들기(4) (0) | 2024.11.07 |
[ABAP/SD] 매출조회 프로그램 만들기(2) (1) | 2024.10.30 |
[ABAP/SD] 매출조회 프로그램 만들기(1) (1) | 2024.10.18 |
[SAP/ABAP] ST04 - SqlEditor 쿼리 실행 (1) | 2024.10.08 |