[SAP]ABAP/ABAP 강의 SYNC
alv (application-toolbar)
이운형
2022. 7. 20. 12:48
반응형
FORM save_data .
* 1. 해당 테이블에 데이터를 저장하기 위해서는 해당 테이블과 동일한 구조를 가진 itab 이 있어야한다.
DATA : lt_save TYPE TABLE OF zc5t07005,
ls_save LIKE LINE OF lt_save.
CLEAR : ls_save.
REFRESH : lt_save.
* ALV 내의 data를 itab 에 반영
CALL METHOD gcl_alv_grid->check_changed_data.
* IMPORTING
* e_valid=
LOOP AT gt_data INTO gs_data.
IF gs_data-matnr IS INITIAL.
CONTINUE.
ENDIF.
MOVE-CORRESPONDING gs_data TO ls_save.
APPEND ls_save TO lt_save.
CLEAR : ls_save.
ENDLOOP.
IF lt_save IS NOT INITIAL.
MODIFY zc5t07005 FROM TABLE lt_save.
IF sy-dbcnt > 0.
COMMIT WORK AND WAIT.
MESSAGE s003.
ELSE.
ROLLBACK WORK.
ENDIF.
ELSE.
MESSAGE s000 WITH TEXT-m01 DISPLAY LIKE 'W'.
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form delete_row
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM delete_row .
DATA : lv_cnt TYPE i,
lv_tabix TYPE sy-tabix,
lv_add TYPE i.
CLEAR : lv_cnt, gs_row.
REFRESH : gt_rows.
CALL METHOD gcl_alv_grid->get_selected_rows
IMPORTING
et_index_rows = gt_rows.
lv_cnt = lines( gt_rows ).
IF lv_cnt IS INITIAL.
MESSAGE s000 WITH TEXT-m02 DISPLAY LIKE 'E'.
EXIT.
ENDIF.
* 선택된 행의 번호를 받아와서 선택된 행에 'X' 표시
* LOOP AT gt_rows INTO gs_row.
*
* READ TABLE gt_data INTO gs_data INDEX gs_row-index.
*
* gs_data-mark = 'X'.
*
* MODIFY gt_data FROM gs_data INDEX gs_row-index
* TRANSPORTING mark.
*
* ENDLOOP.
*
** 'X' 표시된 행을 삭제
* DELETE gt_data WHERE mark EQ 'X'.
LOOP AT gt_rows INTO gs_row.
lv_tabix = gs_row-index - lv_add .
DELETE gt_data INDEX lv_tabix.
lv_add += 1 .
ENDLOOP.
PERFORM refresh_grid.
ENDFORM.
반응형