zoukankan      html  css  js  c++  java
  • ABAP-成本报表案例

       1 ********************************************************************
       2 * 事务代码:                                                        *
       3 * 程序名称:ZCOR_013                                                *
       4 * 程序目的:生产成本明细表                                       *
       5 * 使用变式:                                                        *
       6 * 设 计 人:DONGDONG                                                 *
       7 *(修改日志)-------------------------------------------------------- *
       8 * 日志号   修改人     修改时间     修改说明              传输号码     *
       9 *  ----    ------    ------    -----------           -----------
      10 *  001     DONGDONG    20210224     新建                DEVK906724
      11 ********************************************************************
      12 REPORT zcor_013.
      13 ************************************************************************
      14 * TABLES
      15 ************************************************************************
      16 TABLES: mara,mseg,zv_dd_line.
      17 TABLES: sscrfields.
      18 TYPE-POOLS: slis,vrm. "声明类型池,使slis_t_specialcol_alv所在的包被包含进来
      19 ************************************************************************
      20 * 类型定义
      21 ************************************************************************
      22 TYPES: BEGIN OF ty_alv,
      23          bukrs      TYPE mseg-bukrs, "公司
      24          werks      TYPE mseg-werks, "工厂
      25          budat_mkpf TYPE mseg-budat_mkpf, "过账日期
      26          "bwart      TYPE mseg-bwart, "移动类型
      27          matnr      TYPE mseg-matnr, "物料
      28          groes      TYPE mara-groes, "物料的大小量纲
      29          maktx      TYPE makt-maktx, "物料描述
      30          mtart      TYPE mara-mtart, "物料类型
      31          shkzg      TYPE mseg-shkzg, "借贷标识
      32          mblnr      TYPE mseg-mblnr, "物料凭证
      33          mjahr      TYPE mseg-mjahr, "物料凭证年度
      34          zeile      TYPE mseg-zeile, "物料凭证行
      35          smbln      TYPE mseg-smbln, "被冲销凭证
      36          sjahr      TYPE mseg-sjahr, "被冲销凭证年度
      37          smblp      TYPE mseg-smblp, "被冲销凭证行
      38          aufnr      TYPE mseg-aufnr, "生产订单号
      39          kostl      TYPE mseg-kostl, "成本中心
      40          verid_nd   TYPE zv_dd_line-verid_nd, "生产版本
      41          text1      TYPE zv_dd_line-text1, "生产版本描述
      42          dmbtr      TYPE mseg-dmbtr, "金额
      43          waers      TYPE mseg-waers, "货币单位
      44          menge      TYPE mseg-menge, "库存单位数量
      45          meins      TYPE mseg-meins, "库存单位
      46 
      47        END OF ty_alv.
      48 
      49 TYPES: BEGIN OF ty_show,
      50          bukrs      TYPE mseg-bukrs, "公司
      51          werks      TYPE mseg-werks, "工厂
      52          budat_mkpf TYPE mseg-budat_mkpf, "过账日期
      53          matnr      TYPE mseg-matnr, "物料
      54          groes      TYPE mara-groes, "物料的大小量纲
      55          maktx      TYPE makt-maktx, "物料描述
      56          mtart      TYPE mara-mtart, "物料类型
      57          aufnr      TYPE mseg-aufnr, "生产订单号
      58          kostl      TYPE mseg-kostl, "成本中心
      59          verid_nd   TYPE zv_dd_line-verid_nd, "生产版本
      60          text1      TYPE zv_dd_line-text1, "生产版本描述
      61          dmbtr      TYPE mseg-dmbtr, "金额
      62          waers      TYPE mseg-waers, "货币单位
      63          menge      TYPE mseg-menge, "库存单位数量
      64          meins      TYPE mseg-meins, "库存单位
      65 
      66        END OF ty_show.
      67 
      68 TYPES: BEGIN OF ty_final,
      69          bukrs    TYPE mseg-bukrs, "公司
      70          werks    TYPE mseg-werks, "工厂
      71          year     TYPE gjahr,
      72          month    TYPE co_perio, "会计期间
      73          "budat_mkpf TYPE mseg-budat_mkpf, "过账日期
      74          matnr    TYPE mseg-matnr, "物料
      75          groes    TYPE mara-groes, "物料的大小量纲
      76          width    TYPE mara-groes, "厚度
      77          maktx    TYPE makt-maktx, "物料描述
      78          "mtart      TYPE mara-mtart, "物料类型
      79          aufnr    TYPE mseg-aufnr, "生产订单号
      80          kostl    TYPE mseg-kostl, "成本中心
      81          verid_nd TYPE zv_dd_line-verid_nd, "生产版本
      82          text1    TYPE zv_dd_line-text1, "生产版本描述
      83          dmbtr    TYPE mseg-dmbtr, "金额
      84          waers    TYPE mseg-waers, "货币单位
      85          menge    TYPE mseg-menge, "库存单位数量
      86          meins    TYPE mseg-meins, "库存单位
      87          menge_zx TYPE p DECIMALS 4, "重箱
      88 
      89          yl001mg  TYPE mseg-menge, "原料1数量
      90          yl001ms  TYPE mseg-meins, "原料1数量单位
      91          yl001dr  TYPE mseg-dmbtr, "原料1金额
      92          yl001ws  TYPE mseg-waers, "原料1金额单位
      93 
      94          yl002mg  TYPE mseg-menge, "原料1数量
      95          yl002ms  TYPE mseg-meins, "原料1数量单位
      96          yl002dr  TYPE mseg-dmbtr, "原料1金额
      97          yl002ws  TYPE mseg-waers, "原料1金额单位
      98 
      99          yl003mg  TYPE mseg-menge, "原料1数量
     100          yl003ms  TYPE mseg-meins, "原料1数量单位
     101          yl003dr  TYPE mseg-dmbtr, "原料1金额
     102          yl003ws  TYPE mseg-waers, "原料1金额单位
     103 
     104          yl004mg  TYPE mseg-menge, "原料1数量
     105          yl004ms  TYPE mseg-meins, "原料1数量单位
     106          yl004dr  TYPE mseg-dmbtr, "原料1金额
     107          yl004ws  TYPE mseg-waers, "原料1金额单位
     108 
     109          yl005mg  TYPE mseg-menge, "原料1数量
     110          yl005ms  TYPE mseg-meins, "原料1数量单位
     111          yl005dr  TYPE mseg-dmbtr, "原料1金额
     112          yl005ws  TYPE mseg-waers, "原料1金额单位
     113 
     114          yl006mg  TYPE mseg-menge, "原料1数量
     115          yl006ms  TYPE mseg-meins, "原料1数量单位
     116          yl006dr  TYPE mseg-dmbtr, "原料1金额
     117          yl006ws  TYPE mseg-waers, "原料1金额单位
     118 
     119          yl007mg  TYPE mseg-menge, "原料1数量
     120          yl007ms  TYPE mseg-meins, "原料1数量单位
     121          yl007dr  TYPE mseg-dmbtr, "原料1金额
     122          yl007ws  TYPE mseg-waers, "原料1金额单位
     123 
     124          yl008mg  TYPE mseg-menge, "原料1数量
     125          yl008ms  TYPE mseg-meins, "原料1数量单位
     126          yl008dr  TYPE mseg-dmbtr, "原料1金额
     127          yl008ws  TYPE mseg-waers, "原料1金额单位
     128 
     129          yl009mg  TYPE mseg-menge, "原料1数量
     130          yl009ms  TYPE mseg-meins, "原料1数量单位
     131          yl009dr  TYPE mseg-dmbtr, "原料1金额
     132          yl009ws  TYPE mseg-waers, "原料1金额单位
     133 
     134          yl010mg  TYPE mseg-menge, "原料1数量
     135          yl010ms  TYPE mseg-meins, "原料1数量单位
     136          yl010dr  TYPE mseg-dmbtr, "原料1金额
     137          yl010ws  TYPE mseg-waers, "原料1金额单位
     138 
     139          rl001mg  TYPE mseg-menge, "燃料1数量
     140          rl001ms  TYPE mseg-meins, "燃料1数量单位
     141          rl001dr  TYPE mseg-dmbtr, "燃料1金额
     142          rl001ws  TYPE mseg-waers, "燃料1金额单位
     143 
     144          rl002mg  TYPE mseg-menge, "燃料1数量
     145          rl002ms  TYPE mseg-meins, "燃料1数量单位
     146          rl002dr  TYPE mseg-dmbtr, "燃料1金额
     147          rl002ws  TYPE mseg-waers, "燃料1金额单位
     148 
     149          rl003mg  TYPE mseg-menge, "燃料1数量
     150          rl003ms  TYPE mseg-meins, "燃料1数量单位
     151          rl003dr  TYPE mseg-dmbtr, "燃料1金额
     152          rl003ws  TYPE mseg-waers, "燃料1金额单位
     153 
     154          rl004mg  TYPE mseg-menge, "燃料1数量
     155          rl004ms  TYPE mseg-meins, "燃料1数量单位
     156          rl004dr  TYPE mseg-dmbtr, "燃料1金额
     157          rl004ws  TYPE mseg-waers, "燃料1金额单位
     158 
     159          cb001mg  TYPE mseg-menge, "成本要素1数量
     160          cb001ms  TYPE mseg-meins, "成本要素1数量单位
     161          cb001dr  TYPE mseg-dmbtr, "成本要素1金额
     162          cb001ws  TYPE mseg-waers, "成本要素1金额单位
     163 
     164          cb002mg  TYPE mseg-menge, "成本要素1数量
     165          cb002ms  TYPE mseg-meins, "成本要素1数量单位
     166          cb002dr  TYPE mseg-dmbtr, "成本要素1金额
     167          cb002ws  TYPE mseg-waers, "成本要素1金额单位
     168 
     169          cb003mg  TYPE mseg-menge, "成本要素1数量
     170          cb003ms  TYPE mseg-meins, "成本要素1数量单位
     171          cb003dr  TYPE mseg-dmbtr, "成本要素1金额
     172          cb003ws  TYPE mseg-waers, "成本要素1金额单位
     173 
     174          cb004mg  TYPE mseg-menge, "成本要素1数量
     175          cb004ms  TYPE mseg-meins, "成本要素1数量单位
     176          cb004dr  TYPE mseg-dmbtr, "成本要素1金额
     177          cb004ws  TYPE mseg-waers, "成本要素1金额单位
     178 
     179          cb005mg  TYPE mseg-menge, "成本要素1数量
     180          cb005ms  TYPE mseg-meins, "成本要素1数量单位
     181          cb005dr  TYPE mseg-dmbtr, "成本要素1金额
     182          cb005ws  TYPE mseg-waers, "成本要素1金额单位
     183 
     184          cb006mg  TYPE mseg-menge, "成本要素1数量
     185          cb006ms  TYPE mseg-meins, "成本要素1数量单位
     186          cb006dr  TYPE mseg-dmbtr, "成本要素1金额
     187          cb006ws  TYPE mseg-waers, "成本要素1金额单位
     188 
     189          cb007mg  TYPE mseg-menge, "成本要素1数量
     190          cb007ms  TYPE mseg-meins, "成本要素1数量单位
     191          cb007dr  TYPE mseg-dmbtr, "成本要素1金额
     192          cb007ws  TYPE mseg-waers, "成本要素1金额单位
     193 
     194          cb008mg  TYPE mseg-menge, "成本要素1数量
     195          cb008ms  TYPE mseg-meins, "成本要素1数量单位
     196          cb008dr  TYPE mseg-dmbtr, "成本要素1金额
     197          cb008ws  TYPE mseg-waers, "成本要素1金额单位
     198 
     199          cb009mg  TYPE mseg-menge, "成本要素1数量
     200          cb009ms  TYPE mseg-meins, "成本要素1数量单位
     201          cb009dr  TYPE mseg-dmbtr, "成本要素1金额
     202          cb009ws  TYPE mseg-waers, "成本要素1金额单位
     203 
     204          cb010mg  TYPE mseg-menge, "成本要素1数量
     205          cb010ms  TYPE mseg-meins, "成本要素1数量单位
     206          cb010dr  TYPE mseg-dmbtr, "成本要素1金额
     207          cb010ws  TYPE mseg-waers, "成本要素1金额单位
     208 
     209          cb011mg  TYPE mseg-menge, "成本要素1数量
     210          cb011ms  TYPE mseg-meins, "成本要素1数量单位
     211          cb011dr  TYPE mseg-dmbtr, "成本要素1金额
     212          cb011ws  TYPE mseg-waers, "成本要素1金额单位
     213 
     214          cb012mg  TYPE mseg-menge, "成本要素1数量
     215          cb012ms  TYPE mseg-meins, "成本要素1数量单位
     216          cb012dr  TYPE mseg-dmbtr, "成本要素1金额
     217          cb012ws  TYPE mseg-waers, "成本要素1金额单位
     218 
     219          cb013mg  TYPE mseg-menge, "成本要素1数量
     220          cb013ms  TYPE mseg-meins, "成本要素1数量单位
     221          cb013dr  TYPE mseg-dmbtr, "成本要素1金额
     222          cb013ws  TYPE mseg-waers, "成本要素1金额单位
     223 
     224          cb014mg  TYPE mseg-menge, "成本要素1数量
     225          cb014ms  TYPE mseg-meins, "成本要素1数量单位
     226          cb014dr  TYPE mseg-dmbtr, "成本要素1金额
     227          cb014ws  TYPE mseg-waers, "成本要素1金额单位
     228 
     229          cb015mg  TYPE mseg-menge, "成本要素1数量
     230          cb015ms  TYPE mseg-meins, "成本要素1数量单位
     231          cb015dr  TYPE mseg-dmbtr, "成本要素1金额
     232          cb015ws  TYPE mseg-waers, "成本要素1金额单位
     233 
     234        END OF ty_final.
     235 
     236 
     237 TYPES:BEGIN OF ty_all,
     238         budat_mkpf TYPE mseg-budat_mkpf. "过账日期
     239     INCLUDE TYPE ty_final.
     240 TYPES:END OF ty_all.
     241 
     242 
     243 TYPES: BEGIN OF ty_cp,
     244          bukrs      TYPE mseg-bukrs, "公司
     245          werks      TYPE mseg-werks, "工厂
     246          budat_mkpf TYPE mseg-budat_mkpf, "过账日期
     247          kostl      TYPE mseg-kostl, "成本中心
     248          menge      TYPE mseg-menge, "库存单位数量
     249          meins      TYPE mseg-meins, "库存单位
     250 
     251        END OF ty_cp.
     252 
     253 TYPES:BEGIN OF ty_cb_sum,
     254         bukrs  TYPE coep-bukrs, "公司
     255         "werks  TYPE coep-werks, "工厂
     256         aufnr  TYPE coep-aufnr, "订单
     257         matnr  TYPE coep-matnr, "物料
     258         gkoar  TYPE coep-gkoar, "冲销科目类型()
     259         gjahr  TYPE coep-gjahr, "财年
     260         perio  TYPE coep-perio, "期间
     261         wtgbtr TYPE coep-wtgbtr, "业务货币值
     262         twaer  TYPE coep-twaer, "交易货币
     263         megbtr TYPE coep-megbtr, "总计数量
     264         meinh  TYPE coep-meinh, "计量单位
     265         kstar  TYPE coep-kstar, "成本要素
     266         paccas TYPE coep-paccas, "合作伙伴科目分配
     267       END OF ty_cb_sum."成本要素结构
     268 
     269 TYPES:BEGIN OF ty_cb,
     270         belnr TYPE coep-belnr, "凭证编号
     271         buzei TYPE coep-buzei. "过账行
     272     INCLUDE TYPE: ty_cb_sum.
     273 
     274 TYPES:END OF ty_cb.
     275 
     276 ************************************************************************
     277 * 内表&工作区声明
     278 ************************************************************************
     279 DATA: gt_alv   TYPE TABLE OF ty_alv, "原料和成品的投入产出
     280       gt_alv1  TYPE TABLE OF ty_alv, "燃料的消耗
     281       gs_alv   TYPE ty_alv,
     282       gt_show  TYPE TABLE OF ty_show,
     283       gt_show1 TYPE TABLE OF ty_show,
     284       gs_show  TYPE ty_show.
     285 
     286 DATA: gt_cp TYPE TABLE OF ty_cp,
     287       gs_cp TYPE ty_cp.
     288 
     289 DATA: gt_all TYPE TABLE OF ty_all,
     290       gs_all TYPE ty_all.
     291 
     292 DATA: gt_cb     TYPE TABLE OF ty_cb,
     293       gs_cb     TYPE ty_cb,
     294       gt_cb_sum TYPE TABLE OF ty_cb_sum,
     295       gs_cb_sum TYPE ty_cb_sum.
     296 
     297 DATA: gt_final TYPE TABLE OF ty_final,
     298       gs_final TYPE ty_final.
     299 
     300 DATA: hs_show TYPE HASHED TABLE OF ty_show WITH UNIQUE KEY bukrs werks budat_mkpf kostl  mtart matnr groes maktx aufnr verid_nd text1 waers meins
     301                                            WITH HEADER LINE.
     302 DATA: hs_show1 TYPE HASHED TABLE OF ty_show WITH UNIQUE KEY bukrs werks budat_mkpf kostl  mtart matnr groes maktx  aufnr verid_nd text1 waers meins
     303                                            WITH HEADER LINE.
     304 DATA: hs_cp TYPE HASHED TABLE OF ty_cp WITH UNIQUE KEY bukrs werks budat_mkpf kostl  meins
     305                                            WITH HEADER LINE.
     306 DATA: hs_cb TYPE HASHED TABLE OF ty_cb_sum WITH UNIQUE KEY bukrs  aufnr matnr gkoar gjahr perio  twaer meinh kstar paccas "belnr buzei
     307                                            WITH HEADER LINE.
     308 DATA:hs_final TYPE HASHED TABLE OF ty_final WITH UNIQUE KEY bukrs werks year month  kostl  matnr groes
     309                                                             width maktx  aufnr verid_nd text1 waers meins
     310                                                             yl001ms yl001ws yl002ms yl002ws yl003ms yl003ws
     311                                                             yl004ms yl004ws yl005ms yl005ws yl006ms yl006ws
     312                                                             yl007ms yl007ws yl008ms yl008ws yl009ms yl009ws
     313                                                             yl010ms yl010ws rl001ms rl001ws rl002ms rl002ws
     314                                                             rl003ms rl003ws rl004ms rl004ws
     315                                                             cb001ms cb001ws cb002ms cb002ws cb003ms cb003ws
     316                                                             cb004ms cb004ws cb005ms cb005ws cb006ms cb006ws
     317                                                             cb007ms cb007ws cb008ms cb008ws cb009ms cb009ws
     318                                                             cb010ms cb010ws cb011ms cb011ws cb012ms cb012ws
     319                                                             cb013ms cb013ws cb014ms cb014ws cb015ms cb015ws
     320 
     321                                                             WITH HEADER LINE.
     322 
     323 DATA: gs_variant TYPE disvariant.
     324 
     325 *&---定义ALV显示的字段列及其描述等属性
     326 DATA: gt_fcat   TYPE lvc_t_fcat,
     327       gs_fcat   TYPE lvc_s_fcat,
     328       gt_fcat_d TYPE lvc_t_fcat,
     329       gs_fcat_d TYPE lvc_s_fcat,
     330       gs_layout TYPE lvc_s_layo.
     331 DATA: gs_grid_settings TYPE lvc_s_glay.
     332 DATA: gt_raw_data TYPE truxs_t_text_data.
     333 
     334 
     335 ************************************************************************
     336 * 全局变量声明
     337 ************************************************************************
     338 DATA:yl001 TYPE matnr VALUE '000000101201000001', "高铁石英砂
     339      yl002 TYPE matnr VALUE '000000101201000002', "低铁石英砂
     340      yl003 TYPE matnr VALUE '000000101301000001', " 石灰石
     341      yl004 TYPE matnr VALUE '000000101401000001', "
     342      yl005 TYPE matnr VALUE '000000101501000001', "元明粉
     343      yl006 TYPE matnr VALUE '000000101601000001', "高铁白云
     344      yl007 TYPE matnr VALUE '000000101601000002', "低铁白云
     345      yl008 TYPE matnr VALUE '000000101701000001', "长石
     346      yl009 TYPE matnr VALUE '000000101801000001', " 外购碎玻璃
     347      yl010 TYPE matnr VALUE '000000101901000001', " 外购煤粉
     348      rl001 TYPE matnr VALUE '000000110501000080', "调和油
     349      rl002 TYPE matnr VALUE '000000140101000004', "石油沥青
     350      rl003 TYPE matnr VALUE '000000140102000001', "天然气
     351      rl004 TYPE matnr VALUE '000000140103000001'. "块煤
     352 ************************************************************************
     353 * 宏声明
     354 ************************************************************************
     355 DATA:lv_txt TYPE maktx.
     356 DEFINE   m_fill_fieldcat.
     357   CLEAR gs_fcat.
     358   gs_fcat-fieldname  = &1.
     359   gs_fcat-coltext    = &2.
     360   gs_fcat-no_zero    = &3.
     361   gs_fcat-outputlen  = &4.
     362   gs_fcat-key        = &5.
     363   gs_fcat-fix_column = &6.
     364   gs_fcat-edit       = &7.
     365 
     366   CLEAR:lv_txt.
     367   SELECT SINGLE maktx
     368         INTO lv_txt
     369         FROM makt
     370         WHERE matnr = gs_fcat-coltext
     371         AND  spras  = sy-langu.
     372 
     373   CASE  gs_fcat-fieldname+5(2).
     374     WHEN 'MG'.
     375       gs_fcat-coltext = lv_txt && '(数量)'.
     376     WHEN 'MS'.
     377       gs_fcat-coltext = lv_txt && '(数量单位)'.
     378     WHEN 'DR'.
     379       gs_fcat-coltext = lv_txt && '(金额)'.
     380     WHEN 'WS'.
     381       gs_fcat-coltext = lv_txt && '(金额单位)'.
     382     WHEN OTHERS.
     383   ENDCASE.
     384   IF gs_fcat-fieldname+0(2) EQ 'CB' AND lv_txt IS NOT INITIAL.
     385        gs_fcat-coltext = '成本要素-' &&  gs_fcat-coltext.
     386   ELSEIF gs_fcat-fieldname+0(2) EQ 'CB' AND lv_txt IS INITIAL..
     387     gs_fcat-coltext    = &2 && gs_fcat-coltext.
     388   ENDIF.
     389   APPEND gs_fcat TO gt_fcat.
     390 END-OF-DEFINITION.
     391 ************************************************************************
     392 * 选择屏幕参数
     393 ************************************************************************
     394 SELECTION-SCREEN BEGIN OF BLOCK bk1 WITH FRAME TITLE TEXT-001.
     395 
     396 PARAMETERS: p_werks TYPE marc-werks OBLIGATORY DEFAULT '1000',
     397             p_gjahr TYPE mseg-gjahr OBLIGATORY DEFAULT sy-datum+0(4),
     398             p_monat TYPE bkpf-monat OBLIGATORY DEFAULT sy-datum+4(2).
     399 
     400 SELECT-OPTIONS: s_mat FOR zv_dd_line-matnr.
     401 SELECTION-SCREEN END OF BLOCK bk1.
     402 
     403 SELECTION-SCREEN BEGIN OF BLOCK list WITH FRAME TITLE TEXT-002.
     404 PARAMETERS: pa_bwber LIKE rfpdo3-allgbwbe NO-DISPLAY.
     405 PARAMETERS: pa_vari TYPE slis_vari,
     406             pa_nmax LIKE itemset-nmax.
     407 SELECTION-SCREEN END OF BLOCK list.
     408 *... end of selection screen layout.
     409 ************************************************************************
     410 *& 初始化处理
     411 ************************************************************************
     412 INITIALIZATION.
     413 *&---------------------------------------------------------------------*
     414 *& at selection-screen output/选择屏幕前                                *
     415 *&---------------------------------------------------------------------*
     416 AT SELECTION-SCREEN OUTPUT.
     417 ************************************************************************
     418 *& 选择屏幕控制
     419 ************************************************************************
     420 AT SELECTION-SCREEN.
     421 
     422 AT SELECTION-SCREEN ON VALUE-REQUEST FOR pa_vari.
     423   PERFORM alv_variant_f4 CHANGING pa_vari.
     424 ************************************************************************
     425 * EVENT START OF SELECTION
     426 ************************************************************************
     427 START-OF-SELECTION.
     428   PERFORM frm_get_data.
     429 ************************************************************************
     430 *EVENT END OF SELECTION
     431 ************************************************************************
     432 END-OF-SELECTION.
     433   PERFORM frm_create_fieldcat.
     434   PERFORM frm_layout_init.
     435   PERFORM frm_display_alv.
     436 *&---------------------------------------------------------------------*
     437 *& Form FRM_GET_DATA
     438 *&---------------------------------------------------------------------*
     439 *& text
     440 *&---------------------------------------------------------------------*
     441 *& -->  p1        text
     442 *& <--  p2        text
     443 *&---------------------------------------------------------------------*
     444 FORM frm_get_data .
     445   DATA: lr_budat TYPE RANGE OF budat WITH HEADER LINE.
     446 
     447   DATA: lv_jahrper TYPE mldoc-jahrper,
     448         lv_poper   TYPE ckmlprkeph-poper.
     449 
     450   DATA: lt_data TYPE TABLE OF ty_alv,
     451         ls_data TYPE ty_alv.
     452 
     453   DATA:lv_groes_1 TYPE mara-groes, "
     454        lv_groes_2 TYPE mara-groes, "
     455        lv_groes_3 TYPE mara-groes. "
     456 
     457   DATA:lv_rc    TYPE sy-subrc,
     458        lv_coeff TYPE bstmg.
     459 
     460   CLEAR lr_budat.
     461   lr_budat-sign = 'I'.
     462   lr_budat-option = 'BT'.
     463   lr_budat-low = p_gjahr && p_monat && '01'.
     464   CALL FUNCTION 'BKK_GET_MONTH_LASTDAY'            "获取当前月的最后一天
     465     EXPORTING
     466       i_date = lr_budat-low
     467     IMPORTING
     468       e_date = lr_budat-high.
     469   APPEND lr_budat.
     470 
     471   REFRESH gt_alv.
     472 
     473 **第一步取出成品入库和原料投料信息
     474   SELECT
     475     a~bukrs
     476     a~werks
     477     a~budat_mkpf
     478     "a~bwart
     479     a~matnr
     480     c~groes
     481     d~maktx
     482     c~mtart
     483     a~shkzg
     484     a~mblnr
     485     a~mjahr
     486     a~zeile
     487     a~smbln
     488     a~sjahr
     489     a~smblp
     490     a~aufnr
     491     a~kostl
     492     b~verid_nd
     493     b~text1
     494     a~dmbtr
     495     a~waers
     496     a~menge
     497     a~meins
     498   INTO CORRESPONDING FIELDS OF TABLE gt_alv
     499   FROM mseg AS a
     500   INNER JOIN zv_dd_line AS b
     501   ON a~aufnr = b~aufnr
     502   INNER JOIN mara AS c
     503   ON a~matnr = c~matnr
     504   INNER JOIN makt AS d
     505   ON c~matnr = d~matnr
     506   WHERE a~werks EQ p_werks
     507   AND   a~gjahr EQ p_gjahr
     508   AND   a~budat_mkpf IN lr_budat
     509   AND   b~matnr IN s_mat
     510   AND   d~spras = sy-langu.
     511 
     512 **取成本中心与生产版本对应关系
     513   SELECT
     514     *
     515    INTO TABLE @DATA(lt_co007)
     516    FROM ztco10007_1.
     517   SORT lt_co007 BY verid kostl.
     518 
     519   SORT gt_alv BY mjahr mblnr zeile.
     520 
     521   LOOP AT gt_alv INTO gs_alv.
     522     IF gs_alv-smbln IS NOT INITIAL."将冲销物料凭证和被冲销物料凭证过滤掉
     523       READ TABLE gt_alv INTO DATA(ls_alv) WITH KEY mjahr = gs_alv-sjahr
     524                                                        mblnr = gs_alv-smbln
     525                                                        zeile = gs_alv-smblp BINARY SEARCH.
     526       IF sy-subrc EQ 0.
     527         DELETE TABLE gt_alv FROM ls_alv.
     528         DELETE TABLE gt_alv FROM gs_alv.
     529         CONTINUE.
     530       ENDIF.
     531     ELSE."给每一行赋值对应成本中心
     532       READ TABLE lt_co007 INTO DATA(lv_co007) WITH KEY verid = gs_alv-verid_nd BINARY SEARCH.
     533       "kostl+9(1) = gs_alv-verid_nd+3(1).
     534       IF sy-subrc EQ 0.
     535         gs_alv-kostl = lv_co007-kostl.
     536       ENDIF.
     537 
     538       IF gs_alv-shkzg EQ 'H'.
     539         gs_alv-menge = gs_alv-menge * -1.
     540         gs_alv-dmbtr = gs_alv-dmbtr * -1.
     541       ENDIF.
     542     ENDIF.
     543     MODIFY gt_alv FROM gs_alv.
     544   ENDLOOP.
     545 
     546 **第二步取出燃料每日的消耗量
     547   IF gt_alv IS NOT INITIAL.
     548     SELECT
     549     a~bukrs
     550     a~werks
     551     a~budat_mkpf
     552     "a~bwart
     553     a~matnr
     554     c~mtart
     555     a~shkzg
     556     a~mblnr
     557     a~mjahr
     558     a~zeile
     559     a~smbln
     560     a~sjahr
     561     a~smblp
     562     a~aufnr
     563     a~kostl
     564     b~verid AS verid_nd
     565 
     566     a~dmbtr
     567     a~waers
     568     a~menge
     569     a~meins
     570   INTO CORRESPONDING FIELDS OF TABLE gt_alv1
     571   FROM mseg AS a
     572   INNER JOIN mara AS c
     573   ON a~matnr = c~matnr
     574   INNER JOIN ztco10007 AS b
     575   ON a~kostl = b~kostl
     576   FOR ALL ENTRIES IN gt_alv
     577   WHERE a~budat_mkpf IN lr_budat
     578    AND  a~matnr IN ( rl001,rl002,rl003,rl004  )
     579    AND  a~werks EQ p_werks
     580   AND   a~gjahr EQ p_gjahr
     581   AND   a~kostl = gt_alv-kostl
     582    .
     583 
     584     SORT gt_alv1 BY mjahr mblnr zeile.
     585     CLEAR:gs_alv,ls_alv.
     586     LOOP AT gt_alv1 INTO gs_alv.
     587       IF gs_alv-smbln IS NOT INITIAL."将冲销物料凭证和被冲销物料凭证过滤掉
     588         READ TABLE gt_alv1 INTO ls_alv WITH KEY mjahr = gs_alv-sjahr
     589                                                          mblnr = gs_alv-smbln
     590                                                          zeile = gs_alv-smblp BINARY SEARCH.
     591         IF sy-subrc EQ 0.
     592           DELETE TABLE gt_alv1 FROM ls_alv.
     593           DELETE TABLE gt_alv1 FROM gs_alv.
     594           CONTINUE.
     595         ENDIF.
     596       ENDIF.
     597       IF gs_alv-shkzg EQ 'H'.
     598         gs_alv-menge = gs_alv-menge * -1.
     599         gs_alv-dmbtr = gs_alv-dmbtr * -1.
     600       ENDIF.
     601 
     602       MODIFY gt_alv1 FROM gs_alv.
     603     ENDLOOP.
     604 
     605 
     606   ENDIF.
     607 
     608 **按相应条件进行金额和数量汇总
     609   MOVE-CORRESPONDING gt_alv TO gt_show."原料和成品数据
     610   MOVE-CORRESPONDING gt_alv1 TO gt_show1."燃料消耗数据
     611   SORT gt_show BY bukrs werks aufnr budat_mkpf  kostl  mtart matnr   verid_nd .
     612   SORT gt_show1 BY bukrs werks aufnr budat_mkpf kostl mtart matnr   verid_nd  .
     613 
     614 **汇总原料和成品的金额和数量
     615   CLEAR gs_show.
     616   LOOP AT gt_show INTO gs_show.
     617     COLLECT gs_show INTO hs_show.
     618   ENDLOOP.
     619 
     620 **汇总燃料消耗数据
     621   CLEAR gs_show.
     622   LOOP AT gt_show1 INTO gs_show.
     623     COLLECT gs_show INTO hs_show1.
     624   ENDLOOP.
     625 
     626 **将汇总后的数据重新赋值到原来内表中
     627   REFRESH:gt_show ,gt_show1.
     628   gt_show[] = hs_show[]."汇总后的成品和原料
     629   gt_show1[] = hs_show1[]."汇总后的燃料数据
     630 
     631 **取出每日成品产量和原料量
     632   DATA:lt_cp TYPE TABLE OF ty_show,
     633        lt_yl TYPE TABLE OF ty_show,
     634        lt_rl TYPE TABLE OF ty_show.
     635   LOOP AT gt_show INTO gs_show.
     636     CASE gs_show-mtart.
     637       WHEN 'Z004'."成品
     638         APPEND gs_show TO lt_cp.
     639         MOVE-CORRESPONDING gs_show TO hs_cp.
     640         COLLECT hs_cp.
     641       WHEN OTHERS."原料
     642         APPEND gs_show TO lt_yl.
     643     ENDCASE.
     644   ENDLOOP.
     645 
     646   MOVE-CORRESPONDING gt_show1 TO lt_rl.
     647   gt_cp[] = hs_cp[]."按天按公司、工厂、成本中心汇总成品片数总量用来分摊燃料消耗量
     648 
     649 **成本要素核算、工时、燃动力等实际消耗
     650   IF gt_show IS NOT  INITIAL.
     651 
     652     SELECT
     653       bukrs
     654       "werks
     655       aufnr
     656       gkoar
     657       matnr
     658       belnr
     659       buzei
     660       gjahr
     661       perio
     662       wtgbtr
     663       twaer
     664       megbtr
     665       meinh
     666       kstar
     667       paccas
     668       INTO CORRESPONDING FIELDS OF TABLE gt_cb
     669       FROM coep
     670       FOR ALL ENTRIES IN gt_show
     671       WHERE aufnr = gt_show-aufnr
     672       AND  gjahr = p_gjahr
     673       AND  perio = p_monat
     674       AND  bukrs = p_werks.
     675   ENDIF.
     676 
     677   SORT gt_cb BY gjahr perio bukrs  aufnr gkoar matnr paccas kstar  belnr buzei.
     678 
     679   LOOP AT gt_cb INTO gs_cb.
     680     MOVE-CORRESPONDING gs_cb TO hs_cb.
     681     COLLECT hs_cb.
     682   ENDLOOP.
     683 
     684   gt_cb_sum[] = hs_cb[].
     685   SORT gt_cb_sum BY gjahr perio bukrs  aufnr gkoar matnr paccas kstar."实际核算的成本要素
     686 
     687   SORT gt_cp BY bukrs werks budat_mkpf kostl."
     688   SORT lt_cp BY bukrs werks budat_mkpf kostl aufnr matnr."成品
     689   SORT lt_yl BY bukrs werks budat_mkpf kostl aufnr matnr."原料
     690   SORT lt_rl BY bukrs werks budat_mkpf kostl aufnr matnr."燃料
     691 
     692 
     693 **整理数据
     694   LOOP AT lt_cp INTO gs_show.
     695     MOVE-CORRESPONDING gs_show TO gs_all.
     696     gs_all-year = gs_all-budat_mkpf+0(4).
     697     gs_all-month = gs_all-budat_mkpf+4(2).
     698 **高铁石英砂
     699     READ TABLE lt_yl INTO DATA(ls_yl) WITH KEY bukrs = gs_show-bukrs werks = gs_show-werks budat_mkpf = gs_show-budat_mkpf
     700                                                kostl = gs_show-kostl aufnr = gs_show-aufnr matnr = yl001 BINARY SEARCH.
     701     IF sy-subrc EQ 0.
     702       gs_all-yl001mg = ls_yl-menge.
     703       gs_all-yl001ms = ls_yl-meins.
     704       gs_all-yl001dr = ls_yl-dmbtr.
     705       gs_all-yl001ws = ls_yl-waers.
     706     ENDIF.
     707     CLEAR:ls_yl.
     708 **低铁石英砂
     709     READ TABLE lt_yl INTO ls_yl WITH KEY bukrs = gs_show-bukrs werks = gs_show-werks budat_mkpf = gs_show-budat_mkpf
     710                                                kostl = gs_show-kostl aufnr = gs_show-aufnr matnr = yl002  BINARY SEARCH.
     711     IF sy-subrc EQ 0.
     712       gs_all-yl002mg = ls_yl-menge.
     713       gs_all-yl002ms = ls_yl-meins.
     714       gs_all-yl002dr = ls_yl-dmbtr.
     715       gs_all-yl002ws = ls_yl-waers.
     716     ENDIF.
     717     CLEAR:ls_yl.
     718 **石灰石
     719     READ TABLE lt_yl INTO ls_yl WITH KEY bukrs = gs_show-bukrs werks = gs_show-werks budat_mkpf = gs_show-budat_mkpf
     720                                                kostl = gs_show-kostl aufnr = gs_show-aufnr matnr = yl003  BINARY SEARCH.
     721     IF sy-subrc EQ 0.
     722       gs_all-yl003mg = ls_yl-menge.
     723       gs_all-yl003ms = ls_yl-meins.
     724       gs_all-yl003dr = ls_yl-dmbtr.
     725       gs_all-yl003ws = ls_yl-waers.
     726     ENDIF.
     727     CLEAR:ls_yl.
     728 **碱
     729     READ TABLE lt_yl INTO ls_yl WITH KEY bukrs = gs_show-bukrs werks = gs_show-werks budat_mkpf = gs_show-budat_mkpf
     730                                                kostl = gs_show-kostl aufnr = gs_show-aufnr matnr = yl004 BINARY SEARCH.
     731     IF sy-subrc EQ 0.
     732       gs_all-yl004mg = ls_yl-menge.
     733       gs_all-yl004ms = ls_yl-meins.
     734       gs_all-yl004dr = ls_yl-dmbtr.
     735       gs_all-yl004ws = ls_yl-waers.
     736     ENDIF.
     737     CLEAR:ls_yl.
     738 **元明粉
     739     READ TABLE lt_yl INTO ls_yl WITH KEY bukrs = gs_show-bukrs werks = gs_show-werks budat_mkpf = gs_show-budat_mkpf
     740                                                kostl = gs_show-kostl aufnr = gs_show-aufnr matnr = yl005 BINARY SEARCH.
     741     IF sy-subrc EQ 0.
     742       gs_all-yl005mg = ls_yl-menge.
     743       gs_all-yl005ms = ls_yl-meins.
     744       gs_all-yl005dr = ls_yl-dmbtr.
     745       gs_all-yl005ws = ls_yl-waers.
     746     ENDIF.
     747     CLEAR:ls_yl.
     748 **高铁白云
     749     READ TABLE lt_yl INTO ls_yl WITH KEY bukrs = gs_show-bukrs werks = gs_show-werks budat_mkpf = gs_show-budat_mkpf
     750                                                kostl = gs_show-kostl aufnr = gs_show-aufnr matnr = yl006 BINARY SEARCH.
     751     IF sy-subrc EQ 0.
     752       gs_all-yl006mg = ls_yl-menge.
     753       gs_all-yl006ms = ls_yl-meins.
     754       gs_all-yl006dr = ls_yl-dmbtr.
     755       gs_all-yl006ws = ls_yl-waers.
     756     ENDIF.
     757     CLEAR:ls_yl.
     758 **低铁白云
     759     READ TABLE lt_yl INTO ls_yl WITH KEY bukrs = gs_show-bukrs werks = gs_show-werks budat_mkpf = gs_show-budat_mkpf
     760                                                kostl = gs_show-kostl aufnr = gs_show-aufnr matnr = yl007 BINARY SEARCH.
     761     IF sy-subrc EQ 0.
     762       gs_all-yl007mg = ls_yl-menge.
     763       gs_all-yl007ms = ls_yl-meins.
     764       gs_all-yl007dr = ls_yl-dmbtr.
     765       gs_all-yl007ws = ls_yl-waers.
     766     ENDIF.
     767     CLEAR:ls_yl.
     768 **长石
     769     READ TABLE lt_yl INTO ls_yl WITH KEY bukrs = gs_show-bukrs werks = gs_show-werks budat_mkpf = gs_show-budat_mkpf
     770                                                kostl = gs_show-kostl aufnr = gs_show-aufnr matnr = yl008 BINARY SEARCH.
     771     IF sy-subrc EQ 0.
     772       gs_all-yl008mg = ls_yl-menge.
     773       gs_all-yl008ms = ls_yl-meins.
     774       gs_all-yl008dr = ls_yl-dmbtr.
     775       gs_all-yl008ws = ls_yl-waers.
     776     ENDIF.
     777     CLEAR:ls_yl.
     778 **外购碎玻璃
     779     READ TABLE lt_yl INTO ls_yl WITH KEY bukrs = gs_show-bukrs werks = gs_show-werks budat_mkpf = gs_show-budat_mkpf
     780                                                kostl = gs_show-kostl aufnr = gs_show-aufnr matnr = yl009 BINARY SEARCH.
     781     IF sy-subrc EQ 0.
     782       gs_all-yl009mg = ls_yl-menge.
     783       gs_all-yl009ms = ls_yl-meins.
     784       gs_all-yl009dr = ls_yl-dmbtr.
     785       gs_all-yl009ws = ls_yl-waers.
     786     ENDIF.
     787     CLEAR:ls_yl.
     788 **外购煤粉
     789     READ TABLE lt_yl INTO ls_yl WITH KEY bukrs = gs_show-bukrs werks = gs_show-werks budat_mkpf = gs_show-budat_mkpf
     790                                                kostl = gs_show-kostl aufnr = gs_show-aufnr matnr = yl010 BINARY SEARCH.
     791     IF sy-subrc EQ 0.
     792       gs_all-yl010mg = ls_yl-menge.
     793       gs_all-yl010ms = ls_yl-meins.
     794       gs_all-yl010dr = ls_yl-dmbtr.
     795       gs_all-yl010ws = ls_yl-waers.
     796     ENDIF.
     797     CLEAR:ls_yl.
     798 
     799 **找到当前成品总数以分摊燃料消耗
     800     READ TABLE gt_cp INTO DATA(ls_c) WITH KEY bukrs = gs_show-bukrs werks = gs_show-werks budat_mkpf = gs_show-budat_mkpf
     801                                               kostl = gs_show-kostl BINARY SEARCH.
     802     IF sy-subrc EQ 0.
     803 **调和油   110501000080
     804       READ TABLE lt_rl INTO DATA(ls_rl) WITH KEY bukrs = gs_show-bukrs werks = gs_show-werks budat_mkpf = gs_show-budat_mkpf
     805                                                  kostl = gs_show-kostl matnr = rl001 BINARY SEARCH.
     806       IF sy-subrc EQ 0.
     807         gs_all-rl001mg = gs_show-menge / ls_c-menge * ls_rl-menge.
     808         gs_all-rl001ms = ls_rl-meins.
     809         gs_all-rl001dr = gs_show-menge / ls_c-menge * ls_rl-dmbtr.
     810         gs_all-rl001ws = ls_rl-waers.
     811       ENDIF.
     812       CLEAR:ls_rl.
     813 **石油沥青  140101000004
     814       READ TABLE lt_rl INTO ls_rl WITH KEY bukrs = gs_show-bukrs werks = gs_show-werks budat_mkpf = gs_show-budat_mkpf
     815                                                  kostl = gs_show-kostl matnr = rl002 BINARY SEARCH.
     816       IF sy-subrc EQ 0.
     817         gs_all-rl002mg = gs_show-menge / ls_c-menge * ls_rl-menge.
     818         gs_all-rl002ms = ls_rl-meins.
     819         gs_all-rl002dr = gs_show-menge / ls_c-menge * ls_rl-dmbtr.
     820         gs_all-rl002ws = ls_rl-waers.
     821       ENDIF.
     822       CLEAR:ls_rl.
     823 **天然气  140102000001
     824       READ TABLE lt_rl INTO ls_rl WITH KEY bukrs = gs_show-bukrs werks = gs_show-werks budat_mkpf = gs_show-budat_mkpf
     825                                                  kostl = gs_show-kostl matnr = rl003 BINARY SEARCH.
     826       IF sy-subrc EQ 0.
     827         gs_all-rl003mg = gs_show-menge / ls_c-menge * ls_rl-menge.
     828         gs_all-rl003ms = ls_rl-meins.
     829         gs_all-rl003dr = gs_show-menge / ls_c-menge * ls_rl-dmbtr.
     830         gs_all-rl003ws = ls_rl-waers.
     831       ENDIF.
     832       CLEAR:ls_rl.
     833 **块煤      140103000001
     834       READ TABLE lt_rl INTO ls_rl WITH KEY bukrs = gs_show-bukrs werks = gs_show-werks budat_mkpf = gs_show-budat_mkpf
     835                                                  kostl = gs_show-kostl matnr = rl004 BINARY SEARCH.
     836       IF sy-subrc EQ 0.
     837         gs_all-rl004mg = gs_show-menge / ls_c-menge * ls_rl-menge.
     838         gs_all-rl004ms = ls_rl-meins.
     839         gs_all-rl004dr = gs_show-menge / ls_c-menge * ls_rl-dmbtr.
     840         gs_all-rl004ws = ls_rl-waers.
     841       ENDIF.
     842       CLEAR:ls_rl.
     843     ENDIF.
     844 
     845 **取出成品厚度及计算重箱数
     846     CLEAR:lv_groes_1,
     847             lv_groes_2,
     848             lv_groes_3.
     849 
     850     SPLIT gs_all-groes
     851            AT 'X'
     852          INTO lv_groes_1
     853               lv_groes_2
     854               lv_groes_3.
     855     IF lv_groes_3 <> 0.
     856       gs_all-width   = lv_groes_3 && 'mm'.
     857       CLEAR:lv_rc,lv_coeff.
     858       PERFORM frm_check_number(zsdr_003) USING lv_groes_3 CHANGING lv_rc.
     859 
     860       IF lv_rc = 0 AND lv_groes_3 NE 0.
     861         lv_coeff = 20 / lv_groes_3.
     862 
     863         gs_all-menge_zx = gs_all-menge * lv_groes_1 * lv_groes_2 / lv_coeff.
     864       ENDIF.
     865 
     866     ENDIF.
     867 
     868 
     869 
     870     APPEND gs_all TO gt_all.
     871 
     872     MOVE-CORRESPONDING gs_all TO hs_final.
     873     COLLECT hs_final.
     874 
     875     CLEAR gs_all.
     876   ENDLOOP.
     877 
     878   gt_final[] = hs_final[].
     879 
     880   LOOP AT gt_final INTO gs_final.
     881 **取出实际核算成本要素数据
     882     CLEAR:gs_cb_sum.
     883 *9000000001  人工作业及附加 成本要素
     884     READ TABLE gt_cb_sum INTO gs_cb_sum WITH KEY gjahr = gs_final-year  perio = gs_final-month  bukrs = gs_final-bukrs
     885                                                  aufnr = gs_final-aufnr gkoar = '' matnr = ''  kstar = '9000000001' BINARY SEARCH.
     886     IF sy-subrc EQ 0.
     887       gs_final-cb001mg = gs_cb_sum-megbtr.
     888       gs_final-cb001ms = gs_cb_sum-meinh.
     889       gs_final-cb001dr = gs_cb_sum-wtgbtr.
     890       gs_final-cb001ws = gs_cb_sum-twaer.
     891 
     892     ENDIF.
     893     CLEAR:gs_cb_sum.
     894 *9000000002  制造费用 成本要素
     895     READ TABLE gt_cb_sum INTO gs_cb_sum WITH KEY gjahr = gs_final-year  perio = gs_final-month  bukrs = gs_final-bukrs
     896                                                  aufnr = gs_final-aufnr gkoar = '' matnr = ''  kstar = '9000000002' BINARY SEARCH.
     897     IF sy-subrc EQ 0.
     898       gs_final-cb002mg = gs_cb_sum-megbtr.
     899       gs_final-cb002ms = gs_cb_sum-meinh.
     900       gs_final-cb002dr = gs_cb_sum-wtgbtr.
     901       gs_final-cb002ws = gs_cb_sum-twaer.
     902 
     903     ENDIF.
     904     CLEAR:gs_cb_sum.
     905 *9000000003  折旧费用 成本要素
     906     READ TABLE gt_cb_sum INTO gs_cb_sum WITH KEY gjahr = gs_final-year  perio = gs_final-month  bukrs = gs_final-bukrs
     907                                                  aufnr = gs_final-aufnr gkoar = '' matnr = ''  kstar = '9000000003' BINARY SEARCH.
     908     IF sy-subrc EQ 0.
     909       gs_final-cb003mg = gs_cb_sum-megbtr.
     910       gs_final-cb003ms = gs_cb_sum-meinh.
     911       gs_final-cb003dr = gs_cb_sum-wtgbtr.
     912       gs_final-cb003ws = gs_cb_sum-twaer.
     913 
     914     ENDIF.
     915     CLEAR:gs_cb_sum.
     916 *9000000004  能源动力 成本要素
     917     READ TABLE gt_cb_sum INTO gs_cb_sum WITH KEY gjahr = gs_final-year  perio = gs_final-month  bukrs = gs_final-bukrs
     918                                                  aufnr = gs_final-aufnr gkoar = '' matnr = ''  kstar = '9000000004' BINARY SEARCH.
     919     IF sy-subrc EQ 0.
     920       gs_final-cb004mg = gs_cb_sum-megbtr.
     921       gs_final-cb004ms = gs_cb_sum-meinh.
     922       gs_final-cb004dr = gs_cb_sum-wtgbtr.
     923       gs_final-cb004ws = gs_cb_sum-twaer.
     924 
     925     ENDIF.
     926     CLEAR:gs_cb_sum.
     927 *9000000005  其他制造费用 成本要素
     928     READ TABLE gt_cb_sum INTO gs_cb_sum WITH KEY gjahr = gs_final-year  perio = gs_final-month  bukrs = gs_final-bukrs
     929                                                  aufnr = gs_final-aufnr gkoar = '' matnr = ''  kstar = '9000000005' BINARY SEARCH.
     930     IF sy-subrc EQ 0.
     931       gs_final-cb005mg = gs_cb_sum-megbtr.
     932       gs_final-cb005ms = gs_cb_sum-meinh.
     933       gs_final-cb005dr = gs_cb_sum-wtgbtr.
     934       gs_final-cb005ws = gs_cb_sum-twaer.
     935 
     936     ENDIF.
     937     CLEAR:gs_cb_sum.
     938 *高铁石英砂 实际核算成本
     939     READ TABLE gt_cb_sum INTO gs_cb_sum WITH KEY gjahr = gs_final-year  perio = gs_final-month  bukrs = gs_final-bukrs
     940                                                  aufnr = gs_final-aufnr gkoar = 'M' matnr = yl001  kstar = '5001010100' BINARY SEARCH.
     941     IF sy-subrc EQ 0.
     942       gs_final-cb006mg = gs_cb_sum-megbtr.
     943       gs_final-cb006ms = gs_cb_sum-meinh.
     944       gs_final-cb006dr = gs_cb_sum-wtgbtr.
     945       gs_final-cb006ws = gs_cb_sum-twaer.
     946 
     947     ENDIF.
     948     CLEAR:gs_cb_sum.
     949 *低铁石英砂 实际核算成本
     950     READ TABLE gt_cb_sum INTO gs_cb_sum WITH KEY gjahr = gs_final-year  perio = gs_final-month  bukrs = gs_final-bukrs
     951                                                  aufnr = gs_final-aufnr gkoar = 'M' matnr = yl002  kstar = '5001010100' BINARY SEARCH.
     952     IF sy-subrc EQ 0.
     953       gs_final-cb007mg = gs_cb_sum-megbtr.
     954       gs_final-cb007ms = gs_cb_sum-meinh.
     955       gs_final-cb007dr = gs_cb_sum-wtgbtr.
     956       gs_final-cb007ws = gs_cb_sum-twaer.
     957 
     958     ENDIF.
     959     CLEAR:gs_cb_sum.
     960 *石灰石 实际核算成本
     961     READ TABLE gt_cb_sum INTO gs_cb_sum WITH KEY gjahr = gs_final-year  perio = gs_final-month  bukrs = gs_final-bukrs
     962                                                  aufnr = gs_final-aufnr gkoar = 'M' matnr = yl003  kstar = '5001010100' BINARY SEARCH.
     963     IF sy-subrc EQ 0.
     964       gs_final-cb008mg = gs_cb_sum-megbtr.
     965       gs_final-cb008ms = gs_cb_sum-meinh.
     966       gs_final-cb008dr = gs_cb_sum-wtgbtr.
     967       gs_final-cb008ws = gs_cb_sum-twaer.
     968 
     969     ENDIF.
     970     CLEAR:gs_cb_sum.
     971 *碱 实际核算成本
     972     READ TABLE gt_cb_sum INTO gs_cb_sum WITH KEY gjahr = gs_final-year  perio = gs_final-month  bukrs = gs_final-bukrs
     973                                                  aufnr = gs_final-aufnr gkoar = 'M' matnr = yl004  kstar = '5001010100' BINARY SEARCH.
     974     IF sy-subrc EQ 0.
     975       gs_final-cb009mg = gs_cb_sum-megbtr.
     976       gs_final-cb009ms = gs_cb_sum-meinh.
     977       gs_final-cb009dr = gs_cb_sum-wtgbtr.
     978       gs_final-cb009ws = gs_cb_sum-twaer.
     979 
     980     ENDIF.
     981     CLEAR:gs_cb_sum.
     982 *元明粉实际核算成本
     983     READ TABLE gt_cb_sum INTO gs_cb_sum WITH KEY gjahr = gs_final-year  perio = gs_final-month  bukrs = gs_final-bukrs
     984                                                  aufnr = gs_final-aufnr gkoar = 'M' matnr = yl005  kstar = '5001010100' BINARY SEARCH.
     985     IF sy-subrc EQ 0.
     986       gs_final-cb010mg = gs_cb_sum-megbtr.
     987       gs_final-cb010ms = gs_cb_sum-meinh.
     988       gs_final-cb010dr = gs_cb_sum-wtgbtr.
     989       gs_final-cb010ws = gs_cb_sum-twaer.
     990     ENDIF.
     991     CLEAR:gs_cb_sum.
     992 *高铁白云 实际核算成本
     993     READ TABLE gt_cb_sum INTO gs_cb_sum WITH KEY gjahr = gs_final-year  perio = gs_final-month  bukrs = gs_final-bukrs
     994                                                  aufnr = gs_final-aufnr gkoar = 'M' matnr = yl006  kstar = '5001010100' BINARY SEARCH.
     995     IF sy-subrc EQ 0.
     996       gs_final-cb011mg = gs_cb_sum-megbtr.
     997       gs_final-cb011ms = gs_cb_sum-meinh.
     998       gs_final-cb011dr = gs_cb_sum-wtgbtr.
     999       gs_final-cb011ws = gs_cb_sum-twaer.
    1000     ENDIF.
    1001     CLEAR:gs_cb_sum.
    1002 *低铁白云 实际核算成本
    1003     READ TABLE gt_cb_sum INTO gs_cb_sum WITH KEY gjahr = gs_final-year  perio = gs_final-month  bukrs = gs_final-bukrs
    1004                                                  aufnr = gs_final-aufnr gkoar = 'M' matnr = yl007  kstar = '5001010100' BINARY SEARCH.
    1005     IF sy-subrc EQ 0.
    1006       gs_final-cb012mg = gs_cb_sum-megbtr.
    1007       gs_final-cb012ms = gs_cb_sum-meinh.
    1008       gs_final-cb012dr = gs_cb_sum-wtgbtr.
    1009       gs_final-cb012ws = gs_cb_sum-twaer.
    1010     ENDIF.
    1011     CLEAR:gs_cb_sum.
    1012 *长石 实际核算成本
    1013     READ TABLE gt_cb_sum INTO gs_cb_sum WITH KEY gjahr = gs_final-year  perio = gs_final-month  bukrs = gs_final-bukrs
    1014                                                  aufnr = gs_final-aufnr gkoar = 'M' matnr = yl008  kstar = '5001010100' BINARY SEARCH.
    1015     IF sy-subrc EQ 0.
    1016       gs_final-cb013mg = gs_cb_sum-megbtr.
    1017       gs_final-cb013ms = gs_cb_sum-meinh.
    1018       gs_final-cb013dr = gs_cb_sum-wtgbtr.
    1019       gs_final-cb013ws = gs_cb_sum-twaer.
    1020     ENDIF.
    1021     CLEAR:gs_cb_sum.
    1022 *外购碎玻璃实际核算成本
    1023     READ TABLE gt_cb_sum INTO gs_cb_sum WITH KEY gjahr = gs_final-year  perio = gs_final-month  bukrs = gs_final-bukrs
    1024                                                  aufnr = gs_final-aufnr gkoar = 'M' matnr = yl009  kstar = '5001010100' BINARY SEARCH.
    1025     IF sy-subrc EQ 0.
    1026       gs_final-cb014mg = gs_cb_sum-megbtr.
    1027       gs_final-cb014ms = gs_cb_sum-meinh.
    1028       gs_final-cb014dr = gs_cb_sum-wtgbtr.
    1029       gs_final-cb014ws = gs_cb_sum-twaer.
    1030     ENDIF.
    1031     CLEAR:gs_cb_sum.
    1032 *外购煤粉 实际核算成本
    1033     READ TABLE gt_cb_sum INTO gs_cb_sum WITH KEY gjahr = gs_final-year  perio = gs_final-month  bukrs = gs_final-bukrs
    1034                                                  aufnr = gs_final-aufnr gkoar = 'M' matnr = yl010  kstar = '5001010100' BINARY SEARCH.
    1035     IF sy-subrc EQ 0.
    1036       gs_final-cb015mg = gs_cb_sum-megbtr.
    1037       gs_final-cb015ms = gs_cb_sum-meinh.
    1038       gs_final-cb015dr = gs_cb_sum-wtgbtr.
    1039       gs_final-cb015ws = gs_cb_sum-twaer.
    1040     ENDIF.
    1041 
    1042     MODIFY gt_final FROM gs_final.
    1043 
    1044     CLEAR:gs_final.
    1045 
    1046   ENDLOOP.
    1047 
    1048 
    1049 
    1050 
    1051 
    1052 ENDFORM.
    1053 *&---------------------------------------------------------------------*
    1054 *&      FORM  FRM_CREATE_FIELDCAT
    1055 *&---------------------------------------------------------------------*
    1056 *
    1057 *----------------------------------------------------------------------*
    1058 FORM frm_create_fieldcat .
    1059 
    1060 
    1061   m_fill_fieldcat:
    1062      'BUKRS'       '公司'              '' 4   '' '' '',
    1063      'WERKS'       '工厂'             '' 4   '' '' '',
    1064      'YEAR'        '年度'              '' 4   '' '' '',
    1065      'MONTH'       '期间'             '' 3   '' '' '',
    1066      'MATNR'       '成品物料号'             '' 3   '' '' '',
    1067      'MAKTX'       '成品物料描述'             '' 3   '' '' '',
    1068      'GROES'       '大小量纲'             '' 3   '' '' '',
    1069      'WIDTH'       '成品厚度'             '' 3   '' '' '',
    1070      "'BUDAT_MKPF'  '过账日期'         '' 10   '' '' '',
    1071      'AUFNR'       '订单号'         '' 10   '' '' '',
    1072      'KOSTL'       '成本中心'         '' 10   '' '' '',
    1073      'VERID_ND'    '生产线'         '' 10   '' '' '',
    1074      'TEXT1'    '生产线描述'         '' 10   '' '' '',
    1075      'DMBTR'    '成品金额'         '' 10   '' '' '',
    1076      'WAERS'    '成品金额单位'         '' 10   '' '' '',
    1077      'MENGE'    '成品数量'         '' 10   '' '' '',
    1078      'MEINS'    '成品数量单位'         '' 10   '' '' '',
    1079      'MENGE_ZX'    '成品重箱数'         '' 10   '' '' '',
    1080      'YL001MG '   yl001         '' 10   '' '' '',
    1081      'YL001MS'    yl001         '' 10   '' '' '',
    1082      'YL001DR'    yl001         '' 10   '' '' '',
    1083      'YL001WS'    yl001         '' 10   '' '' '',
    1084 
    1085      'YL002MG '   yl002         '' 10   '' '' '',
    1086      'YL002MS'    yl002         '' 10   '' '' '',
    1087      'YL002DR'    yl002         '' 10   '' '' '',
    1088      'YL002WS'    yl002         '' 10   '' '' '',
    1089 
    1090      'YL003MG '   yl003         '' 10   '' '' '',
    1091      'YL003MS'    yl003         '' 10   '' '' '',
    1092      'YL003DR'    yl003         '' 10   '' '' '',
    1093      'YL003WS'    yl003         '' 10   '' '' '',
    1094 
    1095      'YL004MG '   yl004         '' 10   '' '' '',
    1096      'YL004MS'    yl004         '' 10   '' '' '',
    1097      'YL004DR'    yl004         '' 10   '' '' '',
    1098      'YL004WS'    yl004         '' 10   '' '' '',
    1099 
    1100      'YL005MG '   yl005         '' 10   '' '' '',
    1101      'YL005MS'    yl005        '' 10   '' '' '',
    1102      'YL005DR'    yl005         '' 10   '' '' '',
    1103      'YL005WS'    yl005         '' 10   '' '' '',
    1104 
    1105      'YL006MG '   yl006         '' 10   '' '' '',
    1106      'YL006MS'    yl006         '' 10   '' '' '',
    1107      'YL006DR'    yl006         '' 10   '' '' '',
    1108      'YL006WS'    yl006         '' 10   '' '' '',
    1109 
    1110      'YL007MG '   yl007         '' 10   '' '' '',
    1111      'YL007MS'    yl007         '' 10   '' '' '',
    1112      'YL007DR'    yl007         '' 10   '' '' '',
    1113      'YL007WS'    yl007         '' 10   '' '' '',
    1114 
    1115      'YL008MG '   yl008         '' 10   '' '' '',
    1116      'YL008MS'    yl008         '' 10   '' '' '',
    1117      'YL008DR'    yl008         '' 10   '' '' '',
    1118      'YL008WS'    yl008         '' 10   '' '' '',
    1119 
    1120      'YL009MG '   yl009         '' 10   '' '' '',
    1121      'YL009MS'    yl009         '' 10   '' '' '',
    1122      'YL009DR'    yl009         '' 10   '' '' '',
    1123      'YL009WS'    yl009         '' 10   '' '' '',
    1124 
    1125      'YL010MG '   yl010         '' 10   '' '' '',
    1126      'YL010MS'    yl010         '' 10   '' '' '',
    1127      'YL010DR'    yl010         '' 10   '' '' '',
    1128      'YL010WS'    yl010         '' 10   '' '' '',
    1129 
    1130      'RL001MG '   rl003         '' 10   '' '' '',
    1131      'RL001MS'    rl003         '' 10   '' '' '',
    1132      'RL001DR'    rl003         '' 10   '' '' '',
    1133      'RL001WS'    rl003         '' 10   '' '' '',
    1134 
    1135      'RL002MG '   rl002         '' 10   '' '' '',
    1136      'RL002MS'    rl002         '' 10   '' '' '',
    1137      'RL002DR'    rl002         '' 10   '' '' '',
    1138      'RL002WS'    rl002         '' 10   '' '' '',
    1139 
    1140      'RL003MG '   rl003         '' 10   '' '' '',
    1141      'RL003MS'    rl003         '' 10   '' '' '',
    1142      'RL003DR'    rl003         '' 10   '' '' '',
    1143      'RL003WS'    rl003         '' 10   '' '' '',
    1144 
    1145      'RL004MG '   rl004         '' 10   '' '' '',
    1146      'RL004MS'    rl004         '' 10   '' '' '',
    1147      'RL004DR'    rl004         '' 10   '' '' '',
    1148      'RL004WS'    rl004         '' 10   '' '' '',
    1149 
    1150      'CB001MG '  '人工作业及附加'         '' 10   '' '' '',
    1151      'CB001MS'   '人工作业及附加'         '' 10   '' '' '',
    1152      'CB001DR'   '人工作业及附加'         '' 10   '' '' '',
    1153      'CB001WS'   '人工作业及附加'        '' 10   '' '' '',
    1154 
    1155      'CB002MG '  '制造费用'         '' 10   '' '' '',
    1156      'CB002MS'   '制造费用'         '' 10   '' '' '',
    1157      'CB002DR'   '制造费用'         '' 10   '' '' '',
    1158      'CB002WS'   '制造费用'        '' 10   '' '' '',
    1159 
    1160      'CB003MG '  '折旧费用'         '' 10   '' '' '',
    1161      'CB003MS'   '折旧费用'         '' 10   '' '' '',
    1162      'CB003DR'   '折旧费用'         '' 10   '' '' '',
    1163      'CB003WS'   '折旧费用'        '' 10   '' '' '',
    1164 
    1165      'CB004MG '  '能源动力'         '' 10   '' '' '',
    1166      'CB004MS'   '能源动力'         '' 10   '' '' '',
    1167      'CB004DR'   '能源动力'         '' 10   '' '' '',
    1168      'CB004WS'   '能源动力'        '' 10   '' '' '',
    1169 
    1170      'CB005MG '  '其他制造费用'         '' 10   '' '' '',
    1171      'CB005MS'   '其他制造费用'         '' 10   '' '' '',
    1172      'CB005DR'   '其他制造费用'         '' 10   '' '' '',
    1173      'CB005WS'   '其他制造费用'        '' 10   '' '' '',
    1174 
    1175      'CB006MG '   yl001         '' 10   '' '' '',
    1176      'CB006MS'    yl001         '' 10   '' '' '',
    1177      'CB006DR'    yl001         '' 10   '' '' '',
    1178      'CB006WS'    yl001         '' 10   '' '' '',
    1179 
    1180      'CB007MG '   yl002         '' 10   '' '' '',
    1181      'CB007MS'    yl002         '' 10   '' '' '',
    1182      'CB007DR'    yl002         '' 10   '' '' '',
    1183      'CB007WS'    yl002         '' 10   '' '' '',
    1184 
    1185      'CB008MG '   yl003         '' 10   '' '' '',
    1186      'CB008MS'    yl003         '' 10   '' '' '',
    1187      'CB008DR'    yl003         '' 10   '' '' '',
    1188      'CB008WS'    yl003         '' 10   '' '' '',
    1189 
    1190      'CB009MG '   yl004         '' 10   '' '' '',
    1191      'CB009MS'    yl004         '' 10   '' '' '',
    1192      'CB009DR'    yl004         '' 10   '' '' '',
    1193      'CB009WS'    yl004         '' 10   '' '' '',
    1194 
    1195      'CB010MG '   yl005         '' 10   '' '' '',
    1196      'CB010MS'    yl005        '' 10   '' '' '',
    1197      'CB010DR'    yl005         '' 10   '' '' '',
    1198      'CB010WS'    yl005         '' 10   '' '' '',
    1199 
    1200      'CB011MG '   yl006         '' 10   '' '' '',
    1201      'CB011MS'    yl006         '' 10   '' '' '',
    1202      'CB011DR'    yl006         '' 10   '' '' '',
    1203      'CB011WS'    yl006         '' 10   '' '' '',
    1204 
    1205      'CB012MG '   yl007         '' 10   '' '' '',
    1206      'CB012MS'    yl007         '' 10   '' '' '',
    1207      'CB012DR'    yl007         '' 10   '' '' '',
    1208      'CB012WS'    yl007         '' 10   '' '' '',
    1209 
    1210      'CB013MG '   yl008         '' 10   '' '' '',
    1211      'CB013MS'    yl008         '' 10   '' '' '',
    1212      'CB013DR'    yl008         '' 10   '' '' '',
    1213      'CB013WS'    yl008         '' 10   '' '' '',
    1214 
    1215      'CB014MG '   yl009         '' 10   '' '' '',
    1216      'CB014MS'    yl009         '' 10   '' '' '',
    1217      'CB014DR'    yl009         '' 10   '' '' '',
    1218      'CB014WS'    yl009         '' 10   '' '' '',
    1219 
    1220      'CB015MG '   yl010         '' 10   '' '' '',
    1221      'CB015MS'    yl010         '' 10   '' '' '',
    1222      'CB015DR'    yl010         '' 10   '' '' '',
    1223      'CB015WS'    yl010         '' 10   '' '' ''.
    1224 
    1225 
    1226   LOOP AT gt_fcat INTO gs_fcat.
    1227     IF gs_fcat-fieldname = 'MEINS'.
    1228       gs_fcat-ref_field = 'MEINS'.
    1229       gs_fcat-ref_table = 'MARA'.
    1230     ENDIF.
    1231 
    1232     IF gs_fcat-fieldname = 'MATNR'.
    1233       gs_fcat-ref_field = 'MATNR'.
    1234       gs_fcat-ref_table = 'MARA'.
    1235     ENDIF.
    1236 
    1237     MODIFY gt_fcat FROM gs_fcat.
    1238     CLEAR gs_fcat.
    1239   ENDLOOP.
    1240 ENDFORM. " FRM_CR
    1241 *&---------------------------------------------------------------------*
    1242 *&      FORM  LAYOUT_INIT
    1243 *&---------------------------------------------------------------------*
    1244 *       TEXT
    1245 *----------------------------------------------------------------------*
    1246 FORM frm_layout_init .
    1247   gs_layout-zebra      = 'X'.
    1248   gs_layout-cwidth_opt = 'X'.
    1249 *  GS_LAYOUT-BOX_FNAME  = 'CBOX'.
    1250   gs_layout-sel_mode   = 'A'.
    1251 
    1252   gs_variant-report   = sy-repid.
    1253   gs_variant-username = sy-uname.
    1254   gs_variant-variant  = pa_vari.
    1255 ENDFORM. "LAYOUT_INIT
    1256 *&---------------------------------------------------------------------*
    1257 *&      FORM  FRM_DISPLAY_BY_ALV
    1258 *&---------------------------------------------------------------------*
    1259 *       TEXT
    1260 *----------------------------------------------------------------------*
    1261 FORM frm_display_alv .
    1262   CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
    1263     EXPORTING
    1264       i_callback_program = sy-repid
    1265       is_layout_lvc      = gs_layout
    1266 *     I_CALLBACK_PF_STATUS_SET = 'SET_PF_STATUS'
    1267 *     I_CALLBACK_USER_COMMAND  = 'USER_COMMAND'
    1268       it_fieldcat_lvc    = gt_fcat
    1269       i_save             = 'A' "变式是否可以保存
    1270       i_grid_settings    = gs_grid_settings
    1271       is_variant         = gs_variant
    1272     TABLES
    1273       t_outtab           = gt_final
    1274     EXCEPTIONS
    1275       program_error      = 1
    1276       OTHERS             = 2.
    1277   IF sy-subrc <> 0.
    1278     MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
    1279     WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
    1280   ENDIF.
    1281 ENDFORM. " FRM_DISPLAY_BY_ALV
    1282 *&---------------------------------------------------------------------*
    1283 *& Form ALV_VARIANT_F4
    1284 *&---------------------------------------------------------------------*
    1285 *& text
    1286 *&---------------------------------------------------------------------*
    1287 *&      <-- PA_VARI
    1288 *&---------------------------------------------------------------------*
    1289 FORM alv_variant_f4  CHANGING p_pa_vari.
    1290   DATA: rs_variant LIKE disvariant.
    1291   DATA nof4 TYPE c.
    1292 
    1293   CLEAR nof4.
    1294   LOOP AT SCREEN.
    1295     IF screen-name = 'PA_VARI'.
    1296       IF screen-input = 0.
    1297         nof4 = 'X'.
    1298       ENDIF.
    1299     ENDIF.
    1300   ENDLOOP.
    1301 
    1302   rs_variant-report   = sy-repid.
    1303   rs_variant-username = sy-uname.
    1304   CALL FUNCTION 'REUSE_ALV_VARIANT_F4'
    1305     EXPORTING
    1306       is_variant = rs_variant
    1307       i_save     = 'A'
    1308     IMPORTING
    1309       es_variant = rs_variant
    1310     EXCEPTIONS
    1311       OTHERS     = 1.
    1312   IF sy-subrc = 0 AND nof4 EQ space.
    1313     pa_vari = rs_variant-variant.
    1314   ENDIF.
    1315 ENDFORM.
  • 相关阅读:
    [置顶] 宏途_LCD调试流程.
    字典树的数据结构及基本算法的实现
    uva 10714 Ants(贪心)
    paip.输入法编程---增加码表类型
    chomp方法
    ios 限制输入长度
    我所理解的设计模式(C++实现)——策略模式(Strategy Pattern)
    Android用户界面 UI组件--AdapterView及其子类(一) ListView及各种Adapter详解
    C#系列教程——switch定义及使用
    局域网内linux由ip反解析主机名
  • 原文地址:https://www.cnblogs.com/eagle-dtq/p/14482634.html
Copyright © 2011-2022 走看看