*&---------------------------------------------------------------------*
*& 包括 ZXV50QU01
*&---------------------------------------------------------------------*
TABLES: lipov,lips,vbkd,konv,vbap,vbak,tvgrt,likp.
DATA: cs_postab
TYPE lipov.
DATA : l_tabix
LIKE sy-tabix,
gt_lips
TYPE
TABLE
OF lips,
gs_lips
TYPE lips,
gt_vbkd
TYPE
TABLE
OF vbkd,
gs_vbkd
TYPE vbkd,
gt_konv
TYPE
TABLE
OF konv,
gs_konv
TYPE konv,
gt_vbap
TYPE
TABLE
OF vbap ,
gs_vbap
TYPE vbap ,
gt_vbak
TYPE
TABLE
OF vbak ,
gs_vbak
TYPE vbak ,
gt_likp
TYPE
TABLE
OF likp,
gs_likp
TYPE likp,
id
LIKE sy-repid,
gt_tvgrt
TYPE
TABLE
OF tvgrt,
gs_tvgrt
TYPE tvgrt.
******
*DATA z(3) TYPE c.
*LOOP AT ct_postab.
* AT LAST.
* z = sy-tabix.
* MESSAGE z TYPE 'I'.
* MESSAGE IF_FLAG_INBOUND TYPE 'I'.
* MESSAGE IF_PROCTYPE TYPE 'I'.
* ENDAT.
*ENDLOOP.
*data z(5) type c.
*AUTHORITY-CHECK OBJECT 'ZSDOBJ01' ID 'ZVL06F' FIELD 'a'.
*z = sy-subrc.
*MESSAGE z TYPE 'I'.
CHECK sy-subrc =
0.
SELECT *
FROM lips
INTO CORRESPONDING
FIELDS
OF
TABLE gt_lips
FOR
ALL ENTRIES
IN ct_postab
WHERE vbeln = ct_postab-vbeln
and POSNR = ct_postab-POSNR.
SELECT *
FROM liKP
INTO CORRESPONDING
FIELDS
OF
TABLE gt_liKP
FOR
ALL ENTRIES
IN GT_lips
WHERE vbeln = gt_lips-vbeln.
SELECT *
FROM tvgrt
INTO CORRESPONDING
FIELDS
OF
TABLE gt_tvgrt
FOR
ALL ENTRIES
IN gt_lips
WHERE vkgrp = gt_lips-vkgrp.
SELECT *
FROM vbkd
INTO CORRESPONDING
FIELDS
OF
TABLE gt_vbkd
FOR
ALL ENTRIES
IN gt_lips
WHERE vbeln = gt_lips-vgbel .
SELECT *
FROM vbap
INTO CORRESPONDING
FIELDS
OF
TABLE gt_vbap
FOR
ALL ENTRIES
IN gt_lips
WHERE vbeln = gt_lips-vgbel
AND posnr = gt_lips-VGPOS.
LOOP
AT ct_postab
INTO cs_postab
where s_vgpos
NE
'0000'.
l_tabix = sy-tabix.
* CHECK cs_postab-s_vgpos NE '0000'.
READ
TABLE gt_lips
INTO gs_lips
WITH
KEY vbeln = cs_postab-vbeln POSNR = cs_postab-POSNR.
cs_postab-kdmat = gs_lips-kdmat.
READ
TABLE gt_likp
INTO gs_likp
WITH
KEY vbeln = gs_lips-vbeln .
cs_postab-ZWADAT = gs_likp-WADAT_IST.
READ
TABLE gt_tvgrt
INTO gs_tvgrt
WITH
KEY vkgrp = gs_lips-vkgrp.
cs_postab-zbezei = gs_tvgrt-bezei.
READ
TABLE gt_vbkd
INTO gs_vbkd
WITH
KEY vbeln = gs_lips-vgbel .
cs_postab-zbstkd = gs_vbkd-bstkd.
READ
TABLE gt_vbap
INTO gs_vbap
WITH
KEY vbeln = gs_lips-vgbel posnr = gs_lips-VGPOS.
cs_postab-zkwmeng = gs_vbap-kwmeng.
AUTHORITY-CHECK OBJECT
'ZSDOBJ01'
ID
'ZVL06F'
FIELD
'a'.
IF sy-subrc =
0.
SELECT
SINGLE *
FROM vbak
INTO gs_vbak
WHERE vbeln = gs_vbap-vbeln.
SELECT *
INTO
TABLE gt_konv
FROM konv
WHERE knumv = gs_vbak-knumv
AND kposn = gs_vbap-posnr.
IF sy-subrc =
0.
READ
TABLE gt_konv
INTO gs_konv
WITH
KEY kschl =
'PR00'.
IF sy-subrc =
0.
cs_postab-zpr00 = gs_konv-kbetr .
ENDIF.
* CLEAR gs_konv.
READ
TABLE gt_konv
INTO gs_konv
WITH
KEY kschl =
'PR01'.
IF sy-subrc =
0.
cs_postab-zpr01 = gs_konv-kbetr .
ENDIF.
ENDIF.
ENDIF.
cs_postab-zkzwi6 = gs_vbap-kzwi6.
IF gs_lips-gewei =
'G'.
cs_postab-ntgew = cs_postab-ntgew /
1000.
cs_postab-gewei =
'KG'.
ENDIF.
cs_postab-zkmein = gs_vbap-kmein.
cs_postab-zKURSK = gs_vbkd-kursk.
* cs_postab-vrkme = gs_lips-vrkme.
*
* IF cs_postab-zkmein = gs_lips-vrkme AND gs_lips-vgpos = gs_vbap-posnr .
** if gs_vbap-waerk = 'CNY'.
*
* cs_postab-zamount = ( cs_postab-zpr01 + cs_postab-zpr00 * 117 / 100 ) * cs_postab-lfimg / gs_vbap-KPEIN .
** ELSE.
** cs_postab-zamount = ( cs_postab-zpr01 + cs_postab-zpr00 * 117 / 100 ) * cs_postab-lfimg .
* ENDIF.
* ENDIF.
*
* if cs_postab-zkmein <> gs_lips-vrkme .
* cs_postab-zamount = ( cs_postab-zpr01 + cs_postab-zpr00 * 117 / 100 ) * cs_postab-ntgew / gs_vbap-KPEIN.
* endif.
IF cs_postab-zkmein = gs_lips-vrkme
AND gs_lips-vgpos = gs_vbap-posnr .
* if gs_vbap-waerk = 'CNY'.
cs_postab-ZDMBTR = ( cs_postab-zpr00 + cs_postab-zpr01 *
100 /
117 ) * cs_postab-lfimg * cs_postab-zKURSK / gs_vbap-KPEIN + cs_postab-zkzwi6 .
* ELSE.
* cs_postab-zamount = ( cs_postab-zpr01 + cs_postab-zpr00 * 117 / 100 ) * cs_postab-lfimg .
* ENDIF.
ENDIF.
if cs_postab-zkmein <> gs_lips-vrkme .
cs_postab-ZDMBTR = ( cs_postab-zpr01 + cs_postab-zpr00 *
117 /
100 ) * cs_postab-ntgew / gs_vbap-KPEIN * cs_postab-zKURSK + cs_postab-zkzwi6 .
endif.
* if gs_vbap-waerk <> 'CNY'.
* clear cs_postab-zamount .
* cs_postab-zweishui = cs_postab-zpr00 * cs_postab-lfimg / gs_vbap-KPEIN + cs_postab-zkzwi6.
*endif.
cs_postab-zwaerk = gs_vbap-waerk.
* cs_postab-zkwmeng = gs_vbap-kwmeng.
* cs_postab-vrkme = gs_lips-vrkme.
MODIFY ct_postab
INDEX l_tabix
FROM cs_postab
TRANSPORTING kdmat zbezei zbstkd zpr00 zpr01 zamount zwaerk zkmein zkwmeng ntgew gewei zkzwi6 ZWEISHUI zKURSK ZDMBTR ZWADAT.
CLEAR: gs_lips, gs_vbkd , gs_konv,gs_vbap,gs_vbak, cs_postab.
* ENDIF.
ENDLOOP.