Текущее время: Сб, июл 26 2025, 04:50

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


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

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


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

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