밥린이의 아밥TIP

[율밥퍼] SAP ABAP - ALV DATA CHANGED FINISHED

율밥퍼 2023. 9. 11. 07:31

 

하힝..

 

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

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메소드를 이용하여

값을 다 변경해줄 수 있기 때문에

많이 사용하지는 않는다.

 

제 글을 봐주셔서 감사합니다.

적게 일하고 많이 버세요.

 

 

대표사진 삭제

사진 설명을 입력하세요.