SAP/ABAP

ABAP 메모리상의 프로그램 로컬 변수 Local Variable 접근하기

그녀는애교쟁이 2015. 2. 25. 09:30

ABAP 개발을 하면서 가장 편하다고 생각했던게 프로그램간 파라메터를 전달해서 다른 프로그램을 현재 개발하는 프로그램에 서브 프로그램으로 사용 할 수 있다는 점이었다. 그래서 다른 프로그램이지만 상세화면을 보여주는 등 다양한 형태에서 추가적인 개발을 하지 않고 상세화면을 구성할 수 있다. 


예를 들자면 CBO 프로그램에서 IW52 라는 Notification 상세화면으로 바로 들어가는 기능을 만들 수 있다. ABAP 코드에서 Call transaction 과 submit 을 이용 하여 다른 프로그램으로 이동할 수 있으며, 각각 파라메터를 전달하는 방식은 추후에 포스팅을 하도록 하겠다. 





오늘은 이러한 프로그램 간 이동을 하면서 이전 프로그램의 Local Variable 을 조회하는 내용을 찾아보았다. 나와 같이 이미 궁금해하는 사람이 있을 것 같아서 구글을 뒤지는 도중 필드 심볼을 이용한 코드를 만든 포스트를 확인하였다. 


Source : Use ABAP to Access ANY DATA In Memory


다른 프로그램(정확히는 메모리에 올라와 있는 프로그램)의 변수의 접근을 하기 위해서는 (프로그램명)변수 형태를 사용하면 된다는 것이다. 다른 프로그램의 Perform 문을 사용하듯이(문법은 반대로이지만) 하면 된다. 실제로 테스트를 해본 결과 스택상에 올라온 프로그램의 로컬 변수의 값을 접근 할 수 있었다. ( 아래 디버그를 통해서 변수에 접근이 가능함을 확인 할 수 있다.)




상위 프로그램의 롱텍스트 변수에 접근을 하였다.



Internal Table 에 접근이 가능하고 필드 심볼을 이용한 데이터 변경도 가능하다.


Local Variable 이라 접근이 안될 것 같았지만 접근이 가능하기에 개발하는데 잘 관리를 해야 할 것 같다. 이전 프로그램의 변수를 전혀 상관없는 프로그램에서 수정을 하면 문제가 생길 것이다. 여기서는 단지 Read 의 기능을 하기 때문에 사용해도 큰 문제는 없을 듯 하다. 



반응형