본문 바로가기

Archive/DataLifeCycle

SAP DELETE IDOCS ( EDIDS, EDIDC, EDID4 등)

728x90

SAP ERP의 IDOC 문서 관련된 테이블들이 커지므로 인하여

데이터베이스 공간과 성능 저하에 요인이 될 수 있습니다.

그래서 해당 테이블을 아카이브 하려고 합니다.

 

SAP TCODE WE11에서 프로그램으로 삭제 가능합니다.

https://apps.support.sap.com/sap/support/knowledge/preview/en/1574016

 

1574016 - Deleting idocs with WE11/ RSETESTD | SAP Knowledge Base Article

Symptom Delete IDOCS - WE11 /  RSETESTD EDI* Tables are too big Poor performance when scanning idoc tables Deleting old idocs Cleanup EDI tables Read more... Environment SAP Basis release 620 and higher Product SAP NetWeaver Keywords RSETESTD, WE11, idoc,

apps.support.sap.com

SAP 프로그램으로 삭제하는 것이 데이터의 참조값들을 확인해서 깔끔하게 삭제할 수 있습니다.

그러나 시간이 오래 걸리는 단점이 있습니다.

그래서 DB에서 삭제하려고 합니다.

TCODE DB15에서 아카이브오브젝트와 테이블관계를 확인해 보면,

IDOC 아카이브 오브젝트에 EDI30C, EDI40, EDIDC, EDIDS 테이블들이

포함되어 있는 것을 확인할 수 있습니다.

이를 기반으로 EDI30C, EDI40, EDIDC,EDIDS 테이블을 직접 삭제하려고 합니다.

DECLARE @TABLE TABLE(MANDT NVARCHAR(3), DOCNUM NVARCHAR(16))

WHILE EXISTS (SELECT TOP 1 MANDT FROM fph.EDIDS WHERE MANDT='100' 
AND LOGDAT<'20190101')
BEGIN
	INSERT INTO @TABLE
	SELECT TOP 10000 MANDT,DOCNUM FROM fph.EDIDS WHERE MANDT='100' 
AND LOGDAT<'20190101'

	DELETE fph.EDI40
	FROM fph.EDI40 AS T
	JOIN @TABLE AS S ON T.MANDT=S.MANDT AND T.DOCNUM=S.DOCNUM

	DELETE fph.EDIDC
	FROM fph.EDIDC AS T
	JOIN @TABLE AS S ON T.MANDT=S.MANDT AND T.DOCNUM=S.DOCNUM

	DELETE fph.EDIDS
	FROM fph.EDIDS AS T
	JOIN @TABLE AS S ON T.MANDT=S.MANDT AND T.DOCNUM=S.DOCNUM

	DELETE FROM @TABLE
END

로그 날짜 2019년도 01월 01일 이전 데이터를 삭제했습니다.

 

728x90

'Archive > DataLifeCycle' 카테고리의 다른 글

SAP 어플리케이션 로그 (BALHDR,BALDT) 삭제  (0) 2019.07.04