메뉴 건너뛰기

SAP 한국 커뮤니티

일/주/월/분기/년..연산가능 펑션~

초짜 2007.07.31 14:33 조회 수 : 5206 추천:23

*"----------------------------------------------------------------------
*"*"Local interface:
*"  IMPORTING
*"     VALUE(IN_RECTYPE) TYPE  ALPDBRTYP
*"     VALUE(IN_NBR_DWXMQY) TYPE  I
*"     VALUE(IN_DATE) TYPE  ALDATE
*"  EXPORTING
*"     VALUE(OUT_DATE) TYPE  ALDATE
*"  EXCEPTIONS
*"      OTHER_ERROR
*"----------------------------------------------------------------------


* R/3 2005S Version Standard 에 있는 펑션(SALP_CALC_DATE)이나


* Month/Quarter 는 마이너스값 입력시 적용안되는점 수정
* IN_RECTYPE : Days (D,R,I,H) or Weeks (W,A,B,C) or X-Days (X,E,F,G) or
*              Months (M,J,K,L) or Quarters (Q,N,O,P) or Years (Y,S,T,U)
* IN_NBR_DWXMQY : 원하는 구간값입력(+/-)
* IN_DATE : 기준일자
* OUT_DATE : the result


  DATA: dd TYPE i,
        md TYPE i,
        cd TYPE i,
        mm TYPE i,
        tt TYPE i,
        op TYPE d,
        fdate TYPE d.
  CASE in_rectype.
    WHEN 'D' OR 'R' OR 'I' OR 'H'.
      fdate = in_date + in_nbr_dwxmqy.
    WHEN 'A' OR 'B' OR 'W' OR 'C'.
      fdate = in_date + ( in_nbr_dwxmqy * 7 ).
    WHEN 'E' OR 'F' OR 'X' OR 'G'.
      fdate = in_date + in_nbr_dwxmqy.
    WHEN 'M' OR 'J' OR 'K' OR 'L'.
      dd = in_nbr_dwxmqy DIV 12.
      md = in_nbr_dwxmqy MOD 12.
      mm = in_date+4(2).
      cd = mm + in_nbr_dwxmqy.
      fdate = in_date.
      tt = fdate+6(2) - 1.
      fdate+6(2) = '01'.
      IF dd > 0.
        fdate+0(4) = in_date+0(4) + dd.
      ELSEIF cd <= 0.
        fdate+0(4) = in_date+0(4) + dd.
      ENDIF.
      fdate+4(2) = in_date+4(2) + md.
      IF fdate+4(2) > 12.
        fdate+4(2) = fdate+4(2) MOD 12.
        IF in_nbr_dwxmqy > 0.
          fdate+0(4) = fdate+0(4) + 1.
        ENDIF.
      ENDIF.
      fdate = fdate + tt.
    WHEN 'Q' OR 'N' OR 'O' OR 'P'.
      dd = ( in_nbr_dwxmqy * 3 ) DIV 12.
      md = ( in_nbr_dwxmqy * 3 ) MOD 12.
      cd = mm + in_nbr_dwxmqy.
      fdate = in_date.
      tt = fdate+6(2) - 1.
      fdate+6(2) = '01'.
      IF dd > 0.
        fdate+0(4) = in_date+0(4) + dd.
      ELSEIF cd <= 0.
        fdate+0(4) = in_date+0(4) + dd.
      ENDIF.
      fdate+4(2) = in_date+4(2) + md.
      IF fdate+4(2) > 12.
        fdate+4(2) = fdate+4(2) MOD 12.
        IF in_nbr_dwxmqy > 0.
          fdate+0(4) = fdate+0(4) + 1.
        ENDIF.
      ENDIF.
      fdate = fdate + tt.
    WHEN 'Y' OR 'S' OR 'T' OR 'U'.
      fdate = in_date.
      fdate+0(4) = in_date+0(4) + in_nbr_dwxmqy.
    WHEN OTHERS.
      fdate = in_date.
      RAISE other_error.
  ENDCASE.


  out_date = fdate.

번호 제목 글쓴이 날짜 조회 수
287 납품 UserExit [2] 한해동안 2009.08.12 5383
286 sap help desk 전화 번호 [1] sapjoy 2007.03.11 5382
285 속도개선하기....INDEX를 이렇게도 쓰네용~~ [9] 김창훈 2007.08.14 5374
284 스크린을 생성하여 팝업창을 띄웠는데요~닫기가 안되요 [3] 흐르는강물처럼 2014.10.06 5373
283 트리 만들기 [6] 푸른밤 2007.07.31 5349
282 메세지 박스 사용법 공개. [4] 똥뚜 2014.12.19 5335
281 Text OBject 텍스트를 팝업화면으로 띄우기 [3] 양키(이경환) 2015.11.25 5314
280 화면상에 입력된 parameter , selection-option 값 inter table로 담는 펑션 ㅋ [5] file bd 2008.03.25 5307
279 SAP에서 바코드 인쇄하기 [1] 홍성현 2007.08.09 5303
278 엑셀 65000 라인초과시 사용 유틸 [5] file GG 2007.08.19 5296
277 Report 프로그램 Application Toolbar 에 버튼추가 sapjoy 2006.12.28 5281
276 인덱스인터널테이블만들기 [2] 천지개벽 2009.01.29 5266
275 <b>[완료]</b>netweaver 설치중 오류log 원인 아시는분 좀 알려주세요 [1] 카즈키 2008.07.19 5262
274 특수문자가 깨지는 문제-스마트폼 [2] sapjoy 2016.06.21 5241
273 변수를 메모리로 올리는 세가지 방법 [5] sapjoy 2006.12.06 5214
» 일/주/월/분기/년..연산가능 펑션~ [7] 초짜 2007.07.31 5206
271 엑셀로 데이터 내보내기 샘플 코드 [7] sapjoy 2007.01.26 5193
270 화면에 드롭다운 리스트 박스 추가 하기. ABCD [8] 버즈즈 2008.01.04 5177
269 READ_TEXT 관련 [14] file 노름마치 2007.11.15 5177
268 바탕화면에 바로가기 생성하기 [1] 김윤승 2007.06.25 5141