SAP ABAP에서 콜론(:) 기호는 콜론 기호 앞의 구문(명령어)를 마침표(.)가 나오기 전까지 콤마(,[쉼표]) 기호로 나누어 지는 각각에 동일하게 적용할 때 사용합니다. 따라서 콜론(:) 기호를 적절히 사용하면 반복되는 구문(명령어)을 상당히 줄일 수 있는 효과가 있습니다.
콜론(:) 기호를 가장 많이 사용할 때는 ABAP 프로그램에서 변수를 선언할 때 입니다.
ABAP 프로그램을 개발하면서 Colon(:)과 Comma(,)를 함께 사용하는 경우가 정말 많습니다. 거의 아무 생각 없이 사용한다고 할 정도로 당연시하게 사용하는 것이 콜론(:)과 콤마(,)의 조합입니다.
편리하게 사용할 수 있는 콜론과 콤마의 조합이지만 주의해서 사용해야 할 경우가 있습니다.
이번 글에서는 ABAP에서 콜론(:)과 콤마(,)를 함께 사용할 때 편리한 점과 주의할 점 각각에 대한 설명을 해 보겠습니다.
ABAP에서 일반적인 콜론(:)과 콤마(,)의 사용 예제
콜론(:)과 콤마(,)를 사용하지 않았을 때와 사용했을 때의 ABAP 코딩 입니다.
▼ TABLES 선언할 때
TABLES MARA.
TABLES MAKT.
TABLES MARC.
==> TABLES: MARA, MAKT, MARC.
▼ DATA 선언할 때
DATA GV_MATNR LIKE MARA-MATNR.
DATA GV_MAKTX LIKE MAKT-MATKX.
DATA GV_WERKS LIKE MARC-WERKS.
==> DATA: GV_MATNR LIKE MARA-MATNR,
GV_MAKTX LIKE MAKT-MATKX,
GV_WERKS LIKE MARC-WERKS.
DATA BEGIN OF IT_LIST OCCURS 0.
DATA MATNR LIKE MARA-MATNR.
DATA MAKTX LIKE MAKT-MATKX.
DATA WERKS LIKE MARC-WERKS.
DATA END OF IT_LIST.
==> DATA: BEGIN OF IT_LIST OCCURS 0,
MATNR LIKE MARA-MATNR,
MAKTX LIKE MAKT-MATKX,
WERKS LIKE MARC-WERKS,
END OF IT_LIST.
▶ 앞의 예제를 보면 쉽게 알 수 있듯이 반복되는 TABLES 또는 DATA를 콜론(:)을 사용함으로써 생략이 가능하게 됩니다.
UPDATE 구문에서 콜론(:)과 콤마(,)를 사용했을 경우 문제점
콜론(:)과 콤마(,)는 주로 데이터 선언부에서 많이 사용하지만 OPEN QUERY에서도 사용할 수 있습니다.
만약 UPDATE 구문에서 콜론과 콤마를 사용했을 경우 어떤 문제가 생기는지 알아보겠습니다.
일반적으로 UPDATE 구문은 아래와 같습니다.
UPDATE ZCUSTOMER SET NAME = ‘LEE’
PHONE = ‘010-1000-9999’
WHERE ID = ‘12345’.
ID가 ‘12345’인 고객의 NAME과 PHONE을 변경하는 구문입니다.
그런데 만약 SET 구문에 콜론과 콤마를 붙인다면 결과는 전혀 다르게 처리 됩니다.
UPDATE ZCUSTOMER SET: NAME = ‘LEE’,
PHONE = ‘010-1000-9999’
WHERE ID = ‘12345’.
==> 위의 구문이 실제 처리되는 구문으로 바꾸면 아래와 같아집니다.
UPDATE ZCUSTOMER SET NAME = ‘LEE’.
UPDATE ZCUSTOMER SET PHONE = ‘010-1000-9999’
WHERE ID = ‘12345’.
UPDATE가 어떻게 처리될지 바로 이해가 되실 겁니다.
ZCUSTOMER 테이블의 모든 NAME은 ‘LEE’로 변경되고, ID가 ‘12345’인 고객의 PHONE만 추가로 변경됩니다.
무심코 사용한 콜롬(:)과 콤마(,) 하나가 엄청난 결과를 가져올 수 있음에 주의하시길 바랍니다.
※ 함께 읽으면 도움이 될 만한 다른 포스팅 글입니다.
- ABAP 디버깅(Debugger) 실행 중에 인터널테이블을 로컬 파일로 저장 하는 방법
- SAP ABAP의 Runtime Error(Dump Analysis) 목록 조회 및 오류 위치 확인 방법
- ABAP Dictionary의 테이블유지보수생성기로 테이블 유지보수 다이얼로그를 생성하고 활용하는 방법
- ABAP BDC 프로그램의 CALL TRANSACTION(실시간) 처리에 대한 예제
- SAP ABAP에서 인덱스(Index)의 정의 및 쿼리문에서 인덱스가 적용되지 않는 원인
- SAP BDC(Batch Data Communication, Batch Input) 이해하기
이 글이 도움이 되었기를 바랍니다. ^-^