반응형

ABAP 73

ABAP Field Symbol 의 사용

학교 다닐 때 C 언어를 배운적이 있다. IT 를 배웠다 하는 사람들에게 기본이라고 가르치는 C 언어는 고비가 2번 오는데 포인터가 나오면 포기하는 사람이 1/3 이고 C++ 에서 클래스 개념이 나오면 1/3 이 포기한다고 우스갯소리를 한다. 그래서 자바가 좋니 어쩌니 한다. 하지만 어떤 프로그래밍 언어든 고비는 있는 듯 하다. ABAP 에도 포인터와 비슷한 개념을 가지 Field Symbol 이 있다. Field Symbol 을 잘 이용하면 반복되는 필드들을 짧은 코드로 처리 할 수 도 있고, 루프의 속도도 개선 할 수 있으며, Internal Table 을 Dynamic 하게 만들 수도 있다. ( 이전에 Dynamic Internal Table 을 만드는 방법을 포스팅 한 적이 있다. 동적 인터널 테..

SAP/ABAP 2014.09.03

ABAP Collect 의 사용 가이드

최근에 개발을 하면서 Collect 를 많이 사용하고 있다. 이전에는 다른 모듈이라 잘 몰랐는데 재무쪽에서는 Collect 를 참으로 많이 쓰게 되는 것 같다. ( 각각의 합계를 구할 때 정확히 잘 구해지는 것이 아주 편리하다. ) 이전에 Collect 에 대한 포스팅을 한 적이 있다. ( Collect 의 사용 ) 그런데 그 때는 이정도로 많이 사용하지 않아서 아주아주 간단하게 포스팅을 했었는데, 자꾸 쓰다보니 그 정도의 정보로는 부족하겠다라는 생각에 추가적으로 포스팅을 하려고 한다. Collect 문법은 숫자 또는 금액 필드 외의 나머지는 필드들은 키로 보고 동일한 데이터가 있으면 숫자 필드를 Sum 해주고 없다면 Append 를 해주는 구문이다. 그래서 결국 Internal Table 의 필드의 값..

SAP/ABAP 2014.09.01

ABAP 금액 변환 방법 및 함수

SAP 는 글로벌하게 쓰이는 솔루션이다. 그래서 금액을 저장하는 방식이 각 나라의 통화에 따라 다르기 때문에 화면에 출력하기 위해서는 별도의 조치를 취해 줘야한다. 특히 달러와 원하는 표현하는 방식이 다르기 때문에 ( 달러는 1.00 달러, 원화는 1000원 ) 이 다르기 때문에 별도의 변환하는 로직을 넣어주어야 한다. 특히 테이블에 저장 될 때는 통화 필드는 별도의 통화단위를 가지는 필드를 엮어 주는데 테이블에 저장될 때 원화의 경우에도 달러와 같이 소숫점으로 저장을 해야 한다. 예를 들면 1000원을 테이블에 저장할 때 10.00 으로 저장이 되어야 나중에 추가로 계산을 하거나 통화필드와 연동해서 보여줄때 1000원이라고 정상적으로 표현이 가능하다. 오늘은 통화를 1000원을 10.00 으로 바꾸는 ..

SAP/ABAP 2014.08.22

ABAP 문자열 대문자, 소문자로 변환하는 방법 Translate

SAP 는 대문자를 사랑한다? SAP 는 참으로 대문자를 좋아한다. PM 모듈을 개발하다 보면 데이터를 자동으로 대문자로 변환해서 넣어버리고, 소문자를 넣으려면 도메인에서 별도의 세팅을 해야 하고,, SAP는 대소문자를 별 크게 생각하지 않나보다. 이전에 웹에서도 대소문자를 별로 크게 상관 안했지만, C나 Java 에서는 변수명에도 대소문자를 적당히 섞어가면서 쓰면 편했는데, ABAP 은 대소문자 섞어쓰는 변수를 쓸 수 없으니 항상 작명(?) 이 힘들다. 뭐 이런 잡설은 그만하고 오늘의 기록 내용은 대문자를 소문자로, 소문자를 대문자를 바꾸는 코드이다. 일괄 변경이기 때문에 중간에 하나만 바꾸겠다. 뭐 이런건 안 된다. 엄청 자주쓰지는 않지만 그래도 쓸라고 하면 문법이 기억이 안나서 찾아보게 된다. Tr..

SAP/ABAP 2014.08.07

iPPE Equipment List 관리 BAPI Function

SAP PM 모듈에서 iPPE 의 노드를 생성하고 Relation 과 Variant 를 생성하는 함수이다. iPPE 가 무슨 역활을 하는지는 잘 모르겠으나, Plant 나 Equipment 에서 상하위 노드를 생성 할 수 있는 것을 보니 시설의 관리를 편하게 하기 위해 만든 것 같다. 항상 개발하면서 느끼지만 SAP는 많은 것을 담고 있고 많은 프로세스가 있는데 이걸 다 아는 사람이 얼마나 될 까 싶다. 물론 나는 진짜 많이 모르지만 개발을 위해서 디버깅 해보는 정도다. 나중에 기회가 된다면 iPPE에 대한 더 많은 내용을 포스팅을 해야겠다. 결론은 iPPE 는 뭐에 쓰는 걸까? 궁금하다. 아래의 함수 들은 PPE Equipment 에서 데이터를 생성, 조회, 수정하는 함수들의 모음이다. * Node 의..

Short Dump AC_SYSTEM_FLUSH 에 대처하는 우리의 자세

개발을 하는 도중에 덤프를 만나는 일은 자연스러운 일이다. 그리고 대부분의 오류는 왜 나는지 정확히 위치와 내용을 알려준다. 그리고 SAP 시스템이 너무 구형이 아니라면 소스 코드를 더블클릭 또는 상단에 Debugger 버튼을 누르면 오류가 난 위치로 이동까지 해서 해결이 쉽다. 하지만 가끔 이건 왠 뜸금포인가 하는 덤프가 날 때가 있다. 어디서 난지 찾아가도 왜 나는지 알지 못하는 현상이 있다. SDN 이나 구글을 검색해 봐도 이상한 소리만 하고 Notes 적용만 하라고 하고 막 그러는데 실제로 Notes 를 적용해서 오류를 해결하는 것 보다 개발하는 중 코드의 문제로 발생하는 문제가 많다. 그러므로 괜히 Notes 먼저 적용해서 BC 한테 욕 먹지 말고 자신의 개발 코드를 천천히 debug 해보는 것..

SAP/ABAP 2014.08.01

SM30 Maintenance View 실행시 상단 타이틀 깨지는 현상

SM30 은 참으로 많이 쓰는 Tcode 이다. 개발자들은 잘 안 쓰지만 현업 사용자들은 이걸로 Tcode 따서 데이터를 유지보수 할 수 있게 해주면 사용자들이 알아서 관리를 하니 개발자로서는 참으로 편한 프로그램이다. 오늘은 SM30 을 실행 했을 때 상단에 나타나는 타이틀이 ? 로 나오면서 깨지는 현상을 포스팅 해보려고 한다. 문제가 발생하는 상황은 언어를 EN 으로 생성한 테이블의 Maintenance View 를 KO 로 로그인 했을 때 깨져 보이는 현상이다. 대부분 SAP 는 EN/KO 둘중 하나만 선택해서 사용하므로 이러한 문제는 별로 발생하지 않는다. 그러나 EN/KO 를 번갈아 써야 할 경우가 생기면 발생 할 수 있다. 1. 일단 오류가 나지 않는 언어로 로그인 한다. ( KO 에서 언어가..

SAP/ABAP 2014.07.30

Call Transaction 권한 체크

Call Transaction 은 프로그램 상에서 tcode를 호출하는데 많이 사용된다. 그런데 이게 문제가 있는게 시스템상에 권한을 등록해도 프로그램 실행 권한이 있다면 그냥 무시하고 tcode 를 실행해버리는 단점이 있다. 그래서 Call Transaction 에 권한 체크 기능이 필요하다면 아래와 같은 Standard Function 을 사용하면 된다. FORM call_transaction USING tcode. DATA : l_tcode LIKE tstc-tcode. CLEAR l_tcode. l_tcode = tcode. CALL FUNCTION 'AUTHORITY_CHECK_TCODE' EXPORTING tcode = l_tcode EXCEPTIONS ok = 1 not_ok = 2 OTHE..

SAP/Function 2014.07.29

ABAP 개발 중 성능에 대한 고민

오늘은 ABAP 개발 성능에 대한 고민에 대해서 이야기 해 보려고 한다. SAP 는 다른 일반 개발보다 조금은 다른 점이 있다. 회사의 기간계 시스템이다 보니 조금 느리게 프로그램이 돌아도 데이터가 많아서 그러려니 하면서 사용자들이 기다려준다는 것이다. 웹의 경우 3초 안에 안 나오면 다른 곳으로 옮긴다는 통계도 예전에 본적이 있다. 뭐 요즘은 인터넷 회선도 빠르고 서버도 좋고 좋고 빠른 라이브러리들도 많아서 성능이 엄청 올라가긴 했다. 그러나 최근 성능 개선 요구를 받고 있다. 처음 짜 놓은 프로그램이 10만건 정도를 루프를 돌리면서 Collect 를 하고, 필요한 데이터를 Internal Table 에 채워 넣었다. 그런데 이게 너무 느리다는 것이다. 내가 봐도 느리긴 했다. 그런데 성능 개선이라는게..

SAP 2014.07.29

Table 조회시 Day, Select 시 TAG 으로 나오는 경우

오늘도 개발을 하다가 희안한 상황을 발견하였다. 상황의 내용은 단위가 Day 인데 TAG 으로 나오는 것이다. TAG 은 독일어로 "일" 을 의미하니 DAY 와 동일한 의미이긴 하다. 그래서 TAG도 DAY 로 처리해서 개발하면 되는데, 희안 하다고 해야 할지 아니면 SAP가 꼼꼼하다고 해야 할지 아무튼 상황이 제목과 같은 상황이 발생하였다. SE11 을 사용하여 테이블을 조회하면 실제로 DAY 라는 데이터가 보인다. 그런데 프로그램 상에서 사용하려고 Select 를 할 경우에는 TAG 이라고 조회가 된다. 그렇다고 별도의 테이블에 Language 코드가 있는 것도 아니었다. [ SE11 로 조회하는경우 ] [ 프로그램 상에서 Select 한 경우 ] 나는 Table 을 살펴보던중 도메인에 옵션이 걸려 ..

SAP/Function 2014.07.28
반응형