二维码

订单满足率分析报表

Twilight发表于 2014-04-29 11:49Twilight 最后回复于 2014-04-29 11:49 [复制链接] 7826 0

一、需求描述:
新建事物代码、程序提供订单汇总报表
①界面
查询条件:
大区代码
区间值,加搜索帮助 BZIRK
事业部
区间值,加搜索帮助
产品层次
区间值,加搜索帮助  
采购订单凭证日期
区间值,加搜索帮助
交货日期
区间值,加搜索帮助
汇总纬度:单选

事业部

事业部+产品层次

大区

大区+事业部

畅销纬度: 单选

总部级别

DC级别

②处理逻辑
根据输入的大区代码BZIRK到表T001W里可获取对应的地点WERKS;品类编码(产品层次前5位)、产品层次编码到表mara可获取商品编码MATNR   
EKKO采购凭证抬头 EKPO采购凭证项目EKET计划协议计划行
凭证日期=EKKO-BEDAT;商品编码=EKPO-MATNR ;地点=EKPO-WERKS;交货日期=EKET-EINDT;EKPO-LOEKZ(采购凭证删除标识)等于空(未删除),EKPO-RETPO(退货项目)等于空(正向订单),EKET-EINDT不等于EKKO-BEDAT(交货日期不等于凭证日期),EKKO-FRGKE(批准标识:采购凭证)=2(审核完成);EKKO-BSART(采购凭证类型)=NB、ZNB1、ZNB2(常规、特价、包销)EKPO-ZZSERVG(标识:代销商品)等于空(经销订单)
当输入条件为空时,表示不限值,全部查询
根据以上逻辑能够确认出查询范围内的所有采购凭证号EBELN+行项目号

按照以下字段取值逻辑以汇总纬度汇总对应订单数据
  字段名称
取值逻辑
处理订单数据范围
汇总纬度+各自名称
采购商品金额
订单金额
  
为获取的所有订单数据
  
收货商品金额
EKBE-dmbtr*(1+rates)
收货凭证金额*(1+税率)
  
仍需交货金额
  
EKPO-KZWI1/EKPO-MENGE*(EKPO-MENGE-EKET-WEMNG)
订单金额/订单数量*(订单数量-已交货数量)
订单满足率
收货商品金额/采购商品金额
总部畅销品采购金额EKPO-KZWI1 订单金额  
为商品为畅销的订单数据,仅当畅销纬度选总部级别时展示
  
总部畅销品订单占比
总部畅销品采购金额/采购商品金额
总部畅销品收货金额rece_goods_zb
EKBE-dmbtr*(1+rates)
收货凭证金额*(1+税率)
总部畅销品收货占比sales_re_zb
总部畅销品收货金额/收货商品金额
DC畅销品采购金额
EKPO-KZWI1   
订单金额
  
为商品、地点为DC畅销的订单数据,仅当畅销纬度选DC级别时展示
  
DC畅销品订单占比
总部畅销品采购金额/采购商品金额
DC畅销品收货金额
EKBE-dmbtr*(1+rates)
收货凭证金额*(1+税率)
DC畅销品收货占比
总部畅销品收货金额/收货商品金额

畅销品取值:如果畅销纬度选取的是总部KAPPL =M,KSCHL条件类型='ZXSL'  商品=订单的商品编码  有效期包括当前,到表a655取出对应的条件记录号,根据条件记录号到表konp取未删除的值LOEVM_KO,如果值为11,该订单行项目数据为总部畅销


如果畅销纬度选取的是DC,条件类型='ZXSL' 商品=订单的商品编码 地点=订单地点 有效期包括当前(如果订单地点不是D库,需要到表zput072,根据订单地点= zput072- WERKS,取出地点对应的D库),到表a729取出对应的条件记录号,根据条件记录号到表konp取未删除的值,如果有值为11,该订单行项目数据为DC畅销

税率取值:如果国家为非CN,根据国家,到MEK3的条件类型MWST中,找到对应的税,否则为0.17


二、选择屏幕及执行效果:
订单满足率分析报表选择屏幕.png

订单满足率分析报表.png
三、程序代码:
  1. REPORT zdqpu_136 MESSAGE-ID 00.

  2. *&---------------------------------------------------------------------*
  3. *& INCLUDE
  4. *&---------------------------------------------------------------------*
  5. INCLUDE zdqpu_136_top.                "Type/Data
  6. INCLUDE zdqpu_136_selscr.        "Selection screen
  7. INCLUDE zdqpu_136_form.                "Form

  8. *&---------------------------------------------------------------------*
  9. *& 初始化处理
  10. *&---------------------------------------------------------------------*
  11. INITIALIZATION.

  12. *&---------------------------------------------------------------------*
  13. *& 选择屏幕控制
  14. *&---------------------------------------------------------------------*
  15. AT SELECTION-SCREEN OUTPUT.

  16. *&---------------------------------------------------------------------*
  17. *& 参数输入检查
  18. *&---------------------------------------------------------------------*
  19. AT SELECTION-SCREEN.
  20.   PERFORM f_authority_check.
  21.   PERFORM f_screen_check.

  22. *&---------------------------------------------------------------------*
  23. *& 选择屏幕的F4帮助
  24. *&---------------------------------------------------------------------*
  25. AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_stufe1-low.
  26.   PERFORM f_stufe_f4 USING s_stufe1-low '1'.

  27. AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_stufe1-high.
  28.   PERFORM f_stufe_f4 USING s_stufe1-high '1'.

  29. AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_stufe2-low.
  30.   PERFORM f_stufe_f4 USING s_stufe2-low '2'.

  31. AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_stufe2-high.
  32.   PERFORM f_stufe_f4 USING s_stufe2-high '2'.

  33. *&---------------------------------------------------------------------*
  34. *& 程序开始处理
  35. *&---------------------------------------------------------------------*
  36. START-OF-SELECTION.
  37.   PERFORM f_get_data. "取数逻辑
  38.   PERFORM f_process_data.
  39.   PERFORM f_ALV_display.

  40. *&---------------------------------------------------------------------*
  41. *& 程序结束处理
  42. *&---------------------------------------------------------------------*
  43. END-OF-SELECTION.
  44. *  PERFORM xxxxxxx.
复制代码
INCLUDE zdqpu_136_top.                "Type/Data
  1. *&---------------------------------------------------------------------*
  2. *&  包括              ZDQPU_136_TOP
  3. *&---------------------------------------------------------------------*
  4. TABLES:t171t,t179,ekko,eket.
  5. RANGES r_bsart FOR ekko-bsart.
  6. r_bsart-sign   = 'I'.
  7. r_bsart-option = 'EQ'.
  8. r_bsart-low    = 'NB'.
  9. APPEND r_bsart.
  10. r_bsart-sign   = 'I'.
  11. r_bsart-option = 'EQ'.
  12. r_bsart-low    = 'ZNB1'.
  13. APPEND r_bsart.
  14. r_bsart-sign   = 'I'.
  15. r_bsart-option = 'EQ'.
  16. r_bsart-low    = 'ZNB2'.
  17. APPEND r_bsart.

  18. RANGES r_frgke FOR ekko-frgke.
  19. r_frgke-sign   = 'I'.
  20. r_frgke-option = 'EQ'.
  21. r_frgke-low    = '2'.
  22. APPEND r_frgke.
  23. r_frgke-sign   = 'I'.
  24. r_frgke-option = 'EQ'.
  25. r_frgke-low    = ' '.
  26. APPEND r_frgke.

  27. *-->为获取 采购凭证号+行项目号 定义的结构
  28. TYPES : BEGIN OF ty_t179,
  29.          prodh   TYPE t179-prodh,
  30.        END OF ty_t179.
  31. TYPES : BEGIN OF ty_t001w,
  32.          werks   TYPE t001w-werks,
  33.          bzirk   TYPE t001w-bzirk,
  34.        END OF ty_t001w.
  35. TYPES : BEGIN OF ty_t001w_land1,
  36.          werks   TYPE t001w-werks,
  37.          land1   TYPE t001w-land1,
  38.        END OF ty_t001w_land1.
  39. TYPES : BEGIN OF ty_mara,
  40.          matnr   TYPE mara-matnr,
  41.          prdha   TYPE mara-prdha,
  42.         END OF ty_mara.
  43. TYPES : BEGIN OF ty_ekko_ekpo,
  44.          ebeln   TYPE ekko-ebeln,
  45.          ebelp   TYPE ekpo-ebelp,
  46.          matnr   TYPE ekpo-matnr,
  47.          bedat   TYPE ekko-bedat,
  48.          kzwi1   TYPE ekpo-kzwi1,"订单金额
  49.          menge   TYPE ekpo-menge,"订单数量
  50.          werks   TYPE ekpo-werks,"地点
  51.          bukrs   TYPE ekpo-bukrs,"公司代码
  52.          elikz   TYPE ekpo-elikz,"交货已完成 标识
  53.        END OF ty_ekko_ekpo.
  54. TYPES : BEGIN OF ty_eket,
  55.          ebeln   TYPE eket-ebeln,
  56.          ebelp   TYPE eket-ebelp,
  57.          etenr   TYPE eket-etenr,"交货计划行计数器
  58.          eindt   TYPE eket-eindt,
  59.          wemng   TYPE eket-wemng,"已交货数量
  60.        END OF ty_eket.
  61. TYPES : BEGIN OF ty_result,
  62.          ebeln   TYPE ekpo-ebeln,
  63.          ebelp   TYPE ekpo-ebelp,
  64.         END OF ty_result.
  65. *-->获取数据定义的结构
  66. TYPES : BEGIN OF ty_ekbe,
  67.          ebeln   TYPE ekbe-ebeln,
  68.          ebelp   TYPE ekbe-ebelp,
  69.          zekkn   TYPE ekbe-zekkn,
  70.          vgabe   TYPE ekbe-vgabe,
  71.          gjahr   TYPE ekbe-gjahr,
  72.          belnr   TYPE ekbe-belnr,
  73.          buzei   TYPE ekbe-buzei,
  74.          dmbtr   TYPE ekbe-dmbtr,"收货凭证金额
  75.          shkzg   TYPE ekbe-shkzg,"S金额为正,H金额是负
  76.          werks   TYPE ekbe-werks,"地点
  77.         END OF ty_ekbe.
  78. TYPES : BEGIN OF ty_ekbe_sum,
  79.          ebeln   TYPE ekbe-ebeln,
  80.          ebelp   TYPE ekbe-ebelp,
  81.          dmbtr   TYPE ekbe-dmbtr,"收货凭证金额
  82.         END OF ty_ekbe_sum.
  83. TYPES : BEGIN OF ty_ekpo_data,
  84.          ebeln   TYPE ekpo-ebeln,
  85.          ebelp   TYPE ekpo-ebelp,
  86.          kzwi1   TYPE ekpo-kzwi1,"订单金额
  87.          menge   TYPE ekpo-menge,"订单数量
  88.          matnr   TYPE ekpo-matnr,"商品编码
  89.          werks   TYPE ekpo-werks,"地点
  90.          bukrs   TYPE ekpo-bukrs,"公司代码
  91.          elikz   TYPE ekpo-elikz,
  92.         END OF ty_ekpo_data.
  93. TYPES : BEGIN OF ty_eket_data,
  94.          ebeln   TYPE eket-ebeln,
  95.          ebelp   TYPE eket-ebelp,
  96.          wemng   TYPE eket-wemng,
  97.         END OF  ty_eket_data.
  98. TYPES: BEGIN OF ty_t171t_data,
  99.          bzirk   TYPE t171t-bzirk,"销售地区
  100.          bztxt   TYPE t171t-bztxt,"描述
  101.        END OF ty_t171t_data.
  102. TYPES: BEGIN OF ty_mara_data,
  103.          matnr   TYPE mara-matnr,
  104.          prdha   TYPE mara-prdha,
  105.        END OF ty_mara_data.
  106. TYPES: BEGIN OF ty_t179t_data,
  107.          prodh   TYPE t179t-prodh,
  108.          vtext   TYPE t179t-vtext,
  109.        END OF ty_t179t_data.
  110. TYPES: BEGIN OF ty_a655_data,
  111.         matnr   TYPE a655-matnr,
  112.         knumh   TYPE a655-knumh,"条件记录号
  113.        END OF ty_a655_data.
  114. TYPES: BEGIN OF ty_konp_data,
  115.         knumh    TYPE konp-knumh,"条件记录号
  116.         kbetr     TYPE konp-kbetr,"价格 (条件金额或百分数 ) 无等级存在
  117.        END OF ty_konp_data.
  118. TYPES: BEGIN OF ty_zput072_data,
  119.          werks    TYPE zput072-werks,"地点
  120.          dwerk    TYPE zput072-dwerk,"D库
  121.        END OF ty_zput072_data.
  122. *-->最终明细报表的结构
  123. TYPES : BEGIN OF ty_display_data,
  124.          ebeln   TYPE ekbe-ebeln,
  125.          ebelp   TYPE ekbe-ebelp,
  126.          bzirk   TYPE t001w-bzirk,"销售大区
  127.          bztxt   TYPE t171t-bztxt,"销售大区描述
  128.          stufe1  TYPE t179-prodh,"事业部
  129.          vtext1   TYPE t179t-vtext,"事业部 描述
  130.          stufe2  TYPE t179-prodh,"产品层次
  131.          vtext2   TYPE t179t-vtext,"产品层次 描述
  132.          dmbtr   TYPE ekbe-dmbtr,"收货凭证金额
  133.          kzwi1   TYPE ekpo-kzwi1,"订单金额
  134.          menge   TYPE ekpo-menge,"订单数量
  135.          matnr   TYPE ekpo-matnr,"商品编码
  136.          elikz   TYPE ekpo-elikz,
  137.          werks   TYPE ekpo-werks,"地点
  138.          bukrs   TYPE ekpo-bukrs,"公司代码
  139.          wemng   TYPE eket-wemng,"已交货数量
  140.          rates   TYPE rates,"税率
  141.          order_satis(10) TYPE c,"订单满足率
  142.          rece_goods TYPE ekpo-kzwi1,"收货商品金额
  143.          deli_goods TYPE ekpo-kzwi1,"仍需交货金额
  144.          dmbtr_zb   TYPE ekbe-dmbtr,"总部收货凭证金额
  145.          kzwi1_zb   TYPE ekpo-kzwi1,"总部订单金额
  146.          rece_goods_zb TYPE ekpo-kzwi1,"总部收货商品金额
  147.          dmbtr_dc   TYPE ekbe-dmbtr,"DC收货凭证金额
  148.          kzwi1_dc   TYPE ekpo-kzwi1,"DC订单金额
  149.          rece_goods_dc TYPE ekpo-kzwi1,"DC收货商品金额
  150.         END OF ty_display_data.
  151. *-->最终alv显示汇总报表的结构
  152. TYPES : BEGIN OF ty_display_sum,
  153.          bzirk   TYPE t001w-bzirk,"销售大区
  154.          bztxt   TYPE t171t-bztxt,"销售大区描述
  155.          stufe1  TYPE t179-prodh,"事业部
  156.          vtext1   TYPE t179t-vtext,"事业部描述
  157.          stufe2  TYPE t179-prodh,"产品层次
  158.          vtext2   TYPE t179t-vtext,"产品层次 描述
  159.          kzwi1_sum  TYPE ekpo-kzwi1,"采购商品金额
  160.          rece_goods TYPE ekpo-kzwi1,"收货商品金额
  161.          deli_goods TYPE ekpo-kzwi1,"仍需交货金额
  162.          order_satis(10) TYPE c,"订单满足率
  163.          dmbtr_zb   TYPE ekbe-dmbtr,"总部收货凭证金额
  164.          kzwi1_zb   TYPE ekpo-kzwi1,"总部订单金额
  165.          rece_goods_zb TYPE ekpo-kzwi1,"总部收货商品金额
  166.          sales_zb(10)   TYPE c,"总部畅销品订单占比
  167.          sales_re_zb(10) TYPE c,"总部畅销品收货占比
  168.          dmbtr_dc   TYPE ekbe-dmbtr,"DC收货凭证金额
  169.          kzwi1_dc   TYPE ekpo-kzwi1,"DC订单金额
  170.          rece_goods_dc TYPE ekpo-kzwi1,"DC收货商品金额
  171.          sales_dc(10)   TYPE c,"DC畅销品订单占比
  172.          sales_re_dc(10) TYPE c,"DC畅销品收货占比
  173.         END OF ty_display_sum.
  174. *-->最终collect汇总报表的结构
  175. TYPES : BEGIN OF ty_display_stufe1,"按事业部汇总
  176.          stufe1  TYPE t179-prodh,"事业部
  177.          vtext1   TYPE t179t-vtext,"事业部描述
  178.          kzwi1   TYPE ekpo-kzwi1,"订单金额
  179.          kzwi1_sum  TYPE ekpo-kzwi1,"采购商品金额
  180.          rece_goods TYPE ekpo-kzwi1,"收货商品金额
  181.          deli_goods TYPE ekpo-kzwi1,"仍需交货金额
  182.          dmbtr_zb   TYPE ekbe-dmbtr,"总部收货凭证金额
  183.          kzwi1_zb   TYPE ekpo-kzwi1,"总部订单金额
  184.          rece_goods_zb TYPE ekpo-kzwi1,"总部收货商品金额
  185.          dmbtr_dc   TYPE ekbe-dmbtr,"DC收货凭证金额
  186.          kzwi1_dc   TYPE ekpo-kzwi1,"DC订单金额
  187.          rece_goods_dc TYPE ekpo-kzwi1,"DC收货商品金额
  188.         END OF ty_display_stufe1.
  189. TYPES : BEGIN OF ty_display_stufe,"按事业部+产品层次汇总
  190.          stufe1  TYPE t179-prodh,"事业部
  191.          vtext1   TYPE t179t-vtext,"事业部描述
  192.          stufe2  TYPE t179-prodh,"产品层次
  193.          vtext2   TYPE t179t-vtext,"产品层次描述
  194.          kzwi1   TYPE ekpo-kzwi1,"订单金额
  195.          kzwi1_sum  TYPE ekpo-kzwi1,"采购商品金额
  196.          rece_goods TYPE ekpo-kzwi1,"收货商品金额
  197.          deli_goods TYPE ekpo-kzwi1,"仍需交货金额
  198.          dmbtr_zb   TYPE ekbe-dmbtr,"总部收货凭证金额
  199.          kzwi1_zb   TYPE ekpo-kzwi1,"总部订单金额
  200.          rece_goods_zb TYPE ekpo-kzwi1,"总部收货商品金额
  201.          dmbtr_dc   TYPE ekbe-dmbtr,"DC收货凭证金额
  202.          kzwi1_dc   TYPE ekpo-kzwi1,"DC订单金额
  203.          rece_goods_dc TYPE ekpo-kzwi1,"DC收货商品金额
  204.         END OF ty_display_stufe.
  205. TYPES : BEGIN OF ty_display_bzirk,"按销售大区汇总
  206.          bzirk  TYPE t001w-bzirk,"销售大区
  207.          bztxt   TYPE t171t-bztxt,"销售大区描述
  208.          kzwi1   TYPE ekpo-kzwi1,"订单金额
  209.          kzwi1_sum  TYPE ekpo-kzwi1,"采购商品金额
  210.          rece_goods TYPE ekpo-kzwi1,"收货商品金额
  211.          deli_goods TYPE ekpo-kzwi1,"仍需交货金额
  212.          dmbtr_zb   TYPE ekbe-dmbtr,"总部收货凭证金额
  213.          kzwi1_zb   TYPE ekpo-kzwi1,"总部订单金额
  214.          rece_goods_zb TYPE ekpo-kzwi1,"总部收货商品金额
  215.          dmbtr_dc   TYPE ekbe-dmbtr,"DC收货凭证金额
  216.          kzwi1_dc   TYPE ekpo-kzwi1,"DC订单金额
  217.          rece_goods_dc TYPE ekpo-kzwi1,"DC收货商品金额
  218.         END OF ty_display_bzirk.
  219. TYPES : BEGIN OF ty_display_bzirk_stufe1,"按销售大区+事业部汇总
  220.          bzirk  TYPE t001w-bzirk,"销售大区
  221.          bztxt   TYPE t171t-bztxt,"销售大区描述
  222.          stufe1  TYPE t179-prodh,"事业部
  223.          vtext1   TYPE t179t-vtext,"事业部 描述
  224.          kzwi1   TYPE ekpo-kzwi1,"订单金额
  225.          kzwi1_sum  TYPE ekpo-kzwi1,"采购商品金额
  226.          rece_goods TYPE ekpo-kzwi1,"收货商品金额
  227.          deli_goods TYPE ekpo-kzwi1,"仍需交货金额
  228.          dmbtr_zb   TYPE ekbe-dmbtr,"总部收货凭证金额
  229.          kzwi1_zb   TYPE ekpo-kzwi1,"总部订单金额
  230.          rece_goods_zb TYPE ekpo-kzwi1,"总部收货商品金额
  231.          dmbtr_dc   TYPE ekbe-dmbtr,"DC收货凭证金额
  232.          kzwi1_dc   TYPE ekpo-kzwi1,"DC订单金额
  233.          rece_goods_dc TYPE ekpo-kzwi1,"DC收货商品金额
  234.         END OF ty_display_bzirk_stufe1.
  235. *-->汇率
  236. TYPES: BEGIN OF ty_t005,
  237.          land1   TYPE t005-land1,
  238.          waers   TYPE t005-waers,
  239.        END OF ty_t005.

  240. DATA: gt_t001w TYPE TABLE OF ty_t001w WITH HEADER LINE.
  241. DATA: gt_t005 TYPE TABLE OF ty_t005 WITH HEADER LINE.
  242. DATA: gt_t001w_com TYPE TABLE OF ty_t001w WITH HEADER LINE.
  243. DATA: gt_t001w_land1 TYPE TABLE OF ty_t001w_land1 WITH HEADER LINE.
  244. DATA: gt_mara TYPE TABLE OF ty_mara WITH HEADER LINE.
  245. DATA: gt_ekko_ekpo TYPE TABLE OF ty_ekko_ekpo WITH HEADER LINE.
  246. DATA: gt_ekko_ekpo_temp TYPE TABLE OF ty_ekko_ekpo WITH HEADER LINE.
  247. DATA: gt_ekko_ekpo_temp_com TYPE TABLE OF ty_ekko_ekpo WITH HEADER LINE.
  248. DATA: gt_eket TYPE TABLE OF ty_eket WITH HEADER LINE.
  249. DATA: gt_result TYPE TABLE OF ty_result WITH HEADER LINE.
  250. DATA: gt_result_temp TYPE TABLE OF ty_result WITH HEADER LINE.
  251. DATA: gt_ekbe TYPE TABLE OF ty_ekbe WITH HEADER LINE.
  252. DATA: gt_ekbe_temp TYPE TABLE OF ty_ekbe WITH HEADER LINE.
  253. DATA: gt_ekbe_sum TYPE TABLE OF ty_ekbe_sum WITH HEADER LINE.
  254. DATA: gt_ekpo_data TYPE TABLE OF ty_ekpo_data WITH HEADER LINE.
  255. DATA: gt_ekpo_data_temp TYPE TABLE OF ty_ekpo_data WITH HEADER LINE.
  256. DATA: gt_eket_data TYPE TABLE OF ty_eket_data WITH HEADER LINE.
  257. DATA: gt_eket_data_temp TYPE TABLE OF ty_eket_data WITH HEADER LINE.
  258. DATA: gt_t171t_data TYPE TABLE OF ty_t171t_data WITH HEADER LINE.
  259. DATA: gt_t171t_data_temp TYPE TABLE OF ty_t171t_data WITH HEADER LINE.
  260. DATA: gt_t001w_data TYPE TABLE OF ty_t001w WITH HEADER LINE.
  261. DATA: gt_mara_data TYPE TABLE OF ty_mara_data WITH HEADER LINE.
  262. DATA: gt_t179t_data TYPE TABLE OF ty_t179t_data WITH HEADER LINE.
  263. DATA: gt_a655_data TYPE TABLE OF ty_a655_data WITH HEADER LINE.
  264. DATA: gt_a655_data_temp TYPE TABLE OF ty_a655_data WITH HEADER LINE.
  265. DATA: gt_a729_data TYPE TABLE OF ty_a655_data WITH HEADER LINE.
  266. DATA: gt_a729_data_temp TYPE TABLE OF ty_a655_data WITH HEADER LINE.
  267. DATA: gt_konp_data TYPE TABLE OF ty_konp_data WITH HEADER LINE.
  268. DATA: gt_zput072_data TYPE TABLE OF ty_zput072_data WITH HEADER LINE.
  269. DATA: gt_display_data TYPE TABLE OF ty_display_data WITH HEADER LINE.
  270. DATA: gt_display_data_temp TYPE TABLE OF ty_display_data WITH HEADER LINE.
  271. DATA: gt_display_sum TYPE TABLE OF ty_display_sum WITH HEADER LINE.
  272. DATA: gt_display_stufe1 TYPE TABLE OF ty_display_stufe1 WITH HEADER LINE.
  273. DATA: gt_display_stufe TYPE TABLE OF ty_display_stufe WITH HEADER LINE.
  274. DATA: gt_display_bzirk TYPE TABLE OF ty_display_bzirk WITH HEADER LINE.
  275. DATA: gt_display_bzirk_stufe1 TYPE TABLE OF ty_display_bzirk_stufe1 WITH HEADER LINE.

  276. DATA: gv_show_pec TYPE i.
  277. DATA: gv_show_pec_c(6).
  278. DATA: gv_show_str(200).
复制代码

INCLUDE zdqpu_136_selscr.        "Selection screen
  1. *&---------------------------------------------------------------------*
  2. *&  包括              ZDQPU_136_SELSCR
  3. *&---------------------------------------------------------------------*
  4. SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
  5. SELECT-OPTIONS: s_bzirk  FOR t171t-bzirk,"销售地区
  6.                 s_stufe1 FOR t179-prodh,"事业部
  7.                 s_stufe2 FOR t179-prodh,"产品层次
  8.                 s_ekorg  FOR ekko-ekorg,"采购组织
  9.                 s_bedat  FOR ekko-bedat OBLIGATORY,"采购凭证日期
  10.                 s_eindt  FOR eket-eindt."项目交货日期
  11. SELECTION-SCREEN END OF BLOCK b1.

  12. SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE text-002.
  13. PARAMETERS: pr_1 RADIOBUTTON GROUP rad1 DEFAULT 'X', "事业部
  14.             pr_2 RADIOBUTTON GROUP rad1,"事业部+产品层次
  15.             pr_3 RADIOBUTTON GROUP rad1,"大区
  16.             pr_4 RADIOBUTTON GROUP rad1."大区+事业部
  17. SELECTION-SCREEN END OF BLOCK b2.

  18. SELECTION-SCREEN BEGIN OF BLOCK b3 WITH FRAME TITLE text-003.
  19. PARAMETERS: pr_zb RADIOBUTTON GROUP rad2 DEFAULT 'X', "总部级别 订单数据
  20.             pr_dc RADIOBUTTON GROUP rad2."DC级别 订单数据
  21. SELECTION-SCREEN END OF BLOCK b3.

  22. SELECTION-SCREEN COMMENT /1(79) text-004.
  23. SELECTION-SCREEN COMMENT /1(79) text-005.
  24. SELECTION-SCREEN COMMENT /1(83) text-006.
  25. SELECTION-SCREEN COMMENT /1(79) text-007.
  26. SELECTION-SCREEN COMMENT /1(79) text-008.
  27. SELECTION-SCREEN COMMENT /1(79) text-009.
  28. SELECTION-SCREEN COMMENT /1(79) text-010.
  29. SELECTION-SCREEN COMMENT /1(79) text-011.
  30. SELECTION-SCREEN COMMENT /1(79) text-012.
复制代码

INCLUDE zdqpu_136_form.                "Form

  1. *&---------------------------------------------------------------------*
  2. *&  包括              ZDQPU_136_FORM
  3. *&---------------------------------------------------------------------*
  4. *&---------------------------------------------------------------------*
  5. *&      Form  f_stufe1_f4
  6. *&---------------------------------------------------------------------*
  7. *       事业部和产品层次的F4帮助
  8. *----------------------------------------------------------------------*
  9. FORM f_stufe_f4 USING p_s_stufe TYPE t179-prodh
  10.                        l_where TYPE c.
  11.   DATA: lt_t179 TYPE TABLE OF ty_t179 WITH HEADER LINE.
  12.   DATA: lt_t179t TYPE TABLE OF ty_t179t_data.
  13.   DATA: lt_return_values TYPE TABLE OF ddshretval,          "#EC NEEDED
  14.         ls_return_values LIKE LINE OF lt_return_values.     "#EC NEEDED
  15.   CLEAR: p_s_stufe, ls_return_values.
  16.   REFRESH: lt_t179, lt_return_values.
  17.   SELECT prodh
  18.     INTO TABLE lt_t179
  19.     FROM t179
  20.     WHERE stufe = l_where.
  21.   IF lt_t179[] IS NOT INITIAL.
  22.     SORT lt_t179 BY prodh.
  23.     DELETE ADJACENT DUPLICATES FROM lt_t179 COMPARING prodh.
  24.     SELECT prodh
  25.            vtext
  26.     INTO TABLE lt_t179t
  27.     FROM t179t
  28.     FOR ALL ENTRIES IN lt_t179
  29.     WHERE prodh = lt_t179-prodh
  30.       AND spras = sy-langu.
  31.   ENDIF.

  32.   CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
  33.     EXPORTING
  34.       retfield        = 'PRODH'
  35.       value_org       = 'S'
  36.     TABLES
  37.       value_tab       = lt_t179t
  38.       return_tab      = lt_return_values
  39.     EXCEPTIONS
  40.       parameter_error = 1
  41.       no_values_found = 2
  42.       OTHERS          = 3.
  43.   IF sy-subrc <> 0.
  44.     MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
  45.             WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  46.   ELSE.
  47.     READ TABLE lt_return_values INTO ls_return_values INDEX 1.
  48.     p_s_stufe = ls_return_values-fieldval.
  49.   ENDIF.
  50. ENDFORM.                    " f_stufe_f4

  51. *&---------------------------------------------------------------------*
  52. *&      Form  f_get_data
  53. *&---------------------------------------------------------------------*
  54. *       获取符合条件的采购凭证号+行项目号
  55. *----------------------------------------------------------------------*
  56. FORM f_get_data .
  57. *-->获取采购凭证号+行项目号
  58.   SELECT werks "地点
  59.          bzirk"销售地区
  60.   INTO TABLE gt_t001w
  61.   FROM t001w
  62.   WHERE bzirk IN s_bzirk.
  63.   gt_t001w_com[] = gt_t001w[].

  64.   gv_show_pec = 10.
  65.   MOVE : gv_show_pec TO gv_show_pec_c.
  66.   CONCATENATE '正在抽取符合条件单据,请等待....完成率 =' gv_show_pec_c '%' INTO gv_show_str.
  67.   PERFORM f_show_clock USING gv_show_str gv_show_pec.

  68.   IF gt_t001w[] IS NOT INITIAL.
  69.     SORT gt_t001w BY werks.
  70.     DELETE ADJACENT DUPLICATES FROM gt_t001w[] COMPARING werks.
  71.     SELECT ekko~ebeln
  72.            ekpo~ebelp
  73.            ekpo~matnr
  74.            ekko~bedat
  75.            ekpo~kzwi1"订单金额
  76.            ekpo~menge"订单数量
  77.            ekpo~werks"地点
  78.            ekpo~bukrs"公司代码
  79.            ekpo~elikz""交货已完成" 标识
  80.     INTO TABLE gt_ekko_ekpo_temp
  81.     FROM ekko
  82.     INNER JOIN ekpo ON ekpo~ebeln = ekko~ebeln
  83.     FOR ALL entries IN gt_t001w
  84.     WHERE ekko~bsart IN r_bsart          "('NB','ZNB1','ZNB2')
  85.       AND ekko~bedat IN s_bedat          "凭证日期
  86.       AND ekko~ekorg IN s_ekorg
  87.       AND ekko~frgke IN r_frgke        "批准标识:采购凭证('2','SPACE')
  88.       AND ekpo~loekz = space             "采购凭证删除标识等于空
  89.       AND ekpo~werks = gt_t001w-werks
  90.       AND ekpo~retpo = space             "退货项目等于空(正向订单)
  91.       AND ekpo~zzservg = space.          "标识:代销商品等于空(经销订单)
  92.     gt_ekko_ekpo_temp_com[] = gt_ekko_ekpo_temp[].
  93.     REFRESH gt_t001w[].
  94.   ENDIF.

  95.   IF gt_ekko_ekpo_temp[] IS NOT INITIAL.
  96.     SORT gt_ekko_ekpo_temp BY ebeln ebelp.
  97.     DELETE ADJACENT DUPLICATES FROM gt_ekko_ekpo_temp COMPARING ebeln ebelp.
  98.     SELECT ebeln
  99.            ebelp
  100.            etenr"交货计划行计数器
  101.            eindt
  102.            wemng"已交货数量
  103.     INTO TABLE gt_eket
  104.     FROM eket
  105.     FOR ALL ENTRIES IN gt_ekko_ekpo_temp
  106.     WHERE ebeln = gt_ekko_ekpo_temp-ebeln
  107.       AND ebelp = gt_ekko_ekpo_temp-ebelp
  108.       AND eindt IN s_eindt.  "交货日期
  109.   ENDIF.

  110.   IF gt_ekko_ekpo_temp[] IS NOT INITIAL.
  111.     SORT gt_ekko_ekpo_temp BY ebeln ebelp.
  112.     DELETE ADJACENT DUPLICATES FROM gt_ekko_ekpo_temp[] COMPARING ebeln ebelp.
  113.     SELECT matnr
  114.            prdha
  115.     INTO TABLE gt_mara
  116.     FROM mara
  117.     FOR ALL ENTRIES IN gt_ekko_ekpo_temp
  118.     WHERE mara~matnr = gt_ekko_ekpo_temp-matnr
  119.       AND mara~prdha IN s_stufe2.
  120.   ENDIF.

  121.   SORT gt_eket BY ebeln ebelp eindt.
  122.   LOOP AT gt_ekko_ekpo_temp.
  123.     READ TABLE gt_eket WITH KEY ebeln = gt_ekko_ekpo_temp-ebeln
  124.                                 ebelp = gt_ekko_ekpo_temp-ebelp BINARY SEARCH.
  125.     IF sy-subrc = 0 AND gt_eket-eindt NE gt_ekko_ekpo_temp-bedat.
  126.       APPEND gt_ekko_ekpo_temp TO gt_ekko_ekpo.
  127.     ENDIF.
  128.   ENDLOOP.
  129.   REFRESH gt_ekko_ekpo_temp[].
  130.   CLEAR gt_ekko_ekpo_temp.
  131.   SORT gt_mara BY matnr.
  132.   LOOP AT gt_ekko_ekpo.
  133.     READ TABLE gt_mara WITH KEY matnr = gt_ekko_ekpo-matnr BINARY SEARCH.
  134.     IF sy-subrc = 0 AND gt_mara-prdha+0(5) IN s_stufe1.
  135.       MOVE-CORRESPONDING gt_ekko_ekpo TO gt_result.
  136.       APPEND gt_result.
  137.     ENDIF.
  138.   ENDLOOP.
  139.   gt_result_temp[] = gt_result[].
  140.   REFRESH: gt_mara[],gt_ekko_ekpo[].
  141.   CLEAR:gt_mara,gt_ekko_ekpo.
  142. ENDFORM.                    " f_get_data
  143. *&---------------------------------------------------------------------*
  144. *&      Form  f_process_data
  145. *&---------------------------------------------------------------------*
  146. *       根据采购凭证号+行项目号获取相关数据并计算
  147. *----------------------------------------------------------------------*
  148. FORM f_process_data .
  149.   IF gt_result[] IS NOT INITIAL.
  150.     gv_show_pec = 20.
  151.     MOVE : gv_show_pec TO gv_show_pec_c.
  152.     CONCATENATE '正在抽取订单金额和数量数据,请等待....完成率 =' gv_show_pec_c '%' INTO gv_show_str.
  153.     PERFORM f_show_clock USING gv_show_str gv_show_pec.
  154.     PERFORM f_process_kzwil.          "获取符合条件的订单金额 订单数量

  155.     gv_show_pec = 30.
  156.     MOVE : gv_show_pec TO gv_show_pec_c.
  157.     CONCATENATE '正在抽取大区、产品层次和事业部数据,请等待....完成率 =' gv_show_pec_c '%' INTO gv_show_str.
  158.     PERFORM f_show_clock USING gv_show_str gv_show_pec.
  159.     PERFORM f_process_bzirk_prdha."获取销售大区 大区文本描述 产品层次+事业部及文本 数据

  160.     gv_show_pec = 40.
  161.     MOVE : gv_show_pec TO gv_show_pec_c.
  162.     CONCATENATE '正在抽取已交货数量、收货凭证金额并计算,请等待....完成率 =' gv_show_pec_c '%' INTO gv_show_str.
  163.     PERFORM f_show_clock USING gv_show_str gv_show_pec.
  164.     PERFORM f_process_wemng_dmbtr.    "获取已交货数量 收货凭证金额

  165.     gv_show_pec = 50.
  166.     MOVE : gv_show_pec TO gv_show_pec_c.
  167.     CONCATENATE '正在合并抽取的各条数据,请等待....完成率 =' gv_show_pec_c '%' INTO gv_show_str.
  168.     PERFORM f_show_clock USING gv_show_str gv_show_pec.
  169.     PERFORM f_concatenate_data.       "合并数据

  170.     gv_show_pec = 60.
  171.     MOVE : gv_show_pec TO gv_show_pec_c.
  172.     CONCATENATE '正在计算汇率,请等待....完成率 =' gv_show_pec_c '%' INTO gv_show_str.
  173.     PERFORM f_show_clock USING gv_show_str gv_show_pec.
  174.     PERFORM f_compute_ukurs.          "计算汇率

  175.     gv_show_pec = 70.
  176.     MOVE : gv_show_pec TO gv_show_pec_c.
  177.     CONCATENATE '正在计算相关金额的税率,请等待....完成率 =' gv_show_pec_c '%' INTO gv_show_str.
  178.     PERFORM f_show_clock USING gv_show_str gv_show_pec.
  179.     PERFORM f_compute_tax.            "计算税率

  180.     PERFORM f_pr_zb_dc.               "畅销纬度
  181.     PERFORM f_compute_sum.            "多维度汇总计算
  182.     DELETE gt_display_sum[] WHERE kzwi1_sum = '' AND rece_goods = '' AND deli_goods = '' AND rece_goods = ''.
  183.   ELSE.
  184.     MESSAGE s001(00) DISPLAY LIKE 'E' WITH '没有符和条件的数据!'.
  185.     LEAVE LIST-PROCESSING.
  186.   ENDIF.
  187. ENDFORM.                    " f_process_data

  188. *&---------------------------------------------------------------------*
  189. *&      Form  f_show_clock
  190. *&---------------------------------------------------------------------*
  191. *       进度条子过程
  192. *----------------------------------------------------------------------*
  193. *      -->P_SHOW_STR  提示的文字
  194. *      -->P_SHOW_PEC  显示的百分比
  195. *----------------------------------------------------------------------*
  196. FORM f_show_clock  USING    p_show_str TYPE char200
  197.                               p_show_pec TYPE i.
  198.   CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
  199.     EXPORTING
  200.       percentage = p_show_pec
  201.       text       = p_show_str.

  202. ENDFORM.                    " f_show_clock
  203. *&---------------------------------------------------------------------*
  204. *&      Form  f_authority_check
  205. *&---------------------------------------------------------------------*
  206. *       权限校验
  207. *----------------------------------------------------------------------*
  208. *  -->  p1        text
  209. *  <--  p2        text
  210. *----------------------------------------------------------------------*
  211. FORM f_authority_check .
  212.   TYPES: BEGIN OF ty_t171,
  213.           bzirk TYPE t171-bzirk,
  214.         END OF ty_t171.
  215.   DATA: lt_t171 TYPE TABLE OF ty_t171 WITH HEADER LINE.
  216.   DATA: lt_t171_check TYPE TABLE OF ty_t171 WITH HEADER LINE.
  217.   SELECT bzirk
  218.   INTO TABLE lt_t171
  219.   FROM t171
  220.   WHERE bzirk IN s_bzirk.
  221.   SORT lt_t171 BY bzirk.
  222.   LOOP AT lt_t171.
  223.     AUTHORITY-CHECK OBJECT 'Z_T171-BZI'
  224.              ID 'BZIRK' FIELD lt_t171-bzirk.
  225.     IF sy-subrc = 0.
  226.       lt_t171_check = lt_t171-bzirk.
  227.       APPEND lt_t171_check.
  228.     ENDIF.
  229.   ENDLOOP.
  230.   IF lt_t171_check[] IS INITIAL.
  231.     MESSAGE e001(00) WITH '你没有权限访问此大区!'.
  232.   ENDIF.

  233.   TYPES: BEGIN OF ty_mara,
  234.           prdha TYPE mara-prdha,
  235.         END OF ty_mara.
  236.   DATA: lt_mara TYPE TABLE OF ty_mara WITH HEADER LINE.
  237.   DATA: lt_mara_check TYPE TABLE OF ty_mara WITH HEADER LINE.
  238.   IF s_stufe2[] IS NOT INITIAL.
  239.     SELECT prdha
  240.     INTO TABLE lt_mara
  241.     FROM mara
  242.     WHERE prdha IN s_stufe2.
  243.   ELSE.
  244.     RANGES r_prdha FOR mara-prdha.
  245.     LOOP AT s_stufe1.
  246.       r_prdha-sign   = s_stufe1-sign.
  247.       IF s_stufe1-low NE space AND s_stufe1-high EQ space.
  248.         r_prdha-option = 'CP'.
  249.       ELSE.
  250.         r_prdha-option = 'BT'.
  251.       ENDIF.
  252.       CONCATENATE s_stufe1-low '*' INTO r_prdha-low.
  253.       CONCATENATE s_stufe1-high '*' INTO r_prdha-high.
  254.       APPEND r_prdha.
  255.     ENDLOOP.
  256.     SELECT prdha
  257.     INTO TABLE lt_mara
  258.     FROM mara
  259.     WHERE prdha IN r_prdha.
  260.   ENDIF.
  261.   SORT lt_mara BY prdha.
  262.   LOOP AT lt_mara.
  263.     AUTHORITY-CHECK OBJECT 'Z_MARA_PRD'
  264.              ID 'PRDHA' FIELD lt_mara-prdha.
  265.     IF sy-subrc = 0.
  266.       lt_mara_check = lt_mara-prdha.
  267.       APPEND lt_mara_check.
  268.     ENDIF.
  269.   ENDLOOP.
  270.   IF lt_mara_check[] IS INITIAL.
  271.     MESSAGE e001(00) WITH '你没有权限访问此产品层次或事业部!'.
  272.   ENDIF.
  273. ENDFORM.                    " f_authority_check
  274. *&---------------------------------------------------------------------*
  275. *&      Form  f_screen_check
  276. *&---------------------------------------------------------------------*
  277. *       选择屏幕的字段校验
  278. *----------------------------------------------------------------------*
  279. FORM f_screen_check .
  280.   CASE 'X'.
  281.     WHEN pr_1.
  282.       IF s_stufe1[] IS INITIAL.
  283.         MESSAGE e001(00) WITH '事业部不能为空!'.
  284.         STOP.
  285.       ENDIF.
  286.     WHEN pr_2.
  287.       IF s_stufe1[] IS INITIAL OR s_stufe2[] IS INITIAL.
  288.         MESSAGE e001(00) WITH '事业部和产品层次不能为空!'.
  289.         STOP.
  290.       ENDIF.
  291.     WHEN pr_3.
  292.       IF s_bzirk[] IS INITIAL.
  293.         MESSAGE e001(00) WITH '大区不能为空!'.
  294.         STOP.
  295.       ENDIF.
  296.     WHEN pr_4.
  297.       IF s_bzirk[] IS INITIAL OR s_stufe1[] IS INITIAL.
  298.         MESSAGE e001(00) WITH '大区和事业部不能为空!'.
  299.         STOP.
  300.       ENDIF.
  301.   ENDCASE.
  302. ENDFORM.                    " f_screen_check
  303. *&---------------------------------------------------------------------*
  304. *&      Form  f_process_kzwil
  305. *&---------------------------------------------------------------------*
  306. *       获取符合条件的订单金额 订单数量 数据
  307. *----------------------------------------------------------------------*
  308. *  -->  p1        text
  309. *  <--  p2        text
  310. *----------------------------------------------------------------------*
  311. FORM f_process_kzwil .
  312.   SORT gt_result BY ebeln ebelp.
  313.   LOOP AT gt_ekko_ekpo_temp_com.
  314.     READ TABLE gt_result WITH KEY ebeln = gt_ekko_ekpo_temp_com-ebeln
  315.                                   ebelp = gt_ekko_ekpo_temp_com-ebelp BINARY SEARCH.
  316.     IF sy-subrc = 0.
  317.       MOVE-CORRESPONDING gt_ekko_ekpo_temp_com TO gt_ekpo_data.
  318.       APPEND gt_ekpo_data.
  319.     ENDIF.
  320.   ENDLOOP.
  321.   gt_ekpo_data_temp[] = gt_ekpo_data[].
  322.   REFRESH gt_ekko_ekpo_temp_com[].
  323.   CLEAR gt_ekko_ekpo_temp_com.
  324. ENDFORM.                    " f_process_kzwil
  325. *&---------------------------------------------------------------------*
  326. *&      Form  f_process_bzirk_prdha
  327. *&---------------------------------------------------------------------*
  328. *       获取销售大区 大区文本描述 产品层次+事业部及文本 数据
  329. *----------------------------------------------------------------------*
  330. *  -->  p1        text
  331. *  <--  p2        text
  332. *----------------------------------------------------------------------*
  333. FORM f_process_bzirk_prdha .
  334. *-->获取销售大区数据
  335.   SORT gt_ekpo_data BY werks.
  336.   LOOP AT gt_t001w_com.
  337.     READ TABLE gt_ekpo_data WITH KEY werks = gt_t001w_com-werks BINARY SEARCH.
  338.     IF sy-subrc = 0.
  339.       MOVE-CORRESPONDING gt_t001w_com TO gt_t001w_data.
  340.       APPEND gt_t001w_data.
  341.     ENDIF.
  342.   ENDLOOP.
  343.   REFRESH gt_t001w_com[].
  344.   CLEAR gt_t001w_com.
  345. *-->获取销售大区文本描述数据
  346.   SELECT bzirk"销售地区
  347.          bztxt"销售地区文本
  348.     INTO TABLE gt_t171t_data_temp
  349.     FROM t171t
  350.     WHERE spras = sy-langu."当前语言

  351.   SORT gt_t171t_data_temp BY bzirk.
  352.   LOOP AT gt_t001w_data.
  353.     READ TABLE gt_t171t_data_temp WITH KEY bzirk = gt_t001w_data-bzirk BINARY SEARCH.
  354.     IF sy-subrc = 0.
  355.       MOVE-CORRESPONDING gt_t171t_data_temp TO gt_t171t_data.
  356.       APPEND gt_t171t_data.
  357.     ENDIF.
  358.   ENDLOOP.
  359.   REFRESH gt_t171t_data_temp[].
  360.   CLEAR gt_t171t_data_temp.
  361. *-->获取产品层次+事业部 数据
  362.   IF   gt_ekpo_data_temp[] IS NOT INITIAL.
  363.     SORT gt_ekpo_data_temp BY matnr.
  364.     DELETE ADJACENT DUPLICATES FROM gt_ekpo_data_temp COMPARING matnr.
  365.     SELECT matnr
  366.            prdha"产品层次+事业部
  367.       INTO TABLE gt_mara_data
  368.       FROM mara
  369.       FOR ALL ENTRIES IN gt_ekpo_data_temp
  370.       WHERE matnr = gt_ekpo_data_temp-matnr
  371.       AND mara~prdha IN s_stufe2.
  372.     REFRESH gt_ekpo_data_temp[].
  373.     CLEAR gt_ekpo_data_temp.
  374.   ENDIF.
  375. *-->获取产品层次+事业部 文本数据
  376.   SELECT prodh"产品层次+事业部
  377.          vtext
  378.     INTO TABLE gt_t179t_data
  379.     FROM t179t
  380.     WHERE spras = sy-langu."当前语言
  381. ENDFORM.                    " f_process_bzirk_prdha
  382. *&---------------------------------------------------------------------*
  383. *&      Form  f_process_wemng_dmbtr
  384. *&---------------------------------------------------------------------*
  385. *       获取已交货数量 收货凭证金额
  386. *----------------------------------------------------------------------*
  387. *  -->  p1        text
  388. *  <--  p2        text
  389. *----------------------------------------------------------------------*
  390. FORM f_process_wemng_dmbtr .
  391.   SORT gt_result BY ebeln ebelp.
  392.   LOOP AT gt_eket.
  393.     READ TABLE gt_result WITH KEY ebeln = gt_eket-ebeln ebelp = gt_eket-ebelp BINARY SEARCH.
  394.     IF sy-subrc = 0.
  395.       MOVE-CORRESPONDING gt_eket TO gt_eket_data_temp.
  396.       APPEND gt_eket_data_temp.
  397.     ENDIF.
  398.   ENDLOOP.
  399.   REFRESH: gt_eket[],gt_result[].
  400.   CLEAR:gt_eket,gt_result.
  401. *-->获取已交货数量
  402.   SORT gt_eket_data_temp[] BY ebeln ebelp.
  403.   LOOP AT gt_eket_data_temp.
  404.     COLLECT gt_eket_data_temp INTO gt_eket_data[].
  405.   ENDLOOP.
  406.   REFRESH gt_eket_data_temp[].
  407.   CLEAR gt_eket_data_temp.
  408. *-->获取ekbe-dmbtr收货凭证金额
  409.   IF gt_result_temp[] IS NOT INITIAL.
  410.     SORT gt_result_temp BY ebeln ebelp.
  411.     DELETE ADJACENT DUPLICATES FROM gt_result_temp COMPARING ebeln ebelp.
  412.     SELECT ebeln
  413.            ebelp
  414.            zekkn
  415.            vgabe
  416.            gjahr
  417.            belnr
  418.            buzei
  419.            dmbtr"收货凭证金额
  420.            shkzg"S金额为正,H金额是负
  421.            werks"地点
  422.     INTO TABLE gt_ekbe_temp
  423.     FROM ekbe
  424.     FOR ALL ENTRIES IN gt_result_temp
  425.     WHERE ebeln = gt_result_temp-ebeln
  426.       AND ebelp = gt_result_temp-ebelp
  427.       AND vgabe = 1.                                        "1 收货
  428.     REFRESH gt_result_temp[].
  429.     CLEAR gt_result_temp.
  430.   ENDIF.

  431. *-->累加dmbtr收货凭证金额
  432.   SORT gt_ekbe_temp[] BY ebeln ebelp.
  433.   LOOP AT gt_ekbe_temp.
  434.     COLLECT gt_ekbe_temp INTO gt_ekbe.
  435.   ENDLOOP.
  436.   SORT gt_ekbe[] BY ebeln ebelp.
  437.   LOOP AT gt_ekbe.
  438.     IF gt_ekbe-shkzg = 'H'.
  439.       gt_ekbe-dmbtr = gt_ekbe-dmbtr * -1.
  440.     ENDIF.
  441.     MOVE-CORRESPONDING gt_ekbe TO gt_ekbe_sum.
  442.     COLLECT gt_ekbe_sum INTO gt_ekbe_sum[].
  443.   ENDLOOP.
  444.   REFRESH: gt_ekbe[],gt_ekbe_temp[].
  445.   CLEAR: gt_ekbe,gt_ekbe_temp.
  446. ENDFORM.                    " f_process_wemng_dmbtr
  447. *&---------------------------------------------------------------------*
  448. *&      Form  f_concatenate_data
  449. *&---------------------------------------------------------------------*
  450. *       合并数据
  451. *----------------------------------------------------------------------*
  452. *  -->  p1        text
  453. *  <--  p2        text
  454. *----------------------------------------------------------------------*
  455. FORM f_concatenate_data .
  456.   SORT gt_ekpo_data BY ebeln ebelp.
  457.   SORT gt_eket_data BY ebeln ebelp.
  458.   SORT gt_ekbe_sum  BY ebeln ebelp.
  459.   SORT gt_mara_data BY matnr.
  460.   SORT gt_t001w_data BY werks.
  461.   SORT gt_t171t_data BY bzirk.
  462.   LOOP AT gt_ekpo_data.
  463.     READ TABLE gt_eket_data WITH KEY ebeln = gt_ekpo_data-ebeln ebelp = gt_ekpo_data-ebelp BINARY SEARCH.
  464.     IF sy-subrc = 0.
  465.       MOVE-CORRESPONDING gt_ekpo_data TO gt_display_data_temp.
  466.       gt_display_data_temp-wemng = gt_eket_data-wemng.
  467.       APPEND gt_display_data_temp.
  468.     ENDIF.
  469.   ENDLOOP.
  470.   IF gt_display_data_temp[] IS NOT INITIAL.
  471.     LOOP AT gt_display_data_temp.
  472.       READ TABLE gt_ekbe_sum  WITH KEY ebeln = gt_display_data_temp-ebeln
  473.                                        ebelp = gt_display_data_temp-ebelp BINARY SEARCH.
  474.       IF sy-subrc = 0.
  475.         gt_display_data_temp-dmbtr = gt_ekbe_sum-dmbtr.
  476.         MODIFY gt_display_data_temp TRANSPORTING dmbtr.
  477.       ENDIF.

  478.       READ TABLE gt_t001w_data  WITH KEY werks = gt_display_data_temp-werks BINARY SEARCH.
  479.       IF sy-subrc = 0.
  480.         gt_display_data_temp-bzirk = gt_t001w_data-bzirk.
  481.         MODIFY gt_display_data_temp TRANSPORTING bzirk.
  482.       ENDIF.
  483.       READ TABLE gt_t171t_data WITH KEY bzirk = gt_display_data_temp-bzirk BINARY SEARCH.
  484.       IF sy-subrc = 0.
  485.         gt_display_data_temp-bztxt = gt_t171t_data-bztxt.
  486.         MODIFY gt_display_data_temp TRANSPORTING bztxt.
  487.       ENDIF.
  488.       READ TABLE gt_mara_data WITH KEY matnr = gt_display_data_temp-matnr BINARY SEARCH.
  489.       IF sy-subrc = 0.
  490.         gt_display_data_temp-stufe2  = gt_mara_data-prdha."产品层次
  491.         gt_display_data_temp-stufe1  = gt_mara_data-prdha+0(5)."事业部
  492.         APPEND gt_display_data_temp TO gt_display_data.
  493.       ENDIF.
  494.     ENDLOOP.
  495.     REFRESH: gt_ekbe_sum[],gt_ekpo_data[],gt_eket_data[],gt_t001w_data[],gt_mara_data[],gt_display_data_temp[],gt_t171t_data[].
  496.     CLEAR: gt_ekbe_sum,gt_ekpo_data,gt_eket_data,gt_t001w_data,gt_mara_data,gt_display_data_temp,gt_t171t_data.
  497.   ELSE.
  498.     MESSAGE s001(00) DISPLAY LIKE 'E' WITH '没有符和条件的数据!'.
  499.     LEAVE LIST-PROCESSING.
  500.   ENDIF.
  501.   IF gt_display_data[] IS NOT INITIAL.
  502.     SORT gt_t179t_data BY prodh.
  503.     LOOP AT gt_display_data.
  504.       READ TABLE gt_t179t_data  WITH KEY prodh = gt_display_data-stufe1 BINARY SEARCH.
  505.       IF sy-subrc = 0.
  506.         gt_display_data-vtext1 = gt_t179t_data-vtext.
  507.         MODIFY gt_display_data TRANSPORTING vtext1."事业部
  508.       ENDIF.
  509.       READ TABLE gt_t179t_data  WITH KEY prodh = gt_display_data-stufe2 BINARY SEARCH.
  510.       IF sy-subrc = 0.
  511.         gt_display_data-vtext2 = gt_t179t_data-vtext.
  512.         MODIFY gt_display_data TRANSPORTING vtext2."产品层次
  513.       ENDIF.
  514.     ENDLOOP.
  515.     REFRESH gt_t179t_data[].
  516.     CLEAR gt_t179t_data.
  517.   ELSE.
  518.     MESSAGE s001(00) DISPLAY LIKE 'E' WITH '没有符和条件的数据!'.
  519.     LEAVE LIST-PROCESSING.
  520.   ENDIF.

  521. ENDFORM.                    " f_concatenate_data
  522. *&---------------------------------------------------------------------*
  523. *&      Form  f_compute_ukurs
  524. *&---------------------------------------------------------------------*
  525. *       计算汇率
  526. *----------------------------------------------------------------------*
  527. *  -->  p1        text
  528. *  <--  p2        text
  529. *----------------------------------------------------------------------*
  530. FORM f_compute_ukurs .
  531.   SELECT werks              "地点
  532.          land1              "国家代码
  533.   INTO TABLE gt_t001w_land1
  534.   FROM t001w                "地点/分支机构
  535.   WHERE land1 <> 'CN'.
  536.   SELECT  land1 "国家代码
  537.           waers "国家货币
  538.   INTO TABLE gt_t005
  539.   FROM t005."国家
  540.   SORT gt_t005 BY land1.
  541.   SORT gt_t001w_land1 BY werks.
  542.   LOOP AT gt_display_data.
  543.     READ TABLE gt_t001w_land1 WITH KEY werks = gt_display_data-werks BINARY SEARCH.
  544.     IF sy-subrc = 0.
  545.       READ TABLE gt_t005 WITH KEY land1 = gt_t001w_land1-land1 BINARY SEARCH.
  546.       IF sy-subrc = 0.
  547.         CALL FUNCTION 'CONVERT_TO_LOCAL_CURRENCY'
  548.           EXPORTING
  549.             client                  = sy-mandt
  550.             date                    = sy-datum
  551.             foreign_amount          = gt_display_data-kzwi1
  552.             foreign_currency        = gt_t005-waers
  553.             local_currency          = 'CNY'
  554. *           RATE                    = 0
  555.             type_of_rate            = 'M'
  556.           IMPORTING
  557.             local_amount            = gt_display_data-kzwi1
  558.                   .
  559.         CALL FUNCTION 'CONVERT_TO_LOCAL_CURRENCY'
  560.           EXPORTING
  561.             client                  = sy-mandt
  562.             date                    = sy-datum
  563.             foreign_amount          = gt_display_data-dmbtr
  564.             foreign_currency        = gt_t005-waers
  565.             local_currency          = 'CNY'
  566. *           RATE                    = 0
  567.             type_of_rate            = 'M'
  568.           IMPORTING
  569.             local_amount            = gt_display_data-dmbtr
  570.                   .
  571.         MODIFY gt_display_data TRANSPORTING kzwi1 dmbtr.
  572.       ENDIF.
  573.     ENDIF.
  574.   ENDLOOP.
  575.   REFRESH: gt_t005[] ,gt_t001w_land1[].
  576.   CLEAR: gt_t005,gt_t001w_land1.
  577. ENDFORM.                    " f_compute_ukurs
  578. *&---------------------------------------------------------------------*
  579. *&      Form  f_compute_tax
  580. *&---------------------------------------------------------------------*
  581. *       税率计算
  582. *----------------------------------------------------------------------*
  583. *  -->  p1        text
  584. *  <--  p2        text
  585. *----------------------------------------------------------------------*
  586. FORM f_compute_tax .
  587. *-->税率取值&计算每条订单的相关金额
  588.   LOOP AT gt_display_data.
  589.     CALL FUNCTION 'ZFM_GET_TAX'
  590.       EXPORTING
  591.         matnr = gt_display_data-matnr
  592.         werks = gt_display_data-werks
  593.       IMPORTING
  594.         rates = gt_display_data-rates.
  595.     gt_display_data-rece_goods = gt_display_data-dmbtr * ( 1 + gt_display_data-rates ).
  596.     IF gt_display_data-elikz = 'X'.
  597.       gt_display_data-deli_goods = 0.
  598.     ELSE.
  599.       gt_display_data-deli_goods = gt_display_data-kzwi1 / gt_display_data-menge *
  600.                                   ( gt_display_data-menge - gt_display_data-wemng ).
  601.     ENDIF.
  602.     MODIFY gt_display_data TRANSPORTING rece_goods deli_goods rates.
  603.     CLEAR gt_display_data.
  604.   ENDLOOP.
  605. ENDFORM.                    " f_compute_tax
  606. *&---------------------------------------------------------------------*
  607. *&      Form  f_pr_zb_dc
  608. *&---------------------------------------------------------------------*
  609. *       畅销纬度
  610. *----------------------------------------------------------------------*
  611. *  -->  p1        text
  612. *  <--  p2        text
  613. *----------------------------------------------------------------------*
  614. FORM f_pr_zb_dc .
  615.   CASE 'X'.
  616.     WHEN pr_zb.
  617.       gv_show_pec = 80.
  618.       MOVE : gv_show_pec TO gv_show_pec_c.
  619.       CONCATENATE '正在抽取总部取畅销品,请等待....完成率 =' gv_show_pec_c '%' INTO gv_show_str.
  620.       PERFORM f_show_clock USING gv_show_str gv_show_pec.
  621. *-->获总部取畅销品条件准备
  622.       IF gt_display_data[] IS NOT INITIAL.
  623.         SORT gt_display_data BY matnr.
  624.         SELECT matnr
  625.                knumh "条件记录号
  626.         INTO TABLE gt_a655_data_temp
  627.         FROM a655
  628.         FOR ALL ENTRIES IN gt_display_data
  629.         WHERE kappl = 'M'
  630.           AND kschl = 'ZXSL'
  631.           AND datbi >= sy-datum  "条件记录有效截止日期
  632.           AND datab <= sy-datum  "条件记录有效起始日
  633.           AND matnr = gt_display_data-matnr.
  634.       ENDIF.
  635.       SORT gt_a655_data_temp BY knumh.
  636.       IF gt_a655_data_temp[] IS NOT INITIAL.
  637.         SELECT knumh"条件记录号
  638.                kbetr"价格 (条件金额或百分数 ) 无等级存在
  639.         INTO TABLE gt_konp_data
  640.         FROM konp
  641.         FOR ALL ENTRIES IN gt_a655_data_temp
  642.         WHERE knumh = gt_a655_data_temp-knumh
  643.         AND loevm_ko = space.
  644.       ENDIF.
  645.       LOOP AT gt_konp_data WHERE kbetr = '11'.
  646.         READ TABLE gt_a655_data_temp WITH KEY knumh = gt_konp_data-knumh BINARY SEARCH.
  647.         IF sy-subrc = 0.
  648.           APPEND gt_a655_data_temp TO gt_a655_data.
  649.         ENDIF.
  650.       ENDLOOP.
  651.       REFRESH gt_a655_data_temp[].
  652.       CLEAR gt_a655_data_temp.
  653. *-->获总部取畅销品单号数据
  654.       IF gt_a655_data[] IS NOT INITIAL.
  655.         SORT gt_a655_data BY matnr.
  656.         LOOP AT gt_display_data.
  657.           READ TABLE gt_a655_data WITH KEY matnr = gt_display_data-matnr BINARY SEARCH.
  658.           IF sy-subrc = 0.
  659.             gt_display_data-kzwi1_zb = gt_display_data-kzwi1.
  660.             gt_display_data-dmbtr_zb = gt_display_data-dmbtr.
  661.             gt_display_data-rece_goods_zb = gt_display_data-dmbtr * ( 1 + gt_display_data-rates ).
  662.             MODIFY gt_display_data TRANSPORTING kzwi1_zb dmbtr_zb rece_goods_zb.
  663.             CLEAR: gt_display_data.
  664.           ENDIF.
  665.         ENDLOOP.
  666.         REFRESH gt_a655_data[].
  667.         CLEAR gt_a655_data.
  668.       ENDIF.
  669.     WHEN pr_dc.
  670.       gv_show_pec = 80.
  671.       MOVE : gv_show_pec TO gv_show_pec_c.
  672.       CONCATENATE '正在抽取DC取畅销品,请等待....完成率 =' gv_show_pec_c '%' INTO gv_show_str.
  673.       PERFORM f_show_clock USING gv_show_str gv_show_pec.
  674. *-->获取地点为DC畅销的订单数据
  675. *将非D库的转化成D库
  676.       IF gt_display_data[] IS NOT INITIAL.
  677.         SORT gt_display_data BY werks.
  678.         SELECT werks
  679.                dwerk
  680.         INTO TABLE gt_zput072_data
  681.         FROM zput072
  682.         FOR ALL ENTRIES IN gt_display_data
  683.         WHERE werks = gt_display_data-werks.
  684.       ENDIF.
  685.       SORT gt_zput072_data BY werks.
  686.       LOOP AT gt_display_data WHERE werks NA 'D'."NA:Contains Not Any
  687.         READ TABLE gt_zput072_data WITH KEY werks = gt_display_data-werks BINARY SEARCH.
  688.         IF sy-subrc = 0.
  689.           gt_display_data-werks = gt_zput072_data-dwerk.
  690.           MODIFY gt_display_data TRANSPORTING werks.
  691.         ENDIF.
  692.       ENDLOOP.
  693.       REFRESH gt_zput072_data[].
  694.       CLEAR gt_zput072_data.
  695. *获取DC取畅销品条件准备
  696.       IF gt_display_data[] IS NOT INITIAL.
  697.         SORT gt_display_data BY matnr werks.
  698.         SELECT matnr
  699.                knumh "条件记录号
  700.         INTO TABLE gt_a729_data_temp
  701.         FROM a729
  702.         FOR ALL ENTRIES IN gt_display_data
  703.         WHERE kappl = 'M'
  704.           AND kschl = 'ZXSL'
  705.           AND datbi >= sy-datum  "条件记录有效截止日期
  706.           AND datab <= sy-datum  "条件记录有效起始日
  707.           AND matnr = gt_display_data-matnr
  708.           AND werks = gt_display_data-werks.
  709.       ENDIF.
  710.       SORT gt_a729_data_temp BY knumh.
  711.       IF gt_a729_data_temp[] IS NOT INITIAL.
  712.         SELECT knumh"条件记录号
  713.                kbetr"价格 (条件金额或百分数 ) 无等级存在
  714.         INTO TABLE gt_konp_data
  715.         FROM konp
  716.         FOR ALL ENTRIES IN gt_a729_data_temp
  717.         WHERE knumh = gt_a729_data_temp-knumh
  718.         AND loevm_ko = space.
  719.       ENDIF.
  720.       LOOP AT gt_konp_data WHERE kbetr = '11'.
  721.         READ TABLE gt_a729_data_temp WITH KEY knumh = gt_konp_data-knumh BINARY SEARCH.
  722.         IF sy-subrc = 0.
  723.           APPEND gt_a729_data_temp TO gt_a729_data.
  724.         ENDIF.
  725.       ENDLOOP.
  726.       REFRESH: gt_a729_data_temp[],gt_konp_data[].
  727.       CLEAR: gt_a729_data_temp,gt_konp_data.
  728. *-->获取DC畅销品单号数据
  729.       IF gt_a729_data[] IS NOT INITIAL.
  730.         SORT gt_a729_data BY matnr.
  731.         LOOP AT gt_display_data.
  732.           READ TABLE gt_a729_data WITH KEY matnr = gt_display_data-matnr BINARY SEARCH.
  733.           IF sy-subrc = 0.
  734.             gt_display_data-kzwi1_dc = gt_display_data-kzwi1.
  735.             gt_display_data-dmbtr_dc = gt_display_data-dmbtr.
  736.             gt_display_data-rece_goods_dc = gt_display_data-dmbtr * ( 1 + gt_display_data-rates ).
  737.             MODIFY gt_display_data TRANSPORTING kzwi1_dc dmbtr_dc rece_goods_dc.
  738.             CLEAR: gt_display_data.
  739.           ENDIF.
  740.         ENDLOOP.
  741.         REFRESH gt_a729_data[].
  742.         CLEAR gt_a729_data.
  743.       ENDIF.
  744.   ENDCASE.
  745. ENDFORM.                    " f_pr_zb_dc
  746. *&---------------------------------------------------------------------*
  747. *&      Form  f_compute_sum
  748. *&---------------------------------------------------------------------*
  749. *       text
  750. *----------------------------------------------------------------------*
  751. *  -->  p1        text
  752. *  <--  p2        text
  753. *----------------------------------------------------------------------*
  754. FORM f_compute_sum .
  755. *------------------------------------------------------------------------------------*
  756. *-->计算收货商品金额 仍需交货金额 订单满足率。。。。
  757. *------------------------------------------------------------------------------------*
  758.   DATA:lv_precent TYPE p DECIMALS 4.
  759.   CASE 'X'.
  760.     WHEN pr_1.
  761.       gv_show_pec = 90.
  762.       MOVE : gv_show_pec TO gv_show_pec_c.
  763.       CONCATENATE '正在按照事业部汇总数据,请等待....完成率 =' gv_show_pec_c '%' INTO gv_show_str.
  764.       PERFORM f_show_clock USING gv_show_str gv_show_pec.
  765.       SORT gt_display_data BY stufe1.
  766.       DELETE gt_display_data WHERE stufe1 EQ space.
  767.       IF gt_display_data[] IS NOT INITIAL.
  768.         LOOP AT gt_display_data.
  769.           MOVE-CORRESPONDING gt_display_data TO gt_display_stufe1.
  770.           COLLECT gt_display_stufe1 INTO gt_display_stufe1[].
  771.         ENDLOOP.
  772.         LOOP AT gt_display_stufe1.
  773.           CLEAR lv_precent.
  774.           gt_display_sum-stufe1 = gt_display_stufe1-stufe1.
  775.           gt_display_sum-vtext1 = gt_display_stufe1-vtext1.
  776.           gt_display_sum-kzwi1_sum = gt_display_stufe1-kzwi1."采购商品金额
  777.           gt_display_sum-rece_goods = gt_display_stufe1-rece_goods."总收货商品金额
  778.           gt_display_sum-deli_goods = gt_display_stufe1-deli_goods."总仍需交货金额
  779.           lv_precent = gt_display_sum-rece_goods / gt_display_sum-kzwi1_sum."订单满足率
  780.           gt_display_sum-order_satis = lv_precent * 100.
  781.           CONCATENATE gt_display_sum-order_satis '%' INTO gt_display_sum-order_satis.
  782.           CASE 'X'.
  783.             WHEN pr_zb.
  784.               CLEAR lv_precent.
  785.               gt_display_sum-kzwi1_zb = gt_display_stufe1-kzwi1_zb."总部畅销品采购金额
  786.               gt_display_sum-rece_goods_zb = gt_display_stufe1-rece_goods_zb."总部畅销品收货金额
  787.               lv_precent = gt_display_sum-kzwi1_zb / gt_display_sum-kzwi1_sum."总部畅销品订单占比
  788.               gt_display_sum-sales_zb = lv_precent * 100.
  789.               CONCATENATE gt_display_sum-sales_zb '%' INTO gt_display_sum-sales_zb.
  790.               CLEAR lv_precent.
  791.               lv_precent = gt_display_sum-rece_goods_zb / gt_display_sum-rece_goods."总部畅销品收货占比
  792.               gt_display_sum-sales_re_zb = lv_precent * 100.
  793.               CONCATENATE gt_display_sum-sales_re_zb '%' INTO gt_display_sum-sales_re_zb.
  794.             WHEN pr_dc.
  795.               CLEAR lv_precent.
  796.               gt_display_sum-kzwi1_dc = gt_display_stufe1-kzwi1_dc."DC畅销品采购金额
  797.               gt_display_sum-rece_goods_dc = gt_display_stufe1-rece_goods_dc."DC畅销品收货金额
  798.               lv_precent = gt_display_sum-kzwi1_dc / gt_display_sum-kzwi1_sum."DC畅销品订单占比
  799.               gt_display_sum-sales_dc = lv_precent * 100.
  800.               CONCATENATE gt_display_sum-sales_dc '%' INTO gt_display_sum-sales_dc.
  801.               CLEAR lv_precent.
  802.               lv_precent = gt_display_sum-rece_goods_dc / gt_display_sum-rece_goods."DC畅销品收货占比
  803.               gt_display_sum-sales_re_dc = lv_precent * 100.
  804.               CONCATENATE gt_display_sum-sales_re_dc '%' INTO gt_display_sum-sales_re_dc.
  805.           ENDCASE.
  806.           APPEND gt_display_sum.
  807.           CLEAR:gt_display_stufe1,gt_display_sum,lv_precent.
  808.         ENDLOOP.
  809.         REFRESH gt_display_stufe1[].
  810.         CLEAR gt_display_stufe1.
  811.       ELSE.
  812.         MESSAGE s001(00) DISPLAY LIKE 'E' WITH '没有符和条件的事业部数据!'.
  813.         LEAVE LIST-PROCESSING.
  814.       ENDIF.

  815.     WHEN pr_2.
  816.       gv_show_pec = 90.
  817.       MOVE : gv_show_pec TO gv_show_pec_c.
  818.       CONCATENATE '正在按照事业部和产品层次汇总数据,请等待....完成率 =' gv_show_pec_c '%' INTO gv_show_str.
  819.       PERFORM f_show_clock USING gv_show_str gv_show_pec.
  820.       SORT gt_display_data BY stufe1 stufe2.
  821.       LOOP AT gt_display_data.
  822.         MOVE-CORRESPONDING gt_display_data TO gt_display_stufe.
  823.         COLLECT gt_display_stufe INTO gt_display_stufe[].
  824.       ENDLOOP.
  825.       SORT gt_display_stufe BY stufe1 stufe2.
  826.       LOOP AT gt_display_stufe.
  827.         gt_display_sum-stufe1 = gt_display_stufe-stufe1.
  828.         gt_display_sum-vtext1 = gt_display_stufe-vtext1.
  829.         gt_display_sum-stufe2 = gt_display_stufe-stufe2.
  830.         gt_display_sum-vtext2 = gt_display_stufe-vtext2.
  831.         gt_display_sum-kzwi1_sum = gt_display_stufe-kzwi1."采购商品金额
  832.         gt_display_sum-rece_goods = gt_display_stufe-rece_goods."总收货商品金额
  833.         gt_display_sum-deli_goods = gt_display_stufe-deli_goods."总仍需交货金额
  834.         lv_precent = gt_display_sum-rece_goods / gt_display_sum-kzwi1_sum."订单满足率
  835.         gt_display_sum-order_satis = lv_precent * 100.
  836.         CONCATENATE gt_display_sum-order_satis '%' INTO gt_display_sum-order_satis.
  837.         CASE 'X'.
  838.           WHEN pr_zb.
  839.             CLEAR lv_precent.
  840.             gt_display_sum-kzwi1_zb = gt_display_stufe-kzwi1_zb."总部畅销品采购金额
  841.             gt_display_sum-rece_goods_zb = gt_display_stufe-rece_goods_zb."总部畅销品收货金额
  842.             lv_precent = gt_display_sum-kzwi1_zb / gt_display_sum-kzwi1_sum."总部畅销品订单占比
  843.             gt_display_sum-sales_zb = lv_precent * 100.
  844.             CONCATENATE gt_display_sum-sales_zb '%' INTO gt_display_sum-sales_zb.
  845.             CLEAR lv_precent.
  846.             lv_precent = gt_display_sum-rece_goods_zb / gt_display_sum-rece_goods."总部畅销品收货占比
  847.             gt_display_sum-sales_re_zb = lv_precent * 100.
  848.             CONCATENATE gt_display_sum-sales_re_zb '%' INTO gt_display_sum-sales_re_zb.
  849.           WHEN pr_dc.
  850.             CLEAR lv_precent.
  851.             gt_display_sum-kzwi1_dc = gt_display_stufe-kzwi1_dc."DC畅销品采购金额
  852.             gt_display_sum-rece_goods_dc = gt_display_stufe-rece_goods_dc."DC畅销品收货金额
  853.             lv_precent = gt_display_sum-kzwi1_dc / gt_display_sum-kzwi1_sum."DC畅销品订单占比
  854.             gt_display_sum-sales_dc = lv_precent * 100.
  855.             CONCATENATE gt_display_sum-sales_dc '%' INTO gt_display_sum-sales_dc.
  856.             CLEAR lv_precent.
  857.             lv_precent = gt_display_sum-rece_goods_dc / gt_display_sum-rece_goods."DC畅销品收货占比
  858.             gt_display_sum-sales_re_dc = lv_precent * 100.
  859.             CONCATENATE gt_display_sum-sales_re_dc '%' INTO gt_display_sum-sales_re_dc.
  860.         ENDCASE.
  861.         APPEND gt_display_sum.
  862.         CLEAR:gt_display_stufe,gt_display_sum,lv_precent.
  863.       ENDLOOP.
  864.       REFRESH gt_display_stufe[].
  865.       CLEAR gt_display_stufe.
  866.     WHEN pr_3.
  867.       gv_show_pec = 90.
  868.       MOVE : gv_show_pec TO gv_show_pec_c.
  869.       CONCATENATE '正在按照大区汇总数据,请等待....完成率 =' gv_show_pec_c '%' INTO gv_show_str.
  870.       PERFORM f_show_clock USING gv_show_str gv_show_pec.
  871.       SORT gt_display_data BY bzirk.
  872.       LOOP AT gt_display_data.
  873.         MOVE-CORRESPONDING gt_display_data TO gt_display_bzirk.
  874.         COLLECT gt_display_bzirk INTO gt_display_bzirk[].
  875.       ENDLOOP.
  876.       SORT gt_display_bzirk BY bzirk.
  877.       LOOP AT gt_display_bzirk.
  878.         gt_display_sum-bzirk = gt_display_bzirk-bzirk.
  879.         gt_display_sum-bztxt = gt_display_bzirk-bztxt.
  880.         gt_display_sum-kzwi1_sum = gt_display_bzirk-kzwi1."采购商品金额
  881.         gt_display_sum-rece_goods = gt_display_bzirk-rece_goods."总收货商品金额
  882.         gt_display_sum-deli_goods = gt_display_bzirk-deli_goods."总仍需交货金额
  883.         lv_precent = gt_display_sum-rece_goods / gt_display_sum-kzwi1_sum."订单满足率
  884.         gt_display_sum-order_satis = lv_precent * 100.
  885.         CONCATENATE gt_display_sum-order_satis '%' INTO gt_display_sum-order_satis.
  886.         CASE 'X'.
  887.           WHEN pr_zb.
  888.             CLEAR lv_precent.
  889.             gt_display_sum-kzwi1_zb = gt_display_bzirk-kzwi1_zb."总部畅销品采购金额
  890.             gt_display_sum-rece_goods_zb = gt_display_bzirk-rece_goods_zb."总部畅销品收货金额
  891.             lv_precent = gt_display_sum-kzwi1_zb / gt_display_sum-kzwi1_sum."总部畅销品订单占比
  892.             gt_display_sum-sales_zb = lv_precent * 100.
  893.             CONCATENATE gt_display_sum-sales_zb '%' INTO gt_display_sum-sales_zb.
  894.             CLEAR lv_precent.
  895.             lv_precent = gt_display_sum-rece_goods_zb / gt_display_sum-rece_goods."总部畅销品收货占比
  896.             gt_display_sum-sales_re_zb = lv_precent * 100.
  897.             CONCATENATE gt_display_sum-sales_re_zb '%' INTO gt_display_sum-sales_re_zb.
  898.           WHEN pr_dc.
  899.             CLEAR lv_precent.
  900.             gt_display_sum-kzwi1_dc = gt_display_bzirk-kzwi1_dc."DC畅销品采购金额
  901.             gt_display_sum-rece_goods_dc = gt_display_bzirk-rece_goods_dc."DC畅销品收货金额
  902.             lv_precent = gt_display_sum-kzwi1_dc / gt_display_sum-kzwi1_sum."DC畅销品订单占比
  903.             gt_display_sum-sales_dc = lv_precent * 100.
  904.             CONCATENATE gt_display_sum-sales_dc '%' INTO gt_display_sum-sales_dc.
  905.             CLEAR lv_precent.
  906.             lv_precent = gt_display_sum-rece_goods_dc / gt_display_sum-rece_goods."DC畅销品收货占比
  907.             gt_display_sum-sales_re_dc = lv_precent * 100.
  908.             CONCATENATE gt_display_sum-sales_re_dc '%' INTO gt_display_sum-sales_re_dc.
  909.         ENDCASE.
  910.         APPEND gt_display_sum.
  911.         CLEAR:gt_display_bzirk,gt_display_sum,lv_precent.
  912.       ENDLOOP.
  913.       REFRESH gt_display_bzirk[].
  914.       CLEAR gt_display_bzirk.
  915.     WHEN pr_4.
  916.       gv_show_pec = 90.
  917.       MOVE : gv_show_pec TO gv_show_pec_c.
  918.       CONCATENATE '正在按照大区和事业部汇总数据,请等待....完成率 =' gv_show_pec_c '%' INTO gv_show_str.
  919.       PERFORM f_show_clock USING gv_show_str gv_show_pec.
  920.       SORT gt_display_data BY stufe1.
  921.       DELETE gt_display_data WHERE stufe1 EQ space.
  922.       IF gt_display_data[] IS NOT INITIAL.
  923.         SORT gt_display_data BY bzirk stufe1.
  924.         LOOP AT gt_display_data.
  925.           MOVE-CORRESPONDING gt_display_data TO gt_display_bzirk_stufe1.
  926.           COLLECT gt_display_bzirk_stufe1 INTO gt_display_bzirk_stufe1[].
  927.         ENDLOOP.
  928.         REFRESH gt_display_data[].
  929.         CLEAR  gt_display_data.
  930.         SORT gt_display_bzirk_stufe1 BY bzirk stufe1.
  931.         LOOP AT gt_display_bzirk_stufe1.
  932.           gt_display_sum-bzirk = gt_display_bzirk_stufe1-bzirk.
  933.           gt_display_sum-bztxt = gt_display_bzirk_stufe1-bztxt.
  934.           gt_display_sum-stufe1 = gt_display_bzirk_stufe1-stufe1.
  935.           gt_display_sum-vtext1 = gt_display_bzirk_stufe1-vtext1.
  936.           gt_display_sum-kzwi1_sum = gt_display_bzirk_stufe1-kzwi1."采购商品金额
  937.           gt_display_sum-rece_goods = gt_display_bzirk_stufe1-rece_goods."总收货商品金额
  938.           gt_display_sum-deli_goods = gt_display_bzirk_stufe1-deli_goods."总仍需交货金额
  939.           lv_precent = gt_display_sum-rece_goods / gt_display_sum-kzwi1_sum."订单满足率
  940.           gt_display_sum-order_satis = lv_precent * 100.
  941.           CONCATENATE gt_display_sum-order_satis '%' INTO gt_display_sum-order_satis.
  942.           CASE 'X'.
  943.             WHEN pr_zb.
  944.               CLEAR lv_precent.
  945.               gt_display_sum-kzwi1_zb = gt_display_bzirk_stufe1-kzwi1_zb."总部畅销品采购金额
  946.               gt_display_sum-rece_goods_zb = gt_display_bzirk_stufe1-rece_goods_zb."总部畅销品收货金额
  947.               lv_precent = gt_display_sum-kzwi1_zb / gt_display_sum-kzwi1_sum."总部畅销品订单占比
  948.               gt_display_sum-sales_zb = lv_precent * 100.
  949.               CONCATENATE gt_display_sum-sales_zb '%' INTO gt_display_sum-sales_zb.
  950.               CLEAR lv_precent.
  951.               lv_precent = gt_display_sum-rece_goods_zb / gt_display_sum-rece_goods."总部畅销品收货占比
  952.               gt_display_sum-sales_re_zb = lv_precent * 100.
  953.               CONCATENATE gt_display_sum-sales_re_zb '%' INTO gt_display_sum-sales_re_zb.
  954.             WHEN pr_dc.
  955.               CLEAR lv_precent.
  956.               gt_display_sum-kzwi1_dc = gt_display_bzirk_stufe1-kzwi1_dc."DC畅销品采购金额
  957.               gt_display_sum-rece_goods_dc = gt_display_bzirk_stufe1-rece_goods_dc."DC畅销品收货金额
  958.               lv_precent = gt_display_sum-kzwi1_dc / gt_display_sum-kzwi1_sum."DC畅销品订单占比
  959.               gt_display_sum-sales_dc = lv_precent * 100.
  960.               CONCATENATE gt_display_sum-sales_dc '%' INTO gt_display_sum-sales_dc.
  961.               CLEAR lv_precent.
  962.               lv_precent = gt_display_sum-rece_goods_dc / gt_display_sum-rece_goods."DC畅销品收货占比
  963.               gt_display_sum-sales_re_dc = lv_precent * 100.
  964.               CONCATENATE gt_display_sum-sales_re_dc '%' INTO gt_display_sum-sales_re_dc.
  965.           ENDCASE.
  966.           APPEND gt_display_sum.
  967.           CLEAR:gt_display_bzirk_stufe1,gt_display_sum,lv_precent.
  968.         ENDLOOP.
  969.         REFRESH gt_display_bzirk_stufe1[].
  970.         CLEAR gt_display_bzirk_stufe1.
  971.       ELSE.
  972.         MESSAGE s001(00) DISPLAY LIKE 'E' WITH '没有符和条件的事业部数据!'.
  973.         LEAVE LIST-PROCESSING.
  974.       ENDIF.
  975.   ENDCASE.
  976. ENDFORM.                    " f_compute_sum
  977. *&---------------------------------------------------------------------*
  978. *&      Form  f_alv_display
  979. *&---------------------------------------------------------------------*
  980. *       ALV显示多维度汇总结果,共用4*2=8种效果
  981. *----------------------------------------------------------------------*
  982. FORM f_alv_display .
  983.   gv_show_pec = 100.
  984.   MOVE : gv_show_pec TO gv_show_pec_c.
  985.   CONCATENATE '正在按照汇总维度展现报表,请等待....完成率 =' gv_show_pec_c '%' INTO gv_show_str.
  986.   PERFORM f_show_clock USING gv_show_str gv_show_pec.
  987.   DATA: lt_fieldcat_lvc TYPE lvc_t_fcat.
  988.   DATA: ls_layout_lvc TYPE lvc_s_layo.
  989.   ls_layout_lvc-cwidth_opt = 'X'.
  990.   CASE 'X'.
  991.     WHEN pr_1.
  992.       CASE 'X'.
  993.         WHEN pr_zb.
  994.           PERFORM f_fieldcate_lvc TABLES lt_fieldcat_lvc  USING '1' 'STUFE1' '事业部'.
  995.           PERFORM f_fieldcate_lvc TABLES lt_fieldcat_lvc  USING '2' 'VTEXT1' '事业部描述'.
  996.           PERFORM f_fieldcate_lvc TABLES lt_fieldcat_lvc  USING '3' 'KZWI1_SUM' '采购商品金额'.
  997.           PERFORM f_fieldcate_lvc TABLES lt_fieldcat_lvc  USING '4' 'RECE_GOODS' '收货商品金额'.
  998.           PERFORM f_fieldcate_lvc TABLES lt_fieldcat_lvc  USING '5' 'DELI_GOODS' '仍需交货金额'.
  999.           PERFORM f_fieldcate_lvc TABLES lt_fieldcat_lvc  USING '6' 'ORDER_SATIS' '订单满足率'.
  1000.           PERFORM f_fieldcate_lvc TABLES lt_fieldcat_lvc  USING '7' 'KZWI1_ZB' '总部畅销品采购金额'.
  1001.           PERFORM f_fieldcate_lvc TABLES lt_fieldcat_lvc  USING '8' 'SALES_ZB' '总部畅销品订单占比'.
  1002.           PERFORM f_fieldcate_lvc TABLES lt_fieldcat_lvc  USING '9' 'RECE_GOODS_ZB' '总部畅销品收货金额'.
  1003.           PERFORM f_fieldcate_lvc TABLES lt_fieldcat_lvc  USING '10' 'SALES_RE_ZB' '总部畅销品收货占比'.
  1004.         WHEN pr_dc.
  1005.           PERFORM f_fieldcate_lvc TABLES lt_fieldcat_lvc  USING '1' 'STUFE1' '事业部'.
  1006.           PERFORM f_fieldcate_lvc TABLES lt_fieldcat_lvc  USING '2' 'VTEXT1' '事业部描述'.
  1007.           PERFORM f_fieldcate_lvc TABLES lt_fieldcat_lvc  USING '3' 'KZWI1_SUM' '采购商品金额'.
  1008.           PERFORM f_fieldcate_lvc TABLES lt_fieldcat_lvc  USING '4' 'RECE_GOODS' '收货商品金额'.
  1009.           PERFORM f_fieldcate_lvc TABLES lt_fieldcat_lvc  USING '5' 'DELI_GOODS' '仍需交货金额'.
  1010.           PERFORM f_fieldcate_lvc TABLES lt_fieldcat_lvc  USING '6' 'ORDER_SATIS' '订单满足率'.
  1011.           PERFORM f_fieldcate_lvc TABLES lt_fieldcat_lvc  USING '7' 'KZWI1_DC' 'DC畅销品采购金额'.
  1012.           PERFORM f_fieldcate_lvc TABLES lt_fieldcat_lvc  USING '8' 'SALES_DC' 'DC畅销品订单占比'.
  1013.           PERFORM f_fieldcate_lvc TABLES lt_fieldcat_lvc  USING '9' 'RECE_GOODS_DC' 'DC畅销品收货金额'.
  1014.           PERFORM f_fieldcate_lvc TABLES lt_fieldcat_lvc  USING '10' 'SALES_RE_DC' 'DC畅销品收货占比'.
  1015.       ENDCASE.
  1016.     WHEN pr_2.
  1017.       CASE 'X'.
  1018.         WHEN pr_zb.
  1019.           PERFORM f_fieldcate_lvc TABLES lt_fieldcat_lvc  USING '1' 'STUFE1' '事业部'.
  1020.           PERFORM f_fieldcate_lvc TABLES lt_fieldcat_lvc  USING '2' 'VTEXT1' '事业部描述'.
  1021.           PERFORM f_fieldcate_lvc TABLES lt_fieldcat_lvc  USING '3' 'STUFE2' '产品层次'.
  1022.           PERFORM f_fieldcate_lvc TABLES lt_fieldcat_lvc  USING '4' 'VTEXT2' '产品层次描述'.
  1023.           PERFORM f_fieldcate_lvc TABLES lt_fieldcat_lvc  USING '5' 'KZWI1_SUM' '采购商品金额'.
  1024.           PERFORM f_fieldcate_lvc TABLES lt_fieldcat_lvc  USING '6' 'RECE_GOODS' '收货商品金额'.
  1025.           PERFORM f_fieldcate_lvc TABLES lt_fieldcat_lvc  USING '7' 'DELI_GOODS' '仍需交货金额'.
  1026.           PERFORM f_fieldcate_lvc TABLES lt_fieldcat_lvc  USING '8' 'ORDER_SATIS' '订单满足率'.
  1027.           PERFORM f_fieldcate_lvc TABLES lt_fieldcat_lvc  USING '9' 'KZWI1_ZB' '总部畅销品采购金额'.
  1028.           PERFORM f_fieldcate_lvc TABLES lt_fieldcat_lvc  USING '10' 'SALES_ZB' '总部畅销品订单占比'.
  1029.           PERFORM f_fieldcate_lvc TABLES lt_fieldcat_lvc  USING '11' 'RECE_GOODS_ZB' '总部畅销品收货金额'.
  1030.           PERFORM f_fieldcate_lvc TABLES lt_fieldcat_lvc  USING '12' 'SALES_RE_ZB' '总部畅销品收货占比'.
  1031.         WHEN pr_dc.
  1032.           PERFORM f_fieldcate_lvc TABLES lt_fieldcat_lvc  USING '1' 'STUFE1' '事业部'.
  1033.           PERFORM f_fieldcate_lvc TABLES lt_fieldcat_lvc  USING '2' 'VTEXT1' '事业部描述'.
  1034.           PERFORM f_fieldcate_lvc TABLES lt_fieldcat_lvc  USING '3' 'STUFE2' '产品层次'.
  1035.           PERFORM f_fieldcate_lvc TABLES lt_fieldcat_lvc  USING '4' 'VTEXT2' '产品层次描述'.
  1036.           PERFORM f_fieldcate_lvc TABLES lt_fieldcat_lvc  USING '5' 'KZWI1_SUM' '采购商品金额'.
  1037.           PERFORM f_fieldcate_lvc TABLES lt_fieldcat_lvc  USING '6' 'RECE_GOODS' '收货商品金额'.
  1038.           PERFORM f_fieldcate_lvc TABLES lt_fieldcat_lvc  USING '7' 'DELI_GOODS' '仍需交货金额'.
  1039.           PERFORM f_fieldcate_lvc TABLES lt_fieldcat_lvc  USING '8' 'ORDER_SATIS' '订单满足率'.
  1040.           PERFORM f_fieldcate_lvc TABLES lt_fieldcat_lvc  USING '9' 'KZWI1_DC' 'DC畅销品采购金额'.
  1041.           PERFORM f_fieldcate_lvc TABLES lt_fieldcat_lvc  USING '10' 'SALES_DC' 'DC畅销品订单占比'.
  1042.           PERFORM f_fieldcate_lvc TABLES lt_fieldcat_lvc  USING '11' 'RECE_GOODS_DC' 'DC畅销品收货金额'.
  1043.           PERFORM f_fieldcate_lvc TABLES lt_fieldcat_lvc  USING '12' 'SALES_RE_DC' 'DC畅销品收货占比'.
  1044.       ENDCASE.
  1045.     WHEN pr_3.
  1046.       CASE 'X'.
  1047.         WHEN pr_zb.
  1048.           PERFORM f_fieldcate_lvc TABLES lt_fieldcat_lvc  USING '1' 'BZIRK' '大区'.
  1049.           PERFORM f_fieldcate_lvc TABLES lt_fieldcat_lvc  USING '2' 'BZTXT' '大区描述'.
  1050.           PERFORM f_fieldcate_lvc TABLES lt_fieldcat_lvc  USING '3' 'KZWI1_SUM' '采购商品金额'.
  1051.           PERFORM f_fieldcate_lvc TABLES lt_fieldcat_lvc  USING '4' 'RECE_GOODS' '收货商品金额'.
  1052.           PERFORM f_fieldcate_lvc TABLES lt_fieldcat_lvc  USING '5' 'DELI_GOODS' '仍需交货金额'.
  1053.           PERFORM f_fieldcate_lvc TABLES lt_fieldcat_lvc  USING '6' 'ORDER_SATIS' '订单满足率'.
  1054.           PERFORM f_fieldcate_lvc TABLES lt_fieldcat_lvc  USING '7' 'KZWI1_ZB' '总部畅销品采购金额'.
  1055.           PERFORM f_fieldcate_lvc TABLES lt_fieldcat_lvc  USING '8' 'SALES_ZB' '总部畅销品订单占比'.
  1056.           PERFORM f_fieldcate_lvc TABLES lt_fieldcat_lvc  USING '9' 'RECE_GOODS_ZB' '总部畅销品收货金额'.
  1057.           PERFORM f_fieldcate_lvc TABLES lt_fieldcat_lvc  USING '10' 'SALES_RE_ZB' '总部畅销品收货占比'.
  1058.         WHEN pr_dc.
  1059.           PERFORM f_fieldcate_lvc TABLES lt_fieldcat_lvc  USING '1' 'BZIRK' '大区'.
  1060.           PERFORM f_fieldcate_lvc TABLES lt_fieldcat_lvc  USING '2' 'BZTXT' '大区描述'.
  1061.           PERFORM f_fieldcate_lvc TABLES lt_fieldcat_lvc  USING '3' 'KZWI1_SUM' '采购商品金额'.
  1062.           PERFORM f_fieldcate_lvc TABLES lt_fieldcat_lvc  USING '4' 'RECE_GOODS' '收货商品金额'.
  1063.           PERFORM f_fieldcate_lvc TABLES lt_fieldcat_lvc  USING '5' 'DELI_GOODS' '仍需交货金额'.
  1064.           PERFORM f_fieldcate_lvc TABLES lt_fieldcat_lvc  USING '6' 'ORDER_SATIS' '订单满足率'.
  1065.           PERFORM f_fieldcate_lvc TABLES lt_fieldcat_lvc  USING '7' 'KZWI1_DC' 'DC畅销品采购金额'.
  1066.           PERFORM f_fieldcate_lvc TABLES lt_fieldcat_lvc  USING '8' 'SALES_DC' 'DC畅销品订单占比'.
  1067.           PERFORM f_fieldcate_lvc TABLES lt_fieldcat_lvc  USING '9' 'RECE_GOODS_DC' 'DC畅销品收货金额'.
  1068.           PERFORM f_fieldcate_lvc TABLES lt_fieldcat_lvc  USING '10' 'SALES_RE_DC' 'DC畅销品收货占比'.
  1069.       ENDCASE.
  1070.     WHEN pr_4.
  1071.       CASE 'X'.
  1072.         WHEN pr_zb.
  1073.           PERFORM f_fieldcate_lvc TABLES lt_fieldcat_lvc  USING '1' 'BZIRK' '大区'.
  1074.           PERFORM f_fieldcate_lvc TABLES lt_fieldcat_lvc  USING '2' 'BZTXT' '大区描述'.
  1075.           PERFORM f_fieldcate_lvc TABLES lt_fieldcat_lvc  USING '3' 'STUFE1' '事业部'.
  1076.           PERFORM f_fieldcate_lvc TABLES lt_fieldcat_lvc  USING '4' 'VTEXT1' '事业部描述'.
  1077.           PERFORM f_fieldcate_lvc TABLES lt_fieldcat_lvc  USING '5' 'KZWI1_SUM' '采购商品金额'.
  1078.           PERFORM f_fieldcate_lvc TABLES lt_fieldcat_lvc  USING '6' 'RECE_GOODS' '收货商品金额'.
  1079.           PERFORM f_fieldcate_lvc TABLES lt_fieldcat_lvc  USING '7' 'DELI_GOODS' '仍需交货金额'.
  1080.           PERFORM f_fieldcate_lvc TABLES lt_fieldcat_lvc  USING '8' 'ORDER_SATIS' '订单满足率'.
  1081.           PERFORM f_fieldcate_lvc TABLES lt_fieldcat_lvc  USING '9' 'KZWI1_ZB' '总部畅销品采购金额'.
  1082.           PERFORM f_fieldcate_lvc TABLES lt_fieldcat_lvc  USING '10' 'SALES_ZB' '总部畅销品订单占比'.
  1083.           PERFORM f_fieldcate_lvc TABLES lt_fieldcat_lvc  USING '11' 'RECE_GOODS_ZB' '总部畅销品收货金额'.
  1084.           PERFORM f_fieldcate_lvc TABLES lt_fieldcat_lvc  USING '12' 'SALES_RE_ZB' '总部畅销品收货占比'.
  1085.         WHEN pr_dc.
  1086.           PERFORM f_fieldcate_lvc TABLES lt_fieldcat_lvc  USING '1' 'BZIRK' '大区'.
  1087.           PERFORM f_fieldcate_lvc TABLES lt_fieldcat_lvc  USING '2' 'BZTXT' '大区描述'.
  1088.           PERFORM f_fieldcate_lvc TABLES lt_fieldcat_lvc  USING '3' 'STUFE1' '事业部'.
  1089.           PERFORM f_fieldcate_lvc TABLES lt_fieldcat_lvc  USING '4' 'VTEXT1' '事业部描述'.
  1090.           PERFORM f_fieldcate_lvc TABLES lt_fieldcat_lvc  USING '5' 'KZWI1_SUM' '采购商品金额'.
  1091.           PERFORM f_fieldcate_lvc TABLES lt_fieldcat_lvc  USING '6' 'RECE_GOODS' '收货商品金额'.
  1092.           PERFORM f_fieldcate_lvc TABLES lt_fieldcat_lvc  USING '7' 'DELI_GOODS' '仍需交货金额'.
  1093.           PERFORM f_fieldcate_lvc TABLES lt_fieldcat_lvc  USING '8' 'ORDER_SATIS' '订单满足率'.
  1094.           PERFORM f_fieldcate_lvc TABLES lt_fieldcat_lvc  USING '9' 'KZWI1_DC' 'DC畅销品采购金额'.
  1095.           PERFORM f_fieldcate_lvc TABLES lt_fieldcat_lvc  USING '10' 'SALES_DC' 'DC畅销品订单占比'.
  1096.           PERFORM f_fieldcate_lvc TABLES lt_fieldcat_lvc  USING '11' 'RECE_GOODS_DC' 'DC畅销品收货金额'.
  1097.           PERFORM f_fieldcate_lvc TABLES lt_fieldcat_lvc  USING '12' 'SALES_RE_DC' 'DC畅销品收货占比'.
  1098.       ENDCASE.
  1099.   ENDCASE.


  1100.   CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
  1101.     EXPORTING
  1102. *   I_INTERFACE_CHECK                 = ' '
  1103. *   I_BYPASSING_BUFFER                =
  1104. *   I_BUFFER_ACTIVE                   =
  1105. *   I_CALLBACK_PROGRAM                = ' '
  1106. *   I_CALLBACK_PF_STATUS_SET          = ' '
  1107. *   I_CALLBACK_USER_COMMAND           = ' '
  1108. *   I_CALLBACK_TOP_OF_PAGE            = ' '
  1109. *   I_CALLBACK_HTML_TOP_OF_PAGE       = ' '
  1110. *   I_CALLBACK_HTML_END_OF_LIST       = ' '
  1111. *   I_STRUCTURE_NAME                  =
  1112. *   I_BACKGROUND_ID                   = ' '
  1113. *   I_GRID_TITLE                      =
  1114. *   I_GRID_SETTINGS                   =
  1115.     is_layout_lvc                     = ls_layout_lvc
  1116.     it_fieldcat_lvc                   = lt_fieldcat_lvc
  1117. * IMPORTING
  1118. *   E_EXIT_CAUSED_BY_CALLER           =
  1119. *   ES_EXIT_CAUSED_BY_USER            =
  1120.     TABLES
  1121.       t_outtab                          = gt_display_sum[]
  1122. * EXCEPTIONS
  1123. *   PROGRAM_ERROR                     = 1
  1124. *   OTHERS                            = 2
  1125.             .
  1126.   REFRESH gt_display_sum[].
  1127.   CLEAR gt_display_sum.
  1128. ENDFORM.                    " f_alv_display
  1129. *&---------------------------------------------------------------------*
  1130. *&      Form  f_fieldcate_lvc
  1131. *&---------------------------------------------------------------------*
  1132. *       alv的fieldcate子过程
  1133. *----------------------------------------------------------------------*
  1134. FORM f_fieldcate_lvc TABLES pt_fieldcat_lvc TYPE lvc_t_fcat
  1135.                      USING p_col_pos TYPE i
  1136.                            p_fieldname TYPE c
  1137.                            p_scrtext_m TYPE c.
  1138.   DATA: ps_fieldcat_lvc TYPE lvc_s_fcat.
  1139.   CLEAR ps_fieldcat_lvc.
  1140.   ps_fieldcat_lvc-col_pos     = p_col_pos.
  1141.   ps_fieldcat_lvc-fieldname   = p_fieldname.
  1142.   ps_fieldcat_lvc-scrtext_m   = p_scrtext_m.
  1143.   APPEND ps_fieldcat_lvc TO pt_fieldcat_lvc.
  1144. ENDFORM.                    " f_fieldcate_lvc
复制代码



回复

使用道具 举报

快速回帖

本版积分规则
您需要登录后才可以回帖 登录 | 注册有礼

快速回复 返回顶部 返回列表