메뉴 건너뛰기

SAP 한국 커뮤니티



소수점 뒷자리 0 제거 로직

양키(이경환) 2014.01.19 16:26 조회 수 : 9429 추천:1

소수점뒤의 0을 제거하는 로직입니다.

검증된 로직은 아닙니다. 참조만 해주세요~

 

11.jpg

 

 

REPORT TEST01.

 

DATA lv_char13(13),
       lv_char17(17).

DATA lv_menge TYPE ekpo-menge.

lv_menge '123456789.500000'.
lv_char17 lv_menge.

WRITE / lv_menge.

PERFORM exclude_zero USING lv_char17
                     CHANGING lv_char13.

WRITE / lv_char13.

*&---------------------------------------------------------------------*
*&      Form  EXCLUDE_ZERO
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_lv_menge  text
*      <--P_lv_char13  text
*----------------------------------------------------------------------*
FORM EXCLUDE_ZERO  USING    P_UNIPR
                   CHANGING P_CHAR13.
  CLEARP_CHAR13.

  CONSTANTSC_EXEP_NUM_PER TYPE STRING VALUE '[^0-9.,]',
             C_EXEP_NUM     TYPE STRING VALUE '[^1-9]',
             C_COMMA        TYPE C      VALUE ',',
             C_PERIOD       TYPE C      VALUE '.'.

  DATALV_STRING TYPE STRING.
  DATALV_CNT    TYPE I  VALUE 0.
  DATALV_BEF TYPE STRING,
        LV_AFT TYPE STRING,
        LV_TEMP TYPE CHAR255.

  MOVE  P_UNIPR TO LV_STRING.  "DATA 이동

  SHIFT LV_STRING LEFT DELETING LEADING SPACE.
  SPLIT LV_STRING AT C_PERIOD   INTO LV_BEF LV_AFT.

  FIND REGEX C_EXEP_NUM_PER IN LV_STRING.
  IF SY-SUBRC 0.
    EXIT.
  ELSE.
    SY-SUBRC 0.
    CLEAR LV_STRING.
  ENDIF.

  MOVE LV_AFT TO LV_CNT"1.000 이런 케이스 -> 분류 위해
  IF LV_CNT <> 0.

    WHILE SY-SUBRC EQ 0.
      MOVE LV_AFT TO LV_TEMP.
      LV_CNT STRLENLV_TEMP 1.

      MOVE LV_TEMP+LV_CNT(1TO LV_AFT.
      FIND REGEX C_EXEP_NUM IN LV_AFT.
      IF SY-SUBRC 0.
        MOVE LV_TEMP+0(LV_CNTTO LV_AFT.
      ELSE.
        MOVE LV_TEMP TO LV_AFT.
      ENDIF.
    ENDWHILE.

    CONCATENATE LV_BEF C_PERIOD LV_AFT INTO LV_STRING.

  ELSE.
    MOVE LV_BEF TO LV_STRING.

  ENDIF.

  MOVE LV_STRING TO P_CHAR13.

ENDFORM.                    " EXCLUDE_ZERO

번호 제목 글쓴이 날짜 조회 수
107 KR_POSTCODE : 한국주소입력 Version 2.0 대략나 2021.03.31 980
106 HTTP 통신하는 로직 [3] 대략나 2016.12.20 5636
105 XML 을 아밥 스트럭쳐 또는 인터널테이블로 변경시키는 로직 [1] 대략나 2016.12.20 3790
104 ALV EDIT 샘플 프로그램 sapjoy 2015.06.26 9246
103 파일 메일(e-mail) 첨부로 보내기 [2] sapjoy 2014.10.10 7180
102 데이터 이메일(e-mail) xls 파일로 보내기 [2] sapjoy 2014.10.10 6675
101 Tree ALV 샘플 [5] 양키(이경환) 2014.02.05 10514
100 Split 의 사용 [1] 양키(이경환) 2014.02.05 10665
» 소수점 뒷자리 0 제거 로직 file 양키(이경환) 2014.01.19 9429
98 10이하의 홀수 마방진 은미짱 2013.10.18 6787
97 [Module pool] Container에 webpage 넣기. [2] 냥냥 2013.03.19 11196
96 COMAPY CODE에 할당된 Fiscal variant에 대한 calendar date 변환 paran 2013.02.28 10463
95 멀 어떻게 해야 하는건질 몰라 질문 드립니다 [5] 쏠라맨 2012.10.12 11662
94 nugg 프로그램을 sap 에 생성하기.. [3] file MadMax 2012.10.11 10825
93 인터널 테이블을 사용한 구구단 출력 두가지 입니다 - WRITE, ALV 이용 [1] kofnhuge 2012.10.10 14009
92 Search For Program/Function/Table Desc&Name [8] file 초짜 2011.09.30 9830
91 스크린에서 버튼을 tree 처럼 만들기. [32] file Jenny 2011.08.11 17655
90 통화단위, krw, usd 일반 필드에 변환시 로직(소수점, 자리수) [4] sapjoy 2011.07.19 15561
89 Dynamic Select 소스 [5] 떡밥 2011.06.03 17768
88 [onepaper] 참고자료 Archiving 세팅에 필요한 파일소스입니다. [7] file 원니컴 2011.03.22 13798