728x90
SMALL
ABAP 프로그램에서 Delete 버튼을 추가하고 그 버튼을 클릭했을 때 특정 로직(예 : 선택한 행 삭제, 메시지 팝업 등)이 동작하도록 프로그램을 다음과 같이 구현 해보도록 하겠습니다.
1. 핸들러 클래스 정의 및 이벤트 등록
- 이벤트를 구현할 핸들러를 등록 합니다.
CLASS lcl_event_receiver DEFINITION.
PUBLIC SECTION.
METHODS : handle_user_command "이벤트 커스터마이즈
FOR EVENT user_command OF cl_gui_alv_grid
IMPORTING e_ucomm.
METHODS : handle_toolbar "툴바 버튼 커스터마이즈
FOR EVENT toolbar OF cl_gui_alv_grid
IMPORTING e_object
e_interactive.
ENDCLASS. "LCL_EVENT_RECEIVER DEFINITION
CLASS lcl_event_receiver IMPLEMENTATION.
METHOD handle_user_command.
PERFORM alv_user_command USING e_ucomm.
ENDMETHOD.
METHOD handle_toolbar.
PERFORM alv_event_toolbar USING e_object
e_interactive.
ENDMETHOD. "HANDLE_TOOLBAR
ENDCLASS. "LCL_EVENT_RECEIVER
2. 행 삭제 생성
FORM ALV_EVENT_TOOLBAR USING P_OBJECT
TYPE REF TO CL_ALV_EVENT_TOOLBAR_SET
P_INTERACTIVE.
DATA: LS_TOOLBAR TYPE STB_BUTTON.
CLEAR LS_TOOLBAR.
MOVE 'DEL' TO ls_toolbar-function. "INT에 APPEND
MOVE icon_delete_row TO ls_toolbar-icon. " 행삭제 아이콘
MOVE '행삭제' TO ls_toolbar-quickinfo.
MOVE '행삭제' TO ls_toolbar-text.
MOVE ' ' TO ls_toolbar-disabled.
APPEND ls_toolbar TO P_OBJECT->mt_toolbar.
ENDFORM. " ALV_EVENT_TOOLBAR
3. 행 삭제 버튼 클릭시 이벤트 구현
FORM ALV_USER_COMMAND USING P_UCOMM.
DATA : LT_ROWS TYPE LVC_T_ROW,
LS_ROWS LIKE LINE OF LT_ROWS.
DATA: L_SCROLL TYPE LVC_S_STBL.
CASE P_UCOMM.
WHEN 'DEL'.
PERFORM DEL_MARKED_ROWS.
ENDCASE.
ENDFORM. " ALV_USER_COMMAND
FORM DEL_MARKED_ROWS .
DATA : LV_ANSWER.
"선택행 정보 가져오기
CLEAR: ET_INDEX_ROWS, ES_INDEX_ROWS.
CALL METHOD GRID1->GET_SELECTED_ROWS
IMPORTING
ET_INDEX_ROWS = ET_INDEX_ROWS.
IF ET_INDEX_ROWS IS INITIAL.
MESSAGE S003 DISPLAY LIKE 'W'.
EXIT.
ENDIF.
"삭제확인 메시지 확인 버튼 구현
CALL FUNCTION 'POPUP_TO_CONFIRM'
EXPORTING
TITLEBAR = '삭제 확인'
TEXT_QUESTION = '삭제 하시겠습니까?'
TEXT_BUTTON_1 = '예'
ICON_BUTTON_1 = 'ICON_OKAY'
TEXT_BUTTON_2 = '아니오'
ICON_BUTTON_2 = 'ICON_CLOSE'
DEFAULT_BUTTON = '1'
DISPLAY_CANCEL_BUTTON = 'X' "<-- 문장 지우면 취소 버튼 사라짐 -->"
IMPORTING
ANSWER = LV_ANSWER.
IF LV_ANSWER <> '1'. "<--- '예'가 아니라면 중단한다. --->"
EXIT.
ENDIF.
ENDFORM. " DEL_MARKED_ROWS
4. ALV 스탠다드에 행삭제 툴바 Exclude
- 화면에 구현될 ALV에 행삭제 툴바를 exclude 합니다.
FORM p1170_exclude_tb_functions USING value(p_0381).
FIELD-SYMBOLS : <table> TYPE ui_functions.
DATA : ls_exclude TYPE ui_func.
DATA : l_table_name LIKE feld-name.
CONCATENATE p_0381 '[]' INTO l_table_name.
ASSIGN (l_table_name) TO <table>.
PERFORM p1000_append_exclude_functions
TABLES <table>
USING : CL_GUI_ALV_GRID=>MC_FC_LOC_DELETE_ROW, " 삭제 버튼
ENDFORM. " P1170_EXCLUDE_TB_FUNCTIONS
5. 툴바버튼 이벤트 확인
- 삭제 확인 메시지가 팝업 되는 것을 확인할 수 있습니다.
728x90
LIST
'SAP > ABAP' 카테고리의 다른 글
[SAP ABAP] 도메인(Domain) 이란? (0) | 2024.11.29 |
---|---|
[SAP ABAP] Database Table 활성화 오류 (0) | 2024.11.21 |
[SAP ABAP] 웹저장소 관리 - 엑셀 업/다운로드(SMW0) (2) | 2024.11.18 |
[SAP ABAP] 유지보수뷰(Maintenance View) 생성 - SE11, SM30 (0) | 2024.10.11 |
[SAP ABAP] 스마트폼(Smart forms) - 테이블 생성 (0) | 2024.09.02 |