밥린이의 아밥TIP

[율밥퍼] SAP ABAP - ALV HANDLE_USER_COMMAND(Feat. SENDER)

율밥퍼 2023. 9. 7. 08:10

 

이건 이렇게 따로 적어야하나 말아야하나..

고민을 많이했다..

USER_COMMAND 파트의.. 로직이라..

 

진짜 별게 없어서 따로 적을ㄲ ㅏ

T00LBAR설명이랑 합칠ㄲ ㅏ

고민을 많이했G..

 

근데 별건 아니지만 TIP을 하나 쓰기 위해

 

그냥 따로 글을 적기로 결결결심.


일단!!!

USER COMMAND가 무엇이냐하면!

프로그램에서 메뉴바의 기능을 선택하거나 버튼을 눌렀을 때 발생하는 이벤트다.

 

일단 기본적으로

IMPLEMENTATION단의 METHOD 정의 부분에서 기본적으루

쓰이는 파라미터는 하나당.

(하나만 있다는 말이 아님)

 

PERFORM문 안에는

 

보통 이렇게 쓰임.

버튼을 누르면 E_UCOMM(=PV_UCOMM)값이

찍히는데

그 UCOMM값이 어떤 것이냐에 따라 내가 로직을 이어나가면 되는것!

 

 


SY-UCOMM이란?

MENU에서 선택된 버튼의 FUNCTION CODE를 할당함.

(기본 GUI STATUS등등 모든 버튼의 Function Code 값임 )

 

디버깅 모드에서 직접 SY-UCOMM이라고 치면

어떤값이 들어가있는지 확인 할 수 있다.

 

여기서는 E_UCOMM에 찍힌다

저 PV_UCOMM(E_UCOMM)값은 ALV TOOLBAR 에서 설정한 Function 값임.

 


라인 INSERT를 해도 되고 라인 DELETE를 해도 된당.

 

끝.

ㅋㅋㅋㅋㅋㅋㅋ....

진짜 뭐 별거 없다 여기는..

 

그래도 팁을 하나 주자면

기본 파라미터중에 SENDER라는 파라미터가 있당.

 

이건 ALV를 SPLIT으로 여러개 쪼개 GRID를 여러개 그리게 되는데

어떤 GRID에서 눌린것인지 명확히 해아할 때 쓰면 좋다.

USER_COMMAND에서도 쓰이지만 다른 곳에서도 쓰인다.

 

만약 본인이 가지고 있는 템플릿에 SENDER가 안쓰여져 있다면 당황하지마라.

 

DEFINITION이랑 IMPLRMRNTATION에 내가 선언해주면 된당.

 

DEFINITION
IMPLEMENTATION
요렇게 SENDER를 추가해주면 된당.

 

PERFORM문 안은

 

요로코롬

 

PO_SENDER에 버튼을 누른 GRID값이 찍히고

그 GRID에따라 먹히는 버튼 값을 설정해준거당.

 

이 로직으로보면 일단 3개의 분할화면이 있고

GRID1일때만 새로고침이 가능하게,

GRID2일때만 라인 INSERT,

GRID3일때만 DELETE 하도록 설정해 놓은거당.

 

여러가지 분할화면에서 버튼에 대한 액션을 다르게 주어야 할때

아주 유용하당

 

다 쓰고 나니 너무 간단하당.