SAP 项目WBS网络等PS项目BAPI_PROJECT_MAINTAIN创建更新示例
创始人
2025-05-28 18:04:54
0

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)

  • 数据
    1
  • 效果
    2

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.

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
一帆风顺二龙腾飞三阳开泰祝福语... 本篇文章极速百科给大家谈谈一帆风顺二龙腾飞三阳开泰祝福语,以及一帆风顺二龙腾飞三阳开泰祝福语结婚对应...
美团联名卡审核成功待激活(美团... 今天百科达人给各位分享美团联名卡审核成功待激活的知识,其中也会对美团联名卡审核未通过进行解释,如果能...