*문제1. (5점)
*
* - 예약정보에서 각 항공사의 고객클래스별 로컬예약금액(LOCCURAM) 합계액을 구하시오.
* - 출력필드: 항공사코드, 항공사명칭, 고객클래스코드, 고객클래스명칭, 로컬통화키, 로컬총금액
* - SBOOK(예약정보), SCARR(항공사정보), DD07V(FixedValue)를 이용
DATA: BEGIN OF GS_FLIGHT01,
CARRID TYPE SCARR-CARRID,
CARRNAME TYPE SCARR-CARRNAME,
CLASS TYPE SBOOK-CLASS,
CLASS_NAME TYPE C LENGTH 20,
LOCCURKEY TYPE SBOOK-LOCCURKEY,
SUM_LOCCURAM TYPE SBOOK-LOCCURAM,
END OF GS_FLIGHT01.
DATA: GT_FLIGHT01 LIKE TABLE OF GS_FLIGHT01 WITH KEY CLASS.
SELECT A~CLASS,A~CARRID, B~CARRNAME, C~DDTEXT AS CLASS_NAME, A~LOCCURKEY, SUM( A~LOCCURAM ) AS SUM_LOCCURAM
FROM SBOOK AS A
INNER JOIN SCARR AS B
ON A~CARRID = B~CARRID
INNER JOIN DD07V AS C
ON A~CLASS = C~DOMVALUE_L
WHERE C~DOMNAME = 'S_CLASS'
* AND C~DDLANGUAGE = 'E'
AND C~DDLANGUAGE = @SY-LANGU
GROUP BY A~CLASS, A~CARRID, B~CARRNAME, C~DDTEXT, A~LOCCURKEY
ORDER BY A~CARRID
INTO CORRESPONDING FIELDS OF TABLE @GT_FLIGHT01.
BREAK-POINT.
*문제2. (10점)
*
* - 예약정보에서 공항코드별, 고객클래스별,로컬통화별 예약금액 합계액을 구하시오.
* - 출력필드: 공항코드, 로컬총금액, 로컬통화키
* - SBOOK(예약정보), SCOUNTER(영업소정보) 이용
DATA: BEGIN OF GS_FLIGHT02,
AIRPORT TYPE SCOUNTER-AIRPORT,
CLASS TYPE SBOOK-CLASS,
COUNTER TYPE SBOOK-COUNTER,
SUM_LOCCURAM TYPE SBOOK-LOCCURAM,
LOCCURKEY TYPE SBOOK-LOCCURKEY,
END OF GS_FLIGHT02.
DATA: GT_FLIGHT02 LIKE TABLE OF GS_FLIGHT02.
SELECT B~AIRPORT, A~CLASS, SUM( A~LOCCURAM ) AS SUM_LOCCURAM, A~LOCCURKEY
FROM SBOOK AS A
INNER JOIN SCOUNTER AS B
ON A~COUNTER = B~COUNTNUM
AND A~CARRID = B~CARRID
GROUP BY B~AIRPORT, A~CLASS, A~LOCCURKEY
ORDER BY B~AIRPORT, A~CLASS
INTO CORRESPONDING FIELDS OF TABLE @GT_FLIGHT02.
BREAK-POINT.
*문제3. (15점)
*
* - 예약정보에서 항공사코드,항공사명칭, 고객클래스별, 고객의 수와 흡연자 수를 구하시오.
* - 출력필드: 항공사코드,항공사명칭, 고객클래스코드, 고객클래스명칭, 고객수, 흡연자수
* - SBOOK(예약정보), SCARR(항공사정보), DD07V(FixedValue)를 이용
DATA: BEGIN OF GS_FLIGHT03,
CARRID TYPE SBOOK-CARRID,
CARRNAME TYPE SCARR-CARRNAME,
CLASS TYPE SBOOK-CLASS,
CLASS_NAME TYPE C LENGTH 20,
N_O_CUSTOMER TYPE I,
N_O_SMOKER TYPE I,
END OF GS_FLIGHT03.
DATA: GT_FLIGHT03 LIKE TABLE OF GS_FLIGHT03.
DATA COUNTER TYPE I.
SELECT A~CARRID, B~CARRNAME, A~CLASS, C~DDTEXT AS CLASS_NAME,
COUNT( A~CUSTOMID ) AS N_O_CUSTOMER,
COUNT( CASE WHEN A~SMOKER = 'X' THEN A~CUSTOMID END ) AS N_O_SMOKER
FROM SBOOK AS A
INNER JOIN SCARR AS B
ON A~CARRID = B~CARRID
INNER JOIN DD07V AS C
ON A~CLASS = C~DOMVALUE_L
WHERE C~DOMNAME = 'S_CLASS'
AND C~DDLANGUAGE = 'E'
GROUP BY A~CARRID, B~CARRNAME, A~CLASS, C~DDTEXT
ORDER BY A~CARRID
INTO CORRESPONDING FIELDS OF TABLE @GT_FLIGHT03.
BREAK-POINT.
'SAP > ABAP 코드' 카테고리의 다른 글
(ABAP 코드) ON VALUE-REQUEST FOR (0) | 2021.07.07 |
---|---|
(ABAP 코드) Ranges 변수 설정 (매크로/변수) (0) | 2021.07.06 |
(ABAP 코드) SELECT (String) (0) | 2021.07.01 |
(ABAP 코드) Custom column names in CL_SALV_TABLE (0) | 2021.06.28 |
(ABAP 코드) New Open SQL - SELECT (CASE) (0) | 2021.06.25 |