on 05-17-2014 3:30 AM
Hi Experts,
My task is to create service order using fm:crm_order_maintain,crm_order_save but unable to pass data to fields to category and customer , sold to party .Kindly share any sample code do it or service order creating by FM: crm_service_order_create.
Awaiting for your response
Regards
Krishna Acharya
Hi,
SAP GURU's,
Can anybody tell soultion to issue .
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi Krishna,
Try passing correct values to order maintain function module.
You need to modify the code added for partner.
Please check with the below sample code for partner
ls_partner-ref_guid = lv_cu_header_guid ." header guid
ls_partner-ref_handle = 1.
ls_partner-ref_kind = 'A'.
ls_partner-ref_partner_handle = '0001'.
ls_partner-partner_fct = ls_partner_src-partner_fct.
ls_partner-partner_no = ls_partner_src-partner_no.
ls_partner-display_type = 'BP'.
ls_partner-no_type = 'BP'.
ls_partner-kind_of_entry = 'C'.
INSERT ls_partner INTO TABLE lt_partner.
Best Regards,
Dharmakasi.
Hi Krishna,
You can find the default fields names by doing debug while creating service order manually in system.
What do you want to know more here, did you try the above code for partner?
You need to set the fields names correctly to input fields internal table.
ls_partner-ref_guid = lv_cu_header_guid .
ls_partner-ref_handle = 1.
ls_partner-ref_kind = 'A'.
ls_partner-ref_partner_handle = '0001'.
ls_partner-partner_fct = ls_partner_src-partner_fct.
ls_partner-partner_no = ls_partner_src-partner_no.
ls_partner-display_type = 'BP'.
ls_partner-no_type = 'BP'.
ls_partner-kind_of_entry = 'C'.
INSERT ls_partner INTO TABLE lt_partner.
INSERT ls_fieldnames INTO TABLE lt_fieldnames.
ls_fieldnames-fieldname = 'DISPLAY_TYPE'.
INSERT ls_fieldnames INTO TABLE lt_fieldnames.
ls_fieldnames-fieldname = 'NO_TYPE'.
INSERT ls_fieldnames INTO TABLE lt_fieldnames.
ls_fieldnames-fieldname = 'KIND_OF_ENTRY'.
INSERT ls_fieldnames INTO TABLE lt_fieldnames.
ls_fieldnames-fieldname = 'PARTNER_NO'.
INSERT ls_fieldnames INTO TABLE lt_fieldnames.
ls_fieldnames-fieldname = 'PARTNER_FCT'.
INSERT ls_fieldnames INTO TABLE lt_fieldnames.
ls_inputfields-objectname = 'PARTNER'.
ls_inputfields-ref_kind = 'A'.
ls_inputfields-logical_key = '0001'.
ls_inputfields-field_names = lt_fieldnames.
INSERT ls_inputfields INTO TABLE lt_input_fields.
Best Regards,
Dharmakais.
ls_subject_os-ref_handle = lv_handle_h.
ls_subject_os-asp_id = .
ls_subject_os-cat_id = .
ls_subject_os-katalog_type = 'D'.
ls_subject_os-mode = 'A'.
INSERT ls_subject_os INTO TABLE lt_subject_os.
***********
ls_subject_os-ref_handle = lv_handle_h.
ls_subject_os-asp_id =
ls_subject_os-cat_id =
ls_subject_os-katalog_type = 'D'.
ls_subject_os-mode = 'B'.
INSERT ls_subject_os INTO TABLE lt_subject_os."ls_osset-subject.
ls_osset-ref_guid = iv_activity_guid.
ls_osset-ref_handle = lv_handle_h.
ls_osset-profile_type = 'A'.
ls_osset-subject = lt_subject_os.
APPEND ls_osset TO lt_osset.
CLEAR ls_osset.
ls_service_os-ref_guid = iv_activity_guid.
ls_service_os-ref_kind = 'A'.
ls_service_os-ref_handle = lv_handle_h.
ls_service_os-osset = lt_osset.
APPEND ls_service_os TO lt_service_os.
**************
*...input fields
CLEAR ls_input_fields.
ls_input_fields-ref_guid = iv_activity_guid.
ls_input_fields-ref_kind = gc_object_kind-orderadm_h.
ls_input_fields-objectname = gc_object_name-service_os.
ls_input_fields-logical_key = '0001'.
ls_fieldname-fieldname = 'ASP_ID'.
INSERT ls_fieldname INTO TABLE ls_input_fields-field_names.
ls_fieldname-fieldname = 'CAT_ID'.
INSERT ls_fieldname INTO TABLE ls_input_fields-field_names..
ls_fieldname-fieldname = 'KATALOG_TYPE'.
INSERT ls_fieldname INTO TABLE ls_input_fields-field_names.
ls_fieldname-fieldname = 'MODE'.
INSERT ls_fieldname INTO TABLE ls_input_fields-field_names.
ls_fieldname-fieldname = 'REF_GUID'.
INSERT ls_fieldname INTO TABLE ls_input_fields-field_names.
INSERT ls_input_fields INTO TABLE lt_input_fields.
Regards
Krishna
Hi,
Have you added this code at the end?
ls_inputfields-objectname = 'SERVICE_OS'.
ls_inputfields-ref_kind = 'A'.
ls_inputfields-field_names = lt_fieldnames.
INSERT ls_inputfields INTO TABLE lt_input_fields.
If you are creating the subject entry, we should always pass the mode as A only.
Best Regards,
Dharmakasi.
HI Dhramkasi,
One more Issue yar , to insert Contract End Date in Service Request .
I followed exactly the same coding porcedures in the thread:
Procedure:
I'm Able create Object id but unable to modify contract end date.
It is not working yar. Need Your help.
Awaiting for your Replay.
Thanks&Regards
Krishna Acharya.
Hi Krishna,
Can you please share your code used to update the contract end date?
One more point here, are you updating the contract end date after document created or while creating document itself?
You can pass the contract end date while creating document itself like the way you are passing partner fields and service os fields.
Best Regards,
Dharmakasi.
Passed data to FM:Maintain.
CALL FUNCTION 'CRM_ORDER_MAINTAIN'
EXPORTING
it_refobj = lt_refobj
it_service_os = lt_service_os
it_partner = lt_partner
CHANGING
ct_orderadm_h = lt_orderadm_h
ct_input_fields = lt_input_fields
EXCEPTIONS
error_occurred = 1
document_locked = 2
no_change_allowed = 3
no_authority = 4
OTHERS = 5.
Based on orderADM-GUID.
Writtend code to modify Contract date.
CALL FUNCTION 'CRM_ORDER_READ'
EXPORTING
it_header_guid = lt_object_to_save
it_requested_objects = lt_req_obj
IMPORTING
et_appointment = lt_appointment_wrk
EXCEPTIONS
document_not_found = 1
error_occurred = 2
document_locked = 3
no_change_authority = 4
no_display_authority = 5
OTHERS = 6.
READ TABLE lt_appointment_wrk INTO lv_appointment_wrk WITH KEY appt_type = 'ZCURRENTDATE'.
************************************************************************************************
***********Adding dates*******************************
DATA:lv_time_stamp TYPE timestamp,
v_end_date TYPE sydatum,
v_timestamp TYPE ad_tstamp.
CLEAR lv_time_stamp.
CLEAR:ls_appointment .
ls_appointment-ref_guid = ls_object_to_save." lv_header_guid.
ls_appointment-ref_kind = 'A'.
ls_appointment-appt_type = 'CONTEND'.
CALL FUNCTION 'ADDR_CONVERT_DATE_TO_TIMESTAMP'
EXPORTING
iv_date = iv_contract_end_date
IMPORTING
ev_timestamp = v_timestamp.
ls_appointment-timestamp_to = v_timestamp."'20140622041300'." ." '20140522041300'.
ls_appointment-timezone_to = lv_appointment_wrk-timezone_to.
ls_appointment-mode = 'B'.
INSERT ls_appointment INTO TABLE lt_appointment.
CLEAR: ls_fieldname.
ls_fieldname-fieldname = 'TIMESTAMP_TO'.
ls_fieldname-changeable = ' '.
INSERT ls_fieldname INTO TABLE lt_fieldname.
CLEAR: ls_input_fields,
lt_input_fields.
ls_input_fields-ref_guid = ls_object_to_save.
ls_input_fields-ref_kind = 'A'.
ls_input_fields-logical_key = 'CONTEND'.
ls_input_fields-objectname = 'APPOINTMENT'.
ls_input_fields-field_names = lt_fieldname[].
INSERT ls_input_fields INTO TABLE lt_input_fields.
CLEAR : ls_fieldname.
******************************
CALL FUNCTION 'CRM_DATES_TIMECONTEXT_DELETE' .
******************************************************
CALL FUNCTION 'CRM_ORDER_MAINTAIN'
EXPORTING
it_appointment = lt_appointment
CHANGING
ct_input_fields = lt_input_fields
EXCEPTIONS
error_occurred = 1
document_locked = 2
no_change_allowed = 3
no_authority = 4
OTHERS = 5.
IF sy-subrc <> 0.
MESSAGE 'Error changing appointment' TYPE 'E'.
ENDIF.
IF sy-subrc = 0.
CLEAR ls_orderadm_h.
READ TABLE lt_orderadm_h INTO ls_orderadm_h INDEX 1.
ls_object_to_save = ls_orderadm_h-guid.
Refresh:lt_object_to_save.
INSERT ls_object_to_save INTO TABLE lt_object_to_save.
CALL FUNCTION 'CRM_ORDER_SAVE'
EXPORTING
it_objects_to_save = lt_object_to_save
IMPORTING
et_saved_objects = lt_saved_objects
et_exception = lt_exceptions
et_objects_not_saved = lt_objects_not_saved
EXCEPTIONS
document_not_saved = 1
OTHERS = 2.
ENDIF.
IF sy-subrc EQ 0.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'.
READ TABLE lt_saved_objects INTO ls_saved_objects INDEX 1 .
ev_case_id = ls_saved_objects-object_id.
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
ENDIF.
Hi,
Are you receiving any value after this code,
CALL FUNCTION 'CRM_ORDER_READ'
EXPORTING
it_header_guid = lt_object_to_save
it_requested_objects = lt_req_obj
IMPORTING
et_appointment = lt_appointment_wrk
EXCEPTIONS
document_not_found = 1
error_occurred = 2
document_locked = 3
no_change_authority = 4
no_display_authority = 5
OTHERS = 6.
READ TABLE lt_appointment_wrk INTO lv_appointment_wrk WITH KEY appt_type = 'ZCURRENTDATE'.
keep a break point here and check whether you are receiving any value here.
Check whether your receiving anyvalues in this structure lv_appointment_wrk.
Try using the below field names to input field names table.
ls_inp_field-fieldname = 'TIMESTAMP_TO'.
INSERT ls_inp_field INTO TABLE lt_inp_fields.
ls_inp_field-fieldname = 'DOMINANT'.
INSERT ls_inp_field INTO TABLE lt_inp_fields.
ls_inp_field-fieldname = 'RULE_NAME'.
INSERT ls_inp_field INTO TABLE lt_inp_fields.
ls_inp_field-fieldname = 'SHOW_LOCAL'.
INSERT ls_inp_field INTO TABLE lt_inp_fields.
ls_inp_field-fieldname = 'TIMEZONE_To'.
INSERT ls_inp_field INTO TABLE lt_inp_fields.
ls_inp_field-fieldname = 'TIME_UNIT'.
INSERT ls_inp_field INTO TABLE lt_inp_fields.
ls_inp_field-fieldname = 'DURATION'.
INSERT ls_inp_field INTO TABLE lt_inp_fields.
Hello Krishna,
If you want to create a service order, it d be better if you use BAPI CRM_ORDER_MAINTAIN followed byCRM_ORDER_SAVE and BAPI_TRANSACTION_COMMIT since they can be used to create all type of transactions.
For coding for this FM, put a debugger in CRM_ORDER_MAINTAIN and create a service order in transaction 'crmd_order' and pass values as mentioned in all the tables in this Fm as in the debug mode.
I am not aware of CRM but I found it somewhere on google.
Take a look.May be it will help you.
Regards,
Ritika Garg
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
HI Ritika Garg,
You want me do trail and error method tried it but not working ..I'm able to populate values for Object id and description but unable to display details of Category and Sold to party .. Need in detail.My code is..
ls_orderadm_h-process_type = iv_process_type.
ls_orderadm_h-description = iv_description.
INSERT ls_orderadm_h INTO TABLE lt_orderadm_h.
ls_partner-partner_fct = '00000001'.
ls_partner-partner_no = iv_cust_id.
APPEND ls_partner TO lt_partner.
ls_partner-partner_fct = '00000026' .
ls_partner-partner_no = lv_bupartner.
APPEND ls_partner TO lt_partner.
ls_subject-guid_hierarchy = iv_category.
INSERT ls_subject INTO TABLE lt_subject.
ls_refobj-product_id = iv_rental_unit.
INSERT ls_refobj INTO TABLE lt_refobj.
TRY.
CALL METHOD cl_system_uuid=>if_system_uuid_static~create_uuid_x16
RECEIVING
uuid = lv_guid_16.
CATCH cx_uuid_error .
ENDTRY.
ls_orderadm_h-handle = 0.
ls_orderadm_h-guid = lv_guid_16.
ls_orderadm_h-mode = 'A'.
ls_orderadm_h-process_type = 'Z002'.
INSERT ls_orderadm_h INTO TABLE lt_orderadm_h.
ls_input_fields-ref_handle = 0.
ls_input_fields-ref_guid = lv_guid_16.
ls_input_fields-ref_kind = 'A'.
ls_input_fields-objectname = gc_object_name-orderadm_h."'ORDERADM_H'.
ls_input_fields-logical_key = space.
* INSERT ls_input_fields INTO TABLE lt_input_fields.
* CLEAR ls_input_fields.
CLEAR ls_fieldname.
ls_fieldname-fieldname = 'PROCESS_TYPE'.
INSERT ls_fieldname INTO TABLE ls_input_fields-field_names.
ls_fieldname-fieldname = 'DESCRIPTION'.
INSERT ls_fieldname INTO TABLE ls_input_fields-field_names.
ls_fieldname-fieldname = 'MODE'.
INSERT ls_fieldname INTO TABLE ls_input_fields-field_names.
ls_fieldname-fieldname = 'PARTNER_NO'.
INSERT ls_fieldname INTO TABLE ls_input_fields-field_names.
ls_fieldname-fieldname = 'DISPLAY_TYPE'.
INSERT ls_fieldname INTO TABLE ls_input_fields-field_names.
ls_fieldname-fieldname = 'PARTNER_FCT'.
INSERT ls_fieldname INTO TABLE ls_input_fields-field_names.
ls_fieldname-fieldname = 'NO_TYPE'.
INSERT ls_fieldname INTO TABLE ls_input_fields-field_names.
ls_fieldname-fieldname = 'KIND_OF_ENTRY'.
INSERT ls_fieldname INTO TABLE ls_input_fields-field_names.
ls_fieldname-fieldname = 'REF_KIND'.
INSERT ls_fieldname INTO TABLE ls_input_fields-field_names.
INSERT ls_input_fields INTO TABLE lt_input_fields.
CLEAR ls_input_fields.
CLEAR ls_fieldname.
CALL FUNCTION 'CRM_ORDER_MAINTAIN'
EXPORTING
it_refobj = lt_refobj
it_partner = lt_partner
CHANGING
ct_orderadm_h = lt_orderadm_h
ct_input_fields = lt_input_fields
EXCEPTIONS
error_occurred = 1
document_locked = 2
no_change_allowed = 3
no_authority = 4
OTHERS = 5.
IF sy-subrc = 0.
ls_object_to_save = ls_orderadm_h-guid.
INSERT ls_object_to_save INTO TABLE lt_object_to_save.
CALL FUNCTION 'CRM_ORDER_SAVE'
EXPORTING
it_objects_to_save = lt_object_to_save
IMPORTING
et_saved_objects = lt_saved_objects
et_exception = lt_exceptions
et_objects_not_saved = lt_objects_not_saved
EXCEPTIONS
document_not_saved = 1
OTHERS = 2.
ENDIF.
Hi SAP GURU's waiting for your replay...
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
5 | |
1 | |
1 | |
1 | |
1 | |
1 | |
1 | |
1 | |
1 | |
1 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.