본문으로 바로가기


SAP ABAP에 관하여 - 제1편 ABAP이란?


화면은 ABAP을 한다면 매일 보는 화면이에요.



'ABAP이란 무엇일까?' 하고 궁금해 하시는 분들이 많다고 생각해서 이 글을 씁니다.



아밥이란 어떤 언어인지 한번 써보도록 하겠습니다.


아! 그리고 ABAP을 시작하려는 분들은 이 카테고리에 써놓은 '무료 계정 받기'글부터 보는게 좋을듯 합니다. 아밥의 기능같은 것을 써놓았는데 공한번 안차보고 축구 이론을 배우는 그런 감이 있을 것 같긴 해서요. 참고는 되겠죠.


일단 아밥은 SAP를 개발하는 언어입니다. SAP에 SAP를 위한 SAP만의 언어라고 할 수 있어요. 언어의 생김새로 봐서는 당연히 내리막을 걸어야 하는 언어라고 생각하긴 하지만 오묘하게 편하게 잘 만들기도 했고 기능이 자꾸 추가되고 있기도 합니다. 하지만 대세는 아니에요. 스타일은 20년 전 스타일 인것 같습니다.


그리고 코볼을 닮은 언어라고 합니다.


제가 코볼을 해본적도 본적도 없지만 ABAP은 코볼을 기반으로 만들어졌다고 합니다. ABAP의 모습을 통해 COBOL이란 어떤 언어인지를 추측해볼 수 있을 뿐이에요. 찾아보면 어디 있긴 하겠지만.. ㅎㅎ



제가 처음 아밥을 배우려고 마음 먹었을 때 아밥은 OOP기반의 4세대 언어인줄 알았습니다. 하지만 아니었어요 매우 발전된 형태의 2세대 언어라고나 할까요..? 스타크래프트가 3D기반이 아니고 2D기반인건 모두들 알거에요. 굳이 최첨단 테크놀로지가 아니라도 매우 안정된 형태의 클래식하고 쓸만하고 친숙한 그런 언어에요.


처음에는 뚝딱뚝딱 화면이 나오는 PHP나 VBA를 하던 저는 이게 뭔가 싶기도 했지요...



C처럼 속도가 무진장 빠른 것도 아니고, java처럼 oop가 메인도 아니에요. 오히려 python 처럼 몇 글자만 치면 바로바로 결과가 나오기도 하고, 이전 javascript 처럼 스크립트성 언어에 가깝기도 합니다.




ABAP과 C또는 JAVA와 비교를 해보면 세가지 두드러진점이 있습니다.


1.Internal Table

2.Dictionary Object

3.Debugger


이 세가지가 ABAP의 아이덴티티인 것 같습니다.


하나씩 이야기 해볼게요


1.Internal Table(인터널 테이블)


인터널 테이블은 위와 같이 보통 두줄을 같이 이용해서 사용하기 때문에 처음에 헷갈릴 수 있습니다.



인터널 테이블은 굳이 따지면 '테이블 변수'라고 할 수 있어요.


이걸 쓰는 이유는 DB의 Access 속도가 느리고 부하가 많기 때문에 쓰는 기능이라고 할 수 있습니다.


여러분이 지금 사용하고 있는 PC나 노트북에 memory가 있는 이유와 같다고 할 수 있습니다. cpu와 hdd의 속도차이를 메모리가 완충작용을 해주는것과 비슷한 원리에요.


ABAP을 하면 매일 Internal Table 선언하고 데이터 넣고 빼고 하는일이 대부분일겁니다.


엄청나게 편한 기능이고 처음 ABAP을 할 때 가장 헷갈리는 기능이기도 합니다.



2.Dictionary Object(딕셔너리 오브젝트)

아밥은 로컬에 리포지토리(저장소)가 없습니다. java나 c같은 경우는 로컬에서 개발하고 C같은 경우는 빌드를 해서 배포하거나 java같은 경우는 빌드를 통해 웹으로 배포하는 경우가 많아요.


하지만 abap은 무조건 sap서버에 접속해서 작업하게 되어있습니다. 로컬에 소스코드를 저장하지 않고 서버에 모든 소스를 저장하게 됩니다.


이 방식이 다소 느리다는 것만 빼면 장점이 많습니다.


서버에 붙어서 작업을 하기 때문에 딕셔너리 오브젝트라는 기능이 가능하다고 봅니다.



딕셔너리 오브젝트란 말 그대로 '사전'같은거에요. 아밥 프로그래밍 관련해서 만든 db라던가 클래스라던가 펑션이라던가 이런 오브젝트들을 저장하면 바로 아밥 딕셔너리에 저장됩니다.


딕셔너리 오브젝트는 sap시스템 전체에서 불러다 쓸 수 있는 글로벌 변수 같은거에요 대기업용 솔루션이다보니 '딕셔너리 오브젝트'라는 것 자체가 DB와 DB의 수백만건의 레코드를 모두 포함하기 때문에 볼륨상으로 봤을 때 처음에는 잘 이해가 안가는 개념이기도 합니다.


'전역변수'라는 것 자체를 OOP에서는 퍼포먼스상 그렇게 좋아하지 않는데요, 디비고 펑션이고 전역변수 처럼 사용 한다는 것이 처음는 이해가 잘 되지 않았습니다.


하지만 사용하다 보면 적응 하게 되고 여기에 적응하면 java web개발 같이 DB 따로, ci툴 따로, 개발툴 따로 설치하고 연동하고 하는데 가끔 에러도 나고 하는 이런 작업들은 하기가 귀찮아질 수도 있어요.


저도 자꾸 아밥을 쓰다 보니까 금방 나태해 지기 시작하는 것 같아서 약간 걱정이 되기도 합니다.





3.Debugger(디버거)

마지막으로 디버거 입니다.


디버깅 화면입니다. 웬만한데 디버깅 다 걸리고 대부분의 에러는 다 잡을 수 있습니다.



아밥퍼들 보다 디버거를 많이 쓰는 개발자가 있을까 싶어요. 거의 테스트 케이스를 안만들고 디버거로 대부분의 에러를 잡아내고 고치고 할 수 있게끔 되어있습니다.


처음에 이 시스템을 설계한 분의 두뇌 구조를 알고 싶을 정도로 훌륭하게 잘 만들어져 있습니다.


디버거가 기능이 너무 좋기 때문에 뚝딱뚝딱 만들고 뚝딱뚝딱 고치고 그렇더라구요.


실제 프로젝트 할 때는 Test를 거의 작성을 안하고 한가롭게 Test코드 작성하고 있으면 많이 혼날 수도 있는 그런 분위기입니다.




위의 세가지 아밥의 두드러지는 특성들 때문에 제가 봤을 때는 아직까지 ABAP은 문과 나온 친구들이 프로그래밍을 살짝 배워서 하는게 더 나은 것 같기도 합니다.




ABAPer의 연봉에 대하여

ABAPer 5년차의 연봉은 정규직 기준으로 4천 정도 될까 싶습니다. 물론 프리는 월 600정도 되기도 넘기도 하는데 1년을 놓고 보면 비슷 한 것 같기도 합니다. 정규직일 때 보수는 프리일때의 1/3이라고 보면 되구요.


그리고 무엇보다 중요한건 5년 후면 아밥퍼가 할일이 과연 얼마나 남아있을지 모르겠습니다. SI판은 IN Memory DB + Javascript로 흐르게 될거에요. SAP가 한참 ERP를 팔다가 지금은 DB엔진을 팔고 있거든요.


ABAP을 시작 할꺼면 JAVA로 시작하는게 지금 상황에서는 더 좋다고 봅니다. 제가 프로젝트 현장에 나와있는데 순수 아밥 프로젝트는 국내에서는 별로 없을거에요. 그리고 해외로 나가는건 여러분들이 3년차는 되어야 나갈 수 있다고 보면 됩니다. 너무 일찍 나가도 일을 할 수가 없어요.


제가 너무 일찍 해외 나갔다가 한달 반만에 과장님하고 교체되어서 돌아온적이 있거든요.


SI의 3대 언어인 Java, Spring, Javascript를 알고 있어야 수월하게 업무를 할 수 있을거라고 봐요. 프로젝트 현장에서도 느끼고 있습니다. 자바스크립트로 하면 무난한데 그걸 아밥으로 돌려서 하려면 야근을 피할 수 없고 고생은 고생대로 하는 등 에로사항이 있습니다.


현 시점에서 ABAPer신입은 큰 매리트가 없다고 봅니다. 몸값도 많이 떨어졌고 시니어 프리중에도 일거리가 한두달씩 없는 분들도 나오고 있습니다. 


ABAP은 스타크래프트 같은 언어라고 보면 됩니다. 잘 만들긴 했지만 대세는 아니에요. 요즘 대세는 롤이잖아요? Spring + Javascript에요. 아밥을 할꺼라면 자바+자바스크립트와 함께 해야 할거라 봅니다.






end.


















댓글을 달아 주세요

  1. 2014.05.23 10:44

    비밀댓글입니다

  2. BlogIcon ㅎㅅ 2015.11.02 12:48 신고

    자바를배우는게 아무래도 좋겟다는말씀이죠?

  3. 헤봉이 2016.03.07 17:35 신고

    와!! 좋은 설명글 감사합니다 ^-^

  4. SAPSAP 2017.06.04 22:52 신고

    이해하기 쉽게 글을 잘 쓰시는 것 같아요 감사합니다.^^

  5. 행인 2017.06.22 17:25 신고

    spring은 랭귀지가 아닌 프레임워크아닌가요..

  6. 2018.08.04 17:06

    비밀댓글입니다