구슬이네 IT & Media / IT 와 미디어를 바라봅니다

ABAP 형변환

IT 개발/SAP-ABAP 2012. 4. 20. 16:17


원문 : http://www.abapschool.com/board/xboard/read.php?boardname=qna&list_num=773&offset=1155&PHPSESSID=509f1a872cc40ebdcacf32fa72f33320

 

형변환이 대한 것입니다. abap help 에 나와 있는 내용을 정리해 봤습니다.

generic type 이외에 predefined type (사전정의된유형) 에 대하여만 참고 바랍니다.

 

generic type 은 Assign 되는 source field 의 타입속성을 따르게 때문에 따로 정리할 수가 없을 것 같습니다.

 

Predefined type 에 대하여는 다음과 같습니다.

( 자세한 설명은 도움말을 참고하여 주시기 바랍니다.)

 

source field Type C => target field type C, D, F, I, B, S, N, P, STRING, T, X, XSTRING

source field Type D => target field type C, D, F, I, B, S, P, STRING, T, X, XSTRING

source field Type F => target field type C, D, F, I, B, S, N, P, STRING, T, X, XSTRING

source field Type I, B OR S => target field type C, D, F, I, B, S, N, P, STRING, T, X, XSTRING

source field Type N => target field type C, D, F, I, B, S, N, P, STRING, T, X, XSTRING

source field Type P => target field type C, D, F, I, B, S, N, P, STRING, T, X, XSTRING

source field Type STRING => target field type C, D, F, I, B, S, N, P, STRING, T, X, XSTRING

source field Type T => target field type C, D, F, I, B, S, N, P, STRING, T, X, XSTRING

source field Type X => target field type C, D, F, I, B, S, N, P, STRING, T, X, XSTRING

source field Type XSTRING => target field type C, D, F, I, B, S, N, P, STRING, T, X, XSTRING

 

보시면 아시겠지만 형변환이 별 차이가 없습니다.

 

[첫번째 질문]

 

DATA L_CHAR TYPE CHAR 10 VALUE '         0      '.

DATA L_INT      TYPE I.

 

* L_CHAR 의 문자가 숫자뿐이라면

IF L_CHAR CO '0123456789'.

    L_INT = L_CHAR.

ELSE.

* 숫자이외의 문자가 있으므로 변환불가입니다.

ENDIF.

 

이렇게만 해주시면 됩니다.

 

[두번째 질문]

아밥에서 NULL은 거의 사용을 하지 않습니다.

 

사전정의된 데이터 타입은 기본적으로 정의될때 기본값을 가지므로

NULL 에 대한 점검이 거의 없다고 보시면 됩니다.

 

궂이 NULL 을 갖는 값을 원하신다면

 

CLEAR field WITH NULL.

 

로 CLEAR 하셔야 합니다.

 

질문은 문자열 치환방법이나 공백제거 방법에 대하여 물어보신것으로 하고 답변드립니다.

(사용방법은 개인별로 방법이 다 달라서 제가 가끔 사용하는 방법위주로 말씀드리겠습니다)

문자열 치환 :

단일문자 치환

DATA L_STRING TYPE CHAR10 VALUE 'ABCDEFGHIJ'.

* L_STRING 을 모두 소문자로 변환한다면

TRANSLATE L_STRING TO LOWER CASE.

* 또는

TRANSLATE L_STRING USING 'AaBbCcDdEeFfGgHhIiJj'.

 

공백제거( 문자열에 대하여 )

DATA L_STRING TYPE CHAR10 VALUE '   BAS   '.

 

SHIFT L_STRING RIGHT DELETING TRAILING SPACE.

 

등등...

 

문자열에서 특정한 문자(공백같은) 에 대하여 NULL 값으로 주는 것은 힘들 것 같습니다.

 

수고하세요.