0% found this document useful (0 votes)
216 views

Copy Badi

This document contains code for a method that copies carrier data from an existing order into a new record. It retrieves the carrier data from various tables, formats it, and saves it as a new record. It uses several SAP CRM and domain functions to retrieve reference data and descriptions. Any errors encountered are appended to an error message table.

Uploaded by

arup103
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
216 views

Copy Badi

This document contains code for a method that copies carrier data from an existing order into a new record. It retrieves the carrier data from various tables, formats it, and saves it as a new record. It uses several SAP CRM and domain functions to retrieve reference data and descriptions. Any errors encountered are appended to an error message table.

Uploaded by

arup103
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 5

METHOD if_ex_crm_copy_badi~orderadm_h.

TYPES: BEGIN OF typ_axt.


INCLUDE type zatab0001o4_work.
TYPES: END OF typ_axt.
DATA:
DATA:
DATA:
DATA:
DATA:
DATA:
DATA:
DATA:
DATA:
DATA:
DATA:
DATA:
DATA:
DATA:
DATA:
DATA:
DATA:
DATA:
**
*
*
*
*
*
*
*
*
*
**

gv_guid
lt_inszaob
lt_messages
lt_req_objects
lt_inscar
lt_carrier
lcl_axt_api
lcl_axt_x_runtime
ls_inscar
ls_carrier
lv_parent_id
lv_table_id
lv_record_id
lv_inscar
lv_inscarname
lt_domain_text
lt_domain_text1
wa_domain_text

TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE

crmt_object_guid.
STANDARD TABLE OF zatab0001o4.
axtt_msg.
crmt_object_name_tab.
STANDARD TABLE OF zatab00015l.
STANDARD TABLE OF zatab0001o4.
REF TO cl_axt_tables_api.
REF TO cx_axt.
zatab00015l.
typ_axt.
crmt_object_guid.
axt_table_id.
axt_record_id.
char10.
string.
STANDARD TABLE OF dd07v.
STANDARD TABLE OF dd07v.
dd07v.

Start of Data for Dump


DATA lv_guid
TYPE crmt_object_guid.
DATA lt_header_guid TYPE crmt_object_guid_tab.
DATA lt_orderadm_h
TYPE crmt_orderadm_h_wrkt.
DATA wa_orderadm_h
TYPE crmt_orderadm_h_wrk.
DATA lt_input_field_names TYPE crmt_input_field_names_tab.
DATA ls_input_field_names TYPE crmt_input_field_names.
DATA ls_input_fields
TYPE crmt_input_field.
DATA gt_saved_objects TYPE crmt_return_objects.
DATA gt_input_fields
TYPE crmt_input_field_tab.
End of Data for Dump

*** Start of Changes Dump


* MOVE is_ref_orderadm_h-guid TO lv_guid.
*
* IF lv_guid IS NOT INITIAL.
*
REFRESH lt_header_guid.
*
INSERT lv_guid INTO TABLE lt_header_guid.
*
*
IF sy-subrc EQ 0.
*
CALL FUNCTION 'CRM_ORDER_READ'
*
EXPORTING
*
it_header_guid
= lt_header_guid
*
IMPORTING

**
et_partner
= lt_partner
*
et_orderadm_h
= lt_orderadm_h
**
et_orderadm_i
= lt_orderadm_i
*
EXCEPTIONS
*
document_not_found
= 1
*
error_occurred
= 2
*
document_locked
= 3
*
no_change_authority = 4
*
no_display_authority = 5
*
no_change_allowed
= 6
*
OTHERS
= 7.
*
IF sy-subrc <> 0.
*** Implement suitable error handling here
*
ENDIF.
*
READ TABLE lt_orderadm_h INTO wa_orderadm_h WITH KEY guid = lv_guid .
*
ENDIF.
***** Header data orderadm_h
*
cs_orderadm_h-description = wa_orderadm_h-description .
*
ls_input_field_names-fieldname = 'DESCRIPTION'.
*
INSERT ls_input_field_names INTO TABLE ct_input_field_names.
*
****** input fields
*
ls_input_fields-ref_handle = '0000000001'.
*
ls_input_fields-ref_kind = 'A'.
"A (ADMIN HEADER)
*
ls_input_fields-objectname = 'ORDERADM_H'.
*
ls_input_fields-field_names = ct_input_field_names.
*
INSERT ls_input_fields INTO TABLE gt_input_fields.
*
CLEAR: ls_input_fields, ls_input_field_names.
*
*
CALL FUNCTION 'CRM_ORDER_SAVE'
*
EXPORTING
*
it_objects_to_save = lt_header_guid
*
IMPORTING
*
et_saved_objects
= gt_saved_objects.
*
*
IF sy-subrc <> 0.
** Implement suitable error handling here
*
ENDIF.
* ENDIF.
*** End of changes Dump
CLEAR: lv_parent_id,lv_table_id .
GET PARAMETER ID 'AUN' FIELD lv_inscar.
SELECT * FROM zatab00015l INTO TABLE lt_inscar WHERE object_id = is_ref_orde
radm_h-guid AND zzafld0000a9 = lv_inscar.
IF sy-subrc EQ 0.
READ TABLE lt_inscar INTO ls_inscar INDEX 1.

MOVE
MOVE
MOVE
MOVE
MOVE
MOVE
MOVE
MOVE
MOVE
MOVE
MOVE
MOVE
MOVE
MOVE
MOVE

ls_inscar-zzafld0000a9
ls_inscar-zzafld0000aa
ls_inscar-zzafld0000ab
ls_inscar-zzafld0000ac
ls_inscar-zzafld0000ad
ls_inscar-zzafld0000ae
ls_inscar-zzafld0000af
ls_inscar-zzafld0000ag
ls_inscar-zzafld0000ah
ls_inscar-zzafld0000aj
ls_inscar-zzafld0000ak
ls_inscar-zzafld0000al
ls_inscar-zzafld0000am
ls_inscar-zzafld0000an
ls_inscar-ZZAFLD0000AI

TO
TO
TO
TO
TO
TO
TO
TO
TO
TO
TO
TO
TO
TO
TO

ls_carrier-zzafld0000i3.
ls_carrier-zzafld0000i4.
ls_carrier-zzafld0000i5.
ls_carrier-zzafld0000i6.
ls_carrier-zzafld0000i8.
ls_carrier-zzafld0000i9.
ls_carrier-zzafld0000ia.
ls_carrier-zzafld0000ib.
ls_carrier-zzafld0000ic.
ls_carrier-zzafld0000id.
ls_carrier-zzafld0000ie.
ls_carrier-zzafld0000if.
ls_carrier-zzafld0000ig.
ls_carrier-zzafld0000ik.
ls_carrier-ZZAFLD0000IO.

CALL METHOD cl_crm_aui_service=>get_fullname_of_bp


EXPORTING
iv_bp
= ls_inscar-zzafld0000a9
receiving
rv_fullname = lv_inscarname
.
MOVE lv_inscarname TO ls_carrier-ZZAFLD0000IY.
* get description for policy type
*
CALL FUNCTION 'DD_DOMA_GET'
*
EXPORTING
*
domain_name
= 'ZADTEL000160'
*
TABLES
*
dd07v_tab_a
= lt_domain_text
*
dd07v_tab_n
= lt_domain_text1
*
EXCEPTIONS
*
illegal_value = 1
*
op_failure
= 2
*
OTHERS
= 3.
*
IF sy-subrc <> 0.
** Implement suitable error handling here
*
ENDIF.
*
*
LOOP AT lt_domain_text INTO wa_domain_text.
*
IF ls_carrier-zzafld0000ik EQ wa_domain_text-domvalue_l.
*
ls_carrier-zzafld0000ik = wa_domain_text-ddtext.
*
EXIT.
*
ENDIF.
*
ENDLOOP.
MOVE ls_inscar-zzafld0000ao TO ls_carrier-zzafld0000il.
* get description for procedure type
*
CALL FUNCTION 'DD_DOMA_GET'
*
EXPORTING

*
domain_name
= 'ZADTEL000161'
*
TABLES
*
dd07v_tab_a
= lt_domain_text
*
dd07v_tab_n
= lt_domain_text1
*
EXCEPTIONS
*
illegal_value = 1
*
op_failure
= 2
*
OTHERS
= 3.
*
IF sy-subrc <> 0.
** Implement suitable error handling here
*
ENDIF.
*
*
LOOP AT lt_domain_text INTO wa_domain_text.
*
IF ls_carrier-zzafld0000il EQ wa_domain_text-domvalue_l.
*
ls_carrier-zzafld0000il = wa_domain_text-ddtext.
*
EXIT.
*
ENDIF.
*
ENDLOOP.
MOVE ls_inscar-zzafld0000ap TO ls_carrier-zzafld0000im.
* get description for carrier priority
*
CALL FUNCTION 'DD_DOMA_GET'
*
EXPORTING
*
domain_name
= 'ZADTEL000162'
*
TABLES
*
dd07v_tab_a
= lt_domain_text
*
dd07v_tab_n
= lt_domain_text1
*
EXCEPTIONS
*
illegal_value = 1
*
op_failure
= 2
*
OTHERS
= 3.
*
IF sy-subrc <> 0.
** Implement suitable error handling here
*
ENDIF.
*
*
LOOP AT lt_domain_text INTO wa_domain_text.
*
IF ls_carrier-zzafld0000im EQ wa_domain_text-domvalue_l.
*
ls_carrier-zzafld0000im = wa_domain_text-ddtext.
*
EXIT.
*
ENDIF.
*
ENDLOOP.
ENDIF.
CLEAR lv_inscar.
SET PARAMETER ID 'AUN' FIELD lv_inscar.
gv_guid = is_ref_orderadm_h-guid.
lv_table_id = 'ZATAB0001O4'.
lv_parent_id = gv_guid.
TRY.

lcl_axt_api = cl_axt_tables_api=>create_api_instance( iv_table_id = lv_t


able_id ).
CATCH: cx_axt_runtime INTO lcl_axt_x_runtime,
cx_axt_data_not_found INTO lcl_axt_x_runtime.
APPEND LINES OF lcl_axt_x_runtime->mt_messages TO lt_messages.
* TODO: Handle these messages!
RETURN.
ENDTRY.
lcl_axt_api->buffer_subscribe_for_refresh( ).
CALL FUNCTION 'CRM_GUID_CREATE'
IMPORTING
ev_guid = lv_record_id.
TRY.
lcl_axt_api->create(
iv_object_id
= lv_record_id
iv_parent_id
= lv_parent_id
iv_restrictive_mode = abap_true
is_data
= ls_carrier ).
*
lcl_axt_api->save( ).
CATCH cx_axt_runtime INTO lcl_axt_x_runtime.
ENDTRY.
ENDMETHOD.

You might also like