使用ABAP指针来计算账龄

56 篇文章 0 订阅

    

DATA:

      LW_RESULT_PACKAGE  TYPE _ty_s_TG_1 .

     DATA :
      LV_FDNM01(12TYPE VALUE '/BIC/ZAMTDAY',
      LV_DAYS(5)    TYPE N,
      LV_FDNM99(20TYPE C.

    FIELD-SYMBOLS:
      <LFD> TYPE ANY.


*    BREAK-POINT.

*** 20160620 计提比例配置表
     DATA LT_ZIFID084  TYPE  STANDARD  TABLE  OF /BIC/AZIFID08400  WITH
     NON-UNIQUE  DEFAULT  KEY .
     SELECT INTO  TABLE LT_ZIFID084  FROM /BIC/AZIFID08400 .
     SORT LT_ZIFID084  BY /BIC/ZSYB /BIC/ZQDLX /BIC/ZSYBQDLX /BIC/ZCLASSM
    /BIC/ZDAYB /BIC/ZDAYE .

     LOOP  AT RESULT_PACKAGE  ASSIGNING <RESULT_FIELDS> .

      LV_DAYS CEIL<RESULT_FIELDS>-/BIC/ZZAVAGE / 30 ).
【如果为50天,计算结果为2】
       IF LV_DAYS  EQ  0 .

        LV_FDNM99+0 ( 12 LV_FDNM01 .
        LV_FDNM99+12 ( 2 '01' .

       ELSEIF LV_DAYS  GT  0 .

        IF <RESULT_FIELDS>-/BIC/ZZAVAGE GT 720

【如果大于720天,则为25】

          LV_FDNM99+0 ( 12 LV_FDNM01 .
          LV_FDNM99+12 ( 2 '25' .

         ELSE .

          LV_FDNM99+0 ( 12 LV_FDNM01 .
          LV_FDNM99+12 ( 2 LV_DAYS+3 ( 2 ) .
【LV_FDNM99】=ZAMTDAY02
         ENDIF .

       ENDIF .

       IF LV_FDNM99  IS  NOT  INITIAL .

        MOVE-CORRESPONDING <RESULT_FIELDS> TO LW_RESULT_PACKAGE.

将<RESULT_FIELDS>的结果赋值给内表。


         ASSIGN  COMPONENT LV_FDNM99  OF  STRUCTURE LW_RESULT_PACKAGE
                                              TO <LFD> .

将<LFD>指向内表的ZAMTDAY02


         IF <LFD>  IS  ASSIGNED .
          <LFD>  LW_RESULT_PACKAGE -/BIC/ZZJXJ_SUM .
         ENDIF .

<LFD> = 经销价合计, 同时内表中ZAMTDAY02 = <LFD>.


        MOVE-CORRESPONDING LW_RESULT_PACKAGE TO  <RESULT_FIELDS>.

将内表给到结果集


       ENDIF .

*     计算计提
      <RESULT_FIELDS> -/BIC/ZJTAMOUNT  <RESULT_FIELDS> -/BIC/ZZJXJ_SUM *
                                       <RESULT_FIELDS> -/BIC/ZRATE .

*     判断积压
       CALL  FUNCTION  'ZGETJYAMT'
         EXPORTING
          I_ZQDLX            <RESULT_FIELDS> -/BIC/ZQDLX
          I_DIVISION         <RESULT_FIELDS> -DIVISION
          I_ZZTGWLSX         <RESULT_FIELDS> -/BIC/ZZTGWLSX
          I_ZAMOUNT          <RESULT_FIELDS> -/BIC/ZZJXJ_SUM
          I_ZZAVAGE          <RESULT_FIELDS> -/BIC/ZZAVAGE
          I_ZSYB             <RESULT_FIELDS> -/BIC/ZSYB
          I_ZSYBQDLX         <RESULT_FIELDS> -/BIC/ZSYBQDLX
          I_ZCLASSM          <RESULT_FIELDS> -/BIC/ZCLASSM
         IMPORTING
          E_ZJYAMOUNT        <RESULT_FIELDS> -/BIC/ZJYAMOUNT
         TABLES
          ZIFID084        LT_ZIFID084 .

    ENDLOOP.





FUNCTION ZGETJYAMT.
*"----------------------------------------------------------------------
*"*"本地接口:
*"  IMPORTING
*"     VALUE(I_DIVISION) TYPE  /BI0/OIDIVISION
*"     VALUE(I_ZZAVAGE) TYPE  /BIC/OIZZAVAGE
*"     VALUE(I_ZQDLX) TYPE  /BIC/OIZQDLX
*"     VALUE(I_ZAMOUNT) TYPE  /BIC/OIZJYAMOUNT
*"     VALUE(I_ZZTGWLSX) TYPE  /BIC/OIZZTGWLSX OPTIONAL
*"     VALUE(I_ZSYB) TYPE  /BIC/OIZSYB OPTIONAL
*"     VALUE(I_ZSYBQDLX) TYPE  /BIC/OIZSYBQDLX OPTIONAL
*"     VALUE(I_ZCLASSM) TYPE  /BIC/OIZCLASSM OPTIONAL
*"  EXPORTING
*"     VALUE(E_ZJYAMOUNT) TYPE  /BIC/OIZJYAMOUNT
*"  TABLES
*"      ZIFID084 STRUCTURE  /BIC/AZIFID08400 OPTIONAL
*"----------------------------------------------------------------------
IF I_ZQDLX '1'."加盟
   IF I_ZZAVAGE > 270.  "以下品牌按270天算积压
    IF I_DIVISION '11' OR I_DIVISION '51' OR      "20160509 51-智能家俱同罗莱
      I_DIVISION '12' OR I_DIVISION '52' OR "20170118增加内野品牌
      I_DIVISION '15' OR
      I_DIVISION '16' OR
      I_DIVISION '17' OR
      I_DIVISION '19' OR
      I_DIVISION '20' OR I_DIVISION '43' OR
      I_DIVISION '27' OR
      I_DIVISION '28'.
        E_ZJYAMOUNT I_ZAMOUNT.
    ENDIF.
  ENDIF.

    IF I_ZZAVAGE > 360"以下品牌按360天算积压   高端
     IF I_DIVISION '13' OR I_DIVISION '14'  OR
        I_DIVISION '21' OR I_DIVISION '24' OR I_DIVISION '31' OR
        I_DIVISION '32' OR I_DIVISION '36' OR I_DIVISION '39' OR I_DIVISION '41' OR I_DIVISION '54' OR
        I_DIVISION '45' OR I_DIVISION '48' OR  I_DIVISION '49' OR I_DIVISION '25' .   "20150721 新增48品牌 "lz 添加41品牌20150814
          E_ZJYAMOUNT I_ZAMOUNT.
     ENDIF.
   ENDIF.
ELSEIF I_ZQDLX '2' OR I_ZQDLX '8'"直营 AND 软装 20160601
  IF I_ZZAVAGE > 180.
    IF I_DIVISION '11' OR I_DIVISION '51' OR      "20160509 51-智能家俱同罗莱
      I_DIVISION '12' OR  I_DIVISION '52' OR       "20170118增加内野品牌
      I_DIVISION '15' OR
      I_DIVISION '16' OR
      I_DIVISION '17' OR
      I_DIVISION '19' OR
      I_DIVISION '20' OR I_DIVISION '43' OR
      I_DIVISION '27' OR
      I_DIVISION '28'.
         E_ZJYAMOUNT I_ZAMOUNT.
     ENDIF.
  ENDIF.
  IF I_ZZAVAGE > 240.
    IF I_DIVISION '13' OR
      I_DIVISION '14' OR
      I_DIVISION '21' OR
      I_DIVISION '24' OR
      I_DIVISION '31' OR
      I_DIVISION '32' OR
      I_DIVISION '36' OR
      I_DIVISION '39' OR I_DIVISION '41'  OR I_DIVISION '54' OR   "高端
      I_DIVISION '45' OR
      I_DIVISION '49' OR I_DIVISION '48'  OR   "20150721 新增48品牌 "LZ添加41品牌 20150814
      I_DIVISION '25'.      " 25 36 品牌已经取消
         E_ZJYAMOUNT I_ZAMOUNT.
    ENDIF.
  ENDIF.
ELSEIF I_ZQDLX '3'"电商
  IF I_ZZAVAGE > 270.
     E_ZJYAMOUNT I_ZAMOUNT.
  ENDIF.
ELSEIF I_ZQDLX '4'.  "团购 14团购项目(团购物料属性是1、3、5、7)无论加盟仓还是直营仓
   IF I_ZZTGWLSX =  '01' OR
     I_ZZTGWLSX =  '03' OR
     I_ZZTGWLSX =  '05' OR
     I_ZZTGWLSX =  '07'.
     IF I_ZZAVAGE > 360.
          IF I_DIVISION '11'  OR I_DIVISION '51' OR      "20160509 51-智能家俱同罗莱
             I_DIVISION '12' OR   I_DIVISION '52' OR       "20170118增加内野品牌
             I_DIVISION '15' OR
             I_DIVISION '16' OR
             I_DIVISION '17' OR
             I_DIVISION '19' OR
             I_DIVISION '20' OR I_DIVISION '43' OR
             I_DIVISION '27' OR
             I_DIVISION '28' .
              E_ZJYAMOUNT I_ZAMOUNT.
          ENDIF.
     ENDIF.
    IF I_ZZAVAGE > 540.
          IF I_DIVISION '13' OR
             I_DIVISION '14' OR
             I_DIVISION '21' OR
             I_DIVISION '24' OR
             I_DIVISION '31' OR
             I_DIVISION '32' OR
             I_DIVISION '36' OR
             I_DIVISION '39' OR I_DIVISION '41' OR  I_DIVISION '54' OR  "高端
             I_DIVISION '45' OR I_DIVISION '48' OR    "20150721 新增48品牌 "lz 添加部门4120150814
             I_DIVISION '49' OR
             I_DIVISION '25'.
              E_ZJYAMOUNT I_ZAMOUNT.
          ENDIF.
     ENDIF.
    ELSEIF I_ZZTGWLSX =  '02' OR  "14团购订单,如果团购物料属性是2、4、8无论加盟仓还是直营仓
            I_ZZTGWLSX =  '04' OR
            I_ZZTGWLSX =  '08'.
      IF I_ZZAVAGE > 30.
          E_ZJYAMOUNT I_ZAMOUNT.
       ENDIF.
    ENDIF.
ENDIF.

*** 20160620 取配置表中积压金额
  DATALS_ZIFID084 TYPE /BIC/AZIFID08400.
  LOOP AT ZIFID084 INTO LS_ZIFID084 WHERE /BIC/ZSYB I_ZSYB AND /BIC/ZQDLX I_ZQDLX AND /BIC/ZSYBQDLX I_ZSYBQDLX AND /BIC/ZCLASSM I_ZCLASSM.
    IF I_ZZAVAGE > LS_ZIFID084-/BIC/ZDZTS.
        E_ZJYAMOUNT I_ZAMOUNT.
    ENDIF.
    EXIT.
  ENDLOOP.


ENDFUNCTION.


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值