SAP/ABAP 코드

(ABAP 코드) Test_0702 - SELECT QUERY

haramang 2021. 7. 2. 12:15

*문제1. (5점)
*
*  - 예약정보에서 각 항공사의 고객클래스별 로컬예약금액(LOCCURAM) 합계액을 구하시오.
*  - 출력필드: 항공사코드, 항공사명칭, 고객클래스코드, 고객클래스명칭, 로컬통화키, 로컬총금액
*  - SBOOK(예약정보), SCARR(항공사정보), DD07V(FixedValue)를 이용


DATABEGIN OF GS_FLIGHT01,
  CARRID      TYPE SCARR-CARRID,
  CARRNAME    TYPE SCARR-CARRNAME,
  CLASS       TYPE SBOOK-CLASS,
  CLASS_NAME  TYPE LENGTH 20,
  LOCCURKEY   TYPE SBOOK-LOCCURKEY,
  SUM_LOCCURAM    TYPE SBOOK-LOCCURAM,
  END OF GS_FLIGHT01.


DATAGT_FLIGHT01 LIKE TABLE OF GS_FLIGHT01 WITH KEY CLASS.

SELECT A~CLASS,A~CARRIDB~CARRNAMEC~DDTEXT AS CLASS_NAMEA~LOCCURKEYSUMA~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~CLASSA~CARRIDB~CARRNAMEC~DDTEXTA~LOCCURKEY
  ORDER BY A~CARRID
  INTO CORRESPONDING FIELDS OF TABLE @GT_FLIGHT01.

BREAK-POINT.



*문제2. (10점)
*
*  - 예약정보에서 공항코드별, 고객클래스별,로컬통화별 예약금액 합계액을 구하시오.
*  - 출력필드: 공항코드, 로컬총금액, 로컬통화키
*  - SBOOK(예약정보), SCOUNTER(영업소정보) 이용


DATABEGIN 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.

DATAGT_FLIGHT02 LIKE TABLE OF GS_FLIGHT02.

SELECT B~AIRPORTA~CLASSSUMA~LOCCURAM AS SUM_LOCCURAMA~LOCCURKEY
  FROM SBOOK AS A
  INNER JOIN SCOUNTER AS B
  ON A~COUNTER B~COUNTNUM
  AND A~CARRID B~CARRID
  GROUP BY B~AIRPORTA~CLASSA~LOCCURKEY
  ORDER BY B~AIRPORTA~CLASS
  INTO CORRESPONDING FIELDS OF TABLE @GT_FLIGHT02.

BREAK-POINT.




*문제3. (15점)
*
*  - 예약정보에서 항공사코드,항공사명칭, 고객클래스별, 고객의 수와 흡연자 수를 구하시오.
*  - 출력필드: 항공사코드,항공사명칭, 고객클래스코드, 고객클래스명칭, 고객수,  흡연자수
*  - SBOOK(예약정보), SCARR(항공사정보), DD07V(FixedValue)를 이용


DATABEGIN OF GS_FLIGHT03,
  CARRID        TYPE SBOOK-CARRID,
  CARRNAME      TYPE SCARR-CARRNAME,
  CLASS         TYPE SBOOK-CLASS,
  CLASS_NAME    TYPE LENGTH 20,
  N_O_CUSTOMER  TYPE I,
  N_O_SMOKER    TYPE I,
  END OF GS_FLIGHT03.

DATAGT_FLIGHT03 LIKE TABLE OF GS_FLIGHT03.

DATA COUNTER TYPE I.


SELECT A~CARRIDB~CARRNAMEA~CLASSC~DDTEXT AS CLASS_NAME,
       COUNTA~CUSTOMID AS N_O_CUSTOMER,
       COUNTCASE 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~CARRIDB~CARRNAMEA~CLASSC~DDTEXT
  ORDER BY A~CARRID
  INTO CORRESPONDING FIELDS OF TABLE @GT_FLIGHT03.


  BREAK-POINT.