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

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




Начать новую тему Ответить на тему  [ Сообщений: 3 ] 
Автор Сообщение
 Заголовок сообщения: В отчете HR_CE_GENERATE_PERSONID_EXT выскакивает ошибка
СообщениеДобавлено: Пн, июл 07 2008, 17:20 
Ассистент
Ассистент

Зарегистрирован:
Ср, апр 11 2007, 17:22
Сообщения: 37
Коллеги!
В отчете HR_CE_GENERATE_PERSONID_EXT при генерации внешних ИД работает только, если день рождения у сотрудника 01.01.1800, иначе выдает ошибку "Дата начала записи данных раньше даты рождения сотрудника", что это значит?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, июл 08 2008, 08:53 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Вт, июл 25 2006, 14:50
Сообщения: 3481
Откуда: Moscow
Пол: Мужской
Я для нормального создания PersonID использовал вот такой отчетик (у меня были проблемы при перезакачивании данных
Code:
REPORT  zhr_create_central_person.

TABLES: pernr, hrp1000, hrp1001.

data old_cp like hrp1000-objid.
data p_name like pa0001-ename.
Data counter type n.
DATA p_begda TYPE sydatum.
Data p_cp_id TYPE personid.
DATA lt_plog_tab LIKE hrdbtab OCCURS 0 WITH HEADER LINE.
DATA plog_tab LIKE hrdbtab OCCURS 0 WITH HEADER LINE.
DATA: u_ppenq LIKE ppenq OCCURS 0 WITH HEADER LINE.

DATA: BEGIN OF pernrs OCCURS 0,
  pernr LIKE pernr-pernr,
      END OF pernrs.

START-OF-SELECTION.
  CLEAR pernrs[].

GET pernr.
  MOVE-CORRESPONDING pernr TO pernrs.
  APPEND pernrs.


END-OF-SELECTION.
  LOOP AT pernrs.
*--Убиваем остатки былой роскоши
    select objid from hrp1001 into old_cp
      where otype = 'CP' and sclas = 'P' and sobid = pernrs-pernr.
      if sy-subrc = '0'.
        delete from hrp1000 WHERE otype = 'CP' and objid = old_cp.
        delete from hrp1001 WHERE otype = 'CP' and objid = old_cp.
        delete from hrp1001 WHERE sclas = 'CP' and sobid = old_cp.
      endif.
    ENDSELECT.

* ----Берем из PA0001 первую дату для Central person
  select SINGLE begda from pa0001 INTO p_begda
    WHERE pernr = pernrs-pernr.
*И заодно ФИО
    select SINGLE ename from pa0001 INTO p_name
    WHERE pernr = pernrs-pernr.
* Создаем central Person
  CALL FUNCTION 'HR_EE_CREATE_CENTRALERSON'
    EXPORTING
      iv_employee_id    = pernrs-pernr
      iv_begindate      = p_begda
      iv_with_authority = space "Keine Berechtigungsprufung
    IMPORTING
      ev_person_id      = p_cp_id.

  CALL FUNCTION 'RH_GET_PLOG_TAB'
    TABLES
      plog_tab_tab = lt_plog_tab.
*---- In eigenen Puffer
  APPEND LINES OF lt_plog_tab TO plog_tab.
  LOOP AT plog_tab.
    u_ppenq-plvar = plog_tab-plvar.
    u_ppenq-otype = plog_tab-otype.
    u_ppenq-objid = plog_tab-objid.
    READ TABLE u_ppenq WITH KEY u_ppenq BINARY SEARCH.
    IF sy-subrc NE 0.
      INSERT u_ppenq INDEX sy-tabix.
    ENDIF.
  ENDLOOP.
  LOOP AT u_ppenq.
    CALL FUNCTION 'HR_ENQUEUE_OBJECT'
      EXPORTING
        plvar            = u_ppenq-plvar
        otype            = u_ppenq-otype
        objid            = u_ppenq-objid
        enqueue_once     = ' '
*     IMPORTING                                                 "CHKMAN
*       lock_user        = sy-uname                             "CHKMAN
      EXCEPTIONS
        enqueue_failed   = 0
        objid_is_initial = 0
        illegal_otype    = 0
        internal_error   = 0
        OTHERS           = 0.
  ENDLOOP.

*Переименовывывем

  DATA ls_hrpersonee TYPE hrpersonee_s.
  DATA ls_hrperson TYPE hrperson_s.
  DATA lv_begindate TYPE sydatum.

  CONSTANTS pd_low_date LIKE sy-datum VALUE '19000101'.     "XDP305199

*-- Bestimmen der zentralen Person
  CALL FUNCTION 'HR_PERSONEE_GETPERSON'
    EXPORTING
      iv_employee_id    = pernrs-pernr
      iv_with_authority = space
    IMPORTING
      es_hrpersonee     = ls_hrpersonee.
  IF ls_hrpersonee-personid CO '0 '.
    READ TABLE plog_tab WITH KEY infty = '1001'
                                     otype = 'P'
                                     objid = pernrs-pernr
                                     subty = 'A209'.
    IF sy-subrc = 0.
      ls_hrpersonee-personid = plog_tab-varyf+2(8).
      READ TABLE plog_tab WITH KEY infty = '1000'
                                     otype = 'CP'
                                     objid = ls_hrpersonee-personid.
      lv_begindate = plog_tab-begda.
    ENDIF.
  ELSE.
*-- Bestimmen der Gultigkeit
    CALL FUNCTION 'HR_CENTRALPERSON_GET'
      EXPORTING
        iv_person_id = ls_hrpersonee-personid
      IMPORTING
        ev_begindate = lv_begindate.
    IF lv_begindate LT '19000101'.
      lv_begindate = '19000101'.
    ENDIF.
  ENDIF.
  IF ls_hrpersonee-personid CN '0 '.
*-- Andern des Namens (Buffer)
    ls_hrperson-personid = ls_hrpersonee-personid.
    ls_hrperson-name = p_name.
    CALL FUNCTION 'HR_CENTRALPERSON_INSERT'
      EXPORTING
        is_person               = ls_hrperson
*       IV_BEGINDATE            = lv_begindate    "XDP305199
        iv_begindate            = pd_low_date               "XDP305199
        iv_with_authority       = space "Keine Berechtigungsprufung
      EXCEPTIONS
        no_authorization        = 1
        invalid_data            = 2
        OTHERS                  = 3.
    IF sy-subrc <> 0.
      MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
          WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
    ENDIF.
*  ---- Puffer besorgen
    CALL FUNCTION 'RH_GET_PLOG_TAB'
      TABLES
        plog_tab_tab = lt_plog_tab.
*  ---- In eigenen Puffer
    APPEND LINES OF lt_plog_tab TO plog_tab.
    LOOP AT plog_tab.
      u_ppenq-plvar = plog_tab-plvar.
      u_ppenq-otype = plog_tab-otype.
      u_ppenq-objid = plog_tab-objid.
      READ TABLE u_ppenq WITH KEY u_ppenq BINARY SEARCH.
      IF sy-subrc NE 0.
        INSERT u_ppenq INDEX sy-tabix.
      ENDIF.
    ENDLOOP.
    LOOP AT u_ppenq.
      CALL FUNCTION 'HR_ENQUEUE_OBJECT'
        EXPORTING
          plvar            = u_ppenq-plvar
          otype            = u_ppenq-otype
          objid            = u_ppenq-objid
          enqueue_once     = ' '
*       IMPORTING                                               "CHKMAN
*         lock_user        = sy-uname                           "CHKMAN
        EXCEPTIONS
          enqueue_failed   = 0
          objid_is_initial = 0
          illegal_otype    = 0
          internal_error   = 0
          OTHERS           = 0.
    ENDLOOP.
  ENDIF.
  WRITE: / 'Объект CP создан для:', pernrs-pernr.
  ENDLOOP.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, июл 08 2008, 14:53 
Ассистент
Ассистент

Зарегистрирован:
Ср, апр 11 2007, 17:22
Сообщения: 37
Разобрался.
У инфо-типа 0709 стояла временна привязка 2, а должна быть привязка А или B. Модуль проверяет вхождение значения временной привязки в "AB".


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

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


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

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


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

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