Текущее время: Чт, сен 04 2025, 23:33

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




Начать новую тему Ответить на тему  [ Сообщений: 8 ] 
Автор Сообщение
 Заголовок сообщения: ПЛАНИРУЕМЫЕ ОТРАБОТАННЫЕ ЧАСЫ ЗА МЕСЯЦ , ЗНАЯ ПРАВИЛО ГРАФИКА РВ, МЕСЯЦ, ГОД
СообщениеДобавлено: Чт, июн 18 2009, 15:50 
Начинающий
Начинающий

Зарегистрирован:
Пн, июл 28 2008, 07:53
Сообщения: 6
КАК НАЙТИ ПЛАНИРУЕМЫЕ ОТРАБОТАННЫЕ ЧАСЫ ЗА МЕСЯЦ , ЗНАЯ ПРАВИЛО ГРАФИКА РВ, МЕСЯЦ, ГОД
НУЖЕН КОД ДЛЯ АВТОМАТИЗАЦИИ
СПАСИБО


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ПЛАНИРУЕМЫЕ ОТРАБОТАННЫЕ ЧАСЫ ЗА МЕСЯЦ , ЗНАЯ ПРАВИЛО ГРАФИКА РВ, МЕСЯЦ, ГОД
СообщениеДобавлено: Чт, июн 18 2009, 16:46 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Вт, июл 25 2006, 14:50
Сообщения: 3481
Откуда: Moscow
Пол: Мужской
посмотрите код RUGAB'a зарплатного, на его основе можно нарисовать


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: ПЛАНИРУЕМЫЕ ОТРАБОТАННЫЕ ЧАСЫ ЗА МЕСЯЦ , ЗНАЯ ПРАВИЛО ГРАФИКА РВ, МЕСЯЦ, ГОД
СообщениеДобавлено: Пт, июн 19 2009, 08:16 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Ср, июн 01 2005, 09:40
Сообщения: 536
Откуда: Belgorod
Пол: Мужской
может через ФМ HR_WORK_SCHEDULE_TIMES
тут правда по табельному, но тем не менее аналог я думаю можно найти.

_________________
Новый этап на проекте - устранение доработок :).


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ПЛАНИРУЕМЫЕ ОТРАБОТАННЫЕ ЧАСЫ ЗА МЕСЯЦ , ЗНАЯ ПРАВИЛО ГРАФИКА РВ, МЕСЯЦ, ГОД
СообщениеДобавлено: Пт, июн 19 2009, 09:57 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Пн, окт 11 2004, 13:16
Сообщения: 1790
powgt, у Вас залип CAPSLOCK?

Если нет, то прочитайте, пожалуйста, внимательно п.6.1 правил форума. Они лежат тут: viewtopic.php?f=23&t=3710 и их соблюдение обязательно для всех.

_________________
/nex


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ПЛАНИРУЕМЫЕ ОТРАБОТАННЫЕ ЧАСЫ ЗА МЕСЯЦ , ЗНАЯ ПРАВИЛО ГРАФИКА РВ, МЕСЯЦ, ГОД
СообщениеДобавлено: Вт, июн 23 2009, 10:31 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Вт, авг 24 2004, 07:19
Сообщения: 3952
Откуда: ECC 6.0, South Kazakhstan
Вот ФМ (на входе правило графика, на выходе сам график), как уже говорилось - навеяно РУГАБ-ом:

Code:
function Z_HR_WORK_SCHEDULE.
*"----------------------------------------------------------------------
*"*"Глобальный интерфейс:
*"  IMPORTING
*"     REFERENCE(ZEITY) TYPE  T503-ZEITY
*"     REFERENCE(MOFID) TYPE  T001P-MOFID
*"     REFERENCE(MOSID) TYPE  T001P-MOSID
*"     REFERENCE(SCHKZ) TYPE  T508A-SCHKZ
*"     VALUE(BEGDA) LIKE  SY-DATUM
*"     VALUE(ENDDA) LIKE  SY-DATUM
*"  TABLES
*"      PERWS STRUCTURE  PTPSP
*"  EXCEPTIONS
*"      ERROR_OCCURED
*"      ABORT_OCCURED
*"----------------------------------------------------------------------
  data subrc like sy-subrc.
  data date  like sy-datum.

  refresh perws.

  date = begda - 1.

  while date lt endda.

    date = date + 1.

    clear perws.

*   Правило графика
    perform read508a using zeity mofid mosid schkz date.
    perws-datum = date.
    perws-motpr = t508a-motpr. " группировка подразделов персонала
    perws-zmodn = t508a-zmodn. " график на период

*   Месячный график
    perform read_dws_from_t552a using date
                                      zeity
                                      mofid
                                      mosid
                                      schkz
                                      t508a-motty
                             changing perws-tprog
                                      perws-varia
                                      perws-ftkla
                                      perws-tagty.
*   Однодневный график
    perform read550a using perws-motpr
                           perws-tprog
                           perws-varia
                           date.

    perws-pamod = t550a-pamod.
    perws-stdaz = t550a-sollz.
    translate perws-ftkla using ' 0'.
    translate perws-tagty using ' 0'.

    perform append_perws tables perws
                          using date.

  endwhile.

endfunction.


и то что можно прописать в топ-инклуде функциональной группы (хотя наверное многие процедуры можно вызывать указав существующие стандартные программы):

Code:
tables: t503,
        t001p,
        t508a,
        t550a,
        t552a.

types: begin of lptws_day_of_t552a,
          tprog type tprog,
          tagty type tagty,
          ftkla type ftkla,
          varia type varia,
          konfe type konfe,
       end of lptws_day_of_t552a.


types: lptws_552a_dws_tab type standard table of lptws_day_of_t552a
                                   with default key initial size 31.
DATA: t552a_dws_tab TYPE lptws_552a_dws_tab.

data: SPACE06(6) VALUE '      '.

*---------------------------------------------------------------------*
*       FORM READ508A                                                 *
*---------------------------------------------------------------------*
form read508a using zeity like t508a-zeity
                    mofid like t508a-mofid
                    mosid like t508a-mosid
                    schkz like t508a-schkz
                    date  like t508a-begda.
  data: subrc like sy-subrc.
  perform re508a using zeity  mofid
                       mosid  schkz
                       date   subrc.
  if subrc ne 0.
    perform append_error_list using 'P2' 'E' '579'
                                    zeity mofid mosid schkz.
    message e579(P2) with zeity mosid mofid schkz raising error_occured.
  endif.
endform.                                                    "READ508A

*----------------------------------------------------------------------*
*      Form re508a
*----------------------------------------------------------------------*
form re508a using zeity like t508a-zeity
                  mofid like t508a-mofid
                  mosid like t508a-mosid
                  schkz like t508a-schkz
                  date  like t508a-begda
                  subrc like sy-subrc.

  check zeity  ne t508a-zeity or
        mofid  ne t508a-mofid or
        mosid  ne t508a-mosid or
        schkz  ne t508a-schkz or
        date   gt t508a-endda or
        date   lt t508a-begda.

  clear t508a.
  select * from t508a where zeity =  zeity
                        and mofid =  mofid
                        and mosid =  mosid
                        and schkz =  schkz
                        and endda ge date
                        and begda le date
                        order by primary key.
    exit.
  endselect.
  subrc = sy-subrc.
endform.

*----------------------------------------------------------------------*
*      Form read_dws_from_t552a
*----------------------------------------------------------------------*
form read_dws_from_t552a using date
                               zeity mofid
                               mosid schkz
                               motty
                      changing tprog varia
                               ftkla tagty.

  data: dws type lptws_day_of_t552a.

  data: month    like t552a-monat,
        year     like t552a-kjahr,
        day      type sytabix.

  data: da_date like sy-datum.

  move: date(4)   to year,
        date+4(2) to month,
        date+6(2) to day.


  perform read552a using zeity mofid
                         mosid schkz
                         year  month.

  read table t552a_dws_tab into dws index day.

  tprog = dws-tprog.
  varia = dws-varia.
  ftkla = dws-ftkla.
  tagty = dws-tagty.

endform.                               " READ_DWS_FROM_T552A

*&---------------------------------------------------------------------*
*&      Form  READ552A
*&---------------------------------------------------------------------*
form read552a using zeity like t508a-zeity
                    mofid like t508a-mofid
                    mosid like t508a-mosid
                    schkz like t508a-schkz
                    kjahr like t552a-kjahr
                    monat like t552a-monat.

  data: t508a_subrc    like sy-subrc,
        first_of_month like t508a-begda,
        t508a_backup   like t508a,
        genws like     t508a-genws.

  data: period(6).
  data: subrc like sy-subrc.
  data: groupings(20), monthword(7).

  perform re552a using zeity mofid
                       mosid schkz
                       kjahr monat
                       subrc.
  if subrc ne 0.
      perform append_error_list using 'HRTIM00WS' 'E' '016'
                                      schkz groupings monthword space.
      message e016(hrtim00ws)
                 with schkz groupings monthword raising error_occured.
  endif.

endform.                                                    " READ552A
*&---------------------------------------------------------------------*
*&      Form  RE552A
*&---------------------------------------------------------------------*
form re552a using                      "new         XLXK007122
              zeity like t508a-zeity
              mofid like t508a-mofid
              mosid like t508a-mosid
              schkz like t508a-schkz
              kjahr like t552a-kjahr
              monat like t552a-monat
              subrc like sy-subrc.

  check t552a-zeity ne zeity  or
        t552a-mofid ne mofid  or
        t552a-mosid ne mosid  or
        t552a-schkz ne schkz  or
        t552a-kjahr ne kjahr  or
        t552a-monat ne monat.

  clear t552a.
  select single * from t552a where zeity eq zeity
                               and mofid eq mofid
                               and mosid eq mosid
                               and schkz eq schkz
                               and kjahr eq kjahr
                               and monat eq monat.
  subrc = sy-subrc.

  perform fill_552a_dws_tab.

endform.

*&---------------------------------------------------------------------*
*&      Form  fill_552a_dws_tab
*&---------------------------------------------------------------------*
form fill_552a_dws_tab.

  data: l_dws type lptws_day_of_t552a.
  clear: t552a_dws_tab.

  do 31 times varying l_dws-tprog from t552a-tpr01 next t552a-tpr02
              varying l_dws-tagty from t552a-ttp01 next t552a-ttp02
              varying l_dws-ftkla from t552a-ftk01 next t552a-ftk02
              varying l_dws-varia from t552a-var01 next t552a-var02
              varying l_dws-konfe from t552a-knf01 next t552a-knf02.
    append l_dws to t552a_dws_tab.
  enddo.

endform.                    " fill_552a_dws_tab

*&---------------------------------------------------------------------*
*&      Form  READ550A
*&---------------------------------------------------------------------*
form read550a using motpr  like t550a-motpr
                    tprog  like t550a-tprog
                    varia  like t550a-varia
                    date   like sy-datum.

  data subrc like sy-subrc.
  data seqno like t550a-seqno value '01'.

  if motpr ne t550a-motpr or
     tprog ne t550a-tprog or
     varia ne t550a-varia or
     seqno ne t550a-seqno or
     date  gt t550a-endda or
     date  lt t550a-begda.
    perform re550a_conv using motpr tprog
                              varia seqno
                              date  subrc.
    if subrc ne 0.
      perform append_error_list using 'P2' 'E' '581'
                                motpr tprog varia space.
      message e581(P2) with motpr tprog varia raising error_occured.
    endif.
  endif.

endform.

*&---------------------------------------------------------------------*
*&      Form  RE550A_CONV
*&---------------------------------------------------------------------*
form re550a_conv using motpr  like t550a-motpr
                       tprog  like t550a-tprog
                       varia  like t550a-varia
                       seqno  like t550a-seqno
                        date   like sy-datum
                       subrc  like sy-subrc.

  statics: s550a like t550a occurs 50 with header line.
  data: sindex like sy-tabix,
        slines like sy-tabix.

  clear subrc.

  check motpr  ne t550a-motpr or
        tprog  ne t550a-tprog or
        varia  ne t550a-varia or
        seqno  ne t550a-seqno or
        date   gt t550a-endda or
        date   lt t550a-begda.

  if    motpr  ne s550a-motpr or
        tprog  ne s550a-tprog or
        varia  ne s550a-varia or
        seqno  ne s550a-seqno or
        date   gt s550a-endda or
        date   lt s550a-begda.

    read table s550a with key mandt = sy-mandt
                              motpr = motpr
                              tprog = tprog
                              varia = varia
                              seqno = seqno   binary search.
    sindex = sy-tabix.
    if sy-subrc = 0.
      while  ( date > s550a-endda or date < s550a-begda ).
        add 1 to sindex.
        read table s550a index sindex.
        if sy-subrc eq 0.
          if s550a-motpr ne motpr or
             s550a-tprog ne tprog or
             s550a-varia ne varia or
             s550a-seqno ne seqno.
             sy-subrc = 4.
             exit.
          endif.
        else.
          exit.
        endif.
      endwhile.
    endif.
    if sy-subrc <> 0.
      describe table s550a lines slines.
      select * into s550a
               from t550a where motpr = motpr
                            and tprog = tprog
                            and varia = varia
                            and seqno = seqno
                            and endda >= date
                            and begda <= date.
        exit.
      endselect.
      if sy-subrc = 0.
        if s550a-sobeg co ' 0' and
           s550a-soend co ' 0'.
          s550a-sobeg = space06.
          s550a-soend = space06.
          s550a-nobeg = space06.
          s550a-noend = space06.
          s550a-k1beg = space06.
          s550a-k1end = space06.
          s550a-k2beg = space06.
          s550a-k2end = space06.
          s550a-btbeg = space06.
          s550a-btend = space06.
          s550a-etbeg = space06.
          s550a-etend = space06.
        elseif s550a-nobeg co ' 0' and
               s550a-noend co ' 0'.
          s550a-nobeg = space06.
          s550a-noend = space06.
        endif.

        perform convert_550a using s550a.
        insert s550a index sindex.

      else.
        subrc = sy-subrc.
      endif.
    endif.
  endif.
  move s550a to t550a.

endform.                                                    " RE550A

*&---------------------------------------------------------------------*
*&      Form  CONVERT_550A                                YMMPH4K006052
*&---------------------------------------------------------------------*
form convert_550a using    p_550a like t550a.
  translate p_550a-sobeg using ' 0'.
  translate p_550a-soend using ' 0'.
  translate p_550a-nobeg using ' 0'.
  translate p_550a-noend using ' 0'.
  translate p_550a-k1beg using ' 0'.
  translate p_550a-k1end using ' 0'.
  translate p_550a-k2beg using ' 0'.
  translate p_550a-k2end using ' 0'.
  translate p_550a-btbeg using ' 0'.
  translate p_550a-btend using ' 0'.
  translate p_550a-etbeg using ' 0'.
  translate p_550a-etend using ' 0'.

  if  p_550a-sobeg ne '000000' and p_550a-sobeg ge p_550a-soend.

    perform add24hours_ifnecessary using p_550a-sobeg space
                            changing   p_550a-nobeg p_550a-noend.
    perform add24hours_ifnecessary using p_550a-sobeg space
                            changing   p_550a-k1beg p_550a-k1end.
    perform add24hours_ifnecessary using p_550a-sobeg space
                            changing   p_550a-k2beg p_550a-k2end.
    perform add24hours_ifnecessary using p_550a-sobeg space
                            changing   p_550a-sobeg p_550a-soend.
    perform add24hours_ifnecessary using p_550a-sobeg 'B'
                            changing   p_550a-btbeg p_550a-btend.

  elseif p_550a-sollz > 0.
    perform add24_dueto_wohrs using p_550a-sollz
                                    p_550a-sobeg
                                    p_550a-nobeg
                           changing p_550a-soend
                                    p_550a-noend.

  endif.

  perform add24hours_ifnecessary using p_550a-sobeg 'E'
                            changing   p_550a-etbeg p_550a-etend.

endform.                               " CONVERT_550A

*&---------------------------------------------------------------------*
*&      Form  ADD24HOURS_IFNECESSARY                     "YMMPH4K006052
*&---------------------------------------------------------------------*
*      -->P_P_550A_SOBEG  text
*      <--P_P_550A_NOBEG  text
*      <--P_P_550A_NOEND  text
*----------------------------------------------------------------------*
form add24hours_ifnecessary using      "YMMPH4K006052
                                     limit like t550a-sobeg
                                     interval_type
                            changing beguz like t550a-nobeg
                                     enduz like t550a-noend.
  data: hlptm(6).
  check beguz ne '000000' or enduz ne '000000'.
  case interval_type.
    when space.

      if beguz < limit.
        hlptm = beguz.
        hlptm = hlptm + 240000.
        beguz = hlptm.
      endif.
      if enduz le limit or enduz le beguz.

        hlptm = enduz.
        hlptm = hlptm + 240000.
        enduz = hlptm.
      endif.

    when 'E'.

      if beguz le limit.
        hlptm = beguz.
        hlptm = hlptm + 240000.
        beguz = hlptm.
      endif.
      if enduz le limit or enduz le beguz.

        hlptm = enduz.
        hlptm = hlptm + 240000.
        enduz = hlptm.
      endif.

    when 'B'.

      if enduz le beguz.

        hlptm = enduz.
        hlptm = hlptm + 240000.
        enduz = hlptm.
      endif.


  endcase.

endform.                               " ADD24HOURS_IFNECESSARY

*&---------------------------------------------------------------------*
*&      Form  ADD24_DUETO_WOHRS
*&---------------------------------------------------------------------*
*      -->P_P_550A_SOLLZ  text
*      -->P_P_550A_SOBEG  text
*      -->P_P_550A_NOBEG  text
*      <--P_P_550A_SOEND  text
*      <--P_P_550A_NOEND  text
*----------------------------------------------------------------------*
form add24_dueto_wohrs using    p_sollz like t550a-sollz
                                p_sobeg like t550a-sobeg
                                p_nobeg like t550a-sobeg
                       changing p_soend like t550a-sobeg
                                p_noend like t550a-sobeg.

  data: l_glz,
        beguz like t550a-sobeg,
        enduz like t550a-sobeg,
        duration like t550a-sollz,
        hlptm(6).

  if p_nobeg cn ' 0' or p_noend cn ' 0'.
    l_glz = 'X'.
    beguz = p_nobeg.
    enduz = p_noend.
  else.
    l_glz = space.
    beguz = p_sobeg.
    enduz = p_soend.
  endif.

  check enduz > beguz.

  perform subtract_time_from_time using enduz beguz
                               changing duration.

  duration = duration + '0.5'.

  check p_sollz > duration.

  if l_glz = 'X'.

    hlptm = p_noend.
    hlptm = hlptm + 240000.
    p_noend = hlptm.
    if p_soend < p_noend.

      hlptm = p_soend.
      hlptm = hlptm + 240000.
      p_soend = hlptm.
    endif.
  else.

    hlptm = p_soend.
    hlptm = hlptm + 240000.
    p_soend = hlptm.
  endif.

endform.                    " ADD24_DUETO_WOHRS

*&---------------------------------------------------------------------*
*&      Form  SUBTRACT_TIME_FROM_TIME
*&---------------------------------------------------------------------*
*      --> ENDUZ  text                                                 *
*      --> BEGUZ  text                                                 *
*      <-- HOURS  text                                                 *
*----------------------------------------------------------------------*
FORM SUBTRACT_TIME_FROM_TIME USING     ENDUZ BEGUZ
                             CHANGING  HOURS.
  DATA: DIFFSEC TYPE I.
  DIFFSEC = ENDUZ - BEGUZ.
  IF DIFFSEC < 0.
    DIFFSEC = DIFFSEC + 24 * 3600.
  ENDIF.
  HOURS   = DIFFSEC / 3600.
ENDFORM.                               " SUBTRACT_TIME_FROM_TIME

*&---------------------------------------------------------------------*
*&      Form  APPEND_ERROR_LIST
*&---------------------------------------------------------------------*
FORM APPEND_ERROR_LIST USING    VALUE(ARBGB)
                                VALUE(MSGTY)
                                VALUE(MSGNO)
                                VAR1 VAR2 VAR3 VAR4.
  CALL FUNCTION 'HR_APPEND_ERROR_LIST'
       EXPORTING
            ARBGB = ARBGB
            MSGTY = MSGTY
            MSGNO = MSGNO
            MSGV1 = VAR1
            MSGV2 = VAR2
            MSGV3 = VAR3
            MSGV4 = VAR4.

ENDFORM.                               " APPEND_ERROR_LIST

form append_perws tables   perws structure ptpsp
                  using    date  like sy-datum.
  read table perws with key datum = date binary search
                                         transporting no fields.
  if sy-subrc = 0.
    modify perws index sy-tabix.
  else.
    insert perws index sy-tabix.
  endif.
endform.                               " APPEND_PERWS


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: ПЛАНИРУЕМЫЕ ОТРАБОТАННЫЕ ЧАСЫ ЗА МЕСЯЦ , ЗНАЯ ПРАВИЛО ГРАФИКА РВ, МЕСЯЦ, ГОД
СообщениеДобавлено: Чт, янв 21 2010, 21:22 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Вт, июл 25 2006, 14:50
Сообщения: 3481
Откуда: Moscow
Пол: Мужской
Гран мерси 2 OlegDM. Сильно помогло


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: ПЛАНИРУЕМЫЕ ОТРАБОТАННЫЕ ЧАСЫ ЗА МЕСЯЦ , ЗНАЯ ПРАВИЛО ГРАФИКА РВ, МЕСЯЦ, ГОД
СообщениеДобавлено: Чт, фев 25 2010, 17:08 
Ассистент
Ассистент

Зарегистрирован:
Пн, май 26 2008, 17:09
Сообщения: 34
Создан Z_HR_WORK_SCHEDULE, а как этот ФМ прикрутить теперь к расчету ?
RUGAB-а у меня нет (укр. адон)
подскажите плз.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ПЛАНИРУЕМЫЕ ОТРАБОТАННЫЕ ЧАСЫ ЗА МЕСЯЦ , ЗНАЯ ПРАВИЛО ГРАФИКА РВ, МЕСЯЦ, ГОД
СообщениеДобавлено: Чт, фев 25 2010, 17:56 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Вт, июл 25 2006, 14:50
Сообщения: 3481
Откуда: Moscow
Пол: Мужской
Funky написал(а):
Создан Z_HR_WORK_SCHEDULE, а как этот ФМ прикрутить теперь к расчету ?
RUGAB-а у меня нет (укр. адон)
подскажите плз.

RUGAB в ERP2005 есть у всех. Посмотрите в операциях зарплаты в PE04 для 33 группировки и сделайте свою операцию


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 8 ] 

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


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

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


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

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