Я сделаль ). Тупа напсиль xml-ский коды (шапка, теги и тд) на таблицу и выгрузиль. Код такой:
tables: anla, anlz, anlv, t001z, t099v.
include zt00_fastole2ii.
selection-screen begin of block main_frame with frame title text-001.
parameters: p_bukrs like anla-bukrs obligatory memory id buk. select-options: p_anln1 for anla-anln1. parameters: p_year like anla-zujhr obligatory default sy-datum+0(4). selection-screen begin of block vras_frame with frame title text-002. parameters: perv radiobutton group vras, ochr radiobutton group vras, dop radiobutton group vras, dpuv radiobutton group vras. selection-screen end of block vras_frame. parameters: num_uv(5), dat_uv like bkpf-budat. parameters: filename like cfdown-file default 'C:\Table.xml'. * FILTYP(10) DEFAULT 'DAT' OBLIGATORY. selection-screen end of block main_frame. *LIKE RLGRAP-FILENAME DEFAULT 'C:\TABLE.TXT',
************************************************** * äàííûå data: begin of zam_os_z occurs 0, bukrs like anlz-bukrs, anln1 like anlz-anln1, fkber like anlz-fkber, end of zam_os_z.
data: begin of zam_os_v occurs 0, bukrs like anlv-bukrs, anln1 like anlv-anln1, vsart like anlv-vsart, vsges like anlv-vsges, vstar like anlv-vstar, end of zam_os_v.
data: begin of zam_os occurs 0, bukrs like anla-bukrs, anln1 like anla-anln1, txt50 like anla-txt50, ehwzu like anla-ehwzu, meins like anla-meins, stadt like anla-stadt, grein like anla-grein, aufla like anla-aufla, fkber like anlz-fkber, fiamt like anla-fiamt, vsart like anlv-vsart, ehwnr like anla-ehwnr, vsges like anlv-vsges, grufl like anla-grufl, month type i, aktiv like anla-aktiv, deakt like anla-deakt, vstar like anlv-vstar, stavka like anlv-vstar, stavka2 like anlv-vstar, menge like anla-menge, sum1 like anlv-vstar, sum2 like anlv-vstar, end of zam_os.
data: begin of z_t001z occurs 0, bukrs like t001z-bukrs, party like t001z-party, paval like t001z-paval, end of z_t001z.
data: begin of z_t001w occurs 0, werks like t001w-werks, name2 like t001w-name2, end of z_t001w.
data: begin of z_t099b_a occurs 0, vstar like v_t099b-vstar, vsttx like v_t099b-vsttx, end of z_t099b_a.
data zt099v like t099v occurs 0 with header line.
data: zlists type i, str1(100), str2(10), str3(10), txt(2000), * FILENAME type string, filen type string, filtyp(10), mes(2) type n, a(15), b(15), kof(10), t(2), summa(12)," like anlv-VSTAR, summa2 like anlv-vstar, plowad(10) type c, kol(10) type n, k(10) type n, i(2) type n, perc(3) type n. data mrp type i.
data: begin of tab occurs 0, xml(65535), end of tab, begin of tab1 occurs 0, xml1(65535), end of tab1, begin of tab2 occurs 0, xml2(65535), end of tab2.
initialization.
at selection-screen on value-request for filename. *-------------- ##### ##### ## ###### ---------------------------------* call function 'WS_FILENAME_GET' exporting def_filename = '' def_path = 'C:\batch\' mask = ',*.xls.' mode = '0' title = '##### #####' importing filename = filename exceptions inv_winsys = 1 no_batch = 2 selection_cancel = 3 selection_error = 4.
start-of-selection.
at selection-screen output.
read table p_anln1 index 1. if sy-subrc <> 0. p_anln1-sign = 'I'. p_anln1-option = 'BT'. p_anln1-low = '800000000000'. p_anln1-high = '899999999999'. append p_anln1. endif.
************************************************************** * íà÷àëî start-of-selection. filtyp = 'DAT'.
select s~bukrs s~anln1 s~txt50 s~ehwzu s~meins s~stadt s~grein s~aufla s~fiamt s~ehwnr s~grufl into corresponding fields of table zam_os from anla as s where s~bukrs = p_bukrs and s~anln1 in p_anln1 and s~eigkz = '2'.
select v~bukrs v~anln1 v~vsart v~vsges v~vstar into corresponding fields of table zam_os_v from anlv as v where v~bukrs = p_bukrs and v~anln1 in p_anln1.
select z~bukrs z~anln1 z~fkber into corresponding fields of table zam_os_z from anlz as z where z~bukrs = p_bukrs and z~anln1 in p_anln1.
select werks name2 from t001w into table z_t001w where werks = p_bukrs.
select bukrs party paval from t001z into table z_t001z where ( bukrs = p_bukrs ) and ( party = 'SAPKZ1' or party = 'SAPKZ2' or party = 'SAPK30' ).
select vstar vsttx from t099v into table z_t099b_a.
describe table zam_os lines zlists. if zlists = 0. write: / 'Íåò äàííûõ'. exit. endif.
i = 1. kol = 1. summa2 = 0. *begin list 2 loop at zam_os.
mes = 12 - zam_os-grein.
loop at zam_os_v where ( bukrs = zam_os-bukrs ) and ( anln1 = zam_os-anln1 ). loop at z_t099b_a where vstar = zam_os_v-vstar. str1 = z_t099b_a-vsttx. search str1 for ';'. t = sy-fdpos + 1. shift str1 by t places. kof = str1. endloop. endloop.
replace ',' with '.' into str1.
concatenate '<form name="form_851_01">' '<sheetGroup>' '<sheet name="page_851_01_0' kol '1">' '<field name="page_number">' kol '</field>' '<field name="iin_uchr"></field>' '<field name="rnn_uchr"></field>' '<field name="period_year">' p_year '</field>' '<field name="dov_number"></field>' '<field name="dov_date"></field>' '<field name="field_851_01_001">' zam_os-ehwzu '</field>' '<field name="field_851_01_002">' zam_os-stadt '</field>' '<field name="field_851_01_003_1">' zam_os-grein '</field>' '<field name="field_851_01_003_2">' '</field>' '<field name="field_851_01_006">' '</field>' '<field name="field_851_01_004_II"></field>' '<field name="field_851_01_004w_II_III"></field>' '<field name="field_851_01_004_III">' '</field>' '<field name="field_851_01_004w_IV_V"></field>' '<field name="field_851_01_004_IV"></field>' '<field name="field_851_01_004_V"></field>' '<field name="field_851_01_009">' mes '</field>' '<field name="PaperFormsBarcode1"></field>' '<field name="field_851_01_008_I">false</field>' '<field name="field_851_01_008_II">false</field>' '<field name="field_851_01_008_III">false</field>' '<field name="field_851_01_008_IV">true</field>' into tab2-xml2.
if zam_os-bukrs = '9000'. loop at z_t001z where ( bukrs = '9000' ) and ( party = 'SAPKZ1' ). concatenate tab2-xml2 '<field name="rnn">' z_t001z-paval '</field>' into tab2-xml2. endloop. else. loop at z_t001z where ( bukrs = zam_os-bukrs ) and ( party = 'SAPK30' ). concatenate tab2-xml2 '<field name="rnn">' z_t001z-paval '</field>' into tab2-xml2. endloop. endif.
loop at zam_os_z where ( bukrs = zam_os-bukrs ) and ( anln1 = zam_os-anln1 ). concatenate tab2-xml2 '<field name="field_851_01_004_I">' zam_os_z-fkber '</field>' into tab2-xml2. endloop. loop at zam_os_v where ( bukrs = zam_os-bukrs ) and ( anln1 = zam_os-anln1 ). concatenate tab2-xml2 '<field name="field_851_01_007">' zam_os_v-vsges '</field>' into tab2-xml2. if ( zam_os_v-vsart = 'Z1' ) or ( zam_os_v-vsart = 'Z2' ). concatenate tab2-xml2 '<field name="field_851_01_005_I">true</field>' '<field name="field_851_01_005_II">false</field>' '<field name="field_851_01_005_III">false</field>' '<field name="field_851_01_005_IV">false</field>' '<field name="field_851_01_005_V">false</field>' '<field name="field_851_01_005_VI">false</field>' into tab2-xml2. elseif ( zam_os_v-vsart = 'Z3' ) or ( zam_os_v-vsart = 'Z4' ) or ( zam_os_v-vsart = 'Z5' ). concatenate tab2-xml2 '<field name="field_851_01_005_I">false</field>' '<field name="field_851_01_005_II">true</field>' '<field name="field_851_01_005_III">false</field>' '<field name="field_851_01_005_IV">false</field>' '<field name="field_851_01_005_V">false</field>' '<field name="field_851_01_005_VI">false</field>' into tab2-xml2. elseif ( zam_os_v-vsart = '08' ) or ( zam_os_v-vsart = '09' ) or ( zam_os_v-vsart = 'Z0' ). concatenate tab2-xml2 '<field name="field_851_01_005_I">false</field>' '<field name="field_851_01_005_II">false</field>' '<field name="field_851_01_005_III">true</field>' '<field name="field_851_01_005_IV">false</field>' '<field name="field_851_01_005_V">false</field>' '<field name="field_851_01_005_VI">false</field>' into tab2-xml2. elseif zam_os_v-vsart = 'Z7'. concatenate tab2-xml2 '<field name="field_851_01_005_I">false</field>' '<field name="field_851_01_005_II">false</field>' '<field name="field_851_01_005_III">false</field>' '<field name="field_851_01_005_IV">true</field>' '<field name="field_851_01_005_V">false</field>' '<field name="field_851_01_005_VI">false</field>' into tab2-xml2. elseif zam_os_v-vsart = 'Z6'. concatenate tab2-xml2 '<field name="field_851_01_005_I">false</field>' '<field name="field_851_01_005_II">false</field>' '<field name="field_851_01_005_III">false</field>' '<field name="field_851_01_005_IV">false</field>' '<field name="field_851_01_005_V">true</field>' '<field name="field_851_01_005_VI">false</field>' into tab2-xml2. elseif zam_os_v-vsart = 'Z8'. concatenate tab2-xml2 '<field name="field_851_01_005_I">false</field>' '<field name="field_851_01_005_II">false</field>' '<field name="field_851_01_005_III">false</field>' '<field name="field_851_01_005_IV">false</field>' '<field name="field_851_01_005_V">false</field>' '<field name="field_851_01_005_VI">true</field>' into tab2-xml2. endif. endloop. plowad = zam_os-grufl.
concatenate tab2-xml2 '</sheet>' '<sheet name="page_851_01_0' kol '2">' '<field name="rnn_uchr"></field>' '<field name="iin_uchr"></field>' '<field name="period_year">' p_year '</field>' '<field name="PaperFormsBarcode1"></field>' '<field name="field_851_01_010_I">true</field>' '<field name="sheetw"></field>' '<field name="ammount_sheetw"></field>' '<field name="field_851_01_010_II">false</field>' '<field name="field_851_01_010_3"></field>' '<field name="field_851_01_013"></field>' '<field name="field_851_01_012w"></field>' into tab2-xml2. * APPEND tab2. * plowad
if zam_os-bukrs = '9000'. loop at z_t001z where ( bukrs = '9000' ) and ( party = 'SAPKZ1' ). concatenate tab2-xml2 '<field name="rnn">' z_t001z-paval '</field>' into tab2-xml2. endloop. else. loop at z_t001z where ( bukrs = zam_os-bukrs ) and ( party = 'SAPK30' ). concatenate tab2-xml2 '<field name="rnn">' z_t001z-paval '</field>' into tab2-xml2. endloop. endif. * APPEND tab2.
loop at zam_os_v where ( bukrs = zam_os-bukrs ) and ( anln1 = zam_os-anln1 ). concatenate tab2-xml2 '<field name="field_851_01_011">' zam_os_v-vstar '</field>' into tab2-xml2. endloop.
* APPEND tab2.
a = str1. b = zam_os-grufl.
summa = ( a * b ) / ( 12 * mes ).
concatenate tab2-xml2 '<field name="field_851_01_012">' summa '</field>' into tab2-xml2. * APPEND tab2.
concatenate tab2-xml2 '</sheet>' '</sheetGroup>' '</form>' into tab2-xml2.
summa2 = summa2 + summa. kol = kol + 1. i = i + 1.
append tab2.
endloop.
*end list 2
*begin list 1 concatenate '<?xml version="1.0" encoding="UTF-8"?>' '<fno code="851.00" version="8" formatVersion="1">' '<form name="form_851_00">' '<sheetGroup>' '<sheet name="page_851_00_01">' '<field name="notice_number"></field>' '<field name="notice_date"/>' '<field name="farmer"></field>' '<field name="period_year">'p_year'</field>' '<field name="currency_code">KZT</field>' '<field name="field_851_00_002"></field>' '<field name="field_851_00_003_I"></field>' '<field name="field_851_00_003_II"></field>' '<field name="field_851_00_003_III"></field>' '<field name="field_851_00_003_IV"></field>' '<field name="field_851_00_003_V"></field>' '<field name="field_851_00_003_VI"></field>' '<field name="PaperFormsBarcode1"></field>' '<field name="dt_w"></field>' into tab-xml.
if p_bukrs = '9000'. loop at z_t001z where ( bukrs = '9000' ) and ( party = 'SAPKZ1' ). concatenate tab-xml '<field name="rnn">' z_t001z-paval '</field>' into tab-xml. endloop. else. loop at z_t001z where ( bukrs = p_bukrs ) and ( party = 'SAPK30' ). concatenate tab-xml '<field name="rnn">' z_t001z-paval '</field>' into tab-xml. endloop. endif.
loop at z_t001z where ( bukrs = p_bukrs ) and ( party = 'SAPKZ2' ). concatenate tab-xml '<field name="iin">' z_t001z-paval '</field>' into tab-xml. endloop. loop at z_t001w where werks = p_bukrs. concatenate tab-xml '<field name="payer_name1">' '</field>' into tab-xml. endloop.
concatenate tab-xml '<field name="payer_name2"></field>' '<field name="payer_name3"></field>' '<field name="dt_final"></field>' into tab-xml. if perv = 'X'. concatenate tab-xml '<field name="dt_main">true</field>' '<field name="dt_regular">false</field>' '<field name="dt_additional">false</field>' '<field name="dt_notice">false</field>' into tab-xml. elseif ochr = 'X'. concatenate tab-xml '<field name="dt_main">false</field>' '<field name="dt_regular">true</field>' '<field name="dt_additional">false</field>' '<field name="dt_notice">false</field>' into tab-xml. elseif dop = 'X'. concatenate tab-xml '<field name="dt_main">false</field>' '<field name="dt_regular">false</field>' '<field name="dt_additional">true</field>' '<field name="dt_notice">false</field>' into tab-xml. elseif dpuv = 'X'. concatenate tab-xml '<field name="dt_main">false</field>' '<field name="dt_regular">false</field>' '<field name="dt_additional">false</field>' '<field name="dt_notice">true</field>' into tab-xml. endif.
concatenate tab-xml '<field name="field_851_00_002" >' summa2 '</field>' into tab-xml. concatenate tab-xml '<field name="appendix_quantity1">' kol '</field>' into tab-xml.
concatenate tab-xml '</sheet>' '<sheet name="page_851_00_02">' '<field name="in_doc_number"></field>' '<field name="post_date"></field>' '<field name="receptor_name"></field>' '<field name="accept_date"></field>' '<field name="rating_auth_code"></field>' '<field name="period_year"></field>' '<field name="submit_date"></field>' '<field name="head_name"></field>' '<field name="iin"></field>' '<field name="PaperFormsBarcode1"></field>' '<field name="rnn"></field>' '</sheet>' '</sheetGroup>' '</form>' into tab-xml.
append tab. *end list 1
k = 1.
loop at tab2. if k = 1. concatenate tab-xml tab2-xml2 into tab1-xml1. else. concatenate '' tab2-xml2 into tab1-xml1. endif.
append tab1. k = k + 1. endloop.
concatenate '' '</fno>' into tab1-xml1.
filen = filename.
call function 'GUI_DOWNLOAD' exporting filename = filen filetype = filtyp codepage = '1504' tables data_tab = tab1 exceptions others = 1. if sy-subrc = 0. write:/ 'Âûãðóçêà ïðîøëà óñïåøíî â ôàéë ',filename. else. write:/ 'Îøèáêà âûãðóçêè'. endif.
|
|