🕑 10분
Table명 문자열 변수를 가지고서
이 Table이 DB에 존재하는지 (SE11에서 조회가 되는 Table인지)
체크하는 Standard Function Module을 살펴보도록 하겠습니다.
참고한 SAP Community 글
Function module to check the existance of a table
Hi everyboy, is there any function module to check the existance of a table....Thanks... Ram.
community.sap.com
구글링 검색 키워드
"ABAP FM to check table existence"
✅ '테이블이 있다 / 없다' Function Module
1. RPY_EXISTENCE_CHECK_TABL (최종변경일 2022.05.17)
Function Group. SEUEXIST 에서 다양한 Object 종류의 존재 유무를 체크하는 Function Module들을 확인해볼 수 있다.
1) SE37 실행 결과
- sy-subrc = 0 : 테이블 존재
- sy-subrc = 1 : 테이블 미존재
- sy-subrc = 2 : 테이블 미존재 + others
- Structure명도 sy-subrc = 0 으로 나온다.
2) 소스코드 호출
*1. RPY_EXISTENCE_CHECK_TABL (2022.05.17)
CALL FUNCTION 'RPY_EXISTENCE_CHECK_TABL'
EXPORTING
NAME = 'KNA1'
EXCEPTIONS
NOT_EXIST = 1
OTHERS = 2.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
2. CHECK_TAB_NAME (최종변경일 2009.06.18)
1) SE37 실행 결과
- sy-subrc = 0 : 테이블 존재
- sy-subrc = 1 : 테이블 미존재
- sy-subrc = 2 : 테이블 미존재 + others
- Structure명도 sy-subrc = 0 으로 나온다.
2) 소스코드 호출
*2. CHECK_TAB_NAME (2009.06.18)
CALL FUNCTION 'CHECK_TAB_NAME'
EXPORTING
i_tabname = 'KNA1'
EXCEPTIONS
TAB_NOT_FOUND = 1
OTHERS = 2.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
3.★ DB_EXISTS_TABLE (최종변경일 2018.11.26)
📌 저는 함수를 모두 비교한 뒤에, 이 Function Module을 선택하여 개발했습니다.
1) 속도가 가장 느리지만
2) 이 함수만이 Structure를 거르고 진짜 Transport Table만 결과를 성공으로 받을 수 있기때문입니다.
1) SE37 실행 결과
- sy-subrc = 0 : 테이블 존재
- sy-subrc = 4 : 테이블 미존재
- Structure명은 sy-subrc = 4 로 나온다.
2) 소스코드 호출
*3. DB_EXISTS_TABLE (2018.11.26)
DATA : lv_subrc TYPE sy-subrc.
CALL FUNCTION 'DB_EXISTS_TABLE'
EXPORTING
tabname = 'KNA1'
IMPORTING
SUBRC = lv_subrc.
4. 함수 속도 비교
1. RPY_EXISTENCE_CHECK_TABL (최종변경일 2022.05.17) --> 1.588초
2. CHECK_TAB_NAME (최종변경일 2009.06.18) --> 0.353초
3. DB_EXISTS_TABLE (최종변경일 2018.11.26) --> 1.937초
🔽 테스트 가능한 소스코드 전문 🔽
REPORT ZCHECK_TABLE.
DATA: g_time1 TYPE i,
g_time2 TYPE i,
g_time_diff TYPE f,
g_time TYPE i.
*1. RPY_EXISTENCE_CHECK_TABL (2022.05.17)
PERFORM start_time.
CALL FUNCTION 'RPY_EXISTENCE_CHECK_TABL'
EXPORTING
NAME = 'KNA1'
EXCEPTIONS
NOT_EXIST = 1
OTHERS = 2.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
PERFORM end_time.
*2. CHECK_TAB_NAME (2009.06.18)
PERFORM start_time.
CALL FUNCTION 'CHECK_TAB_NAME'
EXPORTING
i_tabname = ' KNA1 '
EXCEPTIONS
TAB_NOT_FOUND = 1
OTHERS = 2.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
PERFORM end_time.
*3. DB_EXISTS_TABLE (2018.11.26)
PERFORM start_time.
DATA : lv_subrc TYPE sy-subrc.
CALL FUNCTION 'DB_EXISTS_TABLE'
EXPORTING
tabname = ' KNA1 '
IMPORTING
SUBRC = lv_subrc.
PERFORM end_time.
*--------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Form start_time
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM start_time .
CLEAR: g_time1, g_time2, g_time_diff, g_time.
GET RUN TIME FIELD g_time1.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form end_time
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM end_time .
GET RUN TIME FIELD g_time2.
g_time_diff = g_time2 - g_time1.
g_time = g_time_diff.
WRITE:/ '시간 소요 : ', g_time.
ENDFORM.
✅ '테이블 정보를 출력 한다 / 안 한다' Function Module
1. DDIF_NAMETAB_GET (최종변경일 2022.11.10)
1) SE37 실행 결과
- sy-subrc = 0 : 테이블 존재
- 테이블 존재 시, 모든 필드 정보가 출력된다.
- Structure명도 sy-subrc = 0 으로 나온다.
2. DDIF_FIELDINFO_GET (최종변경일 2022.11.10)
1) SE37 실행 결과
- sy-subrc = 0 : 테이블 존재
- 테이블 존재 시, 모든 필드 정보가 출력된다.
- 테이블에 해당 필드가 존재하는지도 확인이 가능하다.
- Structure명도 sy-subrc = 0 으로 나온다.
수고하셨습니다.
'SAP' 카테고리의 다른 글
[SAP ABAP] SE16N에서 동적으로 테이블을 출력하는 스탠다드 로직 (0) | 2025.04.22 |
---|---|
[SAP ABAP] SELECTION SCREEN 화면으로 돌아가기 (0) | 2025.04.21 |
SAP 동적테이블(Dynamic Table) 생성 - Runtime Type Identification (RTTI) (0) | 2025.04.14 |
SAP GUI 800 설치 (0) | 2025.04.02 |