ФМ – DATE_IN_FUTURE, во входных параметрах дата должна быть в формате “ddmmyyyy”
Пример:
lv_datum+0 = sy-datum+6(2).
lv_datum+2 = sy-datum+4(2).
lv_datum+4 = sy-datum(4).
CALL FUNCTION 'DATE_IN_FUTURE'
EXPORTING
ANZAHL_TAGE = -10
IMPORT_DATUM = lv_datum
IMPORTING
* EXPORT_DATUM_EXT_FORMAT =
EXPORT_DATUM_INT_FORMAT = lv_fdmdt.
А то все время забываю как он называется.
Сюда я буду сохранять всякие куски кода, конфигов, ссылки, чтобы в один прекрасный день когда мне это снова понадобится - не вспоминать судорожно где и когда я это применял.
27 апреля 2011 г.
ABAP: FM для вычисления даты +/- определенное кол-во дней
Подписаться на:
Комментарии к сообщению (Atom)
lv_new_date = sy-datum - 10.
ОтветитьУдалить" но это с обычным форматом "yyyymmdd"
Хм, ты вот меня сейчас озадачил, т.е. вот так просто от любой даты во внутреннем формате можно отнять или прибавить кол-во дней и это правильно сработает? Как то не ожидал, что все может быть так просто.
ОтветитьУдалитьу Макса была надобность выгражать в эксель дату в формате даты, а не текста.
ОтветитьУдалитьтак повозились с разными фм-ами - нормального результата не получили.
i = sy-datum - '19000101' + 2.
причём один +1 - это поправка на базу отсчёта.
а второй +1 очень интересный: Excel по умолчанию считает 1900-ый год високосным, что не правда.
Есть еще хорошая и нужная функция - получение последнего дня ТЕКУЩЕГО месяца.
ОтветитьУдалитьпросто добавить месяц и получить предыдущий день по п.2. не получится, ибо еще надо проверять тогда что месяц не 12...
CALL FUNCTION 'RP_LAST_DAY_OF_MONTHS'
EXPORTING DAY_IN =
IMPORTING LAST_DAY_OF_MONTH =
.
2. для предыдушего месяца можно получить с помощью
date+6(2) = '01'.
subtract 1 from date.
вполне можно просто добавить месяц или несколько вот так:
ОтветитьУдалитьso_erdat-sign = 'I'.
so_erdat-option = 'BT'.
CONCATENATE sy-datum(6) '01' into so_erdat-low. " первый день месяца
CALL FUNCTION 'RE_ADD_MONTH_TO_DATE'
EXPORTING
MONTHS = 1
OLDDATE = so_erdat-low
IMPORTING
NEWDATE = so_erdat-high. " первый день следующего месяца
so_erdat-high = so_erdat-high - 1. " последний день этого месяца
APPEND so_erdat.
но твой фм удобнее если работаем строго с текущим месяцем.