ALV에 domain-value range 추가

Insoo·2021년 6월 9일
0

ABAP

목록 보기
1/3

ALV에 value range 추가하기

도메인에 대한 텍스트는 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.루프를 돌려 기존의 데이터와 매핑해준다.

profile
Junior Developer

0개의 댓글