Разработка технологического процесса по организации обработки информации для составления аналитических обзоров бизнес-процессов на базе системы SAP BWРефераты >> Программирование и компьютеры >> Разработка технологического процесса по организации обработки информации для составления аналитических обзоров бизнес-процессов на базе системы SAP BW
belnr = tablesfk-belnr_sfk AND
gjahr = tablesfk-gjahr_sfk AND
koart = 'K'.
IF sy-subrc = 0. " Сумма по фактуре
LOOP AT tablesfk WHERE belnr_sfk = mybseg-belnr AND
gjahr_sfk = mybseg-gjahr.
old_tablesfk_dmbtr_clr2 = tablesfk-dmbtr_clr.
IF z001 = 'X'.
tablesfk-dmbtr_clr = ( ( mybseg-dmbtr - snds ) /
mybseg-dmbtr ) * old_tablesfk_dmbtr_clr2.
ELSE.
CLEAR s777.
* Приводим оплату к валюте фактуры
CALL FUNCTION 'ZCONV_FOREIGN_TO_FOREIGN_CUR'
EXPORTING
* CLIENT = SY-MANDT
date = tablesfk-d_clr
* TYPE_OF_RATE = 'M'
from_amount = tablesfk-dmbtr_clr
from_currency = 'BYB'
to_currency = tablesfk-waers
local_currency = 'BYB'
* CONVERSION_MODE =
IMPORTING
to_amount = s777
EXCEPTIONS
no_rate_found = 1
overflow = 2
no_factors_found = 3
no_spread_found = 4
derived_2_times = 5
OTHERS = 6
.
IF sy-subrc <> 0.
WRITE: tablesfk-belnr_sfk, sy-msgv1,sy-msgv2,
sy-msgv3,sy-msgv4.
NEW-LINE.
s777 = 1.
ENDIF.
tablesfk-dmbtr_clr = ( mybseg-dmbtr - snds )
* ( s777 / mybseg-wrbtr ).
ENDIF.
MODIFY tablesfk.
ENDLOOP.
ENDIF.
ENDIF. " Если фактура FI, то НДС
ENDIF.
ENDIF. "Документ не найден
ENDIF. " Если не документ выравнивания
ENDSELECT. " myBSE_CLR
ENDIF." Кредитор
ENDIF. "Не сторно
ENDSELECT.
* PERFORM DEL_DOUBLE_FAKTURE.
* Удаляем позиции, дата выравнивания котторых не в SO_DATE И НЕ ОТМЕНА
* ВЫРАВНИВАНИЯ
DELETE tablesfk WHERE d_clr < sodate-low AND fl_storno_zakr_per = ' '.
PERFORM crdocmat.
IF pr_mat = 'X'.
old_pr_usl = pr_usl.
pr_usl = ' '.
* Обрабатываем Все движения с ВД 241, чтобы найти перемещения ТМЦ,
* оплаченных ранее, т.е. которые не обработались сверху
type_calc = 2.
REFRESH: tablesfk,
tableat,
tableebeln,
tablends.
REFRESH: table241,
table241_i.
CLEAR: tablesfk,
tableat,
tableebeln,
tablends.
ost561-fl_obr = ' '.
MODIFY ost561 TRANSPORTING fl_obr WHERE fl_obr = 'X'.
IF w001 = 'X'. "НКС
SELECT * INTO CORRESPONDING FIELDS OF mymseg
FROM mseg AS mseg INNER JOIN mkpf AS mkpf
ON mseg~mblnr = mkpf~mblnr AND
mseg~mjahr = mkpf~mjahr
WHERE mkpf~budat IN sodate AND
( mseg~bwart = '241' OR " на НКС
mseg~bwart = '281' ). " на проект
IF mymseg-bwart = '281'. " если СПП
CALL FUNCTION 'Z_KOL_SPP_NAL'
EXPORTING
p_pspnr = mymseg-ps_psp_pnr
IMPORTING
p_anln1 = mymseg-anln1
p_anln2 = mymseg-anln2
EXCEPTIONS
neopr = 1
nespp = 2
nonks = 3
OTHERS = 4.
IF sy-subrc <> 0.
CONTINUE.
ENDIF.
ENDIF.
PERFORM ch_klass_os
USING
mymseg-anln1
mymseg-anln2
CHANGING
fl_mbp.
IF fl_mbp = 'X'. " МБП
CONTINUE.
ENDIF.
* Проверка на сторно
IF NOT ( mymseg-smbln IS INITIAL )." Не сторно
CONTINUE.
ENDIF.
SELECT SINGLE * INTO mymseg2 FROM *mseg
WHERE smbln = mymseg-mblnr AND
sjahr = mymseg-mjahr AND
smblp = mymseg-zeile.
IF sy-subrc <> 0. " Не сторно документа материала
READ TABLE table241 WITH KEY mblnr = mymseg-mblnr
mjahr = mymseg-mjahr
zeile = mymseg-zeile.
IF sy-subrc <> 0. " Не найдено в движениях прошлых лет
PERFORM seek_sf
USING
mymseg.
ENDIF.
ENDIF. " Не сторно документа материала
ENDSELECT. "Mseg & Mkpf
ELSE. " На затраты
SELECT * INTO CORRESPONDING FIELDS OF mymseg
FROM mseg AS mseg INNER JOIN mkpf AS mkpf
ON mseg~mblnr = mkpf~mblnr AND
mseg~mjahr = mkpf~mjahr
WHERE mkpf~budat IN sodate AND
mkpf~blart = 'WA' AND
mseg~shkzg = 'H' AND
( ( mseg~kostl <> ' ' OR
mseg~sakto <> ' ' ) AND
( mseg~umwrk = ' ' AND
mseg~ummat = ' ' )
).
* Проверка на сторно
IF NOT ( mymseg-smbln IS INITIAL )." Не сторно
* Проверяем
CONTINUE.
ENDIF.
* Убираем кредит МБП (завод 1207) без цены
IF mymseg-werks = '1207'.
CONTINUE.
ENDIF.
SELECT SINGLE * INTO mymseg2 FROM *mseg
WHERE smbln = mymseg-mblnr AND
sjahr = mymseg-mjahr AND
smblp = mymseg-zeile.
IF sy-subrc <> 0. " Не сторно документа материала
READ TABLE table241_c WITH KEY mblnr = mymseg-mblnr
mjahr = mymseg-mjahr
zeile = mymseg-zeile.
IF sy-subrc <> 0. " Не найдено в движениях прошлых лет
PERFORM seek_sf
USING
mymseg.
ENDIF.
ENDIF. " Не сторно документа материала
ENDSELECT. "Mseg & Mkpf
ENDIF.
* PERFORM DEL_DOUBLE_FAKTURE.
PERFORM crdocmat.
** Обрабатываем Все движения с ВД Z02, чтобы найти перемещения ТМЦ,
** оплаченных ранее, но возвращенных на склад (с минусом)
*refresh tableSfk.
*refresh tableMat.
*refresh tableebeln.
*refresh tableNds.
*type_calc = 3.
*SELECT * INTO CORRESPONDING FIELDS of myMseg
* FROM MSEG AS MSEG INNER JOIN MKPF AS MKPF
* ON MSEG~mblnr = mkpf~mblnr AND
* MSEG~mjahr = mkpf~mjahr
* where mkpf~budat in sodate and
* mseg~BWART = 'Z02'.
** Проверка на сторно
* if not ( myMseg-smbln is initial )." Не сторно
* table241-fl_Z02 = 'X'.
* table241-mblnr = mymseg-mblnr.
* table241-mjahr = mymseg-mjahr.
* table241-zeile = myMseg-zeile.
* table241-fl_561 = ' '.
* append table241.
* continue.
* endif.
* select single * into myMseg2 from *mseg
* where smbln = myMseg-mblnr and
* sjahr = myMseg-mjahr and
* smblp = myMseg-ZEILE.
* if sy-subrc = 0. " Cторно документа материала
* table241-fl_Z02 = 'X'.
* table241-mblnr = mymseg-mblnr.
* table241-mjahr = mymseg-mjahr.
* table241-zeile = myMseg-zeile.
* table241-fl_561 = ' '.
* append table241.
* continue.
* endif.
** Ищем номер документа материала, которым данный материал попал на НКС
* select * into myMseg2 from mseg
* where matnr = myMseg-matnr and
* charg = myMseg-bwtar and
* bwart = '241'.
*
* if not ( myMseg2-smbln is initial )." Не сторно
* table241-mblnr = mymseg2-mblnr.
* table241-mjahr = mymseg2-mjahr.
* table241-zeile = myMseg2-zeile.
* table241-fl_561 = ' '.
* append table241.
* continue.
* endif.
* select single * into myMseg3 from *mseg
* where smbln = myMseg2-mblnr and
* sjahr = myMseg2-mjahr and
* smblp = myMseg2-ZEILE.
* if sy-subrc = 0. " Cторно документа материала
* table241-mblnr = mymseg2-mblnr.
* table241-mjahr = mymseg2-mjahr.
* table241-zeile = myMseg2-zeile.
* table241-fl_561 = ' '.
* append table241.
* continue.
* else.
*
* PERFORM SEEK_SF
* USING
* myMseg2.