REPORT zsd_sp1 NO STANDARD PAGE HEADING LINE-SIZE 165 MESSAGE-ID zdtmpl.
*/ Include
INCLUDE: zsd_lib.
*INCLUDE yyt00_fastole2.
*/ Tables
TABLES: vbrk, vbrp, vbak, vbkd, vbfa, likp , lips, kna1, konv.
DATA: tcres TYPE i.
DATA: i(2) TYPE n,
dog(25),
* dog LIKE vbrk-xblnr,
kont LIKE vbfa-vbelv,
i1 TYPE i, mt LIKE mcha-matnr, post LIKE vbfa-vbelv, nm(50),
itr TYPE i , itr1 TYPE i, itr2 TYPE i,
z_vbel LIKE vbrk-vbeln, ser LIKE vbkd-bstkd, zakaz LIKE vbfa-vbelv,
z_kunnr LIKE likp-kunnr, tr_nak LIKE likp-bolnr, g(2) TYPE n,
kus LIKE konv-knumv, pos LIKE vbrp-posnr, vl_ves TYPE i,
name1 LIKE vbak-bname, name2 LIKE vbak-bname, p_date LIKE likp-lddat,
name3 LIKE vbak-bname,name5 LIKE vbak-bname, name4(50), name_2(70),
k(2) TYPE p, deb1 LIKE kna1-kunnr, matnr_name LIKE vbrp-arktx,
off1 TYPE i VALUE 0, len1 TYPE i VALUE 8, zf00 LIKE konv-kbetr,
sr_mn(3) TYPE p DECIMALS 3, sr_fe(3) TYPE p DECIMALS 3, prsdt(8) TYPE c,
calk LIKE vbrk-kalsm, waerk LIKE vbrk-waerk, dd LIKE vbrp-prsdt,
data_kon LIKE vbrp-prsdt, deb2 LIKE kna1-kunnr, ch_1(8) TYPE c,
kurs LIKE vbrk-kurrf, skurs LIKE vbrk-kurrf, a_mn TYPE p DECIMALS 2,
a_fe TYPE p DECIMALS 2, gd_ch TYPE p DECIMALS 2, s_tam TYPE i,
i_ten TYPE i, dismod TYPE c VALUE 'e', upmod TYPE c VALUE 's',
k_dop(3), name2_ LIKE vbak-bname, name3_ LIKE vbak-bname, name_2_(70).
DATA: ddd TYPE p DECIMALS 0.
*табл & струк для поиска признаков
DATA: ch_classtype LIKE klah-klart VALUE '022',
ch_table LIKE tcla-obtab VALUE 'MCHA ',
ch_object LIKE ausp-objek.
DATA: BEGIN OF mcha_object,
matnr LIKE mcha-matnr,
werks LIKE mcha-werks,
charg LIKE mcha-charg,
END OF mcha_object.
DATA: BEGIN OF i_clobjdat OCCURS 0.
INCLUDE STRUCTURE clobjdat.
DATA: END OF i_clobjdat.
DATA: BEGIN OF i_class OCCURS 0.
INCLUDE STRUCTURE sclass.
DATA: END OF i_class.
* таблица для данных позиций фактуры
DATA: BEGIN OF poz_chet OCCURS 100,
k(2) TYPE p,
vbeln LIKE vbrk-vbeln,
matnr LIKE vbrp-matnr,
werks LIKE vbrp-werks,
posnr LIKE vbrp-posnr,
charg LIKE vbrp-charg,
ch_1(8) TYPE c,
fkimg TYPE p DECIMALS 3,
vl_pr TYPE p DECIMALS 2,
vl_ves TYPE p DECIMALS 2,
mn_rate TYPE p DECIMALS 2,
mn_ves TYPE p DECIMALS 3,
fe_rate TYPE p DECIMALS 2,
fe_ves TYPE p DECIMALS 3,
s_pr TYPE p DECIMALS 3, " Стоимость %
s_tn TYPE p DECIMALS 2,
gr TYPE i,
kzwi1 TYPE p DECIMALS 2,
kzwi2 TYPE p DECIMALS 2,
kzwi5 TYPE p DECIMALS 2,
kzwi4 TYPE p DECIMALS 2,
kzwi6 TYPE p DECIMALS 2,
bonba TYPE p DECIMALS 2,
gdt_dol TYPE p DECIMALS 2,
*// 21-07-2004 yersau
gdt_ten TYPE p DECIMALS 4,
*// gdt_ten TYPE p DECIMALS 0,
*//
dop_ten TYPE p DECIMALS 0,
dop_ten1 TYPE p DECIMALS 0,
rud_ten TYPE p DECIMALS 2,
rud_dol TYPE p DECIMALS 2,
sum_ten TYPE p DECIMALS 2,
sum_dol TYPE p DECIMALS 2,
kurs TYPE p DECIMALS 2,
aeskd LIKE lips-aeskd, " номер товарной накладной
END OF poz_chet.
DATA: BEGIN OF poz_chet1 OCCURS 100,
aeskd LIKE lips-aeskd, " номер товарной накладной
END OF poz_chet1.
DATA : dp_num LIKE poz_chet-gdt_ten.
* параметры выбора
SELECTION-SCREEN BEGIN OF BLOCK listumfang WITH FRAME. " title text-001.
PARAMETERS: ndoc LIKE vbrk-vbeln,
mattxt(50),
isp(15) TYPE c,
dt LIKE vbrp-prsdt.
SELECTION-SCREEN END OF BLOCK listumfang.
SET PF-STATUS 'MENU'. "Askar
*выбор по № документа- № контракта,№ заказа,№поставки
SELECT * FROM vbfa WHERE vbeln = ndoc AND vbtyp_v = 'C'.
zakaz = vbfa-vbelv.
ENDSELECT.
SELECT * FROM vbfa WHERE vbeln = ndoc AND vbtyp_v = 'J'.
post = vbfa-vbelv.
ENDSELECT.
SELECT * FROM vbfa WHERE vbeln = ndoc AND vbtyp_v = 'G'.
kont = vbfa-vbelv.
ENDSELECT.
SELECT * FROM vbrk WHERE vbeln = ndoc.
MOVE vbrk-waerk TO waerk.
MOVE vbrk-knumv TO kus.
MOVE vbrk-fkdat TO dd.
CONVERT DATE dd INTO INVERTED-DATE prsdt.
*write: f_zn.
ENDSELECT.
SELECT * FROM vbkd WHERE vbeln = zakaz.
ser = vbkd-bstkd.
ENDSELECT.
SELECT * FROM likp WHERE vbeln = post.
p_date = likp-lddat.
tr_nak = likp-bolnr.
deb1 = likp-kunag.
deb2 = likp-kunnr.
CASE likp-traty.
WHEN '0005'.
k_dop ='0.5'.
WHEN '0006'.
k_dop ='1.0'.
WHEN OTHERS.
k_dop = 0.
ENDCASE.
ENDSELECT.
SELECT * FROM vbak WHERE vbeln = kont.
data_kon = vbak-guebg.
MOVE vbak-bstnk TO dog.
ENDSELECT.
*// yersau 20050121
def_get_long_bstnk dog dog.
*\\
k = 0.
SELECT * FROM vbrp WHERE vbeln = ndoc AND fkimg NE 0.
IF sy-subrc = 0.
k = k + 1.
ENDIF.
mt = vbrp-matnr.
IF mattxt EQ space.
nm = vbrp-arktx.
ELSE.
nm = mattxt.
ENDIF.
MOVE-CORRESPONDING vbrp TO poz_chet.
MOVE k TO poz_chet-k.
*write: poz_chet.
*поиск признаков
mcha_object-matnr = poz_chet-matnr.
mcha_object-werks = poz_chet-werks.
mcha_object-charg = poz_chet-charg.
MOVE mcha_object TO ch_object.
CALL FUNCTION 'CLAF_CLASSIFICATION_OF_OBJECTS'
EXPORTING
classtype = ch_classtype
features = 'X'
object = ch_object
objecttable = ch_table
TABLES
t_class = i_class
t_objectdata = i_clobjdat
EXCEPTIONS
no_classification = 1
no_classtypes = 2.
READ TABLE i_clobjdat WITH KEY atnam = 'Z_VL_RATE'.
MOVE i_clobjdat-atflv TO poz_chet-vl_pr.
poz_chet-vl_ves = poz_chet-fkimg * 100 / ( 100 - poz_chet-vl_pr ).
READ TABLE i_clobjdat WITH KEY atnam = 'Z_MN_RATE'.
MOVE i_clobjdat-atflv TO poz_chet-mn_rate.
READ TABLE i_clobjdat WITH KEY atnam = 'Z_FE_RATE'.
MOVE i_clobjdat-atflv TO poz_chet-fe_rate.
READ TABLE i_clobjdat WITH KEY atnam = 'Z_GR'.
MOVE i_clobjdat-atflv TO poz_chet-gr.
READ TABLE i_clobjdat WITH KEY atnam = 'Z_ZF04'.
IF sy-subrc = 0.
poz_chet-dop_ten = i_clobjdat-atflv.
ENDIF.
poz_chet-mn_ves = poz_chet-fkimg / 100 * poz_chet-mn_rate.
poz_chet-fe_ves = poz_chet-fkimg / 100 * poz_chet-fe_rate.
MOVE poz_chet-charg+off1(len1) TO ch_1.
poz_chet-ch_1 = ch_1.
poz_chet-s_tn = poz_chet-kzwi1 / poz_chet-fkimg.
IF poz_chet-mn_rate NE 0.
poz_chet-s_pr = poz_chet-s_tn / poz_chet-mn_rate.
ENDIF.
poz_chet-gdt_dol = poz_chet-kzwi5 - poz_chet-kzwi4.
poz_chet-rud_dol = poz_chet-kzwi1.
SELECT SINGLE aeskd INTO (poz_chet1-aeskd) FROM lips
WHERE vbeln EQ post AND
charg EQ poz_chet-charg.
APPEND poz_chet1.
APPEND poz_chet.
ENDSELECT.
*имя заказчика и грузополучателя
IF deb1 = deb2.
SELECT * FROM kna1 WHERE kunnr = deb1.
MOVE kna1-name1 TO name1.
MOVE kna1-name1 TO name2.
MOVE kna1-name2 TO name3.
CONCATENATE name1 name3 INTO name4 SEPARATED BY space.
ENDSELECT.
CONCATENATE kna1-name2 kna1-name3 INTO name_2 SEPARATED BY space."dennis
ELSE.
SELECT * FROM kna1 WHERE kunnr = deb1.
MOVE kna1-name1 TO name1.
MOVE kna1-name2 TO name3.
MOVE kna1-name3 TO name5.
ENDSELECT.
SELECT * FROM kna1 WHERE kunnr = deb2.
MOVE kna1-name1 TO name2. MOVE kna1-name2 TO name2_.
MOVE kna1-name3 TO name3_.
ENDSELECT.
CONCATENATE name3 name5 INTO name_2 SEPARATED BY space.
CONCATENATE name2_ name3_ INTO name_2_ SEPARATED BY space.
ENDIF.
LOOP AT poz_chet.
pos = poz_chet-posnr.
SELECT * FROM konv WHERE knumv = kus AND kposn = pos AND kschl = 'ZF00'.
zf00 = konv-kbetr. skurs = konv-kkurs.
ENDSELECT.
SELECT * FROM konv WHERE knumv = kus AND kposn = pos AND kschl = 'ZR00'.
kurs = konv-kkurs.
ENDSELECT.
poz_chet-dop_ten = poz_chet-dop_ten * k_dop.
poz_chet-gdt_ten = poz_chet-kzwi5 * kurs -
poz_chet-bonba * kurs.
*// yersau 2004-08-12
IF skurs = 1.
dp_num = FRAC( poz_chet-gdt_ten ).
IF dp_num < '0.6'.
dp_num = TRUNC( poz_chet-gdt_ten ).
ELSE.
dp_num = TRUNC( poz_chet-gdt_ten ) + 1.
ENDIF.
poz_chet-gdt_ten = dp_num.
ENDIF.
*//uasrey
MODIFY poz_chet.
ENDLOOP.
LOOP AT poz_chet.
WRITE: /1 sy-vline NO-GAP,2(2) poz_chet-k NO-ZERO NO-GAP,
4 sy-vline NO-GAP,5 poz_chet-ch_1 NO-GAP,13 sy-vline NO-GAP,
14(6) poz_chet-vl_ves NO-ZERO NO-GAP,
22 sy-vline NO-GAP,23(7) poz_chet-fkimg NO-ZERO NO-GAP,
33 sy-vline NO-GAP,
34(6) poz_chet-mn_rate NO-ZERO NO-GAP,40 sy-vline NO-GAP,
41(8) poz_chet-mn_ves NO-ZERO NO-GAP,
49 sy-vline NO-GAP,50(5) poz_chet-fe_rate NO-GAP,55 sy-vline NO-GAP,
56(6) poz_chet-fe_ves NO-GAP,63 sy-vline NO-GAP,
64(5) poz_chet-vl_pr NO-GAP,
69 sy-vline NO-GAP,70(6) poz_chet-s_pr NO-GAP,
76 sy-vline NO-GAP,77(6) poz_chet-s_tn ,83 sy-vline NO-GAP,
84(14) poz_chet-kzwi1 NO-ZERO NO-GAP,97 sy-vline NO-GAP,
98(9) poz_chet-kzwi2 NO-GAP,
*//107 sy-vline NO-GAP,108(14) poz_chet-gdt_ten NO-GAP,
107 sy-vline NO-GAP,108(14) poz_chet-gdt_ten DECIMALS 0 NO-GAP,
122 sy-vline NO-GAP , 123(7) poz_chet-dop_ten NO-GAP,
130 sy-vline NO-GAP,131(9) poz_chet-gdt_dol NO-GAP,140 sy-vline NO-GAP,
141(6) poz_chet-kzwi4 NO-GAP,147 sy-vline NO-GAP,
148(15) poz_chet-kzwi6 NO-GAP,163 sy-vline NO-GAP.
AT LAST.
SUM.
a_mn = poz_chet-mn_ves * 100 / poz_chet-fkimg.
a_fe = poz_chet-fe_ves * 100 / poz_chet-fkimg.
gd_ch = poz_chet-gdt_ten / skurs.
s_tam = poz_chet-kzwi6.
i_ten = s_tam * kurs.
vl_ves = poz_chet-vl_ves.
WRITE: /1 sy-vline NO-GAP,4 sy-vline NO-GAP,13 sy-vline NO-GAP,
22 sy-vline NO-GAP,33 sy-vline NO-GAP,40 sy-vline NO-GAP,
49 sy-vline NO-GAP,55 sy-vline NO-GAP,63 sy-vline NO-GAP,
69 sy-vline NO-GAP,76 sy-vline NO-GAP,83 sy-vline NO-GAP,
97 sy-vline NO-GAP,107 sy-vline NO-GAP,122 sy-vline NO-GAP,
130 sy-vline NO-GAP,140 sy-vline NO-GAP,147 sy-vline NO-GAP,
163 sy-vline NO-GAP.
ULINE /1(163).
WRITE: /1 sy-vline NO-GAP,4 sy-vline NO-GAP,13 sy-vline NO-GAP,
14(6) vl_ves NO-GAP,22 sy-vline NO-GAP,
23(9) poz_chet-fkimg NO-GAP,33 sy-vline NO-GAP,
34(6) a_mn NO-GAP,40 sy-vline NO-GAP,
41(8) poz_chet-mn_ves NO-GAP,
49 sy-vline NO-GAP,50(5) a_fe NO-GAP,55 sy-vline NO-GAP,
56(7) poz_chet-fe_ves NO-GAP,63 sy-vline NO-GAP,
63 sy-vline NO-GAP,69 sy-vline NO-GAP,76 sy-vline NO-GAP,
83 sy-vline NO-GAP,84(14) poz_chet-kzwi1 NO-GAP,
97 sy-vline NO-GAP,107 sy-vline NO-GAP,
*//108(14) poz_chet-gdt_ten NO-GAP,122 sy-vline NO-GAP,
108(14) poz_chet-gdt_ten DECIMALS 0 NO-GAP,122 sy-vline NO-GAP,
123(7) poz_chet-dop_ten NO-GAP,
130 sy-vline NO-GAP,
131(9) poz_chet-gdt_dol NO-GAP,140 sy-vline NO-GAP,
147 sy-vline NO-GAP,148(15) poz_chet-kzwi6 NO-GAP,163 sy-vline NO-GAP.
*FORM export_excel.
* CALL FUNCTION 'Z_T00_CHECK_ONE_TEMPLATE'
* EXPORTING
* template_id = 'ZSD_SP' " имя шаблона
* IMPORTING
* result = tcres
* EXCEPTIONS
* OTHERS = 1.
* IF ( tcres GE 3 ) OR ( sy-subrc NE 0 ).
* MESSAGE e006.
* ENDIF.
*PERFORM create_excel_visible USING 'ZSD_SP.xlt'.
*ENDFORM. " EXPORT_EXCEL
*AT USER-COMMAND.
* CASE sy-ucomm.
* WHEN 'EXCEL'.
* PERFORM export_excel.
* ENDCASE.
|
|