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 |
댓글