반응형

SAP/ABAP 65

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

CR 이 Lock 걸렸을 때 푸는 방법 ( SE09 사용 )

운영에 반영하다 급 당황하다. 오늘 급 당황한 일이 발생했다. 운영서버에 CR 을 반영하는데 Request 가 Lock 이 걸렸다면서 반영이 되지 않는다. 이전에도 이런 일이 있었던거 같은데 기억력이 점점 감퇴하고 있어서 어떻게 처리했는지 까먹었기 때문에 다시 한번 찾아보았다. CR 을 Unlock 하는 방법은 구글에서 찾아보니 많은 내용이 있었으나 오늘은 그중 한가지 를 포스팅 하려고 한다. ( http://scn.sap.com/thread/954937 ) 위 글의 댓글로도 나와 있듯이 SE09 -> Transport Org Tools -> Request tasks -> Unlock 을 통해서 CR의 Lock 을 풀 수 있었다. UnLock 을 할 Request 를 넣고 실행을 시킨다. 모든 것을 기억..

SAP/ABAP 2014.08.06

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

ABAP 정규표현식을 사용한 사번체크

프로그램을 개발하는 도중에 사번을 체크 할 일이 생겼다. 사번이 특별한 형태로 이루어져 있기 때문에 어떻게 쉽게 체크 할 수 없을까 고민 끝에 정규표현식을 사용해 보기로 했다. 기존에 웹 개발을 했을 때도 가끔 사용하기도 했는데 이게 생각보다 간단한것 같지만 이해도 잘 안돼서 망한 경우도 많이 있었다. ㅎㅎ 오늘의 사번 형태는 AB + 숫자 6자리인 형태인 사번을 체크하는 로직이다. 앞에 AB 는 "AB로 시작하는" 의 의미이다. 그리고 [0-9] 는 "0~9 사이의 숫자가 들어 올 수 있다는" 의미이고 {6} 은 "6자리를 의미"한다. 간단하게 예제소스를 돌려보면 abap_true 값인 'X' 값이 출력 되는 것을 알 수 있다. REPORT ytest_regex. DATA : lr_matcher TYP..

SAP/ABAP 2014.07.24

ABAP Dynamic Internal Table 을 Read Table 하기

최근 Dynamic Internal Table 을 이용한 프로그램을 많이 만들었다. ( 된장찌게 엄청 빡세고 내용만 엄청 길어져서 다 갈아내고 싶다. ) 이전에 Dynamic Internal Table 을 생성하는 포스팅을 했었다. [SAP/ABAP] - 동적 인터널 테이블을 만들때 deep structure 로 생성하기 그런데 프로그램을 개발하도 보니 Internal Table 의 최대 장점인 Read Table 을 사용하기에 애매한 부분이 생겼다. 그냥 선언해서 사용하는 Internal Table 의 경우 Field 명을 그냥 with key Field = 'XXX' 이런식으로 사용이 가능한데 Dynamic 하게 생성한 Internal Table 은 Field 자체를 고정 할 수 없어서 with Ke..

SAP/ABAP 2014.07.16

Variant 없이 Batch Job 생성하기 ( Dummy Variant 생성 )

오늘의 특이 케이스는 Batch Job을 생성하는 과정에서 나타나는 오류는 아니지만 엉뚱한 곳에서 문제가 생긴 케이스 이다. 이 포스팅 이전에 Variant 와 Batch Job 에 대해 포스팅을 3차례 하였는데 이 케이스는 없는 것 같아 추가적으로 기록을 남기게 되었다. Batch Job 을 등록하는데 Variant를 넣으라고 하는 메시지를 내보내고 진행이 안된다. 는 질문을 받았다. 그런데 다른 Job 들을 보니 Variant 없이 등록된 Job 들도 있었고, 그래서 왜 안되냐고 잘해보라고 닥달(?)을 하고 나서 나도 실제로 SM36을 통해서 배치잡을 등록하다보니 안되는 것이었다. (살짝 미안했다. ) [SAP/Scrap] - 스케쥴 백그라운 작업 생성 ( Batch Job ) [SAP/ABAP] -..

SAP/ABAP 2014.07.16

ABAP Report Dynamic Variant 만들기

이전에 Report 에 Variant (변형) 을 생성하는 방법을 포스팅 한 적이 있다. 오늘은 이 variant 를 dynamic 하게 생성하는 방법을 포스팅하고자 한다. [SAP/ABAP] - Report 프로그램 변형 ( Variant ) 그런데 Dynamic Variant 는 Date 만 가능한 것 같다. 심지어 연월 필드도 되지 않는다. 하지만 batch job 의 경우 대부분 일자를 기준으로 작업을 돌리기 때문에 큰 문제는 없는 것 같다. 다른 방법을 발견하게 된다면 추가해야겠다. 1. 일단 이전에 변형을 생성하는 것과 같다. SAVE 버튼을 눌러서 Variant 생성 화면으로 이동한다. 2. Variant Attributes 에서 Selection Variable Option 을 선택한다. ..

SAP/ABAP 2014.07.11

Tcode 조회 사이트

SAP 개발하다보면 매번 사용하는 tcode 가 있다. 그런것은 손에 익어서 기억하겠지만 그 외에 많은 tcode 는 기억하기가 쉽지않다. tcode 를 찾다가 우연히 발견한 사이트를 소개하려고 한다. 이미 많은 분들이 즐겨찾기 해 놓고 쓰겠지만 그래도 유용한 사이트라고 생각되어 기록을 남긴다. (외쿸사이트 이지만 어려워하지 말자.. 쉽다..) http://www.tcodesearch.com/ 위 사이트는 온갖 tcode를 조회 할 수 있는 사이트 이다. 개발자라면 개발에 관련된 tcode 외에 모듈에 관련된 tcode 를 알아야 하는데 쉽게 찾을 수 있는 사이트이다. 검색해본 결과 꼭 tcode에 맞는 텍스트는 유사한 내용들이 계속 표시되니 금방 잘 찾아주는 것 같다. 이것을 즐겨찾기 해놓고 tcode..

SAP/ABAP 2014.07.03

ALV 엑셀 Export 시 데이터 분리 현상 해결방법

Class ALV 를 개발하고 나서 ALV 의 내용을 export 시키는 기본 기능을 많이 사용한다. 현업에서도 많이 사용하고 개발자들도 데이터를 내릴 때 많이 사용하는데 가끔 개발후 EXPORT > 로컬 파일 > 스프레드 시트 로 다운로드 받을 때 아래와 같은 현상이 발생한다. 그리드는 하나로 보이는데 데이터를 내리면 2개 이상으로 분리되어 보이는 경우가 있다. 이럴 때는 ALV 의 SORT 하는 부분의 속성을 확인하면 된다. *&---------------------------------------------------------------------* *& Form GRID_SET_SORT *&-----------------------------------------------------------..

SAP/ABAP 2014.07.03

특정 문자열 개수 세기

ABAP 개발중 String 에서 특정 문자의 개수를 세고 싶은 경우가 있다. 예를 들면 "ABCDABCDEFG" 에서 A의 개수는 몇개인지를 알고 싶을 때 사용하는 코드이다. REPORT ytest012. DATA : lv_string TYPE string, lv_cnt TYPE i. lv_string = 'ABCDABCDEFG'. FIND ALL OCCURRENCES OF 'A' IN lv_string MATCH COUNT lv_cnt. WRITE : lv_cnt. 또한 특정 문자 예를 들면 "A" 가 최초 어디 위치에 있는지를 알려주는 코드이다. FIND 'A' IN LV_STRING MATCH OFFSET LV_OFF.

SAP/ABAP 2014.06.30

ABAP Screen menu template

ABAP 레포트를 개발하다보면 스텐다드에 많은 메뉴를 기본으로 가지고 있는 것을 볼 수 있다. 하지만 개발자가 기본으로 개발하는 메뉴들은 각각 정의하여 사용한다. 그런데 종종 스텐다드에 보이는 아래와 같은 메뉴를 설정하고 싶을 때가 있다. 가령 예를 들면 Function ALV 를 사용한다던지 할 때 넣고 싶지만 너무 많아 넣지 못하는 경우가 있다. 그럴때 사용하라고 SAP에서는 템플릿을 제공한다. 메뉴 템플릿의 사용하는 방법을 알아보겠다. 메뉴를 처음 만들면 그냥 빈칸들만 있는 메뉴들이 만들어진다. 상단 메뉴에서 Extras > Adjust template 을 선택한다. 메뉴에서 List Viewer 를 선택한다. 그러면 처음 화면의 메뉴들이 다 들어와서 자리를 잡는다.Template Status 를 ..

SAP/ABAP 2014.06.16

ABAP File Upload

Abap 텍스트 파일을 업로드 하는 방법은 여러가지가 있다. 아래의 예제는 cl_gui_frontend_services=>gui_upload 를 사용한 예제이다. 이 외에도 Function Gui_upload 를 사용하는 방법이 있다. 둘의 차이는 잘 모르겠으나 거의 동일한 기능을 하는 것으로 생각된다. REPORT zfileupload MESSAGE-ID zfi. DATA : itab TYPE STANDARD TABLE OF string. PARAMETERS: p_file TYPE rlgrap-filename OBLIGATORY. AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file. CALL FUNCTION 'F4_FILENAME' IMPORTING file_name ..

SAP/ABAP 2014.06.16

Collect 의 사용

Collect 는 Internal Table 에 동일한 필드에 동일한 데이터가 있고, 숫자 또는 금액 필드의 값을 합을 구할 때 유용하게 사용된다. 하지만 collect 의 경우 특정 필드만을 집계 할 수가 없으며 Internal Table 의 데이터가 완전히 동일해야 사용이 가능하다. [예시] Collect 이전 Column1 Column2 AMT1 AMT2 A A 100 200 A A 200 300 A B 400 500 B B 600 700 B C 0 -100 Collect 이후 Column1Column2 AMT1AMT2 AA 300500 AB 400500 BB 600700 BC 0-100 Collect 사용하기전에는 Sort 를 통해서 Collect 할 Column 을 순서로 정렬을 해준 다음 사용..

SAP/ABAP 2014.04.23

ABAP Progress Indicator

ABAP 프로그램은 웹 프로그램들과는 다르게 오랜시간 돌아가는 작업들이 많이 있다. 그러나 화면은 그냥 멈춰 있는것같으니 사용자는 프로그램이 정상적으로 작업이 되고 있는지 알 길이 없다. 그래서 프로그래스 바를 추가 하면 사용자들에게 프로그램이 실행되고 있으며, 또한 얼마나 남았는지를 표시할 수 있다. 하지만 아래 코드를 중간중간 넣어야 하고 루프당 카운터도 계산해서 넣어야 하는 수고로움이 있다. ( 귀찮다. ) Percentage 는 0~100 까지 넣을 수 있다. *&---------------------------------------------------------------------* *& MACRO *&--------------------------------------------------..

SAP/ABAP 2014.04.15

레코드 생성,수정 사용자 Standard Field

CBO 테이블을 만들때 생성,수정정보 를 입력해야 하는 필드를 만들때가 있다. 매번 만들면서도 이름 짓기도 귀찮고 왠지 통일성도 없어보여 보여서 좀 없어보였다. 각각 필요에 따라 만들어도 되지만 Standard domain 중에 필드 텍스트 도 깔끔한 domain 이 있어 기록으로 남긴다. ERDAT ERDAT DATS 8 0 레코드 생성일 ERZET ERZET TIMS 6 0 입력 시간 ERNAM ERNAM CHAR 12 0 오브젝트 생성자 이름 AEDAT AEDAT DATS 8 0 변경일 AEZET AEZET TIMS 6 0 최종변경시간 AENAM AENAM CHAR 12 0 오브젝트 변경자 이름 - 끗 -

SAP/ABAP 2014.04.14

동적 인터널 테이블을 만들때 deep structure 로 생성하기

개발을 하다 보면 동적으로 Internal Table 을 만들어야 할 때가 있다. 경우에 따라 컬럼의 갯수가 변경되는데 동적으로 테이블을 만들다보면 Deep Structure, 즉 Internal Table 에 Internal Table 이 들어가야 하는 경우가 생긴다. 예를 들면 ALV 에서 각 셀별로 색상을 지정해 줄 수 있는데, 안에 Internal Table 로 셀을 지정해야 하는 경우이다. ( 이 경우를 처리하기 위해 찾아보게 되었다. ) 참조 URL : dynamic internal table with deep structure 먼저 전역 Structure 를 생성한다. (SE11 을 이용하여 ZZEXTEND_FIEDCAT 을 생성) * 전역변수 선언 시작 DATA : gt_fieldcatal..

SAP/ABAP 2014.04.11
반응형