본문 바로가기

SAP

[ABAP] ABAP alv toolbar button 제거하기 + 노가다 snippet

반응형

SAP ABAP ALV Toolbar 버튼 제거 / ABAP ALV Toolbar 버튼 추가 / ABAP ALV Toolbar 버튼 변경 / ABAP ALV Toolbar Function Code / ABAP ALV Grid Function Code (tistory.com)

 

SAP ABAP ALV Toolbar 버튼 제거 / ABAP ALV Toolbar 버튼 추가 / ABAP ALV Toolbar 버튼 변경 / ABAP ALV Toolbar Function

SAP에서 ALV로 화면 구현을 할 때, 버튼을 구현하고자 하면 어디에 버튼을 달지 정해야 된다. 사실 위치는 현업이나 요청자의 기분에 따라 버튼의 위치가 바뀐다. 기존에 버튼이 줄줄이 달렸던 부

irondol.tistory.com

아래 이미지는 위 글에서 퍼왔다.

 

grid function code constants

해당 버튼이 include는 지원 안하고 exclude만 지원하기에, 한땀한땀 제거해줘야 한다.

사실 버튼을 많이 숨길게 아니라면 몇개만 제거하면 되고,

아예 안보여주려면 MC_FC_EXCL_ALL만 쓰면 된다.

문제는 버튼 한 두개만 보여주려고 할 때이다.

  CALL METHOD go_grid01->set_table_for_first_display
    EXPORTING
      is_layout            = ps_layout
      it_toolbar_excluding = pt_exclud[]
      is_variant           = ls_varint
      i_save               = 'B'
    CHANGING
      it_outtab            = gt_main[]
      it_fieldcatalog      = pt_fcat[]
      it_sort              = pt_sort[]
    EXCEPTIONS
      OTHERS               = 4.

 

위의 이미지를 좀 더 설명하자면, 트리뷰 형태로 부모 노드가 중간에 있는 경우가 있는데,

이 버튼은 누르면 세부 기능이 펼쳐지는 식이다.

자식들을 숨기면 점점 기능이 사라지고, 하나만 남기면 자식 기능이 부모 기능이 된다.(세부기능 안펼쳐짐)

이미지로 보여주고 싶은데... 아시다시피 SAP는 함부로 화면을 캡쳐해서 공유하기 어려운 환경에 있는 솔루션이다.

그냥 코드 스니펫만 적당히 공유할테니, 가져가서 잘 쓰시길...

FORM set_alv_toolbar  TABLES pt_excud TYPE ui_functions.

  CLEAR pt_excud[].

  pt_excud[] =  VALUE #( ( cl_gui_alv_grid=>mc_mb_filter )
                          ( cl_gui_alv_grid=>mc_mb_sum )
                          ( cl_gui_alv_grid=>mc_mb_view )
                          ( cl_gui_alv_grid=>mc_fc_loc_undo )
                          ( cl_gui_alv_grid=>mc_fc_auf )
                          ( cl_gui_alv_grid=>mc_fc_average )
                          ( cl_gui_alv_grid=>mc_fc_detail )
                          ( cl_gui_alv_grid=>mc_fc_find_more )
                          ( cl_gui_alv_grid=>mc_fc_graph )
                          ( cl_gui_alv_grid=>mc_fc_info )
                          ( cl_gui_alv_grid=>mc_fc_loc_copy )
                          ( cl_gui_alv_grid=>mc_fc_loc_copy_row )
                          ( cl_gui_alv_grid=>mc_fc_loc_cut )
                          ( cl_gui_alv_grid=>mc_fc_loc_delete_row )
                          ( cl_gui_alv_grid=>mc_fc_loc_insert_row )
                          ( cl_gui_alv_grid=>mc_fc_loc_move_row )
                          ( cl_gui_alv_grid=>mc_fc_loc_append_row )
                          ( cl_gui_alv_grid=>mc_fc_loc_paste )
                          ( cl_gui_alv_grid=>mc_fc_sort_asc )
                          ( cl_gui_alv_grid=>mc_fc_sort_dsc )
                          ( cl_gui_alv_grid=>MC_FC_find )
                          ( cl_gui_alv_grid=>mc_fc_word_processor )
                          ( cl_gui_alv_grid=>mc_fc_pc_file )
                          ( cl_gui_alv_grid=>mc_fc_send )
                          ( cl_gui_alv_grid=>mc_fc_to_office )
                          ( cl_gui_alv_grid=>mc_fc_call_abc )
                          ( cl_gui_alv_grid=>mc_fc_call_xint )
                          ( cl_gui_alv_grid=>mc_fc_expcrtempl )
                          ( cl_gui_alv_grid=>mc_fc_call_crbatch )
                          ( cl_gui_alv_grid=>mc_fc_call_xml_export )
                          ( cl_gui_alv_grid=>mc_fc_html )
                          ( cl_gui_alv_grid=>mc_fc_url_copy_to_clipboard )
                          ( cl_gui_alv_grid=>mc_mb_variant )
                          ( cl_gui_alv_grid=>mc_fc_loc_paste_new_row )
                          ( cl_gui_alv_grid=>mc_fc_refresh ) ).

ENDFORM.
반응형