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: 

BAPI for CJ02

Former Member
0 Kudos

I need a BAPI for CJ02 transaction, does anybody know one?

Tks,

Daniela Machado

9 REPLIES 9

Former Member
0 Kudos

How about BAPI_BUS2054_CHANGE_MULTI ?

Rob

0 Kudos

Rob,

I need to create a project and update the investment programs.

This BAPI you've sent can be used?

Tks

daniela

0 Kudos

It has documentation. You should check it to see if it's what you're looking for.

Rob

Former Member
0 Kudos

BAPI: BAPI_PROJECT_MAINTAIN.

0 Kudos

Sharath

We are using BAPI_PROJECT_MAINTAIN, but it didn't work to update investment programs.

Do you I it's possible doing this with this BAPI?

Tks,

Daniela

0 Kudos

Hello All,

I am trying to use BAPI_BUS2054_CHANGE_MULTI.

What I need is to change the value for a Z field of a single WBS element.

I think that I am filling the right structures (I paste the code), but it doesn't work... Could anybody please help me? Sorry for the spanish comments... however, they wouldn't be very helpfull for you, I think...

Best Regards

PARAMETERS:

p_pep TYPE char24 DEFAULT 'P-290049/G'.

DATA:

l_project_definition TYPE BAPI_BUS2001_NEW-PROJECT_DEFINITION.

DATA:

lt_wbs_imp_gi TYPE TABLE OF BAPI_WBS_ELEMENTS,

lt_wbs_exp_gi TYPE TABLE OF BAPI_WBS_ELEMENT_EXP,

lt_wbs_imp_cm TYPE TABLE OF BAPI_BUS2054_CHG,

lt_wbs_impf_cm TYPE TABLE OF BAPI_BUS2054_UPD,

lt_return TYPE TABLE OF bapiret2,

lt_extensionin TYPE TABLE OF bapiparex WITH HEADER LINE,

lt_extensionout TYPE TABLE OF bapiparex,

lt_messages TYPE TABLE OF BAPI_METH_MESSAGE.

DATA:

lW_return1 TYPE BAPIRETURN1,

lw_return TYPE bapiret2,

lw_wbs_ext TYPE BAPI_TE_WBS_ELEMENT,

lw_wbs_imp_gi LIKE LINE OF lt_wbs_imp_gi,

lw_wbs_exp_gi LIKE LINE OF lt_wbs_exp_gi,

lw_wbs_imp_cm LIKE LINE OF lt_wbs_imp_cm,

lw_wbs_impf_cm LIKE LINE OF lt_wbs_impf_cm,

lw_extensionin LIKE LINE OF lt_extensionin.

**Chequear que el elemento PEP existe.

CALL FUNCTION 'Z_RFC_CHEQUEA_ELEMENTO_PEP'

EXPORTING

I_POSID = p_pep

EXCEPTIONS

ELEMENTO_NO_EXISTE = 1

OTHERS = 2

.

IF SY-SUBRC <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

**2. Coger proyecto al que se refiere el elemento PEP

CLEAR lw_wbs_imp_gi.

REFRESH lt_wbs_imp_gi.

lw_wbs_imp_gi-wbs_element = p_pep.

APPEND lw_wbs_imp_gi TO lt_wbs_imp_gi.

REFRESH lt_wbs_exp_gi.

CALL FUNCTION 'BAPI_PROJECT_GETINFO'

  • EXPORTING

  • PROJECT_DEFINITION =

  • WITH_ACTIVITIES =

  • WITH_MILESTONES =

  • WITH_SUBTREE =

IMPORTING

  • E_PROJECT_DEFINITION =

RETURN = lw_return1

TABLES

I_WBS_ELEMENT_TABLE = lt_wbs_imp_gi

E_WBS_ELEMENT_TABLE = lt_wbs_exp_gi

  • E_WBS_MILESTONE_TABLE =

  • E_WBS_HIERARCHIE_TABLE =

  • E_ACTIVITY_TABLE =

E_MESSAGE_TABLE = lt_messages

.

CLEAR lw_wbs_exp_gi.

READ TABLE lt_wbs_exp_gi INTO lw_wbs_exp_gi INDEX 1.

l_project_definition = lw_wbs_exp_gi-project_definition.

**3. Modificar status de Bloqueo a 'P' ( Prerreserva )

CLEAR lw_wbs_imp_cm.

REFRESH lt_wbs_imp_cm.

lw_wbs_imp_cm-wbs_element = p_pep.

APPEND lw_wbs_imp_cm TO lt_wbs_imp_cm.

CLEAR lw_wbs_impf_cm.

REFRESH lt_wbs_impf_cm.

lw_wbs_impf_cm-wbs_element = p_pep.

APPEND lw_wbs_impf_cm TO lt_wbs_impf_cm.

CLEAR lw_extensionin.

REFRESH lt_extensionin.

lw_wbs_ext-wbs_element = p_pep.

lw_wbs_ext-bloqueo = 'P'.

CLEAR lw_extensionin.

lw_extensionin-structure = 'BAPI_TE_WBS_ELEMENT'.

lw_extensionin-valuepart1 = lw_wbs_ext.

lt_extensionin = lw_extensionin.

APPEND lw_extensionin TO lt_extensionin.

**Inicializamos el proceso de modificación (Ver doc. del mensaje

**078(CNIF_PI)

CALL FUNCTION 'BAPI_PS_INITIALIZATION'

.

REFRESH lt_extensionout.

CALL FUNCTION 'BAPI_BUS2054_CHANGE_MULTI'

EXPORTING

I_PROJECT_DEFINITION = l_project_definition

TABLES

IT_WBS_ELEMENT = lt_wbs_imp_cm

IT_UPDATE_WBS_ELEMENT = lt_wbs_impf_cm

ET_RETURN = lt_return

EXTENSIONIN = lt_extensionin

EXTENSIONOUT = lt_extensionout

.

**Hacer precommit (Ver doc. del mensaje 078(CNIF_PI)

CALL FUNCTION 'BAPI_PS_PRECOMMIT'

TABLES

ET_RETURN = lt_return

.

CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'

EXPORTING

WAIT = 'X'

IMPORTING

RETURN = lw_return

.

LucianoBentiveg
Active Contributor
0 Kudos

If you need only change status, you can use this Z FM:


FUNCTION zxx_status_change.
*"----------------------------------------------------------------------
*"*"Interfase local
*"  IMPORTING
*"     VALUE(OBJNR) LIKE  JSTO-OBJNR
*"     VALUE(STATUS) TYPE  J_STATUS
*"  EXPORTING
*"     REFERENCE(STATUS_ACTUALIZADO) TYPE  CHAR1
*"  EXCEPTIONS
*"      OBJETO_BLOQUEADO
*"      OBJETO_NO_ENCONTRADO
*"      NO_ES_STATUS_DE_CLASIFICACION
*"----------------------------------------------------------------------

  DATA: enqueue_tab LIKE ordtyp_pre  OCCURS 0 WITH HEADER LINE,
        not_locked  LIKE ord_pre     OCCURS 0 WITH HEADER LINE,
        status_r    LIKE jstat       OCCURS 0 WITH HEADER LINE,
        status_u    LIKE jstat       OCCURS 0 WITH HEADER LINE.


  REFRESH: enqueue_tab, not_locked, status_r, status_u.
  CLEAR: enqueue_tab, not_locked, status_r, status_u.

  IF status(1) NE 'E'.
    RAISE no_es_status_de_clasificacion.
    EXIT.
  ENDIF.


  enqueue_tab-aufnr = objnr+2.
  APPEND enqueue_tab.

  CALL FUNCTION 'CO_ZF_ORDER_LOCK_MULTI'
       EXPORTING
            lock_mode       = 'S'
            i_change_dialog = 'X'
       TABLES
            enqueue_tab     = enqueue_tab
            not_locked      = not_locked.


  IF NOT not_locked[] IS INITIAL.
    RAISE objeto_bloqueado.
    EXIT.
  ENDIF.

  CALL FUNCTION 'STATUS_READ'
       EXPORTING
            objnr            = objnr
            only_active      = 'X'
       TABLES
            status           = status_r
       EXCEPTIONS
            object_not_found = 1
            OTHERS           = 2.
  IF sy-subrc <> 0.
    RAISE objeto_no_encontrado.
    EXIT.
  ENDIF.


  status_u-stat  = status.
  status_u-inact = space.
  APPEND status_u.

  READ TABLE status_r INDEX 1.
  status_u-stat  = status_r-stat.
  status_u-inact = 'X'.
  APPEND status_u.
  CALL FUNCTION 'STATUS_CHANGE_INTERN_VB'
       EXPORTING
            objnr  = objnr
       TABLES
            status = status_u.

  IF sy-subrc EQ 0.
    status_actualizado = 'X'.
  ENDIF.


ENDFUNCTION.

0 Kudos

sorry, but what I need to change is a customer field... We have added this field to table PRPS, using append structure CI_PRPS. I need to change one field included in that structure...

Thanks anyway

Former Member
0 Kudos

Hello Daniela,

I know this is an old post, but now I am in the same situation. I need something (FM, BAPI, program) to add/update investment programs when creating/modifying a project. Did you find how to do it? Would you share the solution, please?

Thanks a lot in advance,

Abel