전에 누가 요청이 있어서 만들어둔 펑션
혹시나 쓰일일이 있을려낭 ㅡ,.ㅡ
FUNCTION Z_SPLIT_3_COMMA_N.
*"----------------------------------------------------------------------
*"*"Local interface:
*" IMPORTING
*" REFERENCE(INPUT) OPTIONAL
*" VALUE(INPUT_TYPE) TYPE CHAR1 OPTIONAL
*" EXPORTING
*" VALUE(OUTPUT)
*" EXCEPTIONS
*" NO_INT_TYPE "NO INT TYPE
*" INPUT_TYPE_X "X = 소수점 없음 OTHER = 소수점 있음
*"----------------------------------------------------------------------
DATA : TEMP_S1 TYPE STRING.
DATA : TEMP_S2 TYPE STRING.
DATA : TEMP_FLAG(1) TYPE C.
DATA : TEMP_INPUT TYPE STRING.
DATA : M TYPE I.
DATA : N TYPE I.
DATA : LEN TYPE I.
DATA : TMP TYPE STRING.
TEMP_INPUT = INPUT.
IF TEMP_INPUT CN '1234567890.- '.
RAISE NO_INT_TYPE.
ENDIF.
REPLACE '-' WITH '' INTO TEMP_INPUT.
IF SY-SUBRC EQ 0.
TEMP_FLAG = '-'.
ENDIF.
SPLIT TEMP_INPUT AT '.' INTO TEMP_S1 TEMP_S2.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
EXPORTING
INPUT = TEMP_S1
IMPORTING
OUTPUT = TEMP_S1.
CONDENSE : TEMP_S1 NO-GAPS.
LEN = STRLEN( TEMP_S1 ).
M = LEN MOD 3.
CLEAR : OUTPUT.
DO.
IF M <= LEN.
IF M NE 0.
IF M < 3.
TMP = TEMP_S1+0(M).
ELSE.
N = M - 3.
TMP = TEMP_S1+N(3).
ENDIF.
IF OUTPUT IS NOT INITIAL.
CONCATENATE OUTPUT TMP INTO OUTPUT SEPARATED BY ','.
ELSE.
OUTPUT = TMP.
ENDIF.
M = M + 3.
ELSE.
M = 3.
ENDIF.
ELSE.
EXIT.
ENDIF.
ENDDO.
IF TEMP_S2 IS NOT INITIAL AND INPUT_TYPE NE 'X'.
CONCATENATE OUTPUT TEMP_S2 INTO OUTPUT SEPARATED BY '.'.
ENDIF.
IF TEMP_FLAG IS NOT INITIAL.
CONCATENATE TEMP_FLAG OUTPUT INTO OUTPUT.
ENDIF.
ENDFUNCTION.
'SAP > BSP' 카테고리의 다른 글
BSP - LAYOUT MESSAGE 효과적으로 띄우기 (0) | 2008.02.25 |
---|---|
BSP - BSP에서 모달창 쓰기 (0) | 2008.02.25 |
BSP - 파일 업로드와 다운로드 1 (0) | 2008.02.22 |
BSP - 각 필드의 자동 합계 소스 (0) | 2008.02.22 |
BSP - 나만의 EVENT 캐스팅 구문 (0) | 2008.02.22 |