и корректна ли она? Помню, писал регулярку, но протерял. А может есть в стандарте такое?
ФМ *DATE*TO*INTERNAL* как-то так
CONVERT_DATE_TO_INTERNAL
Занятный фм..
У меня вот так заковыристо, но получилось: if conv d( conv d( cval ) + 0 ) is not initial.
Хм. Однако. Только оно жрёт исключительно YYYYMMDD
чего-то там *date*plausabilty*
/OSP/VALIDATE_DATE_TIME - может потом через него прогнать результат, хотя не быстро по итогу будет - 2 ФМ
[0-9]{2}.[0-9]{2}.[0-9]{4} это для даты формата dd.mm.yyyy
точки нужно экранировать [0-9]{2}\.[0-9]{2}\.[0-9]{4}
не нужно я проверял
(0[1-9]|[12][0-9]|3[01])[- /.](0[1-9]|1[012])[- /.](19|20)\d\d
если какая-то проблема решается регулярным выражением, то теперь у вас две проблемы )
^(0[1-9]|[12][0-9]|3[01])[- /.](0[1-9]|1[012])[- /.](19|20)\d\d$
Это обязательно
Я понимаю, что это работает, но мне больно.
выход за границы комфорта стимулирует развитие )
DATA: l_str TYPE string VALUE 'd20220222', l_date TYPE sy-datum. l_date = l_str. CALL FUNCTION 'DATE_CHECK_PLAUSIBILITY' EXPORTING date = l_date EXCEPTIONS OTHERS = 2. IF sy-subrc <> 0. WRITE: / l_date, 'Не дата'. ENDIF. l_date = '20200229' CALL FUNCTION 'DATE_CHECK_PLAUSIBILITY' EXPORTING date = l_date EXCEPTIONS OTHERS = 2. IF sy-subrc = 0. WRITE: / l_date, 'А тут дата'. ENDIF.
Обсуждают сегодня