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: 

Add Operation to Production Order

Former Member
0 Kudos

Hi, I'm looking for a way to add a new operation to an existing production order (order type 10). As I read on previous discussions, I tried FM BAPI_ALM_ORDER_MAINTAIN but I'm unable to make it work, I always get a dump "NOT_FOUND" when CO_BT_AFVG_READ_WITH_LOGKEY is called.

Anybody has already di this ? If so, can you help a me with that ?

Here's my code :

DATA: lv_aufnr        TYPE aufnr,
         lv_openum       TYPE vornr,
         it_methods      TYPE bapi_alm_order_method OCCURS 0 WITH HEADER LINE,
         it_header       TYPE bapi_alm_order_headers_i OCCURS 0 WITH HEADER LINE,
         it_header_up    TYPE bapi_alm_order_headers_up OCCURS 0 WITH HEADER LINE,
         it_partner      TYPE bapi_alm_order_partn_mul OCCURS 0 WITH HEADER LINE,
         it_partner_up   TYPE bapi_alm_order_partn_mul_up OCCURS 0 WITH HEADER LINE,
         it_operation    TYPE bapi_alm_order_operation OCCURS 0 WITH HEADER LINE,
         it_operation_up TYPE bapi_alm_order_operation_up OCCURS 0 WITH HEADER LINE,
         it_srule        TYPE bapi_alm_order_srule OCCURS 0 WITH HEADER LINE,
         it_srule_up     TYPE bapi_alm_order_srule_up OCCURS 0 WITH HEADER LINE,
         it_return       TYPE bapiret2 OCCURS 0 WITH HEADER LINE,
         lv_return       TYPE bapiret2,
         et_numbers      TYPE bapi_alm_numbers OCCURS 0 WITH HEADER LINE,
         lv_message      TYPE string,
         lv_messages     TYPE string.


   lv_aufnr = 20000080.
   CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
     EXPORTING
       INPUT  = lv_aufnr
     IMPORTING
       OUTPUT = lv_aufnr.

   lv_openum = 30.
   CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
     EXPORTING
       INPUT  = lv_openum
     IMPORTING
       OUTPUT = lv_openum.

   it_methods-refnumber  = 1.
   it_methods-objecttype = 'OPERATION'.
   it_methods-method     = 'CREATE'.
   it_methods-objectkey  = lv_aufnr.
   APPEND it_methods.

   it_methods-refnumber  = 1.
   it_methods-objecttype = ''.
   it_methods-method     = 'SAVE'.
   it_methods-objectkey  = lv_aufnr.
   APPEND it_methods.

   it_operation-activity = lv_openum.
   it_operation-control_key = 'ZP06'.
   it_operation-work_cntr = 'PU01'.
   it_operation-plant = '3101'.
   it_operation-description = 'Test BAPI'.
   it_operation-langu = 'E'.
   APPEND it_operation.

   it_operation_up-activity           = 'X'.
   it_operation_up-control_key        = 'X'.
   it_operation_up-work_cntr          = 'X'.
   it_operation_up-plant              = 'X'.
   it_operation_up-description        = 'X'.
   it_operation_up-langu              = 'X'.
   APPEND it_operation_up.

   CALL FUNCTION 'BAPI_ALM_ORDER_MAINTAIN'
     TABLES
       IT_METHODS              = it_methods
       IT_HEADER               = it_header
       IT_HEADER_UP            = it_header_up
*      IT_HEADER_SRV           =
*      IT_HEADER_SRV_UP        =
*      IT_USERSTATUS           =
       IT_PARTNER              = it_partner
       IT_PARTNER_UP           = it_partner_up
       IT_OPERATION            = it_operation
       IT_OPERATION_UP         = it_operation_up
*      IT_RELATION             =
*      IT_RELATION_UP          =
*      IT_COMPONENT            =
*      IT_COMPONENT_UP         =
*      IT_OBJECTLIST           =
*      IT_OBJECTLIST_UP        =
*      IT_OLIST_RELATION       =
*      IT_TEXT                 =
*      IT_TEXT_LINES           =
       IT_SRULE                = it_srule
       IT_SRULE_UP             = it_srule_up
*      IT_TASKLISTS            =
*      EXTENSION_IN            =
       RETURN                  = it_return
       ET_NUMBERS              = et_numbers.

   IF sy-subrc = 0.

     CLEAR lv_messages.
     LOOP AT it_return INTO lv_return.

       CONCATENATE lv_return-type lv_return-message INTO lv_message SEPARATED BY ': '.
       CONCATENATE lv_messages lv_message INTO lv_messages SEPARATED BY cl_abap_char_utilities=>vertical_tab.

     ENDLOOP.

     IF lv_messages IS NOT INITIAL.
       MESSAGE lv_messages TYPE 'I'.
     ENDIF.

     CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
       EXPORTING
         wait = 'X'.

     CALL FUNCTION 'DEQUEUE_ALL'
       EXPORTING
         _SYNCHRON = 'X'.

     COMMIT WORK AND WAIT.

   ELSE.

     MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
        WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

   ENDIF.

1 ACCEPTED SOLUTION

Former Member

Hi Patrick,

The BAPI you are using is for PM orders - I have heard that it can change PP operations but cant create new. Please try:

BAPI_PRODORD_CHANGE

CO_SE_PRODORD_CHANGE

CO_XT_OPERATION_CHANGE
CO_XT_COMPONENT_ADD

Alternatively you can think of BDC approach.

Regards

Shrikant

3 REPLIES 3

Former Member

Hi Patrick,

The BAPI you are using is for PM orders - I have heard that it can change PP operations but cant create new. Please try:

BAPI_PRODORD_CHANGE

CO_SE_PRODORD_CHANGE

CO_XT_OPERATION_CHANGE
CO_XT_COMPONENT_ADD

Alternatively you can think of BDC approach.

Regards

Shrikant

Former Member
0 Kudos

Thank you Shrikant, I used CO_SE_PRODORD_CHANGE and it worked as expected.

0 Kudos

Hi Shrikant, can you please give me the sample code how to change operations for production order against parts.