Application Development and Automation 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: 
Read only

How to change XML Data

Former Member
0 Likes
594

Hi ,

I have requierement to change XML Data

I have write code like this but it is givng me dump

can't process xml: com.sap.engine.lib.xml.parser.P

REPORT z_test_survey.

DATA: ls_tel_number TYPE ad_tlnmbr,

ls_content TYPE char50,

ls_var1 TYPE char10,

ls_var2 TYPE char10,

ls_var3 TYPE char10,

lv_addrnumber TYPE adr2-addrnumber,

lv_partner TYPE but020-partner,

it_order_index TYPE STANDARD TABLE OF crmd_order_index INITIAL

SIZE 0,

it_orderadm TYPE STANDARD TABLE OF crmd_orderadm_h INITIAL

SIZE 0,

wa_orderadm TYPE crmd_orderadm_h,

wa_order_index TYPE crmd_order_index,

l_str TYPE string,

l_str1 TYPE string,

l_xstr TYPE xstring,

l_yn TYPE string,

l_rate TYPE string,

l1(37) TYPE c,

l2(37) TYPE c,

l3(37) TYPE c,

l4(37) TYPE c,

l5(37) TYPE c,

l6(37) TYPE c,

l7(37) TYPE c,

l8(37) TYPE c,

l9(37) TYPE c,

l10(37) TYPE c,

l11(37) TYPE c,

l12(37) TYPE c.

DATA: it_input_fields TYPE crmt_input_field_tab,

wa_input_fields TYPE crmt_input_field,

v_log TYPE crmt_logical_key,

it_org TYPE crmt_orgman_comt,

wa_org LIKE LINE OF it_org,

wa_field_name TYPE crmt_input_field_names,

it_orderadm_h TYPE crmt_orderadm_h_comt,

wa_orderadm_h TYPE crmt_orderadm_h_com,

it_activity_h TYPE crmt_activity_h_comt,

wa_activity_h LIKE LINE OF it_activity_h,

it_status TYPE crmt_status_comt,

wa_status LIKE LINE OF it_status,

it_exception TYPE crmt_exception_t,

wa_objects TYPE LINE OF crmt_return_objects,

it_objects TYPE crmt_return_objects,

wa_objectns TYPE LINE OF crmt_object_guid_tab,

it_objectns TYPE crmt_object_guid_tab,

it_survey TYPE crmt_survey_comt,

wa_survey LIKE LINE OF it_survey,

it_svy TYPE STANDARD TABLE OF crm_svy_db_svt

INITIAL SIZE 0,

wa_svy TYPE crm_svy_db_svt,

it_objects_to_save TYPE crmt_object_guid_tab,

wa_objects_to_save LIKE LINE OF it_objects_to_save,

it_doc_flow TYPE crmt_doc_flow_comt,

wa_doc_flow LIKE LINE OF it_doc_flow,

it_doc_link TYPE crmt_doc_flow_extdt,

wa_doc_link LIKE LINE OF it_doc_link,

it_guid TYPE crmt_object_guid_tab,

wa_guid LIKE LINE OF it_guid,

it_filter TYPE crmt_object_filter_tab,

wa_filter LIKE LINE OF it_filter,

it_order TYPE crmt_orderadm_h_wrkt,

wa_order LIKE LINE OF it_order,

it_orgman TYPE crmt_orgman_wrkt,

wa_orgman LIKE LINE OF it_orgman,

it_order1 TYPE crmt_orderadm_h_wrkt,

wa_order1 LIKE LINE OF it_order,

it_part TYPE crmt_partner_external_wrkt,

it_partner TYPE crmt_partner_comt,

wa_partner LIKE LINE OF it_partner,

wa_part LIKE LINE OF it_part,

it_doc TYPE crmt_doc_flow_wrkt,

wa_doc LIKE LINE OF it_doc.

DATA xml TYPE REF TO cl_xml_document_base.

wa_orderadm_h-handle = '0000000001'.

wa_orderadm_h-mode = 'B'.

wa_orderadm_h-process_type = 'ZSGW'.

wa_orderadm_h-guid = 'A671724E43201064E10000000A8D6829'.

APPEND wa_orderadm_h TO it_orderadm_h.

CLEAR wa_input_fields.

wa_input_fields-ref_kind = 'A'.

wa_input_fields-objectname = 'ORDERADM_H'.

CLEAR wa_field_name-fieldname.

wa_field_name-fieldname = 'MODE'.

APPEND wa_field_name TO wa_input_fields-field_names.

CLEAR wa_field_name-fieldname.

wa_field_name-fieldname = 'PROCESS_TYPE'.

APPEND wa_field_name TO wa_input_fields-field_names.

APPEND wa_input_fields TO it_input_fields.

*******filling survey data

wa_survey-ref_handle = '0000000001'.

wa_survey-ref_guid = 'A671724E43201064E10000000A8D6829'.

wa_survey-ref_kind = 'A'.

wa_survey-surveyid = 'Z_GOODWILL_SRVHISTORY'.

wa_survey-surveyversion = '0000000005'.

wa_survey-valueversion = '0000000001'.

SELECT * FROM crm_svy_db_svt INTO TABLE it_svy WHERE

surveyid = wa_survey-surveyid.

IF sy-subrc = 0.

SORT it_svy BY surveyversion DESCENDING.

CLEAR wa_svy.

READ TABLE it_svy INTO wa_svy INDEX 1.

CALL FUNCTION 'CRM_SVY_VAL_TEMPLATE_READ'

EXPORTING

surveyid = wa_svy-surveyid

surveyversion = wa_svy-surveyversion

IMPORTING

value_xml = l_str.

ENDIF.

CALL FUNCTION 'CRM_SVY_DB_CONVERT_STRING2HEX'

EXPORTING

s = l_str

IMPORTING

x = l_xstr.

DATA : converter TYPE REF TO cl_abap_conv_in_ce,

formxml TYPE string.

converter = cl_abap_conv_in_ce=>create(

input = l_xstr ).

converter->read( IMPORTING data = formxml ).

SPLIT formxml AT '">id_' INTO l1 l2 l3 l4 l5.

CLEAR l2+32(5).

CONDENSE l2.

CONCATENATE '<q15k><a1>id_' l2 INTO l2.

CONDENSE l2.

CLEAR l3+32(5).

CONDENSE l3.

CONCATENATE '<q15k><a1>id_' l3 INTO l3.

CONDENSE l3.

CLEAR l4+32(5).

CONDENSE l4.

CONCATENATE '<q15k><a1>id_' l4 INTO l4.

CONDENSE l4.

CLEAR l5+32(5).

CONDENSE l5.

CONCATENATE '<q15k><a1>id_' l5 INTO l5.

CONDENSE l5.

REPLACE l5 IN formxml WITH l4.

CONDENSE formxml.

CALL FUNCTION 'CRM_SVY_DB_CONVERT_STRING2HEX'

EXPORTING

s = formxml

IMPORTING

x = l_xstr.

wa_survey-valuexml = l_xstr.

APPEND wa_survey TO it_survey.

CLEAR wa_input_fields.

wa_input_fields-ref_handle = '0000000001'.

wa_input_fields-ref_guid = 'A671724E43201064E10000000A8D6829'.

wa_input_fields-ref_kind = 'A'.

wa_input_fields-objectname = 'SURVEY'.

CLEAR wa_field_name-fieldname.

wa_field_name-fieldname = 'EVALUATION_INFOS'.

APPEND wa_field_name TO wa_input_fields-field_names.

CLEAR wa_field_name-fieldname.

wa_field_name-fieldname = 'SURVEYID'.

APPEND wa_field_name TO wa_input_fields-field_names.

CLEAR wa_field_name-fieldname.

wa_field_name-fieldname = 'SURVEYVERSION'.

APPEND wa_field_name TO wa_input_fields-field_names.

CLEAR wa_field_name-fieldname.

wa_field_name-fieldname = 'VALUEGUID'.

APPEND wa_field_name TO wa_input_fields-field_names.

CLEAR wa_field_name-fieldname.

wa_field_name-fieldname = 'VALUEVERSION'.

APPEND wa_field_name TO wa_input_fields-field_names.

CLEAR wa_field_name-fieldname.

wa_field_name-fieldname = 'VALUEXML'.

APPEND wa_field_name TO wa_input_fields-field_names.

APPEND wa_input_fields TO it_input_fields.

REFRESH wa_input_fields-field_names.

CLEAR wa_input_fields.

CLEAR wa_input_fields-field_names.

********calling function module crm_order_maintain

CALL FUNCTION 'CRM_ORDER_MAINTAIN'

EXPORTING

it_survey = it_survey

IMPORTING

et_exception = it_exception

CHANGING

ct_orderadm_h = it_orderadm_h

ct_input_fields = it_input_fields

EXCEPTIONS

error_occurred = 1

document_locked = 2

no_change_allowed = 3

no_authority = 4

OTHERS = 5.

IF it_exception IS INITIAL.

REFRESH: it_objects_to_save,

it_objects,

it_objectns.

CLEAR wa_orderadm_h.

READ TABLE it_orderadm_h INTO wa_orderadm_h INDEX 1.

wa_objects_to_save = wa_orderadm_h-guid.

INSERT wa_objects_to_save INTO TABLE it_objects_to_save.

CALL FUNCTION 'CRM_ORDER_SAVE'

EXPORTING

it_objects_to_save = it_objects_to_save

IMPORTING

et_saved_objects = it_objects

et_exception = it_exception

et_objects_not_saved = it_objectns

  • CHANGING

  • CV_LOG_HANDLE =

EXCEPTIONS

document_not_saved = 1

OTHERS = 2.

IF it_exception IS INITIAL.

CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'

EXPORTING

wait = 'X'.

IF sy-subrc EQ 0.

CALL FUNCTION 'CRM_ORDER_DEQUEUE'

EXPORTING

iv_guid = wa_orderadm_h-guid.

CALL FUNCTION 'CRM_ORDER_DEQUEUE'

EXPORTING

iv_guid = wa_orderadm-guid.

CALL FUNCTION 'CRM_ORDER_INITIALIZE'

EXPORTING

it_guids_to_init = it_objects_to_save

iv_initialize_whole_buffer = 'X'

iv_init_frame_log = 'X'

EXCEPTIONS

error_occurred = 1

OTHERS = 2.

ENDIF.

ENDIF.

**********

REFRESH: it_input_fields,

it_doc_link.

**************

ENDIF.

Hi ,

I have requierement to change XML Data

I have write code like this but it is givng me dump

can't process xml: com.sap.engine.lib.xml.parser.P

REPORT z_test_survey.

DATA: ls_tel_number TYPE ad_tlnmbr,

ls_content TYPE char50,

ls_var1 TYPE char10,

ls_var2 TYPE char10,

ls_var3 TYPE char10,

lv_addrnumber TYPE adr2-addrnumber,

lv_partner TYPE but020-partner,

it_order_index TYPE STANDARD TABLE OF crmd_order_index INITIAL

SIZE 0,

it_orderadm TYPE STANDARD TABLE OF crmd_orderadm_h INITIAL

SIZE 0,

wa_orderadm TYPE crmd_orderadm_h,

wa_order_index TYPE crmd_order_index,

l_str TYPE string,

l_str1 TYPE string,

l_xstr TYPE xstring,

l_yn TYPE string,

l_rate TYPE string,

l1(37) TYPE c,

l2(37) TYPE c,

l3(37) TYPE c,

l4(37) TYPE c,

l5(37) TYPE c,

l6(37) TYPE c,

l7(37) TYPE c,

l8(37) TYPE c,

l9(37) TYPE c,

l10(37) TYPE c,

l11(37) TYPE c,

l12(37) TYPE c.

DATA: it_input_fields TYPE crmt_input_field_tab,

wa_input_fields TYPE crmt_input_field,

v_log TYPE crmt_logical_key,

it_org TYPE crmt_orgman_comt,

wa_org LIKE LINE OF it_org,

wa_field_name TYPE crmt_input_field_names,

it_orderadm_h TYPE crmt_orderadm_h_comt,

wa_orderadm_h TYPE crmt_orderadm_h_com,

it_activity_h TYPE crmt_activity_h_comt,

wa_activity_h LIKE LINE OF it_activity_h,

it_status TYPE crmt_status_comt,

wa_status LIKE LINE OF it_status,

it_exception TYPE crmt_exception_t,

wa_objects TYPE LINE OF crmt_return_objects,

it_objects TYPE crmt_return_objects,

wa_objectns TYPE LINE OF crmt_object_guid_tab,

it_objectns TYPE crmt_object_guid_tab,

it_survey TYPE crmt_survey_comt,

wa_survey LIKE LINE OF it_survey,

it_svy TYPE STANDARD TABLE OF crm_svy_db_svt

INITIAL SIZE 0,

wa_svy TYPE crm_svy_db_svt,

it_objects_to_save TYPE crmt_object_guid_tab,

wa_objects_to_save LIKE LINE OF it_objects_to_save,

it_doc_flow TYPE crmt_doc_flow_comt,

wa_doc_flow LIKE LINE OF it_doc_flow,

it_doc_link TYPE crmt_doc_flow_extdt,

wa_doc_link LIKE LINE OF it_doc_link,

it_guid TYPE crmt_object_guid_tab,

wa_guid LIKE LINE OF it_guid,

it_filter TYPE crmt_object_filter_tab,

wa_filter LIKE LINE OF it_filter,

it_order TYPE crmt_orderadm_h_wrkt,

wa_order LIKE LINE OF it_order,

it_orgman TYPE crmt_orgman_wrkt,

wa_orgman LIKE LINE OF it_orgman,

it_order1 TYPE crmt_orderadm_h_wrkt,

wa_order1 LIKE LINE OF it_order,

it_part TYPE crmt_partner_external_wrkt,

it_partner TYPE crmt_partner_comt,

wa_partner LIKE LINE OF it_partner,

wa_part LIKE LINE OF it_part,

it_doc TYPE crmt_doc_flow_wrkt,

wa_doc LIKE LINE OF it_doc.

DATA xml TYPE REF TO cl_xml_document_base.

wa_orderadm_h-handle = '0000000001'.

wa_orderadm_h-mode = 'B'.

wa_orderadm_h-process_type = 'ZSGW'.

wa_orderadm_h-guid = 'A671724E43201064E10000000A8D6829'.

APPEND wa_orderadm_h TO it_orderadm_h.

CLEAR wa_input_fields.

wa_input_fields-ref_kind = 'A'.

wa_input_fields-objectname = 'ORDERADM_H'.

CLEAR wa_field_name-fieldname.

wa_field_name-fieldname = 'MODE'.

APPEND wa_field_name TO wa_input_fields-field_names.

CLEAR wa_field_name-fieldname.

wa_field_name-fieldname = 'PROCESS_TYPE'.

APPEND wa_field_name TO wa_input_fields-field_names.

APPEND wa_input_fields TO it_input_fields.

*******filling survey data

wa_survey-ref_handle = '0000000001'.

wa_survey-ref_guid = 'A671724E43201064E10000000A8D6829'.

wa_survey-ref_kind = 'A'.

wa_survey-surveyid = 'Z_GOODWILL_SRVHISTORY'.

wa_survey-surveyversion = '0000000005'.

wa_survey-valueversion = '0000000001'.

SELECT * FROM crm_svy_db_svt INTO TABLE it_svy WHERE

surveyid = wa_survey-surveyid.

IF sy-subrc = 0.

SORT it_svy BY surveyversion DESCENDING.

CLEAR wa_svy.

READ TABLE it_svy INTO wa_svy INDEX 1.

CALL FUNCTION 'CRM_SVY_VAL_TEMPLATE_READ'

EXPORTING

surveyid = wa_svy-surveyid

surveyversion = wa_svy-surveyversion

IMPORTING

value_xml = l_str.

ENDIF.

CALL FUNCTION 'CRM_SVY_DB_CONVERT_STRING2HEX'

EXPORTING

s = l_str

IMPORTING

x = l_xstr.

DATA : converter TYPE REF TO cl_abap_conv_in_ce,

formxml TYPE string.

converter = cl_abap_conv_in_ce=>create(

input = l_xstr ).

converter->read( IMPORTING data = formxml ).

SPLIT formxml AT '">id_' INTO l1 l2 l3 l4 l5.

CLEAR l2+32(5).

CONDENSE l2.

CONCATENATE '<q15k><a1>id_' l2 INTO l2.

CONDENSE l2.

CLEAR l3+32(5).

CONDENSE l3.

CONCATENATE '<q15k><a1>id_' l3 INTO l3.

CONDENSE l3.

CLEAR l4+32(5).

CONDENSE l4.

CONCATENATE '<q15k><a1>id_' l4 INTO l4.

CONDENSE l4.

CLEAR l5+32(5).

CONDENSE l5.

CONCATENATE '<q15k><a1>id_' l5 INTO l5.

CONDENSE l5.

REPLACE l5 IN formxml WITH l4.

CONDENSE formxml.

CALL FUNCTION 'CRM_SVY_DB_CONVERT_STRING2HEX'

EXPORTING

s = formxml

IMPORTING

x = l_xstr.

wa_survey-valuexml = l_xstr.

APPEND wa_survey TO it_survey.

CLEAR wa_input_fields.

wa_input_fields-ref_handle = '0000000001'.

wa_input_fields-ref_guid = 'A671724E43201064E10000000A8D6829'.

wa_input_fields-ref_kind = 'A'.

wa_input_fields-objectname = 'SURVEY'.

CLEAR wa_field_name-fieldname.

wa_field_name-fieldname = 'EVALUATION_INFOS'.

APPEND wa_field_name TO wa_input_fields-field_names.

CLEAR wa_field_name-fieldname.

wa_field_name-fieldname = 'SURVEYID'.

APPEND wa_field_name TO wa_input_fields-field_names.

CLEAR wa_field_name-fieldname.

wa_field_name-fieldname = 'SURVEYVERSION'.

APPEND wa_field_name TO wa_input_fields-field_names.

CLEAR wa_field_name-fieldname.

wa_field_name-fieldname = 'VALUEGUID'.

APPEND wa_field_name TO wa_input_fields-field_names.

CLEAR wa_field_name-fieldname.

wa_field_name-fieldname = 'VALUEVERSION'.

APPEND wa_field_name TO wa_input_fields-field_names.

CLEAR wa_field_name-fieldname.

wa_field_name-fieldname = 'VALUEXML'.

APPEND wa_field_name TO wa_input_fields-field_names.

APPEND wa_input_fields TO it_input_fields.

REFRESH wa_input_fields-field_names.

CLEAR wa_input_fields.

CLEAR wa_input_fields-field_names.

********calling function module crm_order_maintain

CALL FUNCTION 'CRM_ORDER_MAINTAIN'

EXPORTING

it_survey = it_survey

IMPORTING

et_exception = it_exception

CHANGING

ct_orderadm_h = it_orderadm_h

ct_input_fields = it_input_fields

EXCEPTIONS

error_occurred = 1

document_locked = 2

no_change_allowed = 3

no_authority = 4

OTHERS = 5.

IF it_exception IS INITIAL.

REFRESH: it_objects_to_save,

it_objects,

it_objectns.

CLEAR wa_orderadm_h.

READ TABLE it_orderadm_h INTO wa_orderadm_h INDEX 1.

wa_objects_to_save = wa_orderadm_h-guid.

INSERT wa_objects_to_save INTO TABLE it_objects_to_save.

CALL FUNCTION 'CRM_ORDER_SAVE'

EXPORTING

it_objects_to_save = it_objects_to_save

IMPORTING

et_saved_objects = it_objects

et_exception = it_exception

et_objects_not_saved = it_objectns

  • CHANGING

  • CV_LOG_HANDLE =

EXCEPTIONS

document_not_saved = 1

OTHERS = 2.

IF it_exception IS INITIAL.

CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'

EXPORTING

wait = 'X'.

IF sy-subrc EQ 0.

CALL FUNCTION 'CRM_ORDER_DEQUEUE'

EXPORTING

iv_guid = wa_orderadm_h-guid.

CALL FUNCTION 'CRM_ORDER_DEQUEUE'

EXPORTING

iv_guid = wa_orderadm-guid.

CALL FUNCTION 'CRM_ORDER_INITIALIZE'

EXPORTING

it_guids_to_init = it_objects_to_save

iv_initialize_whole_buffer = 'X'

iv_init_frame_log = 'X'

EXCEPTIONS

error_occurred = 1

OTHERS = 2.

ENDIF.

ENDIF.

**********

REFRESH: it_input_fields,

it_doc_link.

**************

ENDIF.

2 REPLIES 2
Read only

franois_henrotte
Active Contributor
0 Likes
530

I would use CL_BCS_CONVERT for conversion from/to utf-8 and keyword REPLACE in place of your numerous CONCATENATE

Read only

0 Likes
530

I am not getting where i am wrong getting parsing error.

CALL FUNCTION 'CRM_SVY_VAL_TEMPLATE_READ'

EXPORTING

surveyid = wa_svy-surveyid

surveyversion = wa_svy-surveyversion

IMPORTING

value_xml = l_str

x_value_xml = l_xstring.

ENDIF.

DATA : converter TYPE REF TO cl_abap_conv_in_ce,

formxml TYPE string.

converter = cl_abap_conv_in_ce=>create(

input = l_xstring

).

converter->read( IMPORTING data = formxml ).

SPLIT formxml AT '">id_' INTO l1 l2 l3 l4 l5.

CLEAR l2+32(5).

CONDENSE l2.

CONCATENATE '<q15k><a1>id_' l2 INTO l2.

CONDENSE l2.

CLEAR l3+32(5).

CONDENSE l3.

CONCATENATE '<q15k><a1>id_' l3 INTO l3.

CONDENSE l3.

CLEAR l4+32(5).

CONDENSE l4.

CONCATENATE '<q15k><a1>id_' l4 INTO l4.

CONDENSE l4.

CLEAR l5+32(5).

CONDENSE l5.

CONCATENATE '<q15k><a1>id_' l5 INTO l5.

CONDENSE l5.

REPLACE l5 IN formxml WITH l4.

CALL FUNCTION 'CRM_SVY_DB_CONVERT_STRING2HEX'

EXPORTING

s = formxml

IMPORTING

x = l_xstr.

wa_survey-valuexml = l_xstr.