2007 Jan 15 10:06 PM
Hi All,
I am trying to create WBS elements under existing project (CJ20N) using BAPI_BUS2054_CREATE_MULTI. I am I am getting ET_RETURN with message type S-W-I, even after commit no WBS created. Type S message says Individual check for creating the object WBS Element XXX required. Please find my code for more info. I am I using correct BAPI? Any hint or suggestion welcome. Thanks in advance.
Regards,
Trim
LOOP AT gt_wbs_element .
MOVE-CORRESPONDING gt_wbs_element to gt_wbs_element_bapi.
MOVE : gt_wbs_element-mims_id to gt_wbs_element_bapi-USER_FIELD_CHAR20_1.
MOVE : gt_wbs_element-PROJECT_DEFINITION to gv_proj.
*** Conert all dates
split_date gt_wbs_element-WBS_BASIC_START_DATE gt_wbs_element_bapi-WBS_BASIC_START_DATE.
split_date gt_wbs_element-WBS_BASIC_FINISH_DATE gt_wbs_element_bapi-WBS_BASIC_FINISH_DATE.
split_date gt_wbs_element-WBS_FORECAST_START_DATE gt_wbs_element_bapi-WBS_FORECAST_START_DATE.
split_date gt_wbs_element-WBS_FORECAST_FINISH_DATE gt_wbs_element_bapi-WBS_FORECAST_FINISH_DATE.
* split_date gt_wbs_element-WBS_ACTUAL_START_DATE gt_wbs_element_bapi-WBS_ACTUAL_START_DATE.
* split_date gt_wbs_element-WBS_ACTUAL_FINISH_DATE gt_wbs_element_bapi-WBS_ACTUAL_FINISH_DATE.
APPEND gt_wbs_element_bapi.
**** Update Custome 'Z' Fields
clear : BAPI_TE_WBS_ELEMENT, gv_error.
BAPI_TE_WBS_ELEMENT-WBS_ELEMENT = gt_wbs_element-WBS_ELEMENT.
BAPI_TE_WBS_ELEMENT-ZZCP_APPRBUD = gt_wbs_element-ZZCP_APPRBUD.
BAPI_TE_WBS_ELEMENT-ZZCP_ELECT = gt_wbs_element-ZZCP_ELECT.
BAPI_TE_WBS_ELEMENT-ZZCP_AREA = gt_wbs_element-ZZCP_AREA.
BAPI_TE_WBS_ELEMENT-ZZCP_PROG = gt_wbs_element-ZZCP_PROG.
BAPI_TE_WBS_ELEMENT-ZZCP_SUBPR = gt_wbs_element-ZZCP_SUBPR.
** BAPI_TE_WBS_ELEMENT-ZZCP_FINALDAT = gt_wbs_element-ZZCP_FINALDAT.
BAPI_TE_WBS_ELEMENT-ZZCP_TOTBUD = gt_wbs_element-ZZCP_TOTBUD.
** BAPI_TE_WBS_ELEMENT-ZZCP_DADHC_REG = gt_wbs_element-ZZCP_DADHC_REG.
** BAPI_TE_WBS_ELEMENT-ZZCP_DADHC_CEP = gt_wbs_element-ZZCP_DADHC_CEP.
BAPI_TE_WBS_ELEMENT-ZZCP_PREDBUD = gt_wbs_element-ZZCP_PREDBUD.
BAPI_TE_WBS_ELEMENT-ZZCP_CLIENT = gt_wbs_element-ZZCP_CLIENT.
BAPI_TE_WBS_ELEMENT-ZZCP_PM_NAME = gt_wbs_element-ZZCP_PM_NAME.
GT_EXTENSION_IN-STRUCTURE = 'BAPI_TE_WBS_ELEMENT'.
GT_EXTENSION_IN-VALUEPART1 = BAPI_TE_WBS_ELEMENT+0(199).
GT_EXTENSION_IN-VALUEPART2 = BAPI_TE_WBS_ELEMENT+199(171).
APPEND GT_EXTENSION_IN.
MOVE-CORRESPONDING gt_wbs_element to wa_wbs_elem.
AT END OF PROJECT_DEFINITION.
*** Inalise BAPI
CALL FUNCTION 'BAPI_PS_INITIALIZATION'.
clear gt_return[].
CALL FUNCTION 'BAPI_BUS2054_CREATE_MULTI'
EXPORTING
I_PROJECT_DEFINITION = gv_proj
TABLES
IT_WBS_ELEMENT = gt_wbs_element_bapi
ET_RETURN = gt_return
EXTENSIONIN = gt_extension_in
* EXTENSIONOUT =
EXCEPTIONS
error_message = 1
others = 2.
*** Check GT_RESULT for success
LOOP AT gt_return where type co 'EA'.
gv_error = 'X'.
ENDLOOP.
IF gv_error is initial.
CALL FUNCTION 'BAPI_PS_PRECOMMIT'
TABLES
ET_RETURN = gt_return_pre.
LOOP AT gt_return_pre where type co 'EA'.
gv_error = 'X'.
ENDLOOP.
ENDIF.
IF gv_error is INITIAL.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
WAIT = '1'
IMPORTING
RETURN = GT_RETURN_COMMIT.
clear gv_write.
format color 4.
CONCATENATE 'Success: WBS Attached to Project' gv_proj '-'
into gv_write.
WRITE / gv_write. CLEAR gv_write.
move-corresponding wa_wbs_elem to gt_wbs_suc.
gt_wbs_suc-message = gv_write.
gt_wbs_suc-message_type = 'S'.
append gt_wbs_suc.
format reset.
else.
clear gv_write.
format color 6.
CONCATENATE 'Error: Attaching WBS to Project' space '-' space gv_proj
into gv_write.
WRITE / gv_write. CLEAR gv_write.
move-corresponding wa_wbs_elem to gt_wbs_suc.
gt_wbs_suc-message = gv_write.
gt_wbs_suc-message_type = 'E'.
append gt_wbs_suc.
format reset.
ENDIF.
CLEAR: gv_proj, gt_wbs_element_bapi, gt_extension_in, gt_return_pre, GT_RETURN_COMMIT.
refresh: gt_wbs_element_bapi, gt_extension_in, gt_return_pre, GT_RETURN_COMMIT.
endat.
ENDLOOP.
2007 Jan 15 10:47 PM
Hi Trim
The message comes from (It is S004) in the BAPI_BUS2054_CREATE_MULTI (see below bold). I would be placing a breakpoint at the point where the BAPI is calling the function PS_BAPI_PREPARE to see if the lv_subrc variable is being set at this stage.
Cheers
Gareth
call function 'CJ2054_CREATE'
exporting
i_pspid = i_project_definition
i_wbs_element = ls_wbs_element
tables
extensionin = extensionin
exceptions
element_not_created = 1
dates_not_created = 2.
endif.
if sy-subrc <> 0 or lv_subrc <> 0.
message e007(cnif_pi) with text-wbs ls_wbs_element-wbs_element
into null.
lv_error = con_yes.
else.
<b> message s004(cnif_pi) with text-wbs ls_wbs_element-wbs_element
into null.</b>
2007 Jan 15 11:03 PM
Hi Gareth,
Thanks for reply. No error any where, LV_SUBRC set to '0'. I am still not sure even after getting 'S' return WBS object not created?
Regards,
Trim
2007 Jan 15 11:10 PM
Hi Trim,
OK, how about setting a break point at
if i_method <> con_pro_getdata and
i_method <> con_wbs_getdata and
i_method <> con_net_getdata and
i_method <> con_act_getdata and
i_method <> con_ael_getdata.
in function PS_BAPI_FINISH to see if we're getting a rollback at this point (at the end of BAPI_BUS2054_CREATE_MULTI. If so this will not raise an exception (which is not good) but could be why we have the success message but no WBS.
Regards
Gareth
2007 Jan 16 2:30 AM
Working! Need to pass Comp code, Bus Area, Contolling and Prfot Cnt.