Добрый день. Помогите пожалуйста.
Есть задача - модифицировать поля ИТ, использую HR_INFOTYPE_OPERATION
В ИТ9002 для т.н. записей может быть >=1
Code:
" ================ ИТ9002 ВЕДЕНИЕ ПАДЕЖЕЙ ================
" блокируем т.н
CALL FUNCTION 'BAPI_EMPLOYEE_ENQUEUE'
EXPORTING
NUMBER = tabn
IMPORTING
RETURN = return_struc_enq.
" читаем ИТ9002
CALL FUNCTION 'HR_READ_INFOTYPE'
EXPORTING
PERNR = tabn
INFTY = '9002'
BEGDA = '18000101'
ENDDA = '99991231'
IMPORTING
SUBRC = return_read_it
TABLES
INFTY_TAB = P9002
EXCEPTIONS
INFTY_NOT_FOUND = 1
OTHERS = 2.
LOOP AT P9002.
" модифицируем поля ИТ9002
P9002-TEXT_FAM = 'Фамилия'.
P9002-TEXT_IM = 'Имя'.
P9002-TEXT_OT = 'Отчество'.
" модифицируем ИТ9002
CALL FUNCTION 'HR_INFOTYPE_OPERATION'
EXPORTING
INFTY = '9002'
NUMBER = P9002-PERNR
LOCKINDICATOR = P9002-SPRPS
VALIDITYEND = P9002-ENDDA
VALIDITYBEGIN = P9002-BEGDA
RECORDNUMBER = P9002-SEQNR
RECORD = P9002
OPERATION = 'MOD'
DIALOG_MODE = '1'
IMPORTING
RETURN = return_struc
key = record_key.
IF return_struc-type = 'E'.
write: 'Данных для 9002 (в выбранном периоде) не существует'.
ENDIF.
ENDLOOP.
" разблокируем т.н
CALL FUNCTION 'BAPI_EMPLOYEE_DEQUEUE'
EXPORTING
NUMBER = tabn
IMPORTING
RETURN = return_struc_enq.
В результате срабатывает ветка условия, т.е. "Данных для 9002 (в выбранном периоде) не существует", период выбранных записей '18000101' '99991231'
Через pa30 смотрю ИТ9002 в этом же периоде - все вижу.
Подскажите, в чем может быть причина?