ABAP Standard Function

[ABAP] SAPGUI_SET_FUNCTIONCODE / 강제로 User Command 실행하기

ASAP ABAP 2025. 1. 11. 01:30
반응형

개발을 하다보면 처음 화면으로 돌아왔는데 alv 리스트가 refresh가 되지 않거나 하는 이유로 user_command를 강제로 넣고 싶을 때가 있습니다. 이때 사용할 수 있는 SAPGUI_SET_FUNCTIONCODE를 소개해보겠습니다.

 

기능설명

SAP GUI 스크립트 기능 중 하나로, SAP GUI 화면에서 Function Code를 실행할 수 있도록 해줍니다. 사용자가 화면상의 메뉴를 클릭하거나 특정 버튼을 누를 때 발생하는 기능 코드를 수동으로 호출하여 작업을 자동화하는데 유용합니다. 주로SAP GUI에서 사용자가 특정 작업을 수행하는 버튼을 눌러야 하는 상황에서, 스크립트를 통해 그 과정을 자동으로 실행하고자 할 때 활용됩니다.

 

Signature

Importing Parameter
Exception Parameter

예시코드

WHEN ’SAVE’."저장 버튼
	CLEAR gs_change.
	MOVE-CORRESPONDING zssmm_01 TO gs_change.
	PERFORM change_matnr.
	CLEAR gs_alv.
	CLEAR zssmm_01.
	PERFORM matnr_init.
    
	* Search Funciton code 다시 불러옴
	CALL FUNCTION 'SAPGUI_SET_FUNCTIONCODE'
		EXPORTING
			functioncode = 'SEARCH'
		EXCEPTIONS
			function_not_supported = 1
			OTHERS = 2.
	IF sy-subrc <> 0.
	* Implement suitable error handling here
		MESSAGE i015(zmsg01).
	ENDIF.
	
    CALL SCREEN 100.

실행 화면

현재 상황은 200번 Screen에서 SAVE버튼을 눌러 100 Screen으로 넘어갔을 때 ALV List에 저장된 정보가 반영이 되지 않는 문제가 있었습니다. 따라서 해당 코드를 200번 Screen의 PAI 'SAVE' User-Command에 코드를 추가하였습니다.

SAPGUI_SET_FUNCTIONCODE 코드 추가
저장 버튼을 눌러 200번 Screen의 ‘SAVE’ 기능을 실행.

 

SAPGUI_SET_FUNCTIONCODE 활용해서 100 Screen 에서 Function Code ’ SEARCH ’ 버튼을 자동으로 실행

해당 200번에서 100번으로 넘어오면서 SEARCH Function Code를 강제로 실행하여 수정한 내용이 ALV에 반영된 것을 확인할 수 있습니다.

주의 사항

  • SET_FUNCTIONCODE에 전달되는 기능 코드가 정확해야 합니다.
  • SET_FUNCTIONCODE는 수동 입력 대신 자동화로 명령을 실행하기 때문에 오류 발생 시 오류 처리를 위한 로직을 추가하는 것이 좋습니다.
반응형