1. 支持的方法
- PROJECTDEFINITION
- WBS-ELEMENT
- WBS-DATES
- WBS-HIERARCHY
- NETWORK
- NETWORKACTIVITY
- NETWORKACTIVITYELEMENT
- RELATIONSHIP
- MILESTONE
- ACTIVITYMILESTONE
- COMPONENT
- CAPACITY
- ORDERSEQUENCE
- ORDERPOSITION
- PS-TEXT
- ORDER
- SAVE
2. WBS元素层级(表:PRHI)
- 数据

- 效果

3. 示例代码
DATA: ls_prodef TYPE bapi_project_definition,ls_prodef_up TYPE bapi_project_definition_up,ls_return TYPE bapireturn1,lt_wbs_element TYPE TABLE OF bapi_wbs_element,lt_wbs_element_up TYPE TABLE OF bapi_wbs_element_update,lt_wbs_milestone TYPE TABLE OF bapi_wbs_milestone,lt_wbs_milestone_up TYPE TABLE OF bapi_wbs_milestone_upd,lt_wbs_hierarchie TYPE TABLE OF bapi_wbs_hierarchie,lt_network TYPE TABLE OF bapi_network,lt_network_up TYPE TABLE OF bapi_network_update,lt_network_activity TYPE TABLE OF bapi_network_activity,lt_network_activity_up TYPE TABLE OF bapi_network_activity_up,lt_network_relation TYPE TABLE OF bapi_network_relation,lt_network_relation_up TYPE TABLE OF bapi_network_relation_up,lt_act_element TYPE TABLE OF bapi_act_element,lt_act_element_up TYPE TABLE OF bapi_act_element_upd,lt_act_milestone TYPE TABLE OF bapi_act_milestone,lt_act_milestone_up TYPE TABLE OF bapi_act_milestone_upd,lt_method TYPE TABLE OF bapi_method_project,lt_messages TYPE TABLE OF bapi_meth_message.DATA: lv_index TYPE i VALUE'1',lv_left TYPE ps_posid,lv_right TYPE ps_posid.CASE ps_zpst001-up_mode.WHEN 'C'.
*&-------------------------------------------------------------------*
*& 项目定义
*&-------------------------------------------------------------------*ls_prodef = VALUE #( project_definition = ps_zpst001-zzprj "项目编号description = ps_zpst001-zzprj_name "PS: 短描述 (第一行文本)project_profile = SWITCH #( ps_zpst001-zzprj_cat WHEN 'COMMERCIAL_PROJECT' THEN 'BD00002'WHEN 'DEVELOPMENT_PROJECT' THEN 'BD00001' ) ). "项目参数文件APPEND VALUE #( refnumber = '000001'objecttype = 'PROJECTDEFINITION'method = 'CREATE'objectkey = ps_zpst001-zzprj "项目编号) TO lt_method.*&-------------------------------------------------------------------*
*& WBS
*&-------------------------------------------------------------------*"level1APPEND VALUE #( project_definition = ps_zpst001-zzprj "项目编号wbs_element = ps_zpst001-zzprj "工作分解结构元素 (WBS 元素)description = |{ ps_zpst001-zzprj_name }研发库存| "PS: 短描述PMS项目名称+研发库存proj_type = '01'comp_code = ''statistical = abap_true "是否统计型wbs_account_assignment_element = abap_false "是否科目分配元素wbs_billing_element = abap_false "是否开票元素) TO lt_wbs_element.APPEND VALUE #( refnumber = lv_indexobjecttype = 'WBS-ELEMENT'method = 'CREATE'objectkey = ps_zpst001-zzprj) TO lt_method.IF gt_zpst001 IS NOT INITIAL.APPEND VALUE #( project_definition = ps_zpst001-zzprj "项目编号wbs_element = ps_zpst001-zzprj "工作分解结构元素 (WBS 元素)up = spacedown = |{ ps_zpst001-zzprj }-{ gt_zfit002_conf[ 1 ]-bukrs }|left = spaceright = space) TO lt_wbs_hierarchie.ELSE.APPEND VALUE #( project_definition = ps_zpst001-zzprj "项目编号wbs_element = ps_zpst001-zzprj "工作分解结构元素 (WBS 元素)up = spacedown = spaceleft = spaceright = space) TO lt_wbs_hierarchie.ENDIF."level2 根据配置来扩充LOOP AT gt_zfit002_conf ASSIGNING FIELD-SYMBOL().lv_index = lv_index + 1.IF sy-tabix NE lines( gt_zfit002_conf ).lv_right = |{ ps_zpst001-zzprj }-{ gt_zfit002_conf[ sy-tabix + 1 ]-bukrs }|.ENDIF.IF sy-tabix NE 1.lv_left = |{ ps_zpst001-zzprj }-{ gt_zfit002_conf[ sy-tabix - 1 ]-bukrs }|.ENDIF.APPEND VALUE #( refnumber = lv_indexobjecttype = 'WBS-ELEMENT'method = 'CREATE'objectkey = |{ ps_zpst001-zzprj }-{ -bukrs }|) TO lt_method.* APPEND VALUE #( refnumber = lv_index
* objecttype = 'WBS-HIERARCHY'
* method = 'CREATE'
* objectkey = |{ ps_zpst001-zzprj }-{ -bukrs }|
* ) TO lt_method.APPEND VALUE #( project_definition = ps_zpst001-zzprjwbs_element = |{ ps_zpst001-zzprj }-{ -bukrs }| "工作分解结构元素 (WBS 元素)description = |{ ps_zpst001-zzprj_name }研发库存-{ -bukrs }| "PS: 短描述PMS项目名称 + 研发库存+ -公司代码proj_type = '02'comp_code = ''statistical = abap_false "是否统计型wbs_account_assignment_element = abap_true "是否科目分配元素wbs_billing_element = abap_true "是否开票元素) TO lt_wbs_element.APPEND VALUE #( project_definition = ps_zpst001-zzprj "项目编号wbs_element = |{ ps_zpst001-zzprj }-{ -bukrs }| "工作分解结构元素 (WBS 元素)up = ps_zpst001-zzprjdown = spaceleft = lv_leftright = lv_right) TO lt_wbs_hierarchie.CLEAR: lv_right.ENDLOOP.WHEN 'U'.
*&-------------------------------------------------------------------*
*& 项目定义
*&-------------------------------------------------------------------*ls_prodef = VALUE #( project_definition = ps_zpst001-zzprj "项目编号description = ps_zpst001-zzprj_name ). "PS: 短描述 (第一行文本)ls_prodef_up = VALUE #( description = abap_true ).APPEND VALUE #( refnumber = '000001'objecttype = 'PROJECTDEFINITION'method = 'UPDATE'objectkey = ps_zpst001-zzprj "项目编号) TO lt_method.WHEN OTHERS.ENDCASE.lv_index = lv_index + 1."创建层级APPEND VALUE #(objecttype = 'WBS-HIERARCHY'method = 'CREATE') TO lt_method."项目将保存APPEND VALUE #( method = 'SAVE' ) TO lt_method.CALL FUNCTION 'BAPI_PROJECT_MAINTAIN'EXPORTINGi_project_definition = ls_prodefi_project_definition_upd = ls_prodef_upIMPORTINGreturn = ls_returnTABLESi_method_project = lt_methodi_wbs_element_table_update = lt_wbs_element_upi_wbs_element_table = lt_wbs_elementi_wbs_milestone_table = lt_wbs_milestonei_wbs_milestone_table_update = lt_wbs_milestone_upi_wbs_hierarchie_table = lt_wbs_hierarchiei_network = lt_networki_network_update = lt_network_upi_activity = lt_network_activityi_activity_update = lt_network_activity_upi_relation = lt_network_relationi_relation_update = lt_network_relation_upe_message_table = lt_messagesi_activity_element = lt_act_elementi_activity_element_update = lt_act_element_upi_activity_milestone = lt_act_milestonei_activity_milestone_update = lt_act_milestone_up.IF line_exists( lt_messages[ message_type = 'A' ] ) ORline_exists( lt_messages[ message_type = 'E' ] ) ORline_exists( lt_messages[ message_type = 'X' ] ).ROLLBACK WORK.LOOP AT lt_messages ASSIGNING FIELD-SYMBOL() WHERE message_type = 'A' ORmessage_type = 'E' ORmessage_type = 'X'.ps_zfit001_log-zmsgty = -message_type.ps_zfit001_log-zmsgid = -message_id.ps_zfit001_log-zmsgno = -message_number.ps_zfit001_log-zmsgtx = -message_text.EXIT.ENDLOOP.ELSE.COMMIT WORK AND WAIT.ps_zpst001-zzupdate = space. "更新成功清空更新标识ps_zfit001_log-zmsgty = 'S'.ENDIF.