SD VL06F增强 user-exit V50Q0001

58 篇文章 0 订阅
*&---------------------------------------------------------------------*
*&  包括                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.
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值