Текущее время: Пт, июл 04 2025, 10:07

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


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

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


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

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