alv layout(gs_layo, light, color, sort 등등)

rjdqn·2024년 8월 16일

abap

목록 보기
10/13

SAPMZ5A1490

top에

gs_layo TYPE lvc_s_layo.

alv display에

  IF gs_layo IS INITIAL.
    gs_layo-zebra = 'X'.  " 행을 얼룩덜룩
    gs_layo-cwidth_opt = 'X'. " 열의 내용물 크기에 따라 열 사이즈를 자동 조절해준다.
*    gs_layo-no_toolbar = 'X'.   "상단 툴바를 숨김.
    gs_layo-excp_fname = 'LIGHT'. " Light 필드를 신호등처럼 보이게 한다.
  ENDIF.

CALL METHOD go_alv->set_table_for_first_display
    EXPORTING
      i_structure_name              = 'ZS5A14902'
      is_layout                     = gs_layo   " type이 일치되어야함
    CHANGING
      it_outtab                     = gt_list   " alv가 바뀌면 그것이 gt_list에 적용된다.
      it_sort                       = gt_sort
    EXCEPTIONS
      invalid_parameter_combination = 1
      program_error                 = 2
      too_many_lines                = 3
      OTHERS                        = 4.
  IF sy-subrc <> 0.
    "Error: Display ALV
    MESSAGE a012(zmc5a00).
  ENDIF.

신호등

빨1 노2 초3 회색0

    gs_layo-excp_fname = 'LIGHT'.
    gs_layo-excp_led = 'X'.

gs_layo-excp_fname = 'LIGHT'. 이것만 쓰면 신호등
gs_layo-excp_led = 'X'. 이거까지하면 저렇게 사진처럼 나옴.

color

SAPMZ5A1492

gt_list의 스트럭쳐에 color char4 추가.

gs_layo-info_fname = 'COLOR'.

한 줄 추가.

칼라 지정도 해준다.

C310할경우 노란색

색상표 참고. (nse38->showcolo)


그러면 이렇게 된다.

빨간색으로 특별히 표시하는건 특별히 두각되는 애들만 표시해주는거라 실제로 잘 색칠하진 않는다.

라인 전체가 아니라 특정행의 특정열만 색칠하고 싶다면


스트럭처에 it_col을 추가한다.
it_col은 테이블 타입이다.

열어보면 struct 타입의 color가 nested 되어있다.

color도 열어보면 이렇게 생겼다.



FORM display_alv_0100 .
  IF gs_layo IS INITIAL.
    gs_layo-zebra = 'X'.
    gs_layo-cwidth_opt = 'X'.
*    gs_layo-no_toolbar = 'X'.
    gs_layo-excp_fname = 'LIGHT'.
    gs_layo-info_fname = 'COLOR'.
    gs_layo-ctab_fname = 'IT_COL'. "color과 it_col은 같이 안쓴다.
  ENDIF.

display에서

gs_layo-ctab_fname = 'IT_COL'.

추가한다.


아 두번째 ls_cololor-inv 임 오타!! (-int xx)
set_Booking에 색깔을 입혀준다.


첫번째 index의 custom_id만 색칠된 것을 볼 수 있다.

여러개 셀을 칠하고 싶으면

두 번 반복해서 append하면 된다.
서브루틴처리하는게 좋겠지


결과는 이렇게 나온다

sort

top

DATA: gt_sort TYPE lvc_t_sort,
      gs_sort LIKE LINE OF gt_sort.
      
     

display에 it_sort

CALL METHOD go_alv->set_table_for_first_display
    EXPORTING
      i_structure_name              = 'ZS5A14902'
      is_layout                     = gs_layo   " type이 일치되어야함
    CHANGING
      it_outtab                     = gt_list   " alv가 바뀌면 그것이 gt_list에 적용된다.
      it_sort                       = gt_sort
    EXCEPTIONS
      invalid_parameter_combination = 1
      program_error                 = 2
      too_many_lines                = 3
      OTHERS                        = 4.
  IF sy-subrc <> 0.
    "Error: Display ALV
    MESSAGE a012(zmc5a00).
  ENDIF.
FORM sort_alv USING pv_becla TYPE zs5a14405-becla.

  CLEAR: gt_sort, gs_sort.

  IF pv_becla = 'C001'.
    gs_sort-spos = 1.   " 1번 정렬조건
    gs_sort-fieldname = 'PRICE'.
    gs_sort-down = 'X'.
    APPEND gs_sort TO gt_sort.

  ELSE.
    CLEAR: gs_sort.
    gs_sort-spos = 1.
    gs_sort-fieldname = 'GENDER'.
    gs_sort-down = 'X'.
    APPEND gs_sort TO gt_sort.

  ENDIF.

ENDFORM.
profile
대학생

0개의 댓글