Текущее время: Чт, июл 24 2025, 05:56

Часовой пояс: 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 часа


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

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

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