John Doe написал:
Первый для работы с СПП-элементами, второй - с определениями проекта.
А Вы правильную последовательность ФМ вызываете?
BAPI_PS_INITIALIZATION
BAPI_BUS2054_CREATE_MULTI
BAPI_PS_PRECOMMIT
BAPI_TRANSACTION_COMMIT
Последовательность тут не важна. Раскопал в ФМ BAPI_BUS2054_CREATE_MULTI то, что при передачи параметра EXTENSIONIN (z-ПОЛЯ),
в самом ФМ зашита премерно следующая строчка:
Code:
bapi_struct like BAPI_TE_WBS_ELEM.
move EXTENSIONIN to bapi_struct.
А с помощью ФМ BAPI_PROJECT_MAINTAIN можно все создавать: и определение проекта и СПП и сетевые графики и т.п.
Пример кода создания определения проекта:
Code:
FORM CREATE_DEFINITION USING DEFINITION LIKE PROJ-PSPID " КОД ОПРЕДЕЛЕНИЯ ПРОЕКТА
DESCRIPTION " НАИМЕНОВАНИЕ ОПРЕДЕЛЕНИЯ ПРОЕКТА
PROJECT_PROFILE " ПРОФИЛЬ ПРОЕКТА
CHANGING ERROR.
CLEAR: ERROR.
DATA: IS_PROJ_DEF LIKE BAPI_PROJECT_DEFINITION,
IS_PROJ_DEF_UPD LIKE BAPI_PROJECT_DEFINITION_UP,
RETURN LIKE BAPIRETURN1,
I_METHOD_PROJECT LIKE BAPI_METHOD_PROJECT OCCURS 0 WITH HEADER LINE,
E_MESSAGE_TABLE LIKE BAPI_METH_MESSAGE OCCURS 0 WITH HEADER LINE.
* ПРОВЕРЯЕМ СОЗДАНО ЛИ УЖЕ ОПРЕДЕЛЕНИЕ ПРОЕКТА С ТАКИМ КОДОМ
SELECT SINGLE A~PSPID INTO DEFINITION FROM PROJ AS A WHERE A~PSPID = DEFINITION.
IF SY-SUBRC <> 0.
* КОД ОПРЕДЕЛЕНИЯ ПРОЕКТА
IS_PROJ_DEF-PROJECT_DEFINITION = DEFINITION.
* ПРОФИЛЬ ПРОЕКТА
IS_PROJ_DEF-PROJECT_PROFILE = PROJECT_PROFILE.
* НАИМЕНОВАНИЕ ОПРЕДЕЛЕНИЯ ПРОЕКТА
IS_PROJ_DEF-DESCRIPTION = DESCRIPTION.
* ОПИСАНИЕ МЕТОДА СОЗДАНИЯ ОПРЕДЕЛЕНИЯ ПРОЕКТА
I_METHOD_PROJECT-OBJECTTYPE = 'ProjectDefinition' .
I_METHOD_PROJECT-METHOD = 'CREATE' .
I_METHOD_PROJECT-OBJECTKEY = DEFINITION.
I_METHOD_PROJECT-REFNUMBER = '000001' .
APPEND I_METHOD_PROJECT .
* ОПИСАНИЕ МЕТОДА СОХРАНЕНИЯ
I_METHOD_PROJECT-OBJECTTYPE = '' .
I_METHOD_PROJECT-METHOD = 'SAVE' .
I_METHOD_PROJECT-OBJECTKEY = '' .
I_METHOD_PROJECT-REFNUMBER = '' .
APPEND I_METHOD_PROJECT.
* СОЗДАЕМ ОПРЕДЕЛЕНИЕ ПРОЕКТА
CLEAR RETURN.
CALL FUNCTION 'BAPI_PROJECT_MAINTAIN'
EXPORTING
I_PROJECT_DEFINITION = IS_PROJ_DEF
I_PROJECT_DEFINITION_UPD = IS_PROJ_DEF_UPD
IMPORTING
RETURN = RETURN
TABLES
I_METHOD_PROJECT = I_METHOD_PROJECT
E_MESSAGE_TABLE = E_MESSAGE_TABLE.
IF RETURN IS NOT INITIAL.
READ TABLE E_MESSAGE_TABLE INDEX 1.
ERROR = E_MESSAGE_TABLE-MESSAGE_TEXT.
ENDIF.
ENDIF.
ENDFORM.
Пример кода создания СПП:
Code:
DATA: IS_PROJ_DEF LIKE BAPI_PROJECT_DEFINITION,
IS_PROJ_DEF_UPD LIKE BAPI_PROJECT_DEFINITION_UP,
RETURN LIKE BAPIRETURN1,
I_METHOD_PROJECT LIKE BAPI_METHOD_PROJECT OCCURS 0 WITH HEADER LINE,
I_WBS_ELEMENT_TABLE LIKE BAPI_WBS_ELEMENT OCCURS 0 WITH HEADER LINE,
I_WBS_HIERARCHIE_TABLE LIKE BAPI_WBS_HIERARCHIE OCCURS 0 WITH HEADER LINE,
E_MESSAGE_TABLE LIKE BAPI_METH_MESSAGE OCCURS 0 WITH HEADER LINE.
IS_PROJ_DEF-PROJECT_DEFINITION = DIFIN.
I_METHOD_PROJECT-OBJECTTYPE = 'WBS-ELEMENT' .
I_METHOD_PROJECT-METHOD = 'CREATE' .
I_METHOD_PROJECT-OBJECTKEY = SPP_NUM.
I_METHOD_PROJECT-REFNUMBER = '000001' .
APPEND I_METHOD_PROJECT .
I_METHOD_PROJECT-OBJECTTYPE = 'WBS HIERARCHY' .
I_METHOD_PROJECT-METHOD = 'CREATE' .
I_METHOD_PROJECT-OBJECTKEY = ''.
I_METHOD_PROJECT-REFNUMBER = ''.
APPEND I_METHOD_PROJECT .
I_METHOD_PROJECT-OBJECTTYPE = '' .
I_METHOD_PROJECT-METHOD = 'SAVE'.
I_METHOD_PROJECT-OBJECTKEY = '' .
I_METHOD_PROJECT-REFNUMBER = '' .
APPEND I_METHOD_PROJECT .
* НОМЕР СПП
I_WBS_ELEMENT_TABLE-WBS_ELEMENT = SPP_NUM.
* НАИМЕНОВАНИЕ СПП
I_WBS_ELEMENT_TABLE-DESCRIPTION = DESC.
* ВАЛЮТА
I_WBS_ELEMENT_TABLE-CURRENCY = PWPOS.
* ЗАКАЗЧИК ОПРОЕКТА(АВТОР ЗАЯВКИ)
I_WBS_ELEMENT_TABLE-APPLICANT_NO = ASTNR.
* РУКОВОДИТЕЛЬ ПРОЕКТА(ОТВЕТСТВЕННЫЙ)
I_WBS_ELEMENT_TABLE-RESPONSIBLE_NO = VERNR.
* НАЧАЛО РЕАЛИЗАЦИИ
I_WBS_ELEMENT_TABLE-WBS_BASIC_START_DATE = PSTRT.
* ОКОНЧАНИЕ РЕАЛИЗАЦИИ
I_WBS_ELEMENT_TABLE-WBS_BASIC_FINISH_DATE = PENDE.
APPEND I_WBS_ELEMENT_TABLE.
* ОПРЕДЕЛЕНИЕ ПРОЕКТА
I_WBS_HIERARCHIE_TABLE-PROJECT_DEFINITION = DIFIN.
* НОМЕР СПП
I_WBS_HIERARCHIE_TABLE-WBS_ELEMENT = SPP_NUM.
* ВЫШЕСТОЯЩИЙ СПП
IF PARENT_WBS IS NOT INITIAL.
I_WBS_HIERARCHIE_TABLE-UP = PARENT_WBS.
ENDIF.
APPEND I_WBS_HIERARCHIE_TABLE.
CLEAR RETURN.
CALL FUNCTION 'BAPI_PROJECT_MAINTAIN'
EXPORTING
I_PROJECT_DEFINITION = IS_PROJ_DEF
I_PROJECT_DEFINITION_UPD = IS_PROJ_DEF_UPD
IMPORTING
RETURN = RETURN
TABLES
I_METHOD_PROJECT = I_METHOD_PROJECT
I_WBS_ELEMENT_TABLE = I_WBS_ELEMENT_TABLE
I_WBS_HIERARCHIE_TABLE = I_WBS_HIERARCHIE_TABLE
E_MESSAGE_TABLE = E_MESSAGE_TABLE.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
WAIT = 'X'.
Может всетаки можно использовать ФМ BAPI_PROJECT_MAINTAIN?