본문 바로가기
ABAP

간단한 SQL 실습

by clode 2023. 1. 24.
728x90
반응형

먼저 WRITE로 찍어주지 않아도 ALV LIST로 출력할 수 있는 구문을 프로그램에 넣어준다.

DATA: gr_salv_tab TYPE REF TO cl_salv_table.

 

CALL METHOD cl_salv_table=>factory 
    IMPORTING
      r_salv_table = gr_salv_tab
    CHANGING
      t_table      = gt_itab[].

gr_salv_tab->display( ).

 

 

 

실습 1

[프로그램 로직]

DATA : gt_itab TYPE TABLE OF zs1d11t_01.

SELECT * FROM zs1d11t_01
    INTO TABLE gt_itab
    WHERE seqnr = '11'.

 

[실행화면]


 

실습 2

조건문 OR

[프로그램 로직]

DATA: gt_itab type TABLE OF mara.

SELECT * from mara
          into TABLE gt_itab
              where matnr 
              in ('000000000000100000','000000000000100001' ,
                  '000000000000100002' ).

[실행화면]

 


 

실습 3

조건문 AND

 

[프로그램 로직]

data : gt_itab type TABLE OF tvko.

 SELECT * from tvko
        into TABLE gt_itab
        where vkorg = '2100'
        and waers = 'KRW'
        and kunnr = '0010000021'.

[실행화면]


 

실습 4

(중복값 제거)

[프로그램 로직]

data : gt_itab type TABLE OF lfa1 WITH HEADER LINE.

SELECT * from lfa1
        into TABLE gt_itab
        where lifnr BETWEEN '0000100000' and '0010000036'.

  sort gt_itab by ort01.
  DELETE ADJACENT DUPLICATES FROM gt_itab COMPARING ort01.

[실행화면]


 

실습 5

(오름차순 정렬)

[프로그램 로직]

DATA : GT_ITAB TYPE TABLE OF KNA1.

SELECT DISTINCT * FROM KNA1
      INTO TABLE Gt_ITAB
      WHERE SORTL = '약국' ORDER BY KUNNR ASCENDING.

SORT GT_ITAB BY KUNNR ASCENDING.
  DELETE GT_ITAB FROM 5 TO 10.
  • SELECT문에서 정렬 : ORDER BY
    INT문 정렬 : SORT ~ BY
  • 오름차순 : ASCENDING
    내림차순 : DESCENDING

[실행화면]

 


 

실습 6

(SUM)

[프로그램 로직]

DATA : gv_sum TYPE mara-brgew,
          gv_msg(17) TYPE c.

DATA : gt_itab TYPE TABLE OF mara,
          wa LIKE LINE OF gt_itab.

SELECT * FROM mara
        INTO TABLE gt_itab
        WHERE mtart = 'FERT'.

LOOP AT gt_itab INTO wa.
  SUM.
  gv_sum = wa-brgew.
ENDLOOP.

gv_msg = gv_sum.

MESSAGE i016(pn) WITH gv_msg.

=

SELECT SUM( brgew ) FROM mara
      INTO gv_sum
          WHERE mtart = 'FERT'.

=

SELECT * FROM mara INTO wa WHERE mtart = 'FERT'.
  APPEND wa TO gt_itab.
  gv_sum = gv_sum + wa-brgew.
ENDSELECT.

SQL문은 다양한 방법이 있다.

[실행화면]

 


 

실습 7

(필드값 빼기)

[프로그램 로직]

DATA : BEGIN OF wa.
          INCLUDE STRUCTURE sflight.
DATA : seatsuno TYPE i,
          END OF wa,
          gt_itab LIKE TABLE OF wa.

 SELECT * FROM sflight
      INTO TABLE GT_ITAB
      WHERE carrid = 'AA'.

  LOOP AT  GT_ITAB INTO WA.
  wa-seatsuno = wa-seatsmax - wa-seatsocc.
  MODIFY GT_ITAB FROM WA TRANSPORTING SEATSUNO. "조건
ENDLOOP.

=

SELECT * FROM sflight
      INTO WA
      WHERE carrid = 'AA'.

  wa-seatsuno = wa-seatsmax - wa-seatsocc.
  APPEND WA TO GT_ITAB.
ENDSELECT.

SELECT ~ ENDSELECT는 반복문처럼 반복한다. 그래서 SELECT로 가져온후 LOOP 반복문을 사용하거나 SELECT ~ENDSELECT로 하거나 두가지 방법을 사용 할 수 있다.

[실행화면]

사용하고 싶은 두개의 테이블이 같은 키값을 가지고 있다면 키값을 연결해 한 인터널 테이블에 넣어 사용할 수 있는 명령문이다.

 


 

실습 8

(조인문)

[프로그램 로직]

1번째 방법

DATA : BEGIN OF wa.
          INCLUDE STRUCTURE TVTW.
DATA : VTEXT TYPE TVTWT-VTEXT,
          END OF wa,
          gt_itab LIKE TABLE OF wa.

 SELECT * FROM TVTW AS A   INNER JOIN TVTWT AS B
   ON A~VTWEG = B~VTWEG
   INTO CORRESPONDING FIELDS OF TABLE GT_ITAB
   WHERE B~SPRAS = SY-LANGU.

 

2번째 방법

DATA : BEGIN OF wa.
          INCLUDE STRUCTURE TVTW.
DATA : VTEXT TYPE TVTWT-VTEXT,
          END OF wa,
          gt_itab LIKE TABLE OF wa.

 SELECT * FROM TVTW
   INTO CORRESPONDING FIELDS OF TABLE GT_ITAB.

LOOP AT GT_ITAB INTO WA.
    SELECT SINGLE VTEXT FROM TVTWT
           INTO WA-VTEXT
           WHERE SPRAS = SY-LANGU
              AND VTWEG = WA-VTWEG.

      modify GT_ITAB from WA TRANSPORTING VTEXT.
        ENDLOOP.

 

3번째 방법

DATA : BEGIN OF wa.
          INCLUDE STRUCTURE TVTW.
DATA : VTEXT TYPE TVTWT-VTEXT,
          END OF wa,
          gt_itab LIKE TABLE OF wa.

DATA : wa2 TYPE tvtwt,
         gt_itab2 LIKE TABLE OF wa2.

SELECT * FROM tvtw
    INTO CORRESPONDING FIELDS OF TABLE gt_itab.

  SELECT * FROM tvtwt
     INTO TABLE gt_itab2
   WHERE spras = sy-langu.

SORT GT_ITAB2 BY VTWEG.

LOOP AT gt_itab INTO wa.
   READ TABLE gt_itab2 INTO wa2 WITH KEY
   vtweg = wa-vtweg

    BINARY SEARCH.
    IF sy-subrc = 0.
      wa-vtext = wa2-vtext.
    ENDIF.

   MODIFY gt_itab FROM wa TRANSPORTING vtext.
ENDLOOP.

[실행화면]

 


 

실습 9

(append structure)

  • 공통으로 사용되는 필드들을 테이블에(se11) .Inlcude 하여 사용하는 Structure
  • 하나의 테이블은 구조체 및 테이블을 포함할 수 있다.
  • 단순히 각 테이블에 공통으로 사용하는 필드들을 쉽게 추가하기 위한 용도로 사용함.

SE11

구조를 생성한뒤

TRANSPARENT TABLE에 .INCLUDE로 구조를 추가해준다.

[프로그램 로직]

DATA : gt_itab TYPE TABLE OF zs1d11t_01,
      wa LIKE LINE OF gt_itab.

SELECT * FROM zs1d11t_01
  INTO TABLE gt_itab.

LOOP AT gt_itab INTO wa.
 wa-erdat = sy-datum.
 wa-erzet = sy-uzeit.
 wa-ernam = sy-uname.

MODIFY GT_ITAB FROM WA.
ENDLOOP.

MODIFY zs1d11t_01 FROM TABLE GT_ITAB.

[실행화면]

 


 

실습 10

(파라미터, 셀렉트옵션)

TABLES: sbook. 
DATA: gt_itab TYPE TABLE OF sbook.

PARAMETERS p_carr TYPE sbook-carrid.
SELECT-OPTIONS s_flda FOR sbook-fldate.

SELECT * FROM sbook
  INTO TABLE gt_itab
  WHERE carrid EQ p_carr "항공사 코드
  AND fldate IN s_flda. "항공편 일자
  • select-options에 사용하는 테이블은 tables로 선언해야 한다. select-options의 for뒤에는 데이터 오브젝트가 와야하기 때문.
  • parameter ~ type 조건 EQ
    select-options ~ for 조건 IN

[실행화면]

 

 

728x90
반응형

'ABAP' 카테고리의 다른 글

Parameter, Select-options, Initialization  (0) 2023.01.24
간단한 SQL 실습 2  (0) 2023.01.24
Lock object  (0) 2023.01.24
Search help 생성 (SE11)  (0) 2023.01.24
Cluster View  (0) 2023.01.24

댓글