Tuesday, January 19, 2010

IF_RSPLFA_SRVTYPE_IMP_EXEC~EXECUTE




public section.

interfaces IF_RSPLFA_SRVTYPE_IMP_EXEC .
types S_DATA type /BIC/VAL25012 .
types S_TAKIM_DATA type /BIC/CE8ZSETAC_O .
types T_DATA type TABLE OF S_DATA .
types T_TAKIM_DATA type TABLE OF S_TAKIM_DATA .
methods CONSTRUCTOR .

method CONSTRUCTOR.
SELECT * INTO TABLE lt_takim_data FROM /BIC/AZSETAC_O00 .
endmethod.

method IF_RSPLFA_SRVTYPE_IMP_EXEC~EXECUTE.
DATA: refdata TYPE REF TO data .

FIELD-SYMBOLS: <sdata> TYPE ANY.
FIELD-SYMBOLS: <tdata> TYPE ANY TABLE.
CREATE DATA refdata LIKE LINE OF c_th_data.
ASSIGN refdata->* TO <sdata>.


DATA: ls_data TYPE S_DATA .
DATA: lt_data TYPE T_DATA .
DATA: ls_data_change TYPE S_DATA .
DATA: lt_data_change TYPE T_DATA .
DATA: miktar_katsayi TYPE F .
DATA: fiyat_katsayi TYPE F .

LOOP AT c_th_data INTO <sdata>.
MOVE-CORRESPONDING <sdata> TO ls_data .
IF ls_data-0INFOPROV = 'ZICR020' .
COLLECT ls_data INTO lt_data .
ENDIF.
ENDLOOP.

LOOP AT lt_data INTO ls_data .
LOOP AT lt_takim_data INTO ls_takim_data
WHERE MATERIAL = ls_data-0MATERIAL .

miktar_katsayi = ls_takim_data-/BIC/ZSETORAN .
fiyat_katsayi = ls_takim_data-/BIC/ZFIYATYZD / 100 .
ls_data_change = ls_data .
ls_data_change-0INFOPROV = 'ZICR026' .
ls_data_change-ZSETMALZ = ls_takim_data-/BIC/ZSETMALZ .

IF ls_data-0MATERIAL = ls_data_change-ZSETMALZ .
ls_data_change-ZTA_TK = 'H' .
ELSE .
ls_data_change-ZTA_TK = 'A' .
ENDIF.

ls_data_change-ZBG0066 = ls_data-ZBG0066 * miktar_katsayi .
ls_data_change-ZBG0081 = ls_data-ZBG0081 * fiyat_katsayi .
ls_data_change-ZBG0072 = ls_data-ZBG0072 * fiyat_katsayi .
ls_data_change-ZBG0073 = ls_data-ZBG0073 * fiyat_katsayi .
ls_data_change-ZBG0179 = ls_data-ZBG0179 * fiyat_katsayi .
ls_data_change-ZBG0180 = ls_data-ZBG0180 * fiyat_katsayi .
ls_data_change-ZBG0182 = ls_data-ZBG0182 * fiyat_katsayi .
ls_data_change-ZBG0183 = ls_data-ZBG0183 * miktar_katsayi .
COLLECT ls_data_change INTO lt_data_change .

ENDLOOP .
ENDLOOP.

CLEAR C_TH_DATA[] .

*** TAKIM KAPALI KÜBÜNDEKI DATALAR DEGISMEYECEK AYNEN KORUNUYOR

LOOP AT lt_data INTO ls_data .
MOVE-CORRESPONDING ls_data to <sdata>.
COLLECT <sdata> INTO c_th_data.
ENDLOOP.

*** TAKIM AÇIK KÜBÜNE EKLENECEK KAYITLAR

LOOP AT lt_data_change INTO ls_data .
MOVE-CORRESPONDING ls_data to <sdata>.
COLLECT <data> INTO c_th_data.
ENDLOOP.
endmethod.

No comments:

Post a Comment