[SAP] INTERNAL TABLE_변경

이안·2024년 2월 19일

SAP

목록 보기
8/30
post-thumbnail

APPEND

DATA : BEGIN OF GS_STUDENT,
    ZCODE TYPE C LENGTH 10,
    ZKNAME TYPE C LENGTH 10,
    ZENAME TYPE C LENGTH 10,
    ZGENDER TYPE C,
END OF GS_STUDENT.
DATA : GT_STUDENT LIKE TABLE OF GS_STUDENT.
    
CLEAR : GS_STUDENT.
GS_STUDENT-ZCODE = 'CODE-01'.
GS_STUDENT-ZKNAME = '차은우'.
GS_STUDENT-ZENAME = 'CHA'.
GS_STUDENT-ZGENDER = 'F'.
COLLECT GS_STUDENT INTO GT_STUDENT.
* CLEAR 안해서 기존 데이터 존재
GS_STUDENT-ZGENDER = 'M'.
COLLECT GS_STUDENT INTO GT_STUDENT. "잘못된 데이터 변경이 아니라 새로운 한 줄 추가

1. TABLE KEY를 이용해 한 라인 변경

DATA : BEGIN OF GS_STUDENT,
	ZCODE TYPE C LENGTH 10,
	ZKNAME TYPE C LENGTH 10,
	ZENAME TYPE C LENGTH 10,
	ZGENDER TYPE C,
END OF GS_STUDENT.
DATA : GT_STUDENT LIKE TABLE OF GS_STUDENT WITH NON-UNIQUE KEY ZCODE.

CLEAR : GS_STUDENT.
GS_STUDENT-ZCODE = 'CODE-01'.
GS_STUDENT-ZKNAME = '차은우'.
GS_STUDENT-ZENAME = 'CHA'.
GS_STUDENT-ZGENDER = 'F'.
COLLECT GS_STUDENT INTO GT_STUDENT.
* CLEAR 안해서 기존 데이터 존재
GS_STUDENT-ZGENDER = 'M'.
MODIFY TABLE GT_STUDENT FROM GS_STUDENT. "KEY 지정한 ZCODE기준으로 수정

2. TABLE KEY를 이용해 한 필드 변경

DATA : BEGIN OF GS_STUDENT,
	ZCODE TYPE C LENGTH 10,
	ZKNAME TYPE C LENGTH 10,
	ZENAME TYPE C LENGTH 10,
	ZGENDER TYPE C,
END OF GS_STUDENT.
DATA : GT_STUDENT LIKE TABLE OF GS_STUDENT WITH NON-UNIQUE KEY ZCODE.

CLEAR : GS_STUDENT.
GS_STUDENT-ZCODE = 'CODE-01'.
GS_STUDENT-ZKNAME = '차은우'.
GS_STUDENT-ZENAME = 'CHA'.
GS_STUDENT-ZGENDER = 'F'.
COLLECT GS_STUDENT INTO GT_STUDENT.
* CLEAR 안해서 기존 데이터 존재
GS_STUDENT-ZENAME = 'EUN'.
GS_STUDENT-ZGENDER = 'M'.
MODIFY TABLE GT_STUDENT FROM GS_STUDENT TRANSPORTING ZENAME. "ZENAE만 변경
* 둘다 변경하고 싶다면
MODIFY TABLE GT_STUDENT FROM GS_STUDENT TRANSPORTING ZENAME ZGENDER.

3. WHERE 조건을 이용해 여러 라인 변경

LOOP AT GT_STUDENT INTO GS_STUDENT.
	IF GS_STUDENT-ZGUBUN = 'M'.
		GS_STUDENT-ZGNAME = '남자'.
	ELSEIF GS_STUDENT-ZGUBUN = 'F'.
		GS_STUDENT-ZGUBUN = '여자'.
	ENDIF.

	MODIFY GT_STUDENT FROM GS_STUDENT TRANSPORTING ZGNAME
		WHERE ZCODE = GS_STUDENT-ZCODE.

	CLEAR : GS_STUDENT.
ENDLOOP.

4. INDEX를 이용해 한 라인 변경

LOOP AT GT_STUDENT INTO GS_STUDENT.
	IF GS_STUDENT-ZGUBUN = 'M'.
		GS_STUDENT-ZGNAME = '남자'.
	ELSEIF GS_STUDENT-ZGUBUN = 'F'.
		GS_STUDENT-ZGUBUN = '여자'.
	ENDIF.

	MODIFY GT_STUDENT FROM GS_STUDENT INDEX SY-TABIX.

	CLEAR : GS_STUDENT.
ENDLOOP.

0개의 댓글