code 10

특정 문자열 개수 세기

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

SE93 Tcode 에서 Package 가져오기(RS_ACCESS_PERMISSION)

SE93 에서 TCODE 를 조회 하면 아래 Package 를 조회하는 함수이다. 이 함수의 원래의 목적은 PERMISSION에 관한 함수로 추정된다. ( 함수 이름이 PERMISSION 어쩌구 하니 그렇게 추정 ) 하지만 SE93 에서 사용되는 Package 를 가져오는데 활용 할 수 있다. DATA : l_tcode LIKE tstc-tcode, l_devclass TYPE tadir-devclass. CALL FUNCTION 'RS_ACCESS_PERMISSION' EXPORTING global_lock = 'X' mode = 'SHOW' object = l_tcode object_class = 'TRAN' suppress_language_check = '' IMPORTING devclass = l..

SAP/Function 2014.04.11

ALV Grid에서 Material Number 에서 0 제거

필드에 값중에 앞에 붙은 00 을 제거하는 함수가 있다. 그래서 왠만하면 0을 제거한 상태의 Material Number 를 ALV에 뿌릴 수 있지만 함수를 사용하지 않고도 0을 제거해 줄 수 있는 방법이 있다. ALV 에서 Fieldcatalog를 만드는 과정에서 convexit 옵션을 주는 것이다. 이전에도 기록을 남긴적이 있지만 그 예제이다. http://4512.tistory.com/23 IF gt_fieldcat-fieldname = 'MATNR'. gt_fieldcat-convexit = 'ALPHA'. ENDIF.

SAP/ABAP 2014.01.14

PAI Chain

모듈풀 프로그램이나 서브 스크린을 사용하는 프로그램의 경우 텍스트 필드의 변경으로 체크로직이나 자동으로 하는 작업 ( 가령 텍스트 코드 입력시 다른칸에 코드에 따른 텍스트 입력 등 ) 을 처리 할 수 있다. ABAP 도 결국 프로그램이기 때문에 Program Life cycle 만 잘 이해 한다면 쉽게 배울 수 있을것 같다. PROCESS BEFORE OUTPUT. MODULE set_init. MODULE status_0100. MODULE tc100_change_tc_attr. LOOP AT gt_vender WITH CONTROL tc100 CURSOR tc100-current_line. ENDLOOP. PROCESS AFTER INPUT. MODULE exit_rtn AT EXIT-COMMAND...

SAP/ABAP 2013.09.05

ABAP Loop ~ Into / Assigning

개발할 때 Loop into / Loop assigning 은 많이 사용하는 구문입니다. 앞에 into 는 Structure 또는 Internal Table 의 Header 를 이용한 구문이고 assigning 은 field symbol 을 이용한 구문입니다. 두 구문은 동일한 기능 ( Internal table 에 대한 어떠한 처리 )을 수행하지만 방식은 전혀 다릅니다. into 의 경우 별도의 Structure ( 또는 Header )라는 변수에 복사를 하여 처리를 하는 것이고, assigning 의 경우에는 internal table 의 위치(주소값)을 가지고 처리를 하는 것입니다. 그렇기 때문에 assigning 이 성능적으로 복사하는 과정을 생략하여 빠르다고 할 수 있습니다. 또한 interna..

SAP/ABAP 2013.09.04

AT FIRST, AT NEW, AT END OF, AT LAST

개발할 때 가장 많이 쓰는 구문은 LOOP AT ~ ENDLOOP 구문입니다. 다른 언어들과 다르게 Abap 에서는 LOOP 를 돌릴 때 간단하면서도 강력한 기능을 제공합니다. AT FIRST ~~~~ ENDAT. loop의 처음 한 번만 실행 AT NEW ~~~~ ENDAT. 해당 필드의 값이 처음 값이면 실행. AT END OF ~~~ ENDAT. 해당 필드의 값이 sort의 마지막값이면 실행 AT LAST ~~~~~ ENDAT. loop의 마지막 한 번만 실행. 단, 사용하기전에 internal table을 반드시 Sort 시켜서 데이터가 꼬이는 일이 없도록 해야 합니다. SORT LT_P0002 BY PERNR ASCENDING. DATA: LT_CON TYPE TT_MEX0002, LS_CON ..

SAP/ABAP 2013.09.03

ABAP Concatenate 수행시 공백 처리

Concatenate 는 엑셀에서도 있는 명령어 이다. 기능을 쉽게 설명하자면 변수와 변수, 텍스트와 텍스트 등을 연결해 주는 역활을 한다. Concatenate 가 단순히 문자열을 연결해 주는 역할을 하지만 프로그램을 개발하다 보면 이걸로 Field Symbol 을 사용하기 위한 변수명을 만들어 주기도 하고, 여러개의 반복된 변수명을 루프로 돌면서 생성할 때도 유용하게 사용된다. Concatenate 는 기본으로 자동 Trim을 수행한다. 그래서 중간의 공백을 인식하게 하려면 아래와 같은 코드를 사용해야한다. respecting blanks 를 추가하면 자동 Trim 을 수행하지 않는다. Concatenate ' ' string into string respecting blanks. 프로그램을 잘 하려..

SAP/ABAP 2013.09.03