取客单数及其他

56 篇文章 0 订阅

Start routine

====================


CHECK SOURCE_PACKAGE IS NOT INITIAL.

DELETE SOURCE_PACKAGE WHERE /BIC/ZP0SSTUS NE '01'.      "删除单据类型=00
CLEAR L_DAY. CLEAR L_LASTDAY.
LOOP AT SOURCE_PACKAGE ASSIGNING <SOURCE_FIELDS>.     "取营业日期区间
  IF L_DAY IS INITIAL.
    L_DAY = <SOURCE_FIELDS>-/BIC/ZBUSDE.
    L_LASTDAY = <SOURCE_FIELDS>-/BIC/ZBUSDE.
  ENDIF.
  IF L_DAY > <SOURCE_FIELDS>-/BIC/ZBUSDE.
    L_DAY = <SOURCE_FIELDS>-/BIC/ZBUSDE.
  ENDIF.
  IF L_LASTDAY < <SOURCE_FIELDS>-/BIC/ZBUSDE.
    L_LASTDAY = <SOURCE_FIELDS>-/BIC/ZBUSDE.
  ENDIF.
ENDLOOP.
DELETE from /BIC/AZCELT02800 WHERE CALDAY >= L_DAY    "删除目标数据
  AND CALDAY <= L_LASTDAY.


DATA: L_FIRSTDAY TYPE D.
CONCATENATE L_DAY+0(6) '01' INTO L_FIRSTDAY.          "月第一天
DATA: LT_RECORD1 TYPE STANDARD TABLE OF S_RECORD WITH NON-UNIQUE DEFAULT
      KEY.
SELECT * APPENDING CORRESPONDING FIELDS OF TABLE LT_RECORD1
  FROM /BIC/AZCELT00200
  WHERE /BIC/ZSTORE NE '' AND /BIC/Z_SFTG = 'N' AND MATL_TYPE NE 'A100'
    AND /BIC/ZBUSDE < L_DAY AND /BIC/ZBUSDE >= L_FIRSTDAY.
LOOP AT LT_RECORD1 INTO LS_RECORD.          "取source到月初的记录
  COLLECT LS_RECORD INTO LT_RECORD.
ENDLOOP.


DATA: L_MON_END TYPE D.
CALL FUNCTION 'ZBKK_GET_MONTH_LASTDAY'
  EXPORTING I_DATE = L_LASTDAY
  IMPORTING E_DATE = L_MON_END.
SELECT * INTO CORRESPONDING FIELDS OF TABLE LT_RJH FROM /BIC/AZIELT04900
  WHERE CALDAY >= L_FIRSTDAY AND CALDAY <= L_MON_END.
LOOP AT LT_RJH INTO LS_RJH.
  CLEAR LS_RJH-CALDAY.
  COLLECT LS_RJH INTO LT_RJH1.
ENDLOOP.
SORT LT_RJH BY CALDAY /BIC/ZSTORE. SORT LT_RJH1 BY CALMONTH /BIC/ZSTORE."取日计划金额和月计划金额


DATA: L_MATL_TYPE TYPE /BI0/OIMATL_TYPE.
DATA: LS_SOURCE TYPE _ty_s_SC_1.
DATA: L_TABIX TYPE SY-TABIX.
LOOP AT SOURCE_PACKAGE INTO LS_SOURCE.
"排除道具类物料(MATL_TYPE = 'A100');其他源数据按POS单号汇总
  L_TABIX = SY-TABIX.
  CLEAR L_MATL_TYPE.
  SELECT SINGLE MATL_TYPE INTO L_MATL_TYPE FROM /BIC/PZMATERIAL
    WHERE /BIC/ZMATERIAL = LS_SOURCE-/BIC/ZMATERIAL
    AND OBJVERS = 'A'.
  IF L_MATL_TYPE = 'A100'.
    DELETE SOURCE_PACKAGE INDEX L_TABIX.
  ELSE.
    MOVE-CORRESPONDING LS_SOURCE TO LS_RECORD.
    COLLECT LS_RECORD INTO LT_RECORD.
  ENDIF.
ENDLOOP.
==================


“ZDTLFTAMT实收金额 ZDTLqty 零售数量
”ZRTRLAMT 终端零售总额; ZRTRLAMT 南通成本价总额
“ZJXJYAMT积压金额(经销价)
==================
LOOP AT LT_RECORD INTO LS_RECORD.       "排除数量为0的POS单号;
  L_TABIX = SY-TABIX.
  IF LS_RECORD-/BIC/ZDTLQTY = 0.
*    DELETE LT_RECORD INDEX L_TABIX.
    LS_RECORD-/BIC/ZNTJAMT = LS_RECORD-/BIC/ZNTJAMT * 117 / 100."因实收集积
  ELSEIF LS_RECORD-/BIC/ZDTLQTY > 0.         "正常销售客单数计1
    LS_RECORD-COUNT = 1.
    LS_RECORD-/BIC/ZNTJAMT = LS_RECORD-/BIC/ZNTJAMT * 117 / 100.
  ELSE.                             "退货:客单数计-1
    LS_RECORD-COUNT = -1.
    LS_RECORD-/BIC/ZNTJAMT = LS_RECORD-/BIC/ZNTJAMT * 117 / 100.
  ENDIF.
  MODIFY LT_RECORD FROM LS_RECORD.
ENDLOOP.
SORT LT_RECORD BY /BIC/ZSTORE /BIC/ZBUSDE /BIC/ZPOSSANO.
======================
”以上求客单数
==========


*** 20150922 生成试错店数据,哪怕当日没有销售
DATA: LT_SCD TYPE STANDARD TABLE OF /BIC/AZCSTORE00 WITH NON-UNIQUE
DEFAULT KEY.
DATA: LS_SCD TYPE /BIC/AZCSTORE00.
SELECT * INTO TABLE LT_SCD
  FROM /BIC/AZCSTORE00  [DSO ZCSTORE ]
  WHERE /BIC/ZDPBZ = '1' AND /BIC/ZSYB NE ''.
DATA: I TYPE I. I = L_LASTDAY - L_DAY.
WHILE I >= 0.
  LOOP AT LT_SCD INTO LS_SCD.
    CLEAR LS_SOURCE.
    MOVE-CORRESPONDING LS_SCD TO LS_SOURCE.
    LS_SOURCE-/BIC/ZBUSDE = L_LASTDAY - I.
    LS_SOURCE-/BIC/ZBRAND = LS_SCD-DIVISION.
    SELECT SINGLE /BIC/ZSTORE_JH INTO LS_SOURCE-/BIC/ZSTORE_JH FROM
    /BIC/AZSTOREJH00 WHERE /BIC/ZSTORE = LS_SOURCE-/BIC/ZSTORE. [集合店]
    APPEND LS_SOURCE TO SOURCE_PACKAGE.
  ENDLOOP.
  I = I - 1.
ENDWHILE.

*** 20150922 生成试错店数据,哪怕当日没有销售 end

++++++++++++++++++++++++++++++

END ROUTINE

++++++++++++++++++++++++++++++


CHECK RESULT_PACKAGE IS NOT INITIAL.


REFRESH: LT_STORE,LT_DIVISION.
SELECT /BIC/ZSTORE  /BIC/ZPROVINCE /BIC/ZDPBZ 【试错店标志】
  INTO TABLE LT_STORE
  from /BIC/AZCSTORE00
  FOR ALL ENTRIES IN RESULT_PACKAGE
  WHERE /BIC/ZSTORE = RESULT_PACKAGE-/BIC/ZSTORE.
SORT LT_STORE BY /BIC/ZSTORE.
DELETE ADJACENT DUPLICATES FROM LT_STORE COMPARING /BIC/ZSTORE.


SELECT DIVISION  TXTSH
  INTO TABLE LT_DIVISION
  from /BI0/TDIVISION
  FOR ALL ENTRIES IN RESULT_PACKAGE
  WHERE DIVISION = RESULT_PACKAGE-/BIC/ZBRAND.
SORT LT_DIVISION BY DIVISION.
DELETE ADJACENT DUPLICATES FROM LT_DIVISION COMPARING DIVISION.


LOOP AT RESULT_PACKAGE ASSIGNING <RESULT_FIELDS>.
  CLEAR: LS_STORE, LS_DIVISION.  "取门店省份
  READ TABLE LT_STORE INTO LS_STORE WITH KEY /BIC/ZSTORE =
  <RESULT_FIELDS>-/BIC/ZSTORE BINARY SEARCH.
  IF SY-SUBRC = 0.
    <RESULT_FIELDS>-/BIC/ZPROVINCE = LS_STORE-/BIC/ZPROVINCE.
    <RESULT_FIELDS>-/BIC/ZDPBZ = LS_STORE-/BIC/ZDPBZ.
  ENDIF.    "取品牌名称
  READ TABLE LT_DIVISION INTO LS_DIVISION WITH KEY DIVISION =
  <RESULT_FIELDS>-/BIC/ZBRAND BINARY SEARCH.
  IF SY-SUBRC = 0.
    <RESULT_FIELDS>-/BIC/ZKBRD_NM = LS_DIVISION-TXTSH.
  ENDIF.
ENDLOOP.
==========================================================================
DATA: L_COUNT TYPE I.           DATA: L_ZDTLFTAMT TYPE /BIC/OIZDTLFTAMT.
DATA: L_ZDTLQTY TYPE /BIC/OIZDTLQTY.DATA: L_ZNTJAMT TYPE /BIC/OIZNTJAMT.
DATA: L_ZYLJJE TYPE /BIC/OIZYLJJE.【月累计金额】
DATA: L_ZRTRLAMT TYPE /BIC/OIZRTRLAMT.【终端零售总额(即按终端零售单价计算得的总金额)】
DATA: L_ZZJXJ_AMT TYPE /BIC/OIZZJXJ_AMT. 【ZZJXJ_AMT】
LOOP AT RESULT_PACKAGE ASSIGNING <RESULT_FIELDS>.
  CLEAR L_COUNT. CLEAR L_ZNTJAMT. CLEAR L_ZZJXJ_AMT.
  CLEAR L_ZDTLQTY. CLEAR L_ZDTLFTAMT. CLEAR L_ZRTRLAMT. CLEAR L_ZYLJJE.
  LOOP AT LT_RECORD INTO LS_RECORD WHERE /BIC/ZSTORE =
  <RESULT_FIELDS>-/BIC/ZSTORE.
    IF  LS_RECORD-/BIC/ZBUSDE = <RESULT_FIELDS>-CALDAY.
      L_COUNT = L_COUNT + LS_RECORD-COUNT.          "本日本店客单数
      L_ZNTJAMT = L_ZNTJAMT + LS_RECORD-/BIC/ZNTJAMT.
      L_ZDTLQTY = L_ZDTLQTY + LS_RECORD-/BIC/ZDTLQTY.
      L_ZDTLFTAMT = L_ZDTLFTAMT + LS_RECORD-/BIC/ZDTLFTAMT.
      L_ZRTRLAMT = L_ZRTRLAMT + LS_RECORD-/BIC/ZRTRLAMT.
      L_ZZJXJ_AMT = L_ZZJXJ_AMT + LS_RECORD-/BIC/ZZJXJ_AMT.
    ENDIF.
    IF  LS_RECORD-/BIC/ZBUSDE+0(6) = <RESULT_FIELDS>-CALDAY+0(6)
      AND LS_RECORD-/BIC/ZBUSDE <= <RESULT_FIELDS>-CALDAY.
      L_ZYLJJE = L_ZYLJJE + LS_RECORD-/BIC/ZDTLFTAMT.   "月累计金额
    ENDIF.
  ENDLOOP.
  <RESULT_FIELDS>-/BIC/ZKDS = L_COUNT. 【客单数】
  <RESULT_FIELDS>-/BIC/ZYLJJE = L_ZYLJJE.【月累计金额】
  IF L_COUNT NE 0.
    <RESULT_FIELDS>-/BIC/ZKDJ = L_ZDTLFTAMT / L_COUNT. 【客单价】
    <RESULT_FIELDS>-/BIC/ZLDL = L_ZDTLQTY / L_COUNT .   【连带率】=零售数量/客单数
    CALL FUNCTION 'ROUND'     "四舍五入
      EXPORTING
        DECIMALS = 0
        INPUT = <RESULT_FIELDS>-/BIC/ZLDL
      IMPORTING OUTPUT = <RESULT_FIELDS>-/BIC/ZLDL.
  ENDIF.
  IF L_ZRTRLAMT NE 0.
   <RESULT_FIELDS>-/BIC/ZZK = L_ZDTLFTAMT / L_ZRTRLAMT. 【折扣】=实收金额/终端零售金额
  ENDIF.
  IF L_ZDTLFTAMT NE 0 .
    <RESULT_FIELDS>-/BIC/ZMLL = ( L_ZDTLFTAMT - L_ZNTJAMT ) /
      L_ZDTLFTAMT.【毛利率】
    <RESULT_FIELDS>-/BIC/ZJXJMLL = ( L_ZDTLFTAMT - L_ZZJXJ_AMT ) /
      L_ZDTLFTAMT. 【经销价毛利率】
  ENDIF.
  IF L_ZZJXJ_AMT NE 0 .


  ENDIF.
  <RESULT_FIELDS>-/BIC/ZNTJAMT = L_ZNTJAMT.
  <RESULT_FIELDS>-/BIC/ZML = L_ZDTLFTAMT - L_ZNTJAMT. 【毛利】


  READ TABLE LT_RJH INTO LS_RJH             "取日计划金额
    WITH KEY CALDAY = <RESULT_FIELDS>-CALDAY
            /BIC/ZSTORE = <RESULT_FIELDS>-/BIC/ZSTORE BINARY SEARCH.
  IF SY-SUBRC = 0 AND LS_RJH-/BIC/ZJHJE NE 0.
    <RESULT_FIELDS>-/BIC/ZJHJE = LS_RJH-/BIC/ZJHJE. 【计划金额】
    <RESULT_FIELDS>-/BIC/ZRDCL = <RESULT_FIELDS>-/BIC/ZDTLFTAMT /
    LS_RJH-/BIC/ZJHJE. 【日达成率】
  ENDIF.
  READ TABLE LT_RJH1 INTO LS_RJH            "取月计划金额
    WITH KEY CALMONTH = <RESULT_FIELDS>-CALDAY+0(6)
            /BIC/ZSTORE = <RESULT_FIELDS>-/BIC/ZSTORE BINARY SEARCH.
  IF SY-SUBRC = 0 AND LS_RJH-/BIC/ZJHJE NE 0.
    <RESULT_FIELDS>-/BIC/ZYJHJE = LS_RJH-/BIC/ZJHJE.
    <RESULT_FIELDS>-/BIC/ZYDCJD = <RESULT_FIELDS>-/BIC/ZYLJJE /
    LS_RJH-/BIC/ZJHJE.【月达成进度】
  ENDIF.


  "事业部描述
  SELECT SINGLE TXTSH INTO <RESULT_FIELDS>-/BIC/ZSYBMS FROM /BIC/TZSYB
    WHERE /BIC/ZSYB = <RESULT_FIELDS>-/BIC/ZSYB AND LANGU = '1'.


   if <RESULT_FIELDS>-/BIC/ZSTORE_JH is not INITIAL.
     "集合店事业部
       select single /BIC/ZSYBJH into <RESULT_FIELDS>-/BIC/ZSYBJH from
       /BIC/PZSTORE_JH where /BIC/ZSTORE_JH =
       <RESULT_FIELDS>-/BIC/ZSTORE_JH.
      "取集合店名称
       select single txtlg into <RESULT_FIELDS>-/BIC/ZST_JHMS from
       /BIC/TZSTORE_JH
         where /BIC/ZSTORE_JH = <RESULT_FIELDS>-/BIC/ZSTORE_JH AND LANGU
         = '1'.
      "集合店事业部描述
      SELECT SINGLE TXTSH INTO <RESULT_FIELDS>-/BIC/ZSYBJHMS FROM
      /BIC/TZSYB
        WHERE /BIC/ZSYB = <RESULT_FIELDS>-/BIC/ZSYBJH AND LANGU = '1'.
    endif.
ENDLOOP.


" 删除月累计为0
DELETE RESULT_PACKAGE WHERE /BIC/ZYLJJE = 0 AND /BIC/ZYJHJE = 0 AND
/BIC/ZDTLFTAMT = 0 AND /BIC/ZDTLQTY = 0.
*$*$ end of routine - insert your code only before this line         *-*
  ENDMETHOD.                    "end



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值