안녕하십니까.. 아밥시작하는 초보입니다.
그림에서 빨간색 네모로 표시한 EDIT TOOLBAR를 없애려고 합니다.
세팅레이아웃에서
FORM setting_layout USING p_layout TYPE lvc_s_layo.p_layout-cwidth_opt = 'X'.
p_layout-sel_mode = 'D'.
p_layout-no_toolbar = 'X'.
*EDIT 기능 활성화
CALL METHOD g_grid->set_ready_for_input
EXPORTING
i_ready_for_input = 1.
그리고 필드 카달로그에서
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'RESULT1'.
ls_fieldcat-coltext = '지표
'.
ls_fieldcat-outputlen = 10.
ls_fieldcat-edit = 'X'. "지표필드EDIT
ls_fieldcat-just = 'R'.
APPEND ls_fieldcat TO gt_fieldcat.
지표 필드만 EDIT 기능넣었는데요
no_toolbar 주면 TOOLBAR가 모두 없어지는데 이렇게 말고 딱 저EDIT부분만 없애려구요
근데 지표 필드를 수정할수 있는 EDIT기능은 넣어야 합니다.
방법이 없을까요.. 고수님들 도움좀...
댓글 5
-
버미!
2010.12.03 20:39
-
맑은하늘
2010.12.03 23:02
버미님처럼 GRID 에 직접 넣어서 하는 분들이 많으신것 같아요
저같은 경우는 GRID 모드에 따라 toolbar 에 적용되는 메뉴들이 달라서
toolbar event 를 만들어 실제 필요없는 메뉴들만 삭제하거나
필요할 경우 추가하여 사용합니다.
아래처럼요. 도움되시길..
[이벤트설정]
set handler lcl_event->z_hndl_toolbar for grid.
[이벤트에 대한 처리 루틴]
form z_hndl_toolbar changing sender type ref to object
e_object type ref to cl_alv_event_toolbar_set
e_interactive type char1.
data ls_toolbar type stb_button.
"" 필요없는 메뉴 삭제
delete e_object->mt_toolbar where function = '&LOCAL&APPEND'
or function = '&LOCAL&INSERT_ROW'
or function = '&LOCAL&DELETE_ROW'
or function = '&LOCAL©'.
"" 필요시 추가
clear ls_toolbar.
ls_toolbar- 내용채움.
append ls_toolbar to e_object->mt_toolbar.
endform.
-
헐크호간
2010.12.04 05:43
맑은하늘님 여쭤볼게 하나 있습니다..
적어주신 DELETE구문을 써서 삭제를 하면요..
버튼타입이 2인경우에,, 특정 기능만 삭제하고 싶을때는 버튼을 지우고서 다시 만들어줘야 하나요??
예를들면요...MC_MB_EXPORT 중에서요...MC_FC_WORD_PROCESSOR같이 특정 펑션만 삭제하고 싶을때 방법이 있을까요??
-
맑은하늘
2010.12.06 20:59
grid 의 M_CL_MENU_BUTTON_EXPORT 로 정의되어있긴 합니다만 조회해 보시면 아시다시피
protected 로 선언되어 있어서 프로그램 내에서 제어하기가 어려울 듯합니다.
alv_grid 를 local 로 통채로 inherit 받아서 해당 속성을 변경하시면 될지도 모르겠단 생각이 들지만
좀 어려울듯 하네요. ^^;; 메뉴값 변경은 cl_ctmenu 의 hide_functions 를 사용하시면 안보이게 할 수
있을 것 같구요. ^^ 수고하세요
-
아바밥
2010.12.08 02:07
답변주신 버미님 맑은 하늘님 감사합니다~ 일단 마감때문에 완료는 못했는데 감이 많이 잡혔습니다.
^^ 수고하세요~!
new : MC_FC_LOC_APPEND_ROW
Insert : MC_FC_LOC_INSERT_ROW
Delete : MC_FC_LOC_DELETE_ROW
Copy : MC_FC_LOC_COPY_ROW
이렇게 4개를 Exclude 하시면 되는 데 아래 소스만 조금 참조하시고..
나머지는 해보세요..일부러 나머지 소스는 ^^;
*---------------------------------------------------------------------*
* Form EXCLUDE_TB_FUNCTIONS
* Description : App.Toolbar 정의
*----------------------------------------------------------------------*
FORM exclude_tb_functions USING p_tabname.
FIELD-SYMBOLS : <fs_table> TYPE ui_functions.
DATA : ls_exclude TYPE ui_func.
DATA : l_table_name LIKE feld-name.
CONCATENATE p_tabname '[]' INTO l_table_name.
ASSIGN (l_table_name) TO <fs_table>.
PERFORM append_exclude_functions
TABLES <fs_table>
USING : cl_gui_alv_grid=>mc_fc_excl_all. "위의 4개 여기에 추가
ENDFORM. " EXCLUDE_TB_FUNCTIONS
*---------------------------------------------------------------------*
* Form APPEND_EXCLUDE_FUNCTIONS
* Description : App.Toolbar 정의 Form
*----------------------------------------------------------------------*
FORM append_exclude_functions TABLES p_table
USING p_value.
DATA : ls_exclude TYPE ui_func.
ls_exclude = p_value.
APPEND ls_exclude TO p_table.
ENDFORM. " APPEND_EXCLUDE_FUNCTIONS