본문 바로가기
ERP-SAP/ABAP

<ABAP> CONVERT Num to char, Char to num ( 변환 )

by 행복한워니의 기록 2012. 8. 28.
728x90
반응형

오늘도 쌩기초를 정리하고 있는데..
 
문득 이런 생각이 들었다. Number field 를 Character 로 바꾸어야만 하나?
 
혹은 Character를 number field에 넣을때 변환해야 하나?
 
그래서 실험해본다.
 
This is test Source!!!

(24년에 이글을 보고 깨달은 점... 아.... 개념이 틀렸구나..ㅎㅎㅎ )

24.02 간단 추가설명함...
type N 으로 선언된 것들은 numeric character
즉 숫자형 문자로.... 문자필드가 아니다...
이걸로 선언하면 어찌되냐면 자릿수대로 0이 찬다.
즉, 숫자필드6자리 10을 N타입 6자리로 보내면
000010 이 되는것이다....

그래서 진짜 문자로 선언된 필드의 숫자를 숫자필드에
넣으려면 안전하게 아래 펑션을 이용해라...

N 타입선언은 NUM TO CHAR
CHAR TO NUM 개념은 아니란 생각이 들고
Num to num 개념에 가깝다는 생각이 든다...
N이란게 결국 숫자형 문자니까.. 숫자만 들간다.

실제 코딩시 char 필드를 숫자필드에 넣고싶으면
펑션쓰는게 안전한게 char 에 숫자 뿐만아니라
문자도 올 수 있기에 덤프 우려가 있어서 그렇다..


 

  data : lv_char1 type char6,
       lv_num1(6)    type value '20' ,

       LV_CHAR2 TYPE CHAR6 VALUE '30',
       LV_NUM2(6)  TYPE N.


lv_char1 lv_num1. "NUM TO CHAR 

lv_num2 lv_char2. "char to num 이다

write:/ lv_char1, lv_num1.     case 1
WRITE:/ lv_char2, lv_num2.
           case 2

 
 
이것에 대한 결과는
Char        num

000020 000020        case1  num to char
30     000030        case 2 char to num

 
으로 나온다.
 
결국. number to char 는 딱히 펑션을 쓸 필요가 없다.. 그대로 들어가는거고 (0까지 input 된다)
 
char to num 은 자동으로 뒤부터 30이 들어가니 특별한 경우가 아니면 쓸 필요가 없다.
 
이러한 일은 Interface 시에 자주 일어나는데,
 
Interface 받을때는 거의 char 로 넘어오고 해당 char 를 sap 에 맞게 num 필드에 넣어주는 경우가 생긴다...
 
자릿수가 똑같다면 그냥 때려 박아도 상관 없다.......
 
덤프나 오류는 전혀 안나니까 걱정말고...
 
이정도는.... 실험하면서 알아가면 까먹지 않을것이당..
 
난 그래도 펑션을 쓰고 싶다... 라면
 

    CALL FUNCTION 'MOVE_CHAR_TO_NUM'
    EXPORTING
      chr             gt_h601d-zvsnr
    IMPORTING
      num             lv_num
    EXCEPTIONS
      convt_no_number 1
      convt_overflow  2
      OTHERS          3.

 
이 펑션을 참조해라

728x90
반응형