티스토리 뷰
TAW10_1 Exercise 13: Basic ABAP Statements
아밥 기본 구문
Execrise Objectives
이번 예제를 통해 배울 수 있는 것
·Elementary 데이터 오브젝트 생성
·오브젝트에 값 할당
·조건 분기 선언
·계산 수행
Business Example
해당 값과 연산자를 입력 받아서 사칙연산(+-*/)을 할 수 있는 아밥 프로그램을 만듭니다.
Task 1:
프로그램 생성
1.'TOP include'에 체크를 풀고 프로그램 'ZBC400_01_COMPUTE'을 생성하자.
Task 2:
입력 파라메터를 선언하자(선택 화면에 대한 묵시적인 선언이다)
1.두개의 정수형 값을 넘겨줄 수 있는 입력 파라메터를 생성하자(추천 이름은 'pa_int1', 'pa_int2' 이다) 그리고 산술 연산자도 선언해 주자(추천 이름은 'pa_op').
Task 3:
계산을 하고 결과를 LIST화면에 출력하도록 만들자.
1.추가로 결과 값에 대한 데이터 오브젝트를 선언하자. 타입은 두자리의 소수점자리를 가지는 Packed number로 하자.(추천 이름은 'result' 이다).
2.지정된 산술 연산자로 계산을 수행하자. CASE문을 사용하면 된다.
3.결과를 화면에 출력하자.
Tesk 4:
잘못된 입력 확인 하기.
1.사용자가 잘못된 연산자(+-*/ 말고 다른 것)를 입력한 경우 리스트 화면에 에러 메세지를 출력하자. IF문을 사용해서 확인 하면 된다.
2.사용자가 0으로 나누려고 할 경우 에러메세지를 출력하자.
Hint:다음 장에서 조금 더 세련된 방법으로 에러를 잡는 법을 배울 것이니 걱정말자.
이번 연습문제에서 해볼 것은 위와 같다. 하나씩 해보도록 하자.
Task 1:
프로그램 생성
1.'TOP include'에 체크를 풀고 프로그램 'ZBC400_01_COMPUTE'을 생성하자.
Task 2:
입력 파라메터를 선언하자(선택 화면에 대한 묵시적인 선언이다)
1.두개의 정수형 값을 넘겨줄 수 있는 입력 파라메터를 생성하자(추천 이름은 'pa_int1', 'pa_int2' 이다) 그리고 산술 연산자도 선언해 주자(추천 이름은 'pa_op').
PARAMETERS pa_int2 TYPE i.
PARAMETERS pa_op(1) TYPE c.
계산을 하고 결과를 LIST화면에 출력하도록 만들자.
1.추가로 결과 값에 대한 데이터 오브젝트를 선언하자. 타입은 두자리의 소수점자리를 가지는 Packed number로 하자.(추천 이름은 'result' 이다).
아래 소스코드 한줄 추가해주면 된다.
DATA result type p DECIMALS 2.
2.지정된 산술 연산자로 계산을 수행하자. CASE문을 사용하면 된다.
----------------------------
CASE pa_op(1).
when '+'.
result = pa_int1 + pa_int2.
when '-'.
result = pa_int1 - pa_int2.
when '*'.
result = pa_int1 * pa_int2.
when '/'.
result = pa_int1 / pa_int2.
ENDCASE.
----------------------------
3.결과를 화면에 출력하자.
'F8'을 눌러보자.
이런 화면이 나온다.
10+20 을 해보자.
좌측 상단 '실행'버튼을 누르거나 단축키 'F8'을 누르면 실행 된다.
결과값 '30'이 나온다.
Tesk 4:
잘못된 입력 확인 하기.
1.사용자가 잘못된 연산자(+-*/ 말고 다른 것)를 입력한 경우 리스트 화면에 에러 메세지를 출력하자. IF문을 사용해서 확인 하면 된다.
입력을 받은 다음에 입력 받은 값을 가지고 에러메세지를 띄울지 다음으로 넘어갈지 판단하는 로직을 넣어보자.
IF NOT ( pa_op(1) = '+' OR pa_op(1) = '-' OR pa_op(1) = '*' OR pa_op(1) = '/' ). WRITE: 'Invalid Operator'. ELSE. CASE pa_op(1). WHEN '+'. result = pa_int1 + pa_int2. WHEN '-'. result = pa_int1 - pa_int2. WHEN '*'. result = pa_int1 * pa_int2. WHEN '/'. result = pa_int1 / pa_int2. ENDCASE. WRITE result. ENDIF.
IF문으로 감싸주면 가볍게 끝난다. 코드가 점점 길어지니 소스코드 캡춰 화면은 생략하고 결과 화면만 보자.
10^20승 만큼 통장잔고가 있으면 좋겠으므로 10^20 을 해보자.
아까 입력 했던 잘못된 연산자라는 메세지가 나온다.
2.사용자가 0으로 나누려고 할 경우 에러메세지를 출력하자.
Hint:다음 장에서 조금 더 세련된 방법으로 에러를 잡는 법을 배울 것이니 걱정말자.
0으로 나누는 연산을 하면 에러가 난다. 진짜 나나 안나나 한번 확인해보자.
10 / 0.
결과는..
0으로 나누었다는 에러메세지.
이런 에러메세지가 나오기 전에 사용자에게 경고를 함으로써 0으로 나누지 못하도록 해보자.
IF조건절에 ELSE IF로 조건을 하나 더 주면 된다.
-------
ELSEIF pa_int2 = 0.
WRITE: 'You cannot divide into 0'.
------
PARAMETERS pa_int1 TYPE i. PARAMETERS pa_int2 TYPE i. PARAMETERS pa_op(1) TYPE c. DATA result TYPE p DECIMALS 2. IF NOT ( pa_op(1) = '+' OR pa_op(1) = '-' OR pa_op(1) = '*' OR pa_op(1) = '/' ). WRITE: 'Invalid Operator'. ELSEIF pa_int2 = 0. WRITE: 'You cannot divide into 0'. ELSE. CASE pa_op(1). WHEN '+'. result = pa_int1 + pa_int2. WHEN '-'. result = pa_int1 - pa_int2. WHEN '*'. result = pa_int1 * pa_int2. WHEN '/'. result = pa_int1 / pa_int2. ENDCASE. WRITE result. ENDIF.
위와 같이 넣어주면 된다.
그러면 한번 실행 해보자.
다시 0으로 나누려는 사용자.
하지만 이번엔 에러가 나는 대신 경고 메세지다.
END.
'SAP' 카테고리의 다른 글
누구나 할 수 있는 ABAP - 시작 예고(프롤로그) by KRK (1) | 2013.10.29 |
---|---|
누구나 할 수 있는 ABAP - Exercise 14: Working with Structures (2) | 2013.10.29 |
누구나 할 수 있는 ABAP - Exercise 12: Creating Transactions (1) | 2013.10.28 |
누구나 할 수 있는 ABAP - Exercise 11: Developing ABAP Programs (0) | 2013.10.28 |
누구나 할 수 있는 ABAP - Exercise 10: Organizing Developments(처음) (0) | 2013.10.28 |
- Total
- Today
- Yesterday
- 2017 티스토리 결산
- vim
- docker container case
- 싱가폴
- docker container tissue
- 이직
- 개발자
- 도커컨테이너
- docker container whale
- 도커티슈박스
- shellscript
- Sh
- 도커각티슈박스
- docker container tissue box
- 도커티슈케이스
- 도커각티슈케이스
- Linux
- docker container
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |