도메인에 대한 텍스트는 dd07t 테이블에 저장된다.
이 사실을 인지하고 있어야 한다.
그렇다면 데이터를 뿌려주는 form문 안에 인터널테이블을 만들어 붙여?주면 된다..
때문에 이번 게시물에서는 데이터를 가져오는 form문만 확인하겠다.
FORM get_data .
CLEAR gt_disp.
SELECT *
FROM z01t0020
INTO CORRESPONDING FIELDS OF TABLE gt_disp
WHERE empid IN s_empid
AND dept IN s_dept
AND grade IN s_grade
AND type IN s_type
AND gender IN s_gender
AND inpdt IN s_inpdt
AND retdt IN s_retdt.
IF sy-subrc <> 0.
MESSAGE s005 DISPLAY LIKE 'E'. "조건에 맞는 데이터가 없습니다.
LEAVE LIST-PROCESSING.
ENDIF.
* itab으로 만들기
DATA : BEGIN OF ls_grade,
domvalue_l LIKE dd07t-domvalue_l,
ddtext LIKE dd07t-ddtext,
END OF ls_grade.
DATA lt_grade LIKE TABLE OF ls_grade.
DATA : BEGIN OF ls_dept,
domvalue_l LIKE dd07t-domvalue_l,
ddtext LIKE dd07t-ddtext,
END OF ls_dept.
DATA lt_dept LIKE TABLE OF ls_dept.
DATA : BEGIN OF ls_gender,
domvalue_l LIKE dd07t-domvalue_l,
ddtext LIKE dd07t-ddtext,
END OF ls_gender.
DATA lt_gender LIKE TABLE OF ls_gender.
DATA : BEGIN OF ls_type,
domvalue_l LIKE dd07t-domvalue_l,
ddtext LIKE dd07t-ddtext,
END OF ls_type.
DATA lt_type LIKE TABLE OF ls_type.
* dd07t에서 데이터 가져오기
SELECT ddtext domvalue_l
FROM dd07t
INTO CORRESPONDING FIELDS OF TABLE lt_grade
WHERE domname = 'Z01D_GRADE'.
SELECT ddtext domvalue_l
FROM dd07t
INTO CORRESPONDING FIELDS OF TABLE lt_dept
WHERE domname = 'Z01D_DEPARTMENT'.
SELECT ddtext domvalue_l
FROM dd07t
INTO CORRESPONDING FIELDS OF TABLE lt_gender
WHERE domname = 'Z01D_GENDER'.
SELECT ddtext domvalue_l
FROM dd07t
INTO CORRESPONDING FIELDS OF TABLE lt_type
WHERE domname = 'Z01D_TYPE'.
* 위 데이터와 alv itab
LOOP AT gt_disp INTO gs_disp.
READ TABLE lt_grade
INTO ls_grade
WITH KEY domvalue_l = gs_disp-grade.
IF sy-subrc = 0.
gs_disp-grade_t = ls_grade-ddtext.
ENDIF.
READ TABLE lt_dept
INTO ls_dept
WITH KEY domvalue_l = gs_disp-dept.
IF sy-subrc = 0.
gs_disp-dept_t = ls_dept-ddtext.
ENDIF.
READ TABLE lt_gender
INTO ls_gender
WITH KEY domvalue_l = gs_disp-gender.
IF sy-subrc = 0.
gs_disp-gender_t = ls_gender-ddtext.
ENDIF.
READ TABLE lt_type
INTO ls_type
WITH KEY domvalue_l = gs_disp-type.
IF sy-subrc = 0.
gs_disp-type_t = ls_type-ddtext.
ENDIF.
MODIFY gt_disp FROM gs_disp.
ENDLOOP.
ENDFORM.
Key point
1. 취합하고자 하는 것을 도메인의 텍스트가 저장되는 dd07t에서 가져와야 한다.
2. 인터널 테이블을 만들어 주고 dd07t에서 가져오고자 하는 데이터를 인터널 테이블에 추가한다.
3.루프를 돌려 기존의 데이터와 매핑해준다.