하힝..
출근하자마자 집가고싶은 율밥퍼

DATA CHANGED FINISHED는 잘 안쓴다고 했지만,
알아두면 좋을 것 같아서 :)
일단
DATA_CHANGED와
DATA_CHANGED_FINISHED의 차이를 알려 드리겠다.
DATA_CHANGED는
ALV 데이터의 변경이 인지되었을 때 수행
(ITAB에 아직 변경 값이 반영되기 전 시점이다)
DATA_CHANGED_FINISHED는
데이터 변경시 EVENT
'DATA_CHANGED'가 호출되고 에러가 없으면
그 다음 호출되는 EVENT이다.
(DATA_CHANGED에서
프로토콜 오류가 있으면
실행 안되겠쥬?)
DATA_CHANGED에서 오류가 없으면
FINISHED이벤트를 통해 인터널테이블에
자동으로 값이 변경된다.
DATA_CHANGED_FINISHED 이벤트를 쓴다면
DATA_CHANGED에서 따로
MODIFY_CELL메소드를 안써도 된다.
(필요하면 쓰시구염)


요렇게 사용하지만,
만약 alv에서 변경값이 있더라도
고정으로 한가지 값만 입력하고 싶다면?
밑의 로직처럼 할 수 있다.
FORM DATA_CHANGED_FINISHED USING PV_MODIFIED
PT_GOOD_CELLS TYPE LVC_T_MODI.
CHECK PV_MODIFIED = GC_X.
LOOP AT PT_GOOD_CELLS INTO DATA(LV_S_GOOD_CELLS).
READ TABLE GT_LIST INTO DATA(LS_LIST) INDEX LV_S_GOOD_CELLS-ROW_ID.
CASE LV_S_GOOD_CELLS-FIELDNAME.
WHEN 'MATNR'.
LS_LIST-MATNR = 0012144.
MODIFY GT_LIST FROM LS_LIST INDEX LV_S_GOOD_CELLS-ROW_ID.
ENDCASE.
CLEAR LS_LIST.
ENDLOOP.
PERFORM REFRESH_ALV_GRID.
ENDFORM.
요런식으로..
필요에따라 활용하면 될듯함 ㅎㅎ
E_MODIFIED(=PV_MODIFIED)는
수정된 값이 있는지 없는지 표시되는 거라고 보면 된당.
수정값이 있다면!! E_MODIFIED에 'X'값이 찍힌다.
ET_GOOD_CELLS(=PT_GOOD_CELLS)는
변경된 값이 담긴 테이블이다.
LVC_T_MODI 타입이며,
예시로는

나는 나의 인터널 테이블의
9번째 줄의 ROLE_CODE필드에
F라는 값을 집어넣었다.
DATA_FINISHED 이벤트는 이렇게 사용하면 되지만,
ALV EVENT 소개 포스팅에서 설명했듯이..
깜박거림이 많아 잘 사용하지 않는다.
DATA_CHANGED이벤트에서도
MODIFY_CELL메소드를 이용하여
값을 다 변경해줄 수 있기 때문에
많이 사용하지는 않는다.

적게 일하고 많이 버세요.

사진 설명을 입력하세요.
'밥린이의 아밥TIP' 카테고리의 다른 글
[율밥퍼] SAP ABAP - ALV HANDLE_DOUBLE_CLICK (0) | 2023.09.13 |
---|---|
[율밥퍼] SAP ABAP - ALV HANDLE_HOTSPOT(Feat. Parameter ID 찾기) (0) | 2023.09.12 |
[율밥퍼] SAP ABAP - ALV HANDLE_DATA_CHANGED (0) | 2023.09.08 |
[율밥퍼] SAP ABAP - ALV HANDLE_USER_COMMAND(Feat. SENDER) (0) | 2023.09.07 |
[율밥퍼] SAP ABAP - ALV HANDLE_TOOLBAR (0) | 2023.09.06 |