zoukankan      html  css  js  c++  java
  • WMS函数组:11.交货单取金额

    FUNCTION ZRFC_WMS_GET_PRICE.
    *"----------------------------------------------------------------------
    *"*"本地接口:
    *"  IMPORTING
    *"     VALUE(PARAMS) TYPE  STRING OPTIONAL
    *"  TABLES
    *"      ITAB STRUCTURE  ZGET_PRICE OPTIONAL
    *"      ITH STRUCTURE  ZGET_PRICE_H OPTIONAL
    *"----------------------------------------------------------------------
    DATA: BEGIN OF IPARAM OCCURS 10,
              VBELN TYPE LIPS-VBELN,
    END OF IPARAM.
    SPLIT PARAMS AT ',' INTO TABLE IPARAM.
    *  DATA:
    *  BEGIN OF ITAB OCCURS 0,
    *    EBELN LIKE EKPO-EBELN,
    *    EBELP LIKE EKPO-EBELP,
    *    VBELN LIKE VBAP-VBELN,
    *    POSNR LIKE VBAP-POSNR,
    *    KNUMV LIKE VBAK-KNUMV,
    *    AUART LIKE VBAK-AUART,
    *    MPRICE LIKE VBAP-NETWR,
    *    VBELN2 LIKE LIPS-VBELN,
    *    POSNR2 LIKE LIPS-POSNR,
    *    JE LIKE VBAP-NETWR,
    *    LFIMG LIKE LIPS-LFIMG,
    *    VGBEL  LIKE LIPS-VGBEL,
    *    VGPOS LIKE LIPS-VGPOS,
    *  END OF ITAB.
    DATA:
        TMP_NETWR TYPE NETWR,
        TMP_KSCHL TYPE KSCHL,
        TMP_KPEIN TYPE KPEIN.
    DATA: TVBELN TYPE VBELN.
    *-----------CHA JWY_20170811
    SORT IPARAM.
    *-----------CHA JWY_20170811
    LOOP AT IPARAM.
    PERFORM F_ADD_ZERO  USING IPARAM-VBELN.
    MODIFY IPARAM.
    ENDLOOP.
    "==============change by damon at 20171207===================
    DATA: GT_LIPS TYPE STANDARD TABLE OF LIPS,
            GS_LIPS TYPE LIPS.
    SELECT
      MATNR
      VGBEL
      VGPOS
      VBELN
      POSNR
      LFIMG
      UECHA
    APPENDING CORRESPONDING FIELDS OF TABLE  GT_LIPS
    FROM LIPS AS P
    FOR ALL ENTRIES IN IPARAM
    WHERE VBELN = IPARAM-VBELN.
    SORT GT_LIPS.
    LOOP AT GT_LIPS INTO GS_LIPS.
        ITAB-MATNR = GS_LIPS-MATNR.
        ITAB-VGBEL = GS_LIPS-VGBEL.
        ITAB-VGPOS = GS_LIPS-VGPOS.
        ITAB-VBELN2 = GS_LIPS-VBELN.
    *      ITAB-POSNR2 = GS_LIPS-POSNR.
        ITAB-LFIMG = GS_LIPS-LFIMG.
    IF GS_LIPS-UECHA IS NOT INITIAL .
          ITAB-POSNR2 = GS_LIPS-UECHA.
    ELSE.
          ITAB-POSNR2 = GS_LIPS-POSNR.
    ENDIF.
    COLLECT ITAB.
    ENDLOOP.
    ****   取参考号
    *  SELECT
    *  MATNR
    *  VGBEL
    *  VGPOS
    *  VBELN AS VBELN2
    *  POSNR AS POSNR2
    *  LFIMG
    *  APPENDING CORRESPONDING FIELDS OF TABLE  ITAB
    *  FROM LIPS AS P
    *  FOR ALL ENTRIES IN IPARAM
    *  WHERE VBELN = IPARAM-VBELN.
    "==============end of change by damon at 20171207===================
    *-----------CHA JWY_20170811
    SORT ITAB.
    *-----------CHA JWY_20170811
    LOOP AT ITAB.
    IF ITAB-VGBEL+0(2) = '00'.
          ITAB-VBELN = ITAB-VGBEL.
          ITAB-POSNR = ITAB-VGPOS.
    SELECT SINGLE AUART KNUMV "KWMENG
    INTO (ITAB-AUART,ITAB-KNUMV)
    FROM VBAK
    *      JOIN VBAP ON VBAK~VBELN = VBAP~VBELN
    WHERE VBAK~VBELN = ITAB-VBELN.
    ELSE.
          ITAB-EBELN = ITAB-VGBEL.
          ITAB-EBELP = ITAB-VGPOS.
    SELECT SINGLE BSART KNUMV "MENGE
    INTO (ITAB-AUART,ITAB-KNUMV)
    FROM EKKO
    *      JOIN EKPO on EKKO~EBELN = EKPO~EBELN
    WHERE EKKO~EBELN = ITAB-EBELN.
    ENDIF.
    IF ITAB-AUART = 'UB'.
    SELECT   KBETR
                     KPEIN
                    KSCHL
    INTO (TMP_NETWR,
                   TMP_KPEIN,
                   TMP_KSCHL)
    FROM KONV
    WHERE KNUMV = ITAB-KNUMV AND
                   KPOSN = ITAB-EBELP.
    IF TMP_KSCHL = 'PI01'.
              ITAB-MPRICE = TMP_NETWR / TMP_KPEIN.
    ELSEIF TMP_KSCHL = 'ZPB2'.
              ITAB-MPRICE = TMP_NETWR / TMP_KPEIN.
    ELSE.
              ITAB-MPRICE = TMP_NETWR / TMP_KPEIN.
    ENDIF.
            ITAB-MPRICE2 = ITAB-MPRICE.
    ENDSELECT.
    ELSE.
    CLEAR :TMP_NETWR,    TMP_KPEIN,  TMP_KSCHL.
    DATA: TAX_RATE LIKE TMP_NETWR.
    DATA: TAX_KBERT LIKE TMP_NETWR.
    SELECT SINGLE
          KAWRT
          KBETR
    INTO (TMP_NETWR,
    *                   TMP_KPEIN,
                 TAX_KBERT)
    FROM KONV
    WHERE KNUMV = ITAB-KNUMV AND
                 KPOSN = ITAB-POSNR
    AND KSCHL =  'MWST'.
    IF SY-SUBRC = 0.
            TAX_RATE = ( 1000 + TAX_KBERT ) / 1000.
    IF TAX_KBERT > 0.
              ITAB-MPRICE2 = TMP_NETWR  * TAX_RATE   .
    ENDIF.
    ENDIF.
    SELECT  KWERT
                    KSCHL
    INTO (TMP_NETWR,
    *                   TMP_KPEIN,
                       TMP_KSCHL)
    FROM KONV
    WHERE KNUMV = ITAB-KNUMV AND
                       KPOSN = ITAB-POSNR
    AND KSCHL IN ('ZPR2','ZPR0') .
    *        IF TMP_KSCHL = 'MWST'.
    *
    *        ENDIF.
    IF TMP_KSCHL = 'ZPR2'.
              ITAB-MPRICE = TMP_NETWR * TAX_RATE  .
    ENDIF.
    IF TMP_KSCHL = 'ZPR0' AND  ITAB-MPRICE IS INITIAL.
              ITAB-MPRICE = TMP_NETWR * TAX_RATE  .
    ENDIF.
    ENDSELECT.
    IF ITAB-MPRICE IS INITIAL.
            ITAB-MPRICE = ITAB-MPRICE2.
    ENDIF.
    IF ITAB-MPRICE2 IS INITIAL.
            ITAB-MPRICE2 = ITAB-MPRICE.
    ENDIF.
    ENDIF.
    *    IF ITAB-AUART = 'ZOR' OR ITAB-AUART = 'ZPRD'.   "折前单价
    *      SELECT SINGLE  KBETR
    *                     KPEIN
    *             INTO (TMP_NETWR,
    *                   TMP_KPEIN)
    *             FROM KONV
    *             WHERE KNUMV = ITAB-KNUMV AND
    *                   KPOSN = ITAB-POSNR AND
    *                   KSCHL = 'ZPR0'.
    *      ITAB-MPRICE = TMP_NETWR * '1.17' / TMP_KPEIN.
    *      ITAB-MPRICE = TMP_NETWR * '1.17' / TMP_KPEIN.
    *
    *    ELSEIF ITAB-AUART = 'ZOR1'.
    *      SELECT SINGLE  KBETR
    *               KPEIN
    *       INTO (TMP_NETWR,
    *             TMP_KPEIN)
    *       FROM KONV
    *       WHERE KNUMV = ITAB-KNUMV AND
    *             KPOSN = ITAB-POSNR AND
    *             KSCHL = 'ZPR2'.
    *      ITAB-MPRICE = TMP_NETWR * '1.17' / TMP_KPEIN.
    *    ELSEIF ITAB-AUART = 'UB'.
    *          SELECT SINGLE  KBETR
    *                     KPEIN
    *             INTO (TMP_NETWR,
    *                   TMP_KPEIN)
    *             FROM KONV
    *             WHERE KNUMV = ITAB-KNUMV AND
    *                   KPOSN = ITAB-EBELP AND
    *                   KSCHL = 'P101'.
    *      ITAB-MPRICE = TMP_NETWR / TMP_KPEIN.
    *
    *    ELSE.
    *
    *
    *      "折前单价
    *      SELECT SINGLE  KBETR
    *                     KPEIN
    *             INTO (TMP_NETWR,
    *                   TMP_KPEIN)
    *             FROM KONV
    *             WHERE KNUMV = ITAB-KNUMV AND
    *                   KPOSN = ITAB-EBELP AND
    *                   KSCHL = 'ZPB2'.
    *      ITAB-MPRICE = TMP_NETWR / TMP_KPEIN.
    *    ENDIF.
    IF ITAB-AUART = 'UB'.
          ITAB-JE = ITAB-MPRICE * ITAB-LFIMG .
          ITAB-JE2 = ITAB-MPRICE2 * ITAB-LFIMG .
    ELSE.
    SELECT  KWMENG INTO ITAB-KWMENG FROM VBAP
    WHERE VBELN = ITAB-VBELN AND POSNR = ITAB-POSNR .
            ITAB-JE = ITAB-MPRICE * ITAB-LFIMG / ITAB-KWMENG .
            ITAB-JE2 = ITAB-MPRICE2 * ITAB-LFIMG / ITAB-KWMENG.
    ENDSELECT.
    ENDIF.
    MODIFY ITAB.
        ITH-VBELN  = ITAB-VBELN2.
        ITH-JE = ITAB-JE.
        ITH-JE2 = ITAB-JE2.
    COLLECT ITH.
    ENDLOOP.
    DATA:
      IL_TLINE TYPE ZTEXT_LINE OCCURS 0 WITH HEADER LINE.
    CALL FUNCTION 'ZRFC_WMS_READTEXT'
    EXPORTING
          PARAMS  = PARAMS
    TABLES
          IT_LINE = IL_TLINE.
    *-----------CHA JWY_20170811
    SORT ITH.
    *-----------CHA JWY_20170811
    LOOP AT ITH.
    PERFORM F_CUT_ZERO  USING   ITH-VBELN.
    READ  TABLE IL_TLINE WITH KEY TNO_LINE =  ITH-VBELN.
    IF SY-SUBRC = 0.
          ITH-TDLINE =  IL_TLINE-TDLINE.
    MODIFY ITH.
    ENDIF.
    ENDLOOP.
    ENDFUNCTION.


    image

    image

  • 相关阅读:
    springboot启动后执行某些动作
    Virtualbox的nat网络
    xshell6
    day01 K8S
    Nginx的日志文件切割
    virtualbox磁盘空间大小调整
    装修柜子木台面
    mybatis 批量in 多个字段写法
    jenkins shell常用配置
    activiti工作流引擎数据库表结构
  • 原文地址:https://www.cnblogs.com/twttafku/p/14327433.html
Copyright © 2011-2022 走看看