CJ11参考创建或直接新建WBS - BAPI_BUS2054_CREATE_MULTI

参考指定WBS元素创建新的WBS,代码如下:

    DATA: lv_project     TYPE bapi_bus2001_new-project_definition,
          lt_wbs_element TYPE TABLE OF bapi_bus2054_new,
          lt_extensionin TYPE TABLE OF bapiparex,
          lt_return      TYPE TABLE OF bapiret2,
          lv_desc        TYPE bapi_bus2054_new-description,
          lv_message     TYPE string.

    DATA: ls_ci_prps  TYPE bapi_te_wbs_element,
          lv_str(960) TYPE c.

    CHECK iv_project IS NOT INITIAL AND
          iv_up_wbs IS NOT INITIAL AND
          iv_new_wbs IS NOT INITIAL.

    "获取参考WBS信息,iv_up_wbs参考的WBS
    SELECT SINGLE *
      INTO @DATA(ls_up_prps)
      FROM prps
      WHERE posid = @iv_up_wbs.

    "iv_project 新建WBS对应的项目定义编码
    lv_project = iv_project.
    
    "复制WBS信息
    lt_wbs_element = VALUE #( (
                                wbs_element = iv_new_wbs "新建WBS编号
                                description = |参考新建WBS测试|
                                responsible_no = ls_up_prps-vernr    "负责人编号
                                applicant_no   = ls_up_prps-astnr         "申请人号
                                company_code   = ls_up_prps-pbukr        "
                                business_area   = ls_up_prps-pgsbr         "
                                controlling_area   = ls_up_prps-pkokr         "
                                profit_ctr     = ls_up_prps-prctr      "利润中心
                                proj_type   = ls_up_prps-prart             "项目类型
                                wbs_planning_element = ls_up_prps-plakz
                                wbs_account_assignment_element = ls_up_prps-belkz
                                wbs_billing_element = ls_up_prps-fakkz
                                cstg_sheet = ls_up_prps-kalsm
                                overhead_key = ls_up_prps-zschl
                                res_anal_key = ls_up_prps-abgsl
                                request_cctr_controlling_area = ls_up_prps-akokr
                                request_cctr = ls_up_prps-akstl
                                respsbl_cctr_controlling_area = ls_up_prps-fkokr
                                respsbl_cctr = ls_up_prps-fkstl
                                calendar    = ls_up_prps-fabkl
                                priority = ls_up_prps-pspri
                                equipment = ls_up_prps-equnr
                                funct_loc = ls_up_prps-tplnr
                                currency = ls_up_prps-pwpos
                                plant       = ls_up_prps-werks
                                user_field_key = ls_up_prps-slwid
                                user_field_char20_1 = ls_up_prps-usr00
                                user_field_char20_2 = ls_up_prps-usr01
                                user_field_char10_1 = ls_up_prps-usr02
                                user_field_char10_2 = ls_up_prps-usr03
                                user_field_quan1 = ls_up_prps-usr04
                                user_field_unit1 = ls_up_prps-use04
                                user_field_quan2 = ls_up_prps-usr05
                                user_field_unit2 = ls_up_prps-use05
                                user_field_curr1 = ls_up_prps-usr06
                                user_field_cuky1 = ls_up_prps-use06
                                user_field_curr2 = ls_up_prps-usr07
                                user_field_cuky2 = ls_up_prps-use07
                                user_field_date1 = ls_up_prps-usr08
                                user_field_date2 = ls_up_prps-usr09
                                user_field_flag1 = ls_up_prps-usr10
                                user_field_flag2 = ls_up_prps-usr11
                                wbs_cctr_posted_actual = ls_up_prps-kostl
                                wbs_summarization = ls_up_prps-clasf
                                objectclass = |PROFT|
                                statistical = ls_up_prps-xstat

                                wbs_basic_start_date  = sy-datum
                                wbs_basic_finish_date = sy-datum
*                            wbs_basic_duration    = 127
*                            wbs_basic_dur_unit    = |10|  "外码D
                                wbs_left   = iv_left_wbs
                                "父层WBS
                                wbs_up      = iv_up_wbs  ) ).

    "附加字段增强,扩展标准结构CI_PRPS
    ls_ci_prps-wbs_element = iv_new_wbs.

    lv_str = ls_ci_prps.
    lt_extensionin = VALUE #( ( structure = |BAPI_TE_WBS_ELEMENT|
                                valuepart1 = lv_str+0(240)
                                valuepart2 = lv_str+240(240)
                                valuepart3 = lv_str+480(240)
                                valuepart4 = lv_str+720(240) ) ).

    CALL FUNCTION 'BAPI_PS_INITIALIZATION'.

    CALL FUNCTION 'BAPI_BUS2054_CREATE_MULTI'
      EXPORTING
        i_project_definition = lv_project
      TABLES
        it_wbs_element       = lt_wbs_element
        et_return            = lt_return
        extensionin          = lt_extensionin
*       EXTENSIONOUT         =
      .

    LOOP AT lt_return INTO DATA(ls_return) WHERE type CA 'AEX'.
      IF lv_message IS INITIAL.
        lv_message = ls_return-message.
      ELSE.
        lv_message = |{ lv_message }/{ ls_return-message }|.
      ENDIF.
    ENDLOOP.

    IF lv_message IS INITIAL.
      CALL FUNCTION 'BAPI_PS_PRECOMMIT'.
      CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
        EXPORTING
          wait = 'X'.

    ELSE.
      CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
    ENDIF.

注意事项1

调用BAPI:BAPI_BUS2054_CREATE_MULTI之前必须先调用BAPI:BAPI_BUS2054_CREATE_MULTI。

调用BAPI:BAPI_BUS2054_CREATE_MULTI执行成功之后,不能直接调用BAPI:BAPI_TRANSACTION_COMMIT,会导致DUMP,应该先调用BAPI:BAPI_PS_PRECOMMIT

注意事项2

附加字段需要扩展系统标准结构BAPI_TE_WBS_ELEMENT中的嵌套结构:CI_PRPS

扩展结构CI_PRPS如下

发布了190 篇原创文章 · 获赞 133 · 访问量 97万+

猜你喜欢

转载自blog.csdn.net/wanglei880526/article/details/102714985