Hey Tech
[SAP/ABAP] 구구단 프로그램 만들기(Internal Table, 반복문 활용) 본문
본 포스팅에서는 SAP(ABAP)에서 구구단을 테이블에 저장하고 출력하는 예제 코드를 공유합니다.
📚 목차
1. 실행결과
2. 테이블 Fields
3. 전체 코드
4. 코드 설명
5. 실행결과
1. 실행결과
실행결과 먼저 공유합니다. 위와 같이 1단부터 9단까지의 구구단을 출력하는 프로그램을 만들고자 합니다. 본 프로그램은 각 자릿수의 값과 연산자(*), 그리고 결괏값까지를 모두 Internal Table에 저장하는 프로세스를 반복합니다. 또한, 테이블 내 행(ROW) 데이터를 하나씩 접근하여 출력하도록 반복합니다. 이어지는 섹션에서 해당 프로그램 구현을 위한 기본적인 세팅방법과 코드를 공유합니다.
2. 테이블 Fields
테이블 Fields는 위와 같이 구성하였습니다. 구구단에서 첫 번째 숫자를 STR1, 두 번째 숫자를 STR2 필드에 저장하고, 연산자를 OPER 필드에 저장합니다. STR1과 STR2의 곱셈 결과를 VAL 필드에 저장합니다. 패키지 생성부터 테이블, View, 도메인 등의 생성 및 기본 세팅은 아래 포스팅들을 참고해 주세요.
패키지와 테이블 생성방법은 아래 포스팅을 참고해 주세요.
https://heytech.tistory.com/326
도메인, Data Element 생성 방법은 아래 포스팅을 참고해 주세요.
https://heytech.tistory.com/327
구조체 생성 방법은 아래 포스팅을 참고해 주세요.
https://heytech.tistory.com/329
Function Group, Maintenance View 생성 방법은 아래 포스팅을 참고해 주세요.
https://heytech.tistory.com/330
3. 전체 코드
REPORT ZOJT02_TEST01.
" 변수 정의
DATA: GT_A LIKE ZOJT02_T01 OCCURS 0 WITH HEADER LINE,
GV_ITERATION TYPE I VALUE 9,
GV_INTERVAL TYPE I VALUE 1.
" 변수 초기화
CLEAR: GT_A, GT_A[].
" 변수 할당
" 첫 번째 자리수는 1부터 시작하기 위해 값을 0으로 초기화
GT_A-STR1 = 0.
DO GV_ITERATION TIMES.
" 2번째 자리수는 1부터 시작하기 위해 값을 0으로 초기화
GT_A-STR2 = 0.
" 첫 번째 자리수는 단별 loop가 끝나면 1씩 증가
GT_A-STR1 = GT_A-STR1 + GV_INTERVAL.
DO GV_ITERATION TIMES.
" 2번째 자리수 1씩 증가
GT_A-STR2 = GT_A-STR2 + GV_INTERVAL.
GT_A-OPER = '*'.
GT_A-VAL = GT_A-STR1 * GT_A-STR2.
"Internal table에 값 추가
APPEND GT_A.
ENDDO.
ENDDO.
" 테이블 출력
LOOP AT GT_A INTO GT_A.
" 각 단이 시작할 때마다 구분용 문장 출력
IF GT_A-STR2 = 1.
WRITE: /,'==========', GT_A-STR1, '단 =========='.
ENDIF.
WRITE: / GT_A-STR1,
GT_A-OPER,
GT_A-STR2,
'=',
GT_A-VAL.
ENDLOOP.
전체 코드 먼저 공유해 드립니다. 상세한 설명은 다음 섹션에서 다룹니다.
4. 코드 설명
4.1. 변수 정의
REPORT ZOJT02_TEST01.
" 변수 정의
DATA: GT_A LIKE ZOJT02_T01 OCCURS 0 WITH HEADER LINE,
GV_ITERATION TYPE I VALUE 9,
GV_INTERVAL TYPE I VALUE 1.
- GT_A: 앞서 정의한 테이블을 참조하는 변수를 선언합니다.
- GV_ITERATION: 단수를 저장하는 변수로써 9단까지 구현하므로 초기값을 9로 설정합니다.
- GV_INTERVAL: 1씩 증가하는 단수와 곱할 숫자 값을 계산하기 위한 변수로써 초기값을 1로 설정합니다.
4.2. 변수 초기화
" 변수 초기화
CLEAR: GT_A, GT_A[].
Internal 테이블과 Structure 메모리를 초기화합니다.
4.3. 구구단 연산
" 변수 할당
" 첫 번째 자리수는 1부터 시작하기 위해 값을 0으로 초기화
GT_A-STR1 = 0.
DO GV_ITERATION TIMES.
" 2번째 자리수는 1부터 시작하기 위해 값을 0으로 초기화
GT_A-STR2 = 0.
" 첫 번째 자리수는 단별 loop가 끝나면 1씩 증가
GT_A-STR1 = GT_A-STR1 + GV_INTERVAL.
DO GV_ITERATION TIMES.
" 2번째 자리수 1씩 증가
GT_A-STR2 = GT_A-STR2 + GV_INTERVAL.
GT_A-OPER = '*'.
GT_A-VAL = GT_A-STR1 * GT_A-STR2.
"Internal table에 값 추가
APPEND GT_A.
ENDDO.
ENDDO.
이중 DO~ENDDO 구문을 활용하여 구구단 프로그램을 작성하였습니다. 첫 번째 반복문은 iteration마다 GT_A-STR1를 1씩 증가하도록 설계하였기 때문에 이중 반복문에 앞서 GT_A-STR1을 0으로 초기화하였습니다. 두 번째 반복문도 마찬가지로 iteration마다 GT_A-STR2를 1씩 증가하도록 설계하였기 때문에 두 번째 반복문이 시작하기에 앞서 GT_A-STR2를 0으로 초기화하였습니다. GT_A-OPER에는 연산자 기호(*)를 할당하고, GT_A-VAL 변수에 N단(=GT_A-STR1)의 1부터 9까지 곱한 값을 할당합니다.
4.4. 구구단 출력
" 테이블 출력
LOOP AT GT_A INTO GT_A.
" 각 단이 시작할 때마다 구분용 문장 출력
IF GT_A-STR2 = 1.
WRITE: /,'==========', GT_A-STR1, '단 =========='.
ENDIF.
WRITE: / GT_A-STR1,
GT_A-OPER,
GT_A-STR2,
'=',
GT_A-VAL.
ENDLOOP.
이제 앞서 테이블에 저장한 값을 LOOP~ENDLOOP 반복문을 활용하여 차례로 출력합니다. 구구단에서 뒤에 곱해지는 값(GT_A-STR2)이 1인 경우(e.g., 1*1, 2*1, ..., 9*1)에는 IF 조건문을 활용하여 현재 단 정보를 출력하도록 작성하였습니다. 뒤에 곱해지는 값이 1이 아닌 경우에는 "GT_A-STR1*GT_A-STR2=GT_A-VAL" 형태로 출력되도록 프로그램을 작성하였습니다.
5. 실행결과
F8을 눌러 실행결과를 확인해 보시면 위와 같이 출력되는 것을 확인하실 수 있습니다.
📚 참고할 만한 포스팅
1. SAP ERP 개념 및 12가지 모듈 소개
2. [SAP/ABAP] 기본 화면 구성 및 SAP Workbench 개발 도구
3. [SAP] 패키지, Software Component, Transport Layer 정리
4. [SAP/ERP] CTS, Sandbox, Transport Organizer, IMG, NOTES 정리
5. [SAP/ERP] Client, Company Code 개념 및 특징
6. [SAP] ABAP 변수 네이밍 규칙
7. [SAP/ABAP] 패키지 및 테이블 생성 방법
8. [SAP/ABAP] 도메인 및 Data Element 생성 방법
9. ERP 개념, 필요성, 국내 도입 현황, 시장 점유율
10. [SAP/ABAP] 도메인 및 Data Element 생성 방법
11. [SAP/ABAP] 구조체 개념, 생성방법, 테이블 내 구조체 연결 방법
12. [SAP/ABAP] Function Group, View 생성 방법, Table Maintenance Generator 세팅
13. [SAP/ABAP] 구구단 프로그램 만들기(Internal Table, 반복문 활용)
오늘은 ABAP을 활용하여 구구단 프로그램을 작성하는 간단한 예제를 살펴봤습니다.
포스팅 내용에 오류가 있거나 코드 리뷰, 피드백 모두 환영합니다😊
아래에 👇👇👇 댓글 남겨주시면 감사드리겠습니다.
그럼 오늘도 즐겁고 건강한 하루 보내시길 바랍니다 :)
고맙습니다.
'SW 개발 > ABAP(SAP)' 카테고리의 다른 글
[SAP/ABAP] Subroutine 개념 및 Perform 구문 이해 (0) | 2022.03.28 |
---|---|
[SAP/ABAP] Function Group, View 생성 방법, Table Maintenance Generator 세팅 (0) | 2022.03.15 |
[SAP/ABAP] 구조체 개념, 생성방법, 테이블 내 구조체 연결 방법 (0) | 2022.03.14 |
[SAP/ABAP] 도메인 및 Data Element 생성 방법 (0) | 2022.03.10 |
[SAP/ABAP] 패키지 및 테이블 생성 방법 (0) | 2022.03.08 |