에를 들어 테이블 TB0001이 있고 해당 테이블에 CCPRID라는 필드가 있습니다.
그 필드의 Domain은 CCPR이고 해당 도메인의 Value Table은 T000입니다.
그리고 Value Table인 T000의 Text Table은 T000T 테이블이 있습니다.
위와 같은 경우 프로그램에서 일일이 Text테이블에서 Text를 가져오지 않고 테이블과 필드명만 가지고
Text Table의 값을 읽어 올 수 있는 방법이 있지 않을까 하고 찾고 있습니다.
Standard 테이블들을 보면 Domain이나 Table과 Field명으로 CHECK TABLE까지는 찾을 수 있는데
Text Table은 찾을려니 어렵네요.
아시는분 있으면 도움 부탁드립니다.
해당 테이블-필드에 점검테이블이 있고 그 점검테이블이 텍스트테이블을 가지고 있다면
찾을 수 있을 거예요.
예를 들어 보면 아래 코드와 유사하게 되겠죠...^^
form의 변수를 바꿔서 테스트 해보세요.
TABLES DD03L.
DATA GV_TEXTVALUE TYPE STRING.
START-OF-SELECTION.
PERFORM GET_TEXT USING 'KNKK-KKBER' 'KKBTX' '2000' 'SPRAS'
CHANGING GV_TEXTVALUE.
WRITE : / 'CODE : 2000', / 'TEXT :', GV_TEXTVALUE.
*&---------------------------------------------------------------------*
*& Form GET_TEXT
*&---------------------------------------------------------------------*
FORM GET_TEXT USING US_TABFIELD TYPE ANY "" 대상 테이블-필드
US_TXTFIELD TYPE ANY "" 텍스트테이블의 텍스트필드
US_FLDVALUE TYPE ANY "" 코드데이터
US_LANGFLD TYPE ANY "" 언어필드 있을 경우 해당 필드이름
CHANGING CH_TXTVALUE TYPE ANY. "" 결과 텍스트
DATA LV_TABLE TYPE TABNAME.
DATA LV_FIELD TYPE FIELDNAME.
DATA LV_TEXTTABLE TYPE TABNAME.
DATA LV_TEXTFIELD TYPE FIELDNAME.
DATA LV_TEXTVALUE TYPE STRING.
DATA LT_COND TYPE TABLE OF STRING WITH HEADER LINE.
DATA LDREF TYPE REF TO DATA.
FIELD-SYMBOLS : <LFS_STRUC> TYPE ANY,
<LFS_FIELD> TYPE ANY.
* 점검테이블 검색
SPLIT US_TABFIELD AT '-' INTO LV_TABLE LV_FIELD.
SELECT SINGLE * FROM DD03L
WHERE TABNAME = LV_TABLE
AND FIELDNAME = LV_FIELD.
CHECK SY-SUBRC IS INITIAL.
* 점검테이블에 대한 텍스트테이블
CALL FUNCTION 'DDUT_TEXTTABLE_GET'
EXPORTING
TABNAME = DD03L-CHECKTABLE
IMPORTING
TEXTTABLE = LV_TEXTTABLE
CHECKFIELD = LV_TEXTFIELD.
CHECK LV_TEXTTABLE IS NOT INITIAL.
* 텍스트테이블 검색조건 생성
* - Code 조건
CLEAR LT_COND.
CONCATENATE '`' US_FLDVALUE '`' INTO LT_COND.
CONCATENATE LV_TEXTFIELD '=' LT_COND INTO LT_COND SEPARATED BY SPACE.
APPEND LT_COND.
* - Language 조건
IF US_LANGFLD IS NOT INITIAL.
CLEAR LT_COND.
CONCATENATE US_LANGFLD '= SY-LANGU' INTO LT_COND SEPARATED BY SPACE.
APPEND LT_COND.
ENDIF.
LOOP AT LT_COND.
CHECK SY-TABIX <> 1.
CONCATENATE 'AND' LT_COND INTO LT_COND SEPARATED BY SPACE.
MODIFY LT_COND.
ENDLOOP.
* 텍스트테이블에 대한 구조생성
CREATE DATA LDREF TYPE (LV_TEXTTABLE).
ASSIGN LDREF->* TO <LFS_STRUC>.
CHECK SY-SUBRC IS INITIAL.
* 텍스트데이터 선택
SELECT SINGLE * INTO CORRESPONDING FIELDS OF <LFS_STRUC>
FROM (LV_TEXTTABLE)
WHERE (LT_COND).
CHECK SY-SUBRC IS INITIAL.
* 해당 코드에 대한 텍스트 결과
ASSIGN COMPONENT US_TXTFIELD OF STRUCTURE <LFS_STRUC> TO <LFS_FIELD>.
IF SY-SUBRC IS INITIAL.
CH_TXTVALUE = <LFS_FIELD>.
ELSE.
CLEAR CH_TXTVALUE.
ENDIF.
ENDFORM. "GET_TEXT