Цитата:
Видимо, вы как то не так определяете параметры для HR_INFOTYPE_OPERATION
Собственно код программы примерно такой
Вычитываю инфотип 2003 в табличку P2003, а далее так
Code:
READ TABLE P2003 INTO WA_P2003 INDEX 1.
WA_P2003-BEGDA = '20110109'.
WA_P2003-ENDDA = '20110112'.
call function 'BAPI_EMPLOYEE_ENQUEUE'
exporting
number = pernr
importing
return = ls_return.
IF ls_return IS INITIAL.
CALL FUNCTION 'HR_INFOTYPE_OPERATION'
EXPORTING
INFTY = '2003'
NUMBER = WA_P2003-pernr
SUBTYPE = WA_P2003-subty
* OBJECTID =
LOCKINDICATOR = WA_P2003-sprps
VALIDITYEND = WA_P2003-ENDDA
VALIDITYBEGIN = WA_P2003-BEGDA
* RECORDNUMBER = WA_P2003-seqnr
RECORD = WA_P2003
OPERATION = 'INS'
* TCLAS = 'A'
DIALOG_MODE = '0'
* NOCOMMIT =
* VIEW_IDENTIFIER =
* SECONDARY_RECORD =
IMPORTING
RETURN = ls_return
KEY = ls_key.
CALL FUNCTION 'HR_EMPLOYEE_DEQUEUE'
EXPORTING
NUMBER = pernr
IMPORTING
RETURN = ls_return.
ENDIF.
В результате получаю одно замещение с датой 09.01.2011-12.01.2011.
Если же выбрать диалоговый режим и через отладку провалиться в место где происходит вызов экрана с заполнением данных для создания замещения, и принудительно указать что вызов инфотипа не из BAPI
Code:
if pspar-pbpfl is initial. "В данном случае pspar-pbpfl = 'x'
call function 'RP_COLLISION'
то вызывается экран с коллизиями на котором можно клацнуть кнопку "ок", в и тоге получаем 3 замещения... вот и вопрос, что же нужно то передать в этот HR_INFOTYPE_OPERATION, дабы без всяких диалоговых режимов получить ожидаемое.