Текущее время: Пт, июл 25 2025, 18:46

Часовой пояс: UTC + 3 часа


Правила форума


ВНИМАНИЕ!

Вопросы по SAP Query и Quick View - сюда



Начать новую тему Ответить на тему  [ Сообщений: 21 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Как узнать количество недель в месяце?
СообщениеДобавлено: Пт, ноя 23 2012, 13:31 
Начинающий
Начинающий

Зарегистрирован:
Вт, дек 20 2011, 18:42
Сообщения: 20
Как узнать количество недель в месяце? Есть ли какой ФМник?
Из входных параметров есть месяц и год.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Как узнать количество недель в месяце?
СообщениеДобавлено: Пт, ноя 23 2012, 13:42 
Старший специалист
Старший специалист

Зарегистрирован:
Сб, июл 28 2007, 20:38
Сообщения: 364
DATE_GET_WEEK + LAST_DAY_OF_MONTHS ?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как узнать количество недель в месяце?
СообщениеДобавлено: Пт, ноя 23 2012, 13:53 
Старший специалист
Старший специалист

Зарегистрирован:
Сб, июл 28 2007, 20:38
Сообщения: 364
Code:
DATA: l_weeks TYPE i.
PERFORM get_week_count  USING '2012'
                              '02'
                     CHANGING l_weeks.

*&---------------------------------------------------------------------*
*&      Form  get_week_count
*&---------------------------------------------------------------------*
FORM get_week_count USING p_gjahr TYPE gjahr
                          p_monat TYPE monat
                 CHANGING c_weeks TYPE i.

  DATA: date TYPE dats.
  CONCATENATE p_gjahr p_monat '01' INTO date.
  DATA: w1 TYPE scal-week.
  DATA: w2 TYPE scal-week.

  CALL FUNCTION 'DATE_GET_WEEK'
    EXPORTING
      date = date
    IMPORTING
      week = w1.

  CALL FUNCTION 'LAST_DAY_OF_MONTHS'
    EXPORTING
      day_in            = date
    IMPORTING
      last_day_of_month = date.

  CALL FUNCTION 'DATE_GET_WEEK'
    EXPORTING
      date = date
    IMPORTING
      week = w2.

  IF w2(4) = w1(4).
    c_weeks = w2 - w1 + 1.
  ELSEIF w2(4) < w1(4).
    c_weeks = w2+4(2) + 1.
  ELSEIF w2(4) > w1(4).
    c_weeks = 54 - w1+4(2).
  ENDIF.
ENDFORM.                    "get_week_count


Последний раз редактировалось __Gennady Пт, ноя 23 2012, 15:23, всего редактировалось 3 раз(а).

Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как узнать количество недель в месяце?
СообщениеДобавлено: Пт, ноя 23 2012, 13:57 
Начинающий
Начинающий

Зарегистрирован:
Вт, дек 20 2011, 18:42
Сообщения: 20
А нельзя сначала узнать последний день месяца (LAST_DAY_OF_MONTHS) а потом узнать номер недели по дате (DATE_GET_WEEK) ?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Как узнать количество недель в месяце?
СообщениеДобавлено: Пт, ноя 23 2012, 14:05 
Старший специалист
Старший специалист

Зарегистрирован:
Сб, июл 28 2007, 20:38
Сообщения: 364
Вы же попросили число недель в месяце, а не номер последней недели?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как узнать количество недель в месяце?
СообщениеДобавлено: Пт, ноя 23 2012, 14:06 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Пт, июл 16 2010, 09:57
Сообщения: 106
Откуда: СПб
Пол: Мужской
А о каких неделях-то идет речь? Например, в текущем ноябре 2012 их:

3 - если считать полные недели от Пнд до Вск
5 - если считать захватываемые недели года - с 44 по 48
4 - если 30 / 7 нацело (это вообще в любом месяце)

???

P.S. Подозреваю, что нужен номер недели года для последней даты месяца. Так?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Как узнать количество недель в месяце?
СообщениеДобавлено: Пт, ноя 23 2012, 14:08 
Старший специалист
Старший специалист

Зарегистрирован:
Сб, июл 28 2007, 20:38
Сообщения: 364
HR_99S_INTERVAL_BETWEEN_DATES


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как узнать количество недель в месяце?
СообщениеДобавлено: Пт, ноя 23 2012, 14:09 
Начинающий
Начинающий

Зарегистрирован:
Вт, дек 20 2011, 18:42
Сообщения: 20
__Gennady написал(а):
Вы же попросили число недель в месяце, а не номер последней недели?

а разница в чем?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Как узнать количество недель в месяце?
СообщениеДобавлено: Пт, ноя 23 2012, 14:11 
Старший специалист
Старший специалист

Зарегистрирован:
Сб, июл 28 2007, 20:38
Сообщения: 364
wild83 написал(а):
а разница в чем?

Это пятничная шутка что-ли? :pivo:


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как узнать количество недель в месяце?
СообщениеДобавлено: Пт, ноя 23 2012, 14:13 
Начинающий
Начинающий

Зарегистрирован:
Вт, дек 20 2011, 18:42
Сообщения: 20
Gustav написал:
А о каких неделях-то идет речь? Например, в текущем ноябре 2012 их:

3 - если считать полные недели от Пнд до Вск
5 - если считать захватываемые недели года - с 44 по 48
4 - если 30 / 7 нацело (это вообще в любом месяце)

???

P.S. Подозреваю, что нужен номер недели года для последней даты месяца. Так?


в моем случае считаем все недели в том числе неполные - получается 5


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Как узнать количество недель в месяце?
СообщениеДобавлено: Пт, ноя 23 2012, 14:41 
Начинающий
Начинающий

Зарегистрирован:
Вт, дек 20 2011, 18:42
Сообщения: 20
__Gennady написал(а):
HR_99S_INTERVAL_BETWEEN_DATES


Code:
DATA: date1 TYPE dats.
DATA: date2 TYPE dats.
DATA: weeks TYPE i.
DATA: c_weeks TYPE i.
  CONCATENATE P_GJAHR RPMAX2 '01' INTO date1.

CALL FUNCTION 'LAST_DAY_OF_MONTHS'
    EXPORTING
      day_in            = date1
    IMPORTING
      last_day_of_month = date2.

CALL FUNCTION 'HR_99S_INTERVAL_BETWEEN_DATES'
  EXPORTING
    begda = date1
    endda = date2
  IMPORTING
    c_weeks = c_weeks
    weeks = weeks.

c_weeks - это complete weeks
weeks - это absolute weeks

Непонятно почему но c_weeks и weeks их количество всегда 4 неважно какой месяц. WTF?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Как узнать количество недель в месяце?
СообщениеДобавлено: Пт, ноя 23 2012, 14:52 
Старший специалист
Старший специалист

Зарегистрирован:
Сб, июл 28 2007, 20:38
Сообщения: 364
Загляните внутрь) Там будет количество дней в месяце / 7.
Если нужен учет всех неполных недель, воспользуйтесь приведенным выше кодом.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как узнать количество недель в месяце?
СообщениеДобавлено: Пт, ноя 23 2012, 14:59 
Начинающий
Начинающий

Зарегистрирован:
Вт, дек 20 2011, 18:42
Сообщения: 20
__Gennady написал(а):
Если нужен учет всех неполных недель, воспользуйтесь приведенным выше кодом.


Попробуйте сформируйте за 12 месяц 2012 года, скажите результат


Последний раз редактировалось wild83 Пт, ноя 23 2012, 15:01, всего редактировалось 1 раз.

Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Как узнать количество недель в месяце?
СообщениеДобавлено: Пт, ноя 23 2012, 15:00 
Начинающий
Начинающий

Зарегистрирован:
Вт, дек 20 2011, 18:42
Сообщения: 20
__Gennady написал(а):
Загляните внутрь) Там будет количество дней в месяце / 7.


непонятно тогда что имеется ввиду под complete и absolute weeks ? недоработка?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Как узнать количество недель в месяце?
СообщениеДобавлено: Пт, ноя 23 2012, 15:04 
Старший специалист
Старший специалист

Зарегистрирован:
Сб, июл 28 2007, 20:38
Сообщения: 364
Думаю это не бага, это фича. Вообще ФМ я поиском нашел. Он вам не подходит.
Code:
FORM compute_complete_weeks USING p_begda
                                  p_endda
                                  p_days
                            CHANGING p_weeks.
  DATA: help_days TYPE i.


***** get days if not already given

  IF p_days IS INITIAL.
    PERFORM compute_days USING p_begda
                               p_endda
                         CHANGING help_days.
  ELSE.
    help_days = p_days.
  ENDIF.

  p_weeks = help_days DIV 7.

ENDFORM.                    " compute_complete_weeks


Code:
FORM compute_weeks USING    p_begda
                            p_endda
                            p_days
                   CHANGING p_weeks.

  DATA: help_days TYPE i.

  IF p_days IS INITIAL.

    PERFORM compute_days
                USING
                   p_begda
                   p_endda
                CHANGING
                   help_days.
  ELSE.
    help_days = p_days.
  ENDIF.
  p_weeks = help_days / 7.
ENDFORM.                    " compute_weeks



Как видно отличается целочисленным делением...


Принять этот ответ
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 21 ]  На страницу 1, 2  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex [Bot]


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB