SAPфорум.RU
https://www.sapboard.ru/forum/

Изменение формата даты
https://www.sapboard.ru/forum/viewtopic.php?f=13&t=98148
Страница 1 из 1

Автор:  dogson123 [ Вт, ноя 05 2019, 11:19 ]
Заголовок сообщения:  Изменение формата даты

Всем привет! У меня есть таблица с полем aedat формата ддммгггг, мне нужно вычленить оттуда гггг, и закинуть во внутреннюю таблицу. Как это можно сделать?

Автор:  RoustR [ Ср, ноя 06 2019, 10:13 ]
Заголовок сообщения:  Re: Изменение формата даты

Тип поля символьный? Работайте как со строкой aedat+4(4).

Автор:  dogson123 [ Ср, ноя 06 2019, 13:04 ]
Заголовок сообщения:  Re: Изменение формата даты

RoustR написал(а):
Тип поля символьный? Работайте как со строкой aedat+4(4).

Черт, торопился и пропустил главную часть вопроса.) Кроме того что вычленить год, нужно чтобы в селекционном экране можно было вводить дату в формате гггг, например 2018-2019 и программа выдавала бы закупки,
сделанные в этот промежуток.

Автор:  DED_MOROZ [ Ср, ноя 06 2019, 13:36 ]
Заголовок сообщения:  Re: Изменение формата даты

1) Сделать на экране селект-опшинс с типом, например, GJAHR
2) Написать проверку, чтобы значение "По" не было меньше значения "С"
3) Выбрать нужные вам данные "Закупок" за интервал дат [A;B], где А = первое число первого месяца года "С", B - 31 число 12 месяца года "По"

Автор:  RA [ Ср, ноя 06 2019, 13:37 ]
Заголовок сообщения:  Re: Изменение формата даты

Code:
PARAMETERS :  p_year  TYPE gjahr .
.....
  CONCATENATE p_year '0101' INTO lv_begda.
  CONCATENATE p_year '1231' INTO lv_endda.
....
and aedat between lv_begda AND lv_endda


Автор:  Kuranov.Dmitry [ Ср, ноя 06 2019, 14:44 ]
Заголовок сообщения:  Re: Изменение формата даты

RA написал:
Code:
PARAMETERS :  p_year  TYPE gjahr .
.....
  CONCATENATE p_year '0101' INTO lv_begda.
  CONCATENATE p_year '1231' INTO lv_endda.
....
and aedat between lv_begda AND lv_endda


between разве будет работать с форматом ДДММГГГГ?

Автор:  Korvax [ Ср, ноя 06 2019, 14:48 ]
Заголовок сообщения:  Re: Изменение формата даты

А теперь предположим, что в селект-опшинс исключили 2019, 2018 года. Что в этом случае?

Предлагаю предусмотреть всё:
1. делаем внутреннюю таблицу со списком годов от 1900 до 3000
2. на экране селект-опшинс
3. удаляем во внутренней таблице записи, которые не соответствуют селект-опшинс
4. по внутренней таблице строим свой range с указанием low = '0101'+year, high = '3112'+year
5. range используем при выборе данных

Автор:  LAT [ Ср, ноя 06 2019, 21:57 ]
Заголовок сообщения:  Re: Изменение формата даты

Code:
DATA: g_year TYPE gjahr.
SELECT-OPTIONS: s_year FOR g_year.
...
SELECT ... FROM ...
  WHERE left( aedat, 4 ) in @s_year[]
  INTO TABLE ...
Ну или по старинке (идея: на основе селект-опшенсов для года сформировать селект-опшенсы для дат):
Code:
DATA: g_year TYPE gjahr.
SELECT-OPTIONS: s_year FOR g_year.
...
  DATA: trange_date TYPE RANGE OF d.
  DATA: range_date LIKE LINE OF trange_date.
  FIELD-SYMBOLS: <year> LIKE s_year.

  LOOP AT s_year ASSIGNING <year>.
    MOVE-CORRESPONDING <year> TO range_date.
    CONCATENATE range_date-low '0101' INTO range_date-low.
    IF range_date-high = '0000'.
      range_date-high(4) = range_date-low(4).
      range_date-option = " тут нужно менять операции: EQ на BT и т.д., сходу все не припомню
    ENDIF.
    CONCATENATE range_date-high '1231' INTO range_date-high.
    APPEND range_date TO trange_date.
  ENDLOOP.
  SELECT ... FROM ... INTO TABLE ...
    WHERE aedat IN trange_date.

Автор:  RA [ Чт, ноя 07 2019, 07:25 ]
Заголовок сообщения:  Re: Изменение формата даты

А Вы бы создали поле даты "ддммгггг" ? Полагаю, что автор ошибся с типом

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/