1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109
|
TYPE-POOLS : abap.
TYPES : BEGIN OF typ_xml,
file_proceed(3),
reported TYPE i,
biller_id(17),
total_amnt(17),
proceed TYPE i,
total_amnt_ok(17),
not_proceed TYPE i,
total_amnt_nok(17),
END OF typ_xml.
DATA : gt_xml TYPE STANDARD TABLE OF typ_xml,
gt_result TYPE abap_trans_resbind_tab,
gs_xml TYPE typ_xml,
gs_result TYPE abap_trans_resbind.
DATA : gv_read_xml TYPE string.
* Ecran de sélection avec
PARAMETER p_file(200) DEFAULT
'\\b116b\transfert\sig_20050701203812_back.xml'.
START-OF-SELECTION.
OPEN DATASET p_file FOR INPUT IN BINARY MODE.
IF sy-subrc = 0.
CLEAR : gv_read_xml.
READ DATASET p_file INTO gv_read_xml.
* Transformation XML en ABAP-DATA
PERFORM check_xml USING gv_read_xml.
CLOSE DATASET p_file.
ENDIF.
*&---------------------------------------------------------------------*
*& Form check_xml
*&---------------------------------------------------------------------*
FORM check_xml USING p_xml TYPE string.
* Référence aux objets d'exception
DATA: cx_runtime_error TYPE REF TO cx_xslt_runtime_error.
DATA: cx_format_error TYPE REF TO cx_xslt_format_error.
DATA: err_text TYPE string.
TYPES: BEGIN OF t_dev_inf,
fileproceed(3),
reported TYPE i,
billerid(17),
END OF t_dev_inf,
begin of t_ok,
proceed type i,
totalamount type p,
end of t_ok,
BEGIN OF t_people,
deliveryInfo type t_dev_inf,
ok_result type t_ok,
END OF t_people.
DATA: people_itab TYPE STANDARD TABLE OF t_people,
wa_people TYPE t_people,
source_xml TYPE string,
result_xml TYPE abap_trans_resbind_tab,
wa_result_xml TYPE abap_trans_resbind,
lv_xml_tmp TYPE string.
GET REFERENCE OF people_itab INTO wa_result_xml-value.
wa_result_xml-name = 'PEOPLE'.
APPEND wa_result_xml TO result_xml.
TRY.
CALL TRANSFORMATION ypmcl001_id
SOURCE XML p_xml
RESULT (result_xml).
CATCH cx_sy_conversion_base64.
WRITE :/ 'kernel_errid = ', cx_runtime_error->kernel_errid.
err_text = cx_runtime_error->get_text( ).
WRITE :/ 'text = ', err_text.
CATCH cx_sy_conv_illegal_date_time.
WRITE :/ 'kernel_errid = ', cx_runtime_error->kernel_errid.
err_text = cx_runtime_error->get_text( ).
WRITE :/ 'text = ', err_text.
CATCH cx_xslt_runtime_error INTO cx_runtime_error.
WRITE :/ 'kernel_errid = ', cx_runtime_error->kernel_errid.
err_text = cx_runtime_error->get_text( ).
WRITE :/ 'text = ', err_text.
CATCH cx_xslt_format_error INTO cx_format_error.
WRITE :/ 'kernel_errid = ', cx_format_error->kernel_errid.
err_text = cx_format_error->get_text( ).
WRITE :/ 'text = ', err_text.
CLEANUP.
WRITE :/ 'passage par cleanup'.
ENDTRY.
LOOP AT people_itab INTO wa_people.
* WRITE: / sy-tabix, wa_people-deliveryinfo-fileproceed.
ENDLOOP.
ENDFORM. " check_xml |
Partager