Form
Form
Form
*&
Form FRM_KONDI_WERT_602
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
FORM frm_kondi_wert_602.
DATA: zykm
LIKE ykmeng,
laf_komv
TYPE STANDARD TABLE OF komv WITH HEADER LINE ,
lzt_komv
TYPE STANDARD TABLE OF komv WITH HEADER LINE ,
lzs_komv
LIKE LINE OF lzt_komv,
lsf_komv
LIKE LINE OF laf_komv,
zkar_kbetr
LIKE komv-kbetr,
zkalf_kwert
LIKE komv-kwert,
lt_ekpo
TYPE TABLE OF ekpo WITH HEADER LINE,
lv_saswaers
LIKE ekko-waers ,
ls_vbep
TYPE vbep,
lt_rbkp
TYPE TABLE OF rbkp WITH HEADER LINE,
lv_fark
LIKE rbkp-rmwwr,
v_line
TYPE i,
y_line
TYPE i,
gv_log_handle TYPE balloghndl.
DATA: lv_exc_rate
TYPE p DECIMALS 5.
DATA: lv_exc_rate_tmp TYPE p DECIMALS 5.
DATA: BEGIN OF lt_ekbe OCCURS 0,
ebeln LIKE ekbe-ebeln,
ebelp LIKE ekbe-ebelp,
wrbtr LIKE ekbe-wrbtr,
hswae LIKE ekbe-hswae,
menge LIKE ekbe-menge,
bldat LIKE ekbe-bldat,
bamng LIKE ekbe-bamng,
belnr LIKE ekbe-belnr,
waers LIKE ekbe-waers,
vgabe LIKE ekbe-vgabe,
END OF lt_ekbe.
DATA: lv_adim1
lv_adim2
lv_adim3
lv_menge_top
satir
lv_wrbtr_top
DATA: lv_rate
lv_netpr
lv_netpr_temp
TYPE
LIKE
LIKE
LIKE
TYPE
LIKE
LIKE
LIKE
LIKE
p DECIMALS 5 ,
ekbe-wrbtr,
ekbe-wrbtr,
ekbe-menge,
i,
ekbe-wrbtr.
vbak-kurst,
ekpo-netpr,
ekpo-netpr.
"modified Yavuz
CLEAR: ls_vbep.
SELECT SINGLE *
WHERE vbeln =
AND posnr =
IF sy-subrc <> 0.
CLEAR lt_ekbe.
SELECT ebeln ebelp wrbtr hswae menge bldat bamng
belnr waers vgabe
INTO CORRESPONDING FIELDS OF TABLE lt_ekbe FROM ekbe
FOR ALL ENTRIES IN lt_ekpo
WHERE ebeln EQ lt_ekpo-ebeln
AND ebelp EQ lt_ekpo-ebelp
AND gjahr EQ komk-fkdat(4)
AND vgabe EQ '2' .
ENDIF.
*-BEG
*-END
IF sy-subrc <> 0.
xkomv-kbetr = '0' .
xkomv-kwert = '0' .
MODIFY xkomv .
ELSE .
"begin-----BS 06.11.2012 15:18:11
LOOP AT lt_ekbe.
SELECT belnr rmwwr beznk wmwst1 FROM rbkp
INTO CORRESPONDING FIELDS OF TABLE lt_rbkp
WHERE belnr EQ lt_ekbe-belnr
AND stblg = space .
AND gjahr EQ komk-fkdat(4).
IF sy-subrc NE 0.
DELETE lt_ekbe.
ELSE.
LOOP AT lt_rbkp.
IF lt_ekbe-vgabe EQ '2' .
CLEAR lt_rbkp-beznk.
ENDIF.
lv_fark = lt_rbkp-rmwwr ( lt_rbkp-beznk + lt_rbkp-wmwst1 ).
IF lv_fark EQ 0.
lv_adim1 = 0.
ELSE.
lv_adim1 = lt_rbkp-beznk * 100000 / lv_fark.
ENDIF.
lv_adim2 = lt_ekbe-wrbtr * lv_adim1 / 100000.
lv_adim3 = lv_adim2 + lt_ekbe-wrbtr.
lt_ekbe-wrbtr = lv_adim3.
lv_wrbtr_top = lv_wrbtr_top + lv_adim3 .
10.01.2013 17:24:17 Emrah Tolgay
CLEAR lt_ekpo.
READ TABLE lt_ekpo WITH KEY ebeln = lt_ekbe-ebeln
ebelp = lt_ekbe-ebelp.
IF lt_ekpo-meins NE komp-vrkme.
PERFORM convert_unit USING komp-matnr lt_ekpo-meins
komp-vrkme lt_ekbe-menge
CHANGING lt_ekbe-menge.
ENDIF.
INSERT 10.01.2013 17:24:17
lv_menge_top = lv_menge_top + lt_ekbe-menge.
MODIFY lt_ekbe.
ENDLOOP.
ENDIF.
ENDLOOP.
DESCRIBE TABLE lt_ekbe LINES satir.
"end------INSERT
IF lt_ekbe[] IS INITIAL .
xkomv-kbetr = '0' .
xkomv-kwert = '0' .
MODIFY xkomv .
ENDIF.
LOOP AT lt_ekpo.
CLEAR lt_ekbe.
READ TABLE lt_ekbe WITH KEY ebeln = lt_ekpo-ebeln
ebelp = lt_ekpo-ebelp.
SELECT SINGLE waers FROM ekko INTO lv_saswaers
WHERE ebeln EQ lt_ekpo-ebeln.
IF lt_ekbe-waers IS INITIAL .
lt_ekbe-waers = komk-waerk .
ENDIF.
IF lt_ekbe-bldat IS INITIAL .
lt_ekbe-bldat = komk-fkdat .
ENDIF.
IF komk-waerk NE lt_ekbe-waers AND xkomv-kschl EQ 'ZALF' .
CLEAR: lv_rate.
IF komk-kurst IS INITIAL.
SELECT SINGLE kurst FROM knvv INTO lv_rate
WHERE kunnr EQ komk-kunnr AND
vkorg EQ komk-vkorg AND
vtweg EQ komk-vtweg AND
spart EQ komk-spart.
IF lv_rate IS INITIAL .
lv_rate = 'M'.
ENDIF.
ENDIF.
IF satir > 1 .
LOOP AT lt_ekbe .
PERFORM convert_to_local USING lt_ekbe-bldat
lt_ekbe-wrbtr lt_ekbe-waers komk-waerk lv_rate
CHANGING lv_exc_rate lv_netpr_temp.
lv_netpr = lv_netpr + lv_netpr_temp.
ENDLOOP.
ELSE.
PERFORM convert_to_local USING lt_ekbe-bldat lv_wrbtr_top
lt_ekbe-waers komk-waerk lv_rate
CHANGING lv_exc_rate lv_netpr.
ENDIF.
xkomv-kbetr = 1000 * lv_netpr / lv_menge_top.
xkomv-kwert = ( komp-mgame * ( ( lv_netpr * 1000000 /
lv_menge_top ) ) ) / 1000000.
xkwert = ( komp-mgame * ( ( lv_netpr * 1000000 /
lv_menge_top ) ) ) / 1000000.
ELSEIF komk-waerk EQ lt_ekbe-waers AND xkomv-kschl EQ 'ZALF'.
xkomv-kbetr = 1000 * lv_wrbtr_top / lv_menge_top .
xkomv-kwert = ( komp-mgame * ( ( lv_wrbtr_top * 1000000 /
lv_menge_top ) ) ) / 1000000.
xkwert = ( komp-mgame * ( ( lv_wrbtr_top * 1000000 /
lv_menge_top ) ) ) / 1000000.
ENDIF.
IF komk-waerk NE lt_ekbe-waers AND xkomv-kschl EQ 'ZKRM' .
CLEAR: lv_rate.
IF komk-kurst IS INITIAL.
SELECT SINGLE kurst FROM knvv INTO lv_rate
WHERE kunnr EQ komk-kunnr AND
vkorg EQ komk-vkorg AND
vtweg EQ komk-vtweg AND
spart EQ komk-spart.
IF lv_rate IS INITIAL .
lv_rate = 'M'.
ENDIF.
ENDIF.
IF satir > 1 .
LOOP AT lt_ekbe .
PERFORM convert_to_local USING lt_ekbe-bldat
lt_ekbe-wrbtr lt_ekbe-waers komk-waerk lv_rate
CHANGING lv_exc_rate lv_netpr_temp.
lv_netpr = lv_netpr + lv_netpr_temp.
ENDLOOP.
ELSE.
PERFORM convert_to_local USING lt_ekbe-bldat lv_wrbtr_top
lt_ekbe-waers komk-waerk lv_rate
CHANGING lv_exc_rate_tmp lv_netpr.
ENDIF.
*
*
*
*
*
*
*
*
*
*
zkalf_kwert = laf_komv-kwert .
xkomv-kbetr = ( ( zkalf_kwert * 1000 / zykm )
* ( 100 + zkar_kbetr ) / 100 ) / 1000 .
xkomv-kwert = ( xkomv-kbetr * zykm ) / 1 .
xkwert = xkomv-kwert .
zkalf_kwert = laf_komv-kwert .
xkomv-kbetr = ( ( zkalf_kwert * 1000 / komp-mgame )
* ( 100 + zkar_kbetr ) / 100 ) ."/ 1000 .
xkomv-kwert = ( xkomv-kbetr * komp-mgame ) / 1000 .
xkwert = xkomv-kwert .
ENDIF.
*-BEG INSERT 04.10.2013 17:11:17 Emrah Tolgay
*
EKPO tablosunda bir kere dnmemiz yeterli.
EXIT.
*-END INSERT 04.10.2013 17:11:17
ENDLOOP.
ENDIF.
=
=
=
=
sy-repid.
sy-uname.
sy-datum.
sy-uzeit.
*&
Form LOG_EKLE
*&---------------------------------------------------------------------*
FORM log_ekle USING ip_msgid ip_msgty ip_msgno ip_msgv1 ip_msgv2
ip_msgv3 ip_msgv4 p_handle.
DATA ls_msg TYPE bal_s_msg.
PERFORM log_yarat USING p_handle.
CLEAR ls_msg.
ls_msg-msgid
ls_msg-msgty
ls_msg-msgno
ls_msg-msgv1
ls_msg-msgv2
ls_msg-msgv3
ls_msg-msgv4
=
=
=
=
=
=
=
ip_msgid.
ip_msgty.
ip_msgno.
ip_msgv1.
ip_msgv2.
ip_msgv3.
ip_msgv4.
"CONVERT_UNIT