Application Development Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 

WBS Element level is creating as '1' by using 'BAPI_BUS2054_CREATE_MULTI'

sathishdhawan
Explorer
0 Kudos

Hello everyone,
I'm trying to create WBS element by using 'BAPI_BUS2054_CREATE_MULTI' function module. If the project is containing level 2 WBS element, I'm trying to create level-2, level-3 WBS Elements. Then it is working fine. If the project is not containing level 2, I'm trying to create level 2 WBS element newly, then automatically it is creating in level 1.

My code:

ls_wbs_elmnt_cr-wbs_element = <lfs_wbs_janus_data>-pspnr.
ls_wbs_elmnt_cr-description = <lfs_wbs_janus_data>-post1.
ls_wbs_elmnt_cr-company_code = <lfs_wbs_janus_data>-bukrs.

ls_wbs_elmnt_cr-business_area = ls_wbs_elmnt_get-bus_area.
ls_wbs_elmnt_cr-controlling_area = ls_wbs_elmnt_get-co_area.
ls_wbs_elmnt_cr-funct_loc = ls_wbs_elmnt_get-functional_location.
ls_wbs_elmnt_cr-interest_prof = ls_wbs_elmnt_get-int_profile.
ls_wbs_elmnt_cr-func_area = ls_wbs_elmnt_get-func_area.
ls_wbs_elmnt_cr-responsible_no = ls_wbs_elmnt_get-responsible_no.
ls_wbs_elmnt_cr-applicant_no = ls_wbs_elmnt_get-applicant_no.
ls_wbs_elmnt_cr-calendar = ls_wbs_elmnt_get-calendar.
ls_wbs_elmnt_cr-currency = ls_wbs_elmnt_get-currency.
ls_wbs_elmnt_cr-currency_iso = ls_wbs_elmnt_get-currency_iso.
ls_wbs_elmnt_cr-objectclass = ls_wbs_elmnt_get-objectclass.

ls_wbs_elmnt_cr-profit_ctr = <lfs_wbs_janus_data>-prctr.

ls_wbs_elmnt_cr-proj_type = <lfs_wbs_config>-prart.
ls_wbs_elmnt_cr-priority = <lfs_wbs_config>-psprt.
ls_wbs_elmnt_cr-wbs_account_assignment_element = <lfs_wbs_config>-belkz.
ls_wbs_elmnt_cr-wbs_billing_element = <lfs_wbs_config>-fakkz.

ls_wbs_elmnt_cr-wbs_summarization = <lfs_wbs_config>-clasf.
ls_wbs_elmnt_cr-request_cctr = <lfs_wbs_config>-akstl.
ls_wbs_elmnt_cr-respsbl_cctr = <lfs_wbs_config>-fkstl.
**logic for level = 2 --> fill WBS_left(mandatory) and WBS_up should be empty
* if WBS_LEFT is empty, automatically WBS element will create in level 1
**logic for level = 3 --> fill WBS_up and WBS_left will be optional.
** if provide WBS_left, New WBS_element will create after the WBS_left element
IF <lfs_wbs_janus_data>-stufe = lc_2.
CLEAR lv_no_of_rec.
DESCRIBE TABLE lt_wbs_elmnt_get LINES lv_no_of_rec.
READ TABLE lt_wbs_elmnt_get INTO ls_wbs_elmnt_get INDEX lv_no_of_rec.
IF sy-subrc = 0.
CONDENSE ls_wbs_elmnt_get-wbs_element.
ls_wbs_elmnt_cr-wbs_left = ls_wbs_elmnt_get-wbs_element+0(17). "last sub project
ENDIF.
ELSEIF <lfs_wbs_janus_data>-stufe = lc_3.
ls_wbs_elmnt_cr-wbs_up = <lfs_wbs_janus_data>-up.
ENDIF.

APPEND ls_wbs_elmnt_cr TO lt_wbs_elmnt_cr.
CALL FUNCTION 'BAPI_PS_INITIALIZATION' .


CLEAR: lt_return.
CALL FUNCTION 'BAPI_BUS2054_CREATE_MULTI'
EXPORTING
i_project_definition = <lfs_wbs_janus_data>-project
TABLES
it_wbs_element = lt_wbs_elmnt_cr
et_return = lt_return.
CALL FUNCTION 'BAPI_PS_PRECOMMIT'
TABLES
et_return = lt_return.

CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING

wait = abap_true.


Example - 1

Level WBS Element Description
1 AM-CN-24141 Testing
2 AM-CN-24141-LSC01 Testing

If I try to create level 2 or level 3 WBS Elements, it is creating as expected.
_________________________________________________________________

Example - 2
Level WBS Element Description
1 AM-CN-24141 Testing

If I try to create level 2 WBS element, it is creating under level 1 only.

Where can I pass the hierarchy here...

Thanks & Regards

Sathish Reddy

1 ACCEPTED SOLUTION

raymond_giuseppi
Active Contributor
0 Kudos

Read KBA 1934899 - Error in BAPI_BUS2054_CREATE_MULTI execution which suggest to call BAPI for each level separately.

4 REPLIES 4

raymond_giuseppi
Active Contributor
0 Kudos

Read KBA 1934899 - Error in BAPI_BUS2054_CREATE_MULTI execution which suggest to call BAPI for each level separately.

0 Kudos

Hi Raymon Giuseppi
The link is not opening. Can you please post it once again...

0 Kudos

If you don't have a S-id you cannot read Notes & KBA, ask your admin.

0 Kudos

Thank you for responding.

Now it is working..
I've written the code like this.

CALL FUNCTION 'BAPI_PROJECT_GETINFO'
EXPORTING
project_definition = <lfs_wbs_janus_data>-project
TABLES
e_wbs_element_table = lt_wbs_elmnt_get

e_wbs_hierarchie_table = lt_wbs_hierarchy.

DELETE lt_wbs_hierarchy WHERE up <> <lfs_wbs_janus_data>-project.

IF lt_wbs_hierarchy IS INITIAL.
* It is new project & newly adding level - 2 WBS element
ls_wbs_elmnt_cr-wbs_up = <lfs_wbs_janus_data>-up.

ELSE.
* Already Level -2 WBS Element existed

**logic for level = 2 --> fill WBS_left(mandatory) and WBS_up should be empty
* if WBS_LEFT is empty, automatically WBS element will create in level 1
**logic for level = 3 --> fill WBS_up and WBS_left will be optional.
** if provide WBS_left, New WBS_element will create after the WBS_left element
IF <lfs_wbs_janus_data>-stufe = lc_2.
CLEAR lv_no_of_rec.
DESCRIBE TABLE lt_wbs_elmnt_get LINES lv_no_of_rec.
READ TABLE lt_wbs_elmnt_get INTO ls_wbs_elmnt_get INDEX lv_no_of_rec.
IF sy-subrc = 0.
CONDENSE ls_wbs_elmnt_get-wbs_element.
ls_wbs_elmnt_cr-wbs_left = ls_wbs_elmnt_get-wbs_element+0(17). "last sub project
ENDIF.
ELSEIF <lfs_wbs_janus_data>-stufe = lc_3.
ls_wbs_elmnt_cr-wbs_up = <lfs_wbs_janus_data>-up.
ENDIF.

ENDIF.

Thank you Raymon Giuseppi..