Я для нормального создания 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.