internal Table <-> work area
인터널 테이블(gt_itab) - TYPE을 보통 db table에서 가지고 와서 쓴다! <- table형태
work area(gs_itab) - TYPE을 보통 struct table에서 가지고 와서 쓴다! <- 한 줄
: 인터널 테이블은 수정 불가하므로 work area에서 받아서 한 줄씩 수정해서 다시 넘겨준다.
✧ 어떤 순서로 코드를 짜야 할까?? ✧
1. db table의 내용 -> 인터널 테이블 : select
2. work area에 인터널 테이블의 내용을 한 줄씩 담고, 수정한다. : loop
3. 수정된 work area의 행이 인터널 테이블에 덮어 씌워진다. : modify
4. 인터널 테이블의 내용 -> db 테이블 : modify (sy-subrc = 0 : modify가 success했다는 뜻!)
JOIN
: 테이블을 합친다
✧ 쿼리 작동 구조
SELECT : 가져올 필드 값들(열이 어떤 필드 값들로 구성될 것인가?)
FROM : JOIN을 써서 여러 테이블을 합친다
WHERE : 조건(FROM에서 선택된 테이블에서 조건을 줘 걸러낸다)
✧ 예시
SELECT *
INTO CORRESPONDING FIELDS OF TABLE gt_itab
FROM LIPS
INNER JOIN VBAP ON LIPS~VGBEL EQ VBAP~VBELN
INNER JOIN VBAK ON VBAP~VBELN EQ VBAK~VBELN
WHERE LIPS~vbeln IN ('0020000105', '0020000118', '0020000119', '0080003370', '0080003371').
select * : 전체를 선택한다
into corresponding fields of table gt_itab : from->where을 거쳐 선별된 데이터(테이블)를 gt_itab에 담는다
FROM :
1- LIPS와 VBAP를 조인 (조건:VGBEL = VBELN)
2- 1의 테이블과 VBAP를 조인(조건: VBELN = VBELN)
where : LIPS의 vbeln의 값이 20000105, 20000118, 20000119, 80003370, 80003371인 행만 가지고 온다
LOOP 후 WORK AREA를 비우기!
CLEAR gs_itab.
원하는 결과 구조체 생성해 인터널 테이블에 넣기
: db에 저장하지 않고 인터널 테이블을 출력해 결과만 보고 싶을 때
TYPES :
BEGIN OF iwantit,
mandt TYPE VBAP-MANDT,
vbeln TYPE VBAP-VBELN,
posnr TYPE VBAP-posnr,
matnr TYPE VBAP-matnr,
arktx TYPE VBAP-ARKTX,
werks TYPE VBAP-WERKS,
erdat TYPE VBAK-ERDAT,
ernam TYPE VBAK-ERNAM,
rzet TYPE VBAK-ERZET,
END OF iwantit.
Data : gt_19 TYPE TABLE OF iwantit.
'Study > SAP' 카테고리의 다른 글
| [SAP] 과제, 실습 문제: 결과 화면 모음 (0) | 2026.01.26 |
|---|---|
| [SAP] 정리4 - 다양한 프로그래밍 방법 (0) | 2026.01.07 |
| [SAP] 정리2 - TABLE 만들기 (0) | 2026.01.02 |
| [SAP] 정리1 - 이론 (0) | 2026.01.01 |
| [SAP] GUI 기본 설정 (0) | 2025.12.29 |