2011-12-03 1 views
3

개월 추가에 관한 :ABAP 쿼리는이 같은 과제를 부여받은 날짜

나는 사용자가 날짜와 그가 달의 번호를 입력 타 입력 상자를 입력하는 선택 화면 입력 상자를해야합니다.

나는 주어진 달 수를 현재 날짜에 더하고 새 날짜를 얻습니다.

예 : 입력 한 날짜가 2/3/2011이고 주어진 월 수가 5 인 경우 7/3/2011을 가져야합니다.

시스템 날짜 변수 'SY-DATUM'에 응용 프로그램 서버 날짜가 있다는 것을 알고 있습니다. 그리고 날짜 조작을하려면 SY-DATUM + 2 .i는 일 추가 만 할 수 있다고 말하면됩니다. 월을 어떻게 추가해야합니까?

제게 머리를 줘주세요. 감사합니다.

답변

9

날짜에 몇 개월을 추가하는 쉬운 방법은 MONTH_PLUS_DETERMINE 함수 모듈을 사용하는 것입니다. 같은

사용 무언가 :

data: mydate type sy-datum. 
mydate = sy-datum. 

call function 'MONTH_PLUS_DETERMINE' 
exporting 
    MONTHS = 5 
    OLDDATE = mydate 
importing 
    NEWDATE = mydate. 

(. 당신이 빼려면 MONTHS는 음수가 될 수 있습니다)

날짜와 시간 계산을위한 다른 도우미 기능이 많이 있습니다. SDN 위키에있는 Useful ABAP Function Modules은 그런 것들을 찾고있을 때 좋은 곳입니다.

+0

덕분에 여전히 덮여 기능 모듈을 have'nt. –

+3

이제는 전화하는 법을 배울 시간입니다. 바퀴를 다시 발명하지 마십시오. 날짜/시간 계산은 까다 롭습니다. (이 특정 경우에도 날짜 변수의 월 부분에 5를 더할 수 있습니다.) – Mat

0

@ 매트가 정답을주었습니다. 당신이 (당신의 이유가 무엇이든간에) 함수 모듈없이 작업을 수행하고 귀하의 질문에 예를 다음하려는 경우, 당신은 다음처럼 문제를 접근 할 수

data: lv_month type i; 
lv_month = sy-datum+4(2). 
sy-datum+4(2) = lv_month + 5. 
// Check if months are > 12, if so, subtract 12 and increase sy-datum+0(4). Remember to loop if the input can be greater than 12 months. 

@Mat가 언급 한 바와 같이이의를 재발견하지 않습니다 바퀴. 위의 접근 방식은 좋지 않으며 함수 모듈을 사용하면 목적지까지 더 빨리 도달 할 수 있습니다.

0

개월과 날짜를 FM 아래로 전달하여 새 날짜를 얻으십시오. 여전히 new..i 거기 reply.Is 기능 modules..because 메신저없이 할 수있는 방법에 대한

DATA : LV_NEWDATE TYPE SY-DATUM. 
CALL FUNCTION 'BKK_ADD_MONTH_TO_DATE' 
       EXPORTING 
        MONTHS = LV_MONTH " pass months to add 
        OLDDATE = LV_DATE "pass date here 
       IMPORTING 
        NEWDATE = LV_NEWDATE. "get new date