使用 ABAP 代码创建 CRM 订单 subject

*&---------------------------------------------------------------------*

*& Report ZCREATE_SUBJECT

*&---------------------------------------------------------------------*

*&

*&---------------------------------------------------------------------*

REPORT zcreate_subject.

DATA: lt_input_fields     TYPE  crmt_input_field_tab,

     ls_input_field      LIKE LINE OF lt_input_fields,

     ls_field_name       LIKE LINE OF ls_input_field-field_names,

     lv_guid             TYPE guid_16,

     lt_orderadm_h_com   TYPE crmt_orderadm_h_comt,

     ls_orderadm_h_com   LIKE LINE OF lt_orderadm_h_com,

     lt_save             TYPE crmt_object_guid_tab,

     lt_saved            TYPE crmt_return_objects,

     lt_service_os       TYPE crmt_srv_osset_comt,

     ls_service_os       TYPE LINE OF crmt_srv_osset_comt,

     lt_osset            TYPE crmt_srv_osset_comt1,

     ls_osset            TYPE LINE OF crmt_srv_osset_comt1,

     ls_saved            LIKE LINE OF lt_saved,

     ls_subject          TYPE LINE OF crmt_srv_subject_comt.

START-OF-SELECTION.

 CALL FUNCTION 'GUID_CREATE'

   IMPORTING

     ev_guid_16 = lv_guid.

 PERFORM call_order_maintain.

 PERFORM call_order_save.

FORM prepare_service_os.

 ls_service_os = VALUE #( ref_guid = lv_guid ref_kind = 'A' ).

*  CALL FUNCTION 'CRM_SERVICE_OS_CREATE_OW'

*    EXPORTING

*      iv_ref_guid    = lv_guid

*      iv_ref_kind    = 'A'

*    EXCEPTIONS

*      error_occurred = 1

*      OTHERS         = 2.

*

*  ASSERT sy-subrc = 0.

*

*  CALL FUNCTION 'CRM_SERVICE_OS_READ_OB'

*    EXPORTING

*      iv_ref_guid      = lv_guid

*      iv_ref_kind      = 'A'

*    IMPORTING

*      es_srv_osset_wrk = ls_read_oss.

 ls_osset-profile_type = 'A'.

* READ TABLE ls_read_oss-osset ASSIGNING FIELD-SYMBOL() INDEX 1.

 CALL FUNCTION 'CRM_GUID_CREATE'

   IMPORTING

     ev_guid = ls_osset-ref_guid.

 CALL FUNCTION 'CRM_GUID_CREATE'

   IMPORTING

     ev_guid = ls_subject-ref_guid.

 ls_subject-asp_id = 'WJ_SOFTWARE'.

 ls_subject-katalog_type = 'D'.

 ls_subject-cat_id = 'CA_13'.

 ls_subject-mode = 'A'.

 APPEND ls_subject TO ls_osset-subject.

 APPEND ls_osset TO lt_osset.

 APPEND LINES OF lt_osset TO ls_service_os-osset.

 APPEND ls_service_os TO lt_service_os.

 CLEAR: ls_input_field.

 ls_input_field-ref_guid = lv_guid.

 ls_input_field-ref_kind = 'A'.

 ls_input_field-objectname = 'SERVICE_OS'.

 ls_field_name-fieldname = 'ASP_ID'.

 APPEND ls_field_name TO ls_input_field-field_names.

 ls_field_name-fieldname = 'CAT_ID'.

 APPEND ls_field_name TO ls_input_field-field_names.

 ls_field_name-fieldname = 'CODE'.

 APPEND ls_field_name TO ls_input_field-field_names.

 ls_field_name-fieldname = 'CODEGRUPPE'.

 APPEND ls_field_name TO ls_input_field-field_names.

 ls_field_name-fieldname = 'KATALOGART'.

 APPEND ls_field_name TO ls_input_field-field_names.

 ls_field_name-fieldname = 'MODE'.

 APPEND ls_field_name TO ls_input_field-field_names.

 ls_field_name-fieldname = 'REF_GUID'.

 APPEND ls_field_name TO ls_input_field-field_names.

 APPEND ls_input_field TO lt_input_fields.

ENDFORM.

FORM call_order_maintain.

 CLEAR: ls_orderadm_h_com, ls_input_field, lt_input_fields.

 ls_orderadm_h_com-guid = lv_guid.

 ls_orderadm_h_com-description = 'created by code on:' && sy-timlo.

 ls_orderadm_h_com-process_type = 'SRVR'.

 ls_orderadm_h_com-mode = 'A'.

 APPEND ls_orderadm_h_com TO lt_orderadm_h_com.

 ls_input_field-ref_guid = lv_guid.

 ls_input_field-ref_kind = 'A'.

 ls_input_field-objectname = 'ORDERADM_H'.

 ls_field_name-fieldname = 'DESCRIPTION'.

 APPEND ls_field_name TO ls_input_field-field_names.

 ls_field_name-fieldname = 'MODE'.

 APPEND ls_field_name TO ls_input_field-field_names.

 ls_field_name-fieldname = 'PROCESS_TYPE'.

 APPEND ls_field_name TO ls_input_field-field_names.

 APPEND ls_input_field TO lt_input_fields.

 PERFORM prepare_service_os.

 CALL FUNCTION 'CRM_ORDER_MAINTAIN'

   EXPORTING

     it_service_os   = lt_service_os

   CHANGING

     ct_orderadm_h   = lt_orderadm_h_com

     ct_input_fields = lt_input_fields

   EXCEPTIONS

     OTHERS          = 99.

 IF sy-subrc = 0.

   WRITE:/ 'Order maintain function is done successfully.'.

 ENDIF.

ENDFORM.

FORM call_order_save.

 INSERT lv_guid INTO TABLE lt_save.

 CALL FUNCTION 'CRM_ORDER_SAVE'

   EXPORTING

     it_objects_to_save   = lt_save

     iv_update_task_local = abap_true

     iv_no_bdoc_send      = abap_true

   IMPORTING

     et_saved_objects     = lt_saved

   EXCEPTIONS

     document_not_saved   = 1.

 IF sy-subrc <> 0.

   WRITE: / 'Service Request created failed'.

 ELSE.

   READ TABLE lt_saved INTO ls_saved INDEX 1.

   WRITE: / 'Service Request created successfully, id: ' , ls_saved-object_id.

 ENDIF.

 COMMIT WORK AND WAIT.

ENDFORM.

上一篇:在Hudson中,使用ant自动对安卓项目编译打包apk


下一篇:java性能优化方案4——不要调用高开销方法