使用ABAP指针来计算账龄

来源:互联网 发布:vr开发用什么编程语言 编辑:程序博客网 时间:2024/05/17 07:44

    

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 计提比例配置表
    DATALT_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(12LV_FDNM01.
        LV_FDNM99+12(2'01'.

      ELSEIF LV_DAYS GT 0.

        IF <RESULT_FIELDS>-/BIC/ZZAVAGE GT 720

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

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

        ELSE.

          LV_FDNM99+0(12LV_FDNM01.
          LV_FDNM99+12(2LV_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 0
原创粉丝点击