по сути, нужно уйти от буквенного представления даты, заменив текст.
это можно сделать и в xl, создав дополнительную колонку, где преобразование будет автоматически.
вариант решения через ABAP
Code:
types: BEGIN OF ty_str2str,
was TYPE string,
target TYPE string,
END OF ty_str2str,
tt_str2str TYPE STANDARD TABLE OF ty_str2str
.
data lt_str2str TYPE tt_str2str.
FIELD-SYMBOLS <fs_str> TYPE ty_str2str.
data lt_xl TYPE ISSR_ALSMEX_TABLINE.
data ls_xl TYPE ALSMEX_TABLINE.
"""" различные даты
lt_xl = VALUE ISSR_ALSMEX_TABLINE(
( ROW = 1 COL = 1 VALUE = 'ВС01-ЯНВ-2017')
( ROW = 1 COL = 2 VALUE = 'ВС01-ЯНВ-17')
( ROW = 1 COL = 3 VALUE = '01-ЯНВ-2017')
( ROW = 1 COL = 3 VALUE = '1 фев 17')
).
" таблица замены текстовой информации на числовую
lt_str2str = value #(
( was = 'ВС' target = '' )
( was = 'ПН' target = '' )
( was = '-ЯНВ-' target = '.01.' )
( was = '-ФЕВ-' target = '.02.' )
( was = ' ФЕВ ' target = '.02.' )
( was = ` фев ` target = '.02.' )
).
LOOP AT lt_str2str ASSIGNING <fs_str>.
REPLACE ALL OCCURRENCES OF <fs_str>-was
IN TABLE lt_xl WITH <fs_str>-target
IGNORING CASE.
ENDLOOP.
LOOP AT lt_xl ASSIGNING FIELD-SYMBOL(<fs_xl>).
write: / <fs_xl>-value .
CONDENSE <fs_xl>-value NO-GAPS.
call function 'CONVERT_DATE_TO_INTERNAL'
exporting
date_external = <fs_xl>-value
* ACCEPT_INITIAL_DATE =
IMPORTING
DATE_INTERNAL = <fs_xl>-value
EXCEPTIONS
DATE_EXTERNAL_IS_INVALID = 1
OTHERS = 2
.
if sy-subrc <> 0.
* Implement suitable error handling here
write 'No result'.
else.
WRITE <fs_xl>-value.
endif.
ENDLOOP.