Application Development and Automation 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: 
Read only

Issue creating WBS using BAPI_BUS2054_CREATE_MULTI

Former Member
0 Likes
3,133

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.

4 REPLIES 4
Read only

Former Member
0 Likes
1,160

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>

Read only

0 Likes
1,160

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

Read only

0 Likes
1,160

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

Read only

Former Member
0 Likes
1,160

Working! Need to pass Comp code, Bus Area, Contolling and Prfot Cnt.