본문 바로가기
Study/SAP

[SAP] 정리3 - 코드 작성할 때?

by J_Kkikki 2026. 1. 6.

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