2011 Sep 21 2:26 PM
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.
2011 Sep 21 3:11 PM
I would use CL_BCS_CONVERT for conversion from/to utf-8 and keyword REPLACE in place of your numerous CONCATENATE
2011 Sep 21 5:35 PM
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.
| User | Count |
|---|---|
| 3 | |
| 2 | |
| 2 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |