Разработка технологического процесса по организации обработки информации для составления аналитических обзоров бизнес-процессов на базе системы 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.


Страница: