I have a problem the bapi BAPI_ALM_ORDER_MAINTAIN creation of operation with the control key PM03 (external).
The BAPI:BAPI_ALM_ORDER_MAINTAIN can't carry out cost element in service line automatically,But in frontend can.
My Code:
*&---------------------------------------------------------------------*
*& Report ZWTEST
*&
*&---------------------------------------------------------------------*
REPORT zwtest.
DATA: it_header TYPE TABLE OF bapi_alm_order_headers_i WITH HEADER LINE,
it_operation TYPE TABLE OF bapi_alm_order_operation WITH HEADER LINE,
it_methods TYPE TABLE OF bapi_alm_order_method WITH HEADER LINE,
it_component TYPE TABLE OF bapi_alm_order_component WITH HEADER LINE,
it_objectlist TYPE TABLE OF bapi_alm_order_objectlist WITH HEADER LINE,
it_service TYPE TABLE OF bapi_alm_srv_service_line WITH HEADER LINE.
DATA: it_return TYPE TABLE OF bapiret2 WITH HEADER LINE,
it_numbers TYPE TABLE OF bapi_alm_numbers WITH HEADER LINE.
"Header
CLEAR: it_header.
it_header-orderid = '%00000000001'.
it_header-order_type = 'Z215'.
it_header-short_text = 'BAPI TEST WORK ORDER'.
it_header-respcctr = '1138000201'.
it_header-profit_ctr = '1138000001'.
it_header-mn_wk_ctr = 'ZPMR1107'.
it_header-func_area = 'CN010'.
it_header-start_date = sy-datum.
it_header-finish_date = sy-datum.
it_header-planplant = '2088'.
it_header-plangroup = 'R12'.
it_header-pmacttype = 'ZH1'.
it_header-funct_loc = 'QD/2088/B-01-005'.
it_header-equipment = '000000000010016610'.
it_header-maintplant = '2088'.
APPEND it_header.
CLEAR it_methods.
it_methods-refnumber = 1.
it_methods-objecttype = 'HEADER'.
it_methods-objectkey = '%00000000001'.
it_methods-method = 'CREATE'.
APPEND it_methods.
"Operation 1
CLEAR it_operation.
it_operation-activity = '0010'.
*it_operation-sub_activity = '0001'.
it_operation-control_key = 'PM01'.
it_operation-description = 'TEST OPERATION'.
it_operation-work_activity = '1.5'.
it_operation-un_work = 'H'.
it_operation-work_cntr = 'ZPMR1107'.
it_operation-plant = '2088'.
APPEND it_operation.
CLEAR it_methods.
it_methods-refnumber = 1.
it_methods-objecttype = 'OPERATION'.
it_methods-objectkey = '%00000000001'.
it_methods-method = 'CREATE'.
APPEND it_methods.
"Operation 2(external)
CLEAR it_operation.
it_operation-activity = '0020'.
*it_operation-sub_activity = '0001'.
it_operation-control_key = 'PM03'.
it_operation-description = 'TEST EXTERNAL OPERATION '.
it_operation-work_activity = '3'.
it_operation-un_work = 'H'.
it_operation-work_cntr = 'ZPMR1107'.
it_operation-plant = '2088'.
it_operation-matl_group = 'S01020102'.
it_operation-purch_org = '1111'.
it_operation-pur_group = 'A19'.
APPEND it_operation.
CLEAR it_methods.
it_methods-refnumber = 2.
it_methods-objecttype = 'OPERATION'.
it_methods-objectkey = '%00000000001'.
it_methods-method = 'CREATE'.
APPEND it_methods.
"component
CLEAR: it_component.
it_component-item_number = '0010'.
it_component-activity = '0020'.
it_component-material = '000000000080074875'.
it_component-requirement_quantity = '3'.
APPEND it_component.
CLEAR it_methods.
it_methods-refnumber = 1.
it_methods-objecttype = 'COMPONENT'.
it_methods-objectkey = '%00000000001'.
it_methods-method = 'CREATE'.
APPEND it_methods.
"service line
CLEAR: it_service.
it_service-activity = '0020'.
it_service-outline = '0000000001'.
it_service-srv_line = '0000000030'.
it_service-short_text = 'TEST EXTERNAL SERVICE LINE'.
it_service-quantity = '1.000'.
it_service-uom = 'EA'.
it_service-gross_price = '98.00'.
it_service-currency = 'CNY'.
*it_service-matl_group = 'S01020102'.
it_service-net_price = '98.00'.
APPEND it_service.
CLEAR it_methods.
it_methods-refnumber = 1.
it_methods-objecttype = 'SERVICELINE'.
it_methods-objectkey = '%000000000010020'.
it_methods-method = 'CREATE'.
APPEND it_methods.
"objectlist
CLEAR it_objectlist.
it_objectlist-counter = '1'.
it_objectlist-funct_loc = ''.
it_objectlist-equipment = ''.
it_objectlist-notif_no = '000010047130'.
APPEND it_objectlist.
CLEAR it_methods.
it_methods-refnumber = 1.
it_methods-objecttype = 'OBJECTLIST'.
it_methods-objectkey = '%00000000001'.
it_methods-method = 'CREATE'.
APPEND it_methods.
**********************************************
"Save
CLEAR it_methods.
*it_methods-refnumber = '1'.
*it_methods-objectkey = '%00000000001'.
it_methods-method = 'SAVE'.
APPEND it_methods.
CALL FUNCTION 'BAPI_ALM_ORDER_MAINTAIN'
* EXPORTING
* IV_MMSRV_EXTERNAL_MAINTENACE =
TABLES
it_methods = it_methods
it_header = it_header
it_operation = it_operation
it_component = it_component
it_objectlist = it_objectlist
return = it_return
et_numbers = it_numbers
it_servicelines = it_service
.
READ TABLE it_return WITH KEY type = 'E'.
IF sy-subrc <> 0.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'.
WRITE: / 'Good'.
LOOP AT it_numbers.
WRITE: / it_numbers-aufnr_in, it_numbers-aufnr_new.
ENDLOOP.
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
WRITE: / '****:', it_return-message.
ENDIF.
ULINE.
LOOP AT it_return.
WRITE: / it_return-type, it_return-message.
ENDLOOP.
Thanks