FICO 成本差异分析表 |
您所在的位置:网站首页 › 成本差异分析表怎么填 › FICO 成本差异分析表 |
text symbol T01 基本数据 8 12T02 附加数据 8 132T03 报表类型 8 8T10 [说明]: 8 8T11 1) 期初数量(金额/差异): = 上期期末数量(金额/差异) ; 51 132T21 2) 本期增加数量(金额): = 所有本期凭证类型为 WE 收货 的凭证 (表BSIM); 68 132T31 3) 本期减少数量(金额): = 所有本期凭证类型为 WA, WL, WI, PR等 收货 的凭证 (表BSIM); 82 132T41 4) 本期增加差异: = 下述第8点的差异之和; 39 132T42 理论上这两者金额相同, 但不排除有个别差异为手工调整差异, 不在此表中; 71 132T51 5) 本期差异率%: = (期初差异+本期增加差异) / (期初数量+本期增加数量); 68 132T61 6) 本期减少差异: = 本期减少数量 * 本期差异率%; 46 132T71 7) 期末差异: = 期初差异 + 本期增加差异 - 本期减少差异; 54 132T72 期末数量(金额): = 期初数量(金额) + 本期增加数量(金额) - 本期减少数量(金额); 79 132T81 8) 本报表中的差异科目为: 511910(原材料差异), 511920(半成品差异), 511930(产成品差异), 84 88T82 511950(低值品差异), 511960(广告物料差异) 共5个科目之和; 91 91
selections texts P_GJAHR 会计年度P_MONAT 会计期间P_WERKS 工厂R_QAMT 查询库存差异R_QQTY 查询库存数量R_SAVE 保存库存差异S_BKLAS 评估类S_HKONT 存货科目S_MATNR 物料S_MTART 物料类型S_PRCTR 利润中心 source code
************************************************************************* PROGRAM NAME : 成本差异分析报告 ** APPLICATION NAME : CO-PC ** SUBSYSTEM : ** AUTHOR : L006125 ** TRANSACTION : YCO10 ** PROGRAM TYPE : Report ** INPUT FILES : ** OUTPUT FILES : ** PROGRAM ID : YCOR0010 **&---------------------------------------------------------------------**& REVISION LOG **& LOG# DATE AUTHOR DESCRIPTION **& ---- ---- ------ ----------- **& 001 2008/09/25 L006125 Created **************************************************************************& 修改日期:2010.05.20*& 修 改 人:zhouxu V1.0*& 修改原因:日期期间修改为会计区间变式中指定日期。544冲销543数量。 REPORT ycor0010 MESSAGE-ID 1000.TABLES: mara, makt, bsim, t030, ycot0010. TYPE-POOLS: slis.INCLUDE . *&---------------------------------------------------------------------**& DECLARE*&---------------------------------------------------------------------* *** 通用变量DATA: v_dbcnt(10) TYPE c, v_msg TYPE string, v_check(01) TYPE c, v_repid LIKE sy-repid, is_alv_disvariant LIKE disvariant, is_alv_print TYPE slis_print_alv, is_alv_layout TYPE slis_layout_alv, it_alv_events TYPE slis_t_event, it_alv_sort TYPE slis_t_sortinfo_alv WITH HEADER LINE, is_alv_fieldcat TYPE slis_fieldcat_alv, it_alv_fieldcat TYPE slis_t_fieldcat_alv WITH HEADER LINE. *** 临时变量DATA: v_waers LIKE t001-waers, v_fr_date TYPE d, "查询期间第一天 v_to_date TYPE d, "查询期间月底日 v_edate TYPE d. "上月最后一天,用于取上月期初DATA: e_buper LIKE t009b-poper,"ADD V1.0上期间月e_gjahr LIKE t009b-bdatj. "ADD V1.0 上期间年度 *** 取数内表DATA: it_ycot0010 LIKE TABLE OF ycot0010 WITH HEADER LINE. "存放期初 DATA: BEGIN OF it_bsim OCCURS 0, "存放本期发生数 matnr LIKE bsim-matnr, bwkey LIKE bsim-bwkey, belnr LIKE bsim-belnr, shkzg LIKE bsim-shkzg, dmbtr LIKE bsim-dmbtr, menge LIKE bsim-menge, meins LIKE bsim-meins, budat LIKE bsim-budat, blart LIKE bsim-blart, maktx LIKE makt-maktx, mtart LIKE mara-mtart, matkl LIKE mara-matkl, prctr LIKE marc-prctr, spart LIKE mara-spart, * ADD by LKJ 2008/11/27 buzei LIKE bsim-buzei, dmbtrp LIKE bsim-dmbtr, mengep LIKE bsim-menge, END OF it_bsim. DATA: BEGIN OF it_bsis OCCURS 0, "存放本期差异 werks LIKE bseg-werks, hkont LIKE bseg-hkont, matnr LIKE bseg-matnr, shkzg LIKE bseg-shkzg, dmbtr LIKE bseg-dmbtr, menge LIKE bseg-menge, bukrs LIKE bseg-bukrs, belnr LIKE bseg-belnr, gjahr LIKE bseg-gjahr, buzei LIKE bseg-buzei, "此行要 END OF it_bsis. DATA: BEGIN OF it_t134t OCCURS 0, "物料类型 mtart LIKE t134t-mtart, mtbez LIKE t134t-mtbez, END OF it_t134t. DATA: BEGIN OF it_t023t OCCURS 0, "物料组 matkl LIKE t023t-matkl, wgbez LIKE t023t-wgbez, END OF it_t023t. *** 取数内表DATA: BEGIN OF it_mseg OCCURS 0, mblnr LIKE mseg-mblnr, zeile LIKE mseg-zeile, bwart LIKE mseg-bwart, matnr LIKE mseg-matnr, belnr LIKE mseg-belnr, buzei LIKE mseg-buzei, dmbtr LIKE mseg-dmbtr, menge LIKE mseg-menge, shkzg LIKE mseg-shkzg, budat LIKE mkpf-budat, END OF it_mseg. *** 输出内表DATA: BEGIN OF is_output. INCLUDE STRUCTURE ycot0010.DATA: flagt TYPE char15, END OF is_output .DATA: it_output LIKE TABLE OF is_output WITH HEADER LINE.DATA: ic_bsim LIKE TABLE OF it_bsim WITH HEADER LINE. *&---------------------------------------------------------------------**& SELECTION-SCREEN*&---------------------------------------------------------------------*SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-t01.PARAMETERS: p_werks LIKE ycot0010-werks OBLIGATORY DEFAULT 'LN01', p_gjahr LIKE ycot0010-gjahr OBLIGATORY DEFAULT sy-datum(4), p_monat LIKE ycot0010-monat OBLIGATORY DEFAULT sy-datum+4(2).
SELECTION-SCREEN END OF BLOCK b1. SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE text-t02.SELECT-OPTIONS: s_matnr FOR ycot0010-matnr MODIF ID g2, s_bklas FOR ycot0010-bklas MODIF ID g2, s_hkont FOR ycot0010-hkont MODIF ID g2, s_mtart FOR ycot0010-mtart MODIF ID g2, s_prctr FOR ycot0010-prctr MODIF ID g2.SELECTION-SCREEN END OF BLOCK b2. SELECTION-SCREEN BEGIN OF BLOCK b3 WITH FRAME TITLE text-t03.PARAMETERS: r_save RADIOBUTTON GROUP rad1 DEFAULT 'X' USER-COMMAND dummy, "MODIF ID g1 r_qqty RADIOBUTTON GROUP rad1, "MODIF ID g2 r_qamt RADIOBUTTON GROUP rad1. "MODIF ID g2SELECTION-SCREEN END OF BLOCK b3. SELECTION-SCREEN BEGIN OF LINE.SELECTION-SCREEN COMMENT 1(22) text-t10 MODIF ID g1.SELECTION-SCREEN END OF LINE. SELECTION-SCREEN BEGIN OF LINE.SELECTION-SCREEN COMMENT 6(82) text-t11 MODIF ID g1.SELECTION-SCREEN END OF LINE. SELECTION-SCREEN BEGIN OF LINE.SELECTION-SCREEN COMMENT 6(82) text-t21 MODIF ID g1.SELECTION-SCREEN END OF LINE. SELECTION-SCREEN BEGIN OF LINE.SELECTION-SCREEN COMMENT 6(82) text-t31 MODIF ID g1.SELECTION-SCREEN END OF LINE. SELECTION-SCREEN BEGIN OF LINE.SELECTION-SCREEN COMMENT 6(82) text-t41 MODIF ID g1.SELECTION-SCREEN END OF LINE. SELECTION-SCREEN BEGIN OF LINE.SELECTION-SCREEN COMMENT 6(82) text-t42 MODIF ID g1.SELECTION-SCREEN END OF LINE. SELECTION-SCREEN BEGIN OF LINE.SELECTION-SCREEN COMMENT 6(82) text-t51 MODIF ID g1.SELECTION-SCREEN END OF LINE. SELECTION-SCREEN BEGIN OF LINE.SELECTION-SCREEN COMMENT 6(82) text-t61 MODIF ID g1.SELECTION-SCREEN END OF LINE. SELECTION-SCREEN BEGIN OF LINE.SELECTION-SCREEN COMMENT 6(82) text-t71 MODIF ID g1.SELECTION-SCREEN END OF LINE. SELECTION-SCREEN BEGIN OF LINE.SELECTION-SCREEN COMMENT 6(82) text-t81 MODIF ID g1.SELECTION-SCREEN END OF LINE. SELECTION-SCREEN BEGIN OF LINE.SELECTION-SCREEN COMMENT 6(82) text-t82 MODIF ID g1.SELECTION-SCREEN END OF LINE. *&---------------------------------------------------------------------**& INITIALIZATION*&---------------------------------------------------------------------*INITIALIZATION. *&---------------------------------------------------------------------**& Event AT SELECTION-SCREEN OUTPUT 用户事件*&---------------------------------------------------------------------*AT SELECTION-SCREEN OUTPUT. PERFORM check_hide. *&---------------------------------------------------------------------**& START-OF-SELECTION*&---------------------------------------------------------------------*START-OF-SELECTION. PERFORM check_authority_value. IF r_save = 'X'. sy-title = '保存库存差异'. PERFORM get_save_kcdata. ELSEIF r_qqty = 'X'. sy-title = '查询库存数量'. PERFORM get_get_kcqtydiff. ELSEIF r_qamt = 'X'. sy-title = '查询库存差异'. PERFORM get_get_kcqtydiff. ENDIF. PERFORM set_vari CHANGING is_alv_disvariant. PERFORM set_events CHANGING it_alv_events. PERFORM set_layout CHANGING is_alv_layout. PERFORM alv_fieldcat TABLES it_alv_fieldcat. PERFORM output_to_alv TABLES it_output. **************************< 以下是过程 >******************************** *&---------------------------------------------------------------------**& Form CHECK_AUTHORITY_VALUE*&---------------------------------------------------------------------*FORM check_authority_value . DATA: lv_monat(3) TYPE n, v_periv LIKE t001-periv. AUTHORITY-CHECK OBJECT 'YREPORT' ID 'BUKRS' FIELD 'HL01' ID 'WERKS' FIELD 'LN01'. IF sy-subrc NE 0. MESSAGE e005(ymess) WITH 'No Authorization!'. ENDIF. * CONCATENATE p_gjahr p_monat '01' INTO v_fr_date. "得到本期间第一天 ZHOUXU V1.0 DEL lv_monat = p_monat. SELECT SINGLE waers periv FROM t001 INTO (v_waers,v_periv) WHERE bukrs = 'HL01'.*------------------BEGIN ZHOUXU V1.0 ADD 得到期间第一天-------------------- CALL FUNCTION 'FIRST_DAY_IN_PERIOD_GET' "取本月期间第一天 EXPORTING i_gjahr = p_gjahr "会计年度 i_periv = v_periv "会计年度变式K4 i_poper = lv_monat "期间(3位N)'' IMPORTING e_date = v_fr_date.*------------------END ZHOUXU V1.0 ADD 得到期间第一天---------------------*----------------BEGIN ZHOUXU V1.0 ADD 得到上期间会计年度和月份----------- v_edate = v_fr_date - 1. CALL FUNCTION 'DATE_TO_PERIOD_CONVERT' "得到上期间会计年度和月份 EXPORTING i_date = v_edate i_periv = v_periv IMPORTING e_buper = e_buper e_gjahr = e_gjahr.*----------------END ZHOUXU V1.0 ADD 得到上期间会计年度和月份----------- CALL FUNCTION 'LAST_DAY_IN_PERIOD_GET' "取本月最后一天 EXPORTING i_gjahr = p_gjahr "会计年度 i_periv = v_periv "会计年度变式K4 i_poper = lv_monat "期间(3位N)'' IMPORTING e_date = v_to_date. IF v_edate = 0. MESSAGE '[会计年度] 或 [会计期间] 输入错误, 请检查输入!' TYPE 'S' . STOP. ENDIF. "得到上月末 IF v_edate(6) < '200808'. MESSAGE '[会计年度] 或 [会计期间] 不能早于上线时间:2008年9月, 请检查输入!' TYPE 'S' . STOP. ENDIF. CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR' EXPORTING text = '程序正在运行中,请稍候...'. ENDFORM. " CHECK_AUTHORITY_VALUE *&---------------------------------------------------------------------**& Form get_save_kcdata*&---------------------------------------------------------------------*FORM get_save_kcdata. DATA: lt_bsim LIKE TABLE OF it_bsim WITH HEADER LINE. DATA: lc_bsim LIKE TABLE OF ic_bsim WITH HEADER LINE. DATA: lt_bsis LIKE TABLE OF it_bsis WITH HEADER LINE. DATA: lt_t030 LIKE TABLE OF t030 WITH HEADER LINE. DATA: BEGIN OF lt_mbew OCCURS 0, matnr LIKE mbew-matnr, bklas LIKE mbew-bklas, END OF lt_mbew. * 取物料类型描述 SELECT mtart mtbez INTO TABLE it_t134t FROM t134t WHERE spras = sy-langu. * 取物料组描述 SELECT matkl wgbez INTO TABLE it_t023t FROM t023t WHERE spras = sy-langu. * 取物料评估类 SELECT matnr bklas INTO TABLE lt_mbew FROM mbew WHERE bwkey = p_werks. SELECT * INTO TABLE lt_t030 FROM t030 WHERE ktopl = 'HL00' AND ktosl = 'BSX'. * 取得本期发生 SELECT bsim~matnr bsim~bwkey bsim~belnr bsim~shkzg bsim~dmbtr bsim~menge bsim~meins bsim~budat bsim~blart bsim~buzei INTO CORRESPONDING FIELDS OF TABLE lt_bsim FROM bsim WHERE bsim~bwkey = p_werks AND bsim~gjahr = p_gjahr AND bsim~budat BETWEEN v_fr_date AND v_to_date.*----------------V1.0----------------------------------- IF lt_bsim[] IS INITIAL . MESSAGE s000 WITH '本期没有数据!'. RETURN. ENDIF.********************** 取发外数据 *********************** add by lkj 2009/02/11* 取物料凭证,项目号;移动类型;物料号;物料凭证的过账日期;金额,数量 add by lkj 2009/02/11**-------------------------BEGIN V1.0 544 对冲543 ------------------------------------ SELECT mseg~mblnr mseg~zeile mseg~bwart mseg~matnr mseg~dmbtr mseg~menge mseg~shkzg mkpf~budat INTO CORRESPONDING FIELDS OF TABLE it_mseg FROM mseg INNER JOIN mkpf ON mseg~mandt = mkpf~mandt AND mseg~mblnr = mkpf~mblnr AND mseg~mjahr = mkpf~mjahr FOR ALL entries IN lt_bsim WHERE mseg~matnr = lt_bsim-matnr AND ( mseg~bwart = '543' OR mseg~bwart = '544' ) AND mkpf~budat BETWEEN v_fr_date AND v_to_date .**-------------------------END V1.0 544 对冲543 ------------------------------------ LOOP AT it_mseg . IF it_mseg-shkzg = 'H'. "贷,对于外协,供应商,借方为正 543 贷,544 借 it_mseg-dmbtr = it_mseg-dmbtr * -1. it_mseg-menge = it_mseg-menge * -1. ELSE. it_mseg-dmbtr = it_mseg-dmbtr. it_mseg-menge = it_mseg-menge. ENDIF.* SELECT SINGLE budat FROM mkpf INTO it_mseg-budat WHERE mblnr = it_mseg-mblnr. MODIFY it_mseg. CLEAR it_mseg. ENDLOOP. * DELETE it_mseg WHERE budat NOT BETWEEN v_fr_date AND v_to_date. "清除不在区间的数据 ADD 2009-02-12 BY LKJ LOOP AT lt_bsim. CLEAR: it_bsim. IF lt_bsim-blart(1) 'W'. "不是物料收发凭证就把数量清掉 lt_bsim-menge = 0. ENDIF. CASE lt_bsim-blart. WHEN 'WE'. "只有WE凭证作为收货(增加) lt_bsim-blart = 'WE'. "收 IF lt_bsim-shkzg = 'S'. "借 lt_bsim-dmbtr = lt_bsim-dmbtr. lt_bsim-menge = lt_bsim-menge. ELSE. lt_bsim-dmbtr = lt_bsim-dmbtr * -1. lt_bsim-menge = lt_bsim-menge * -1. ENDIF. WHEN OTHERS. "其它(如WE/WL/WI/PR等作为发) lt_bsim-blart = 'WA'. "发 IF lt_bsim-shkzg = 'S'. "借 lt_bsim-dmbtr = lt_bsim-dmbtr * -1. lt_bsim-menge = lt_bsim-menge * -1. ELSE. lt_bsim-dmbtr = lt_bsim-dmbtr. lt_bsim-menge = lt_bsim-menge. ENDIF. ENDCASE. READ TABLE it_bsim WITH KEY matnr = lt_bsim-matnr blart = lt_bsim-blart. IF sy-subrc = 0. it_bsim-dmbtr = it_bsim-dmbtr + lt_bsim-dmbtr. it_bsim-menge = it_bsim-menge + lt_bsim-menge. MODIFY it_bsim INDEX sy-tabix. ELSE.** V1.0 优化 ZXOUXU SELECT SINGLE mara~mtart mara~matkl makt~maktx marc~prctr mara~spart FROM mara INNER JOIN marc ON marc~matnr = mara~matnr AND marc~mandt = mara~mandt LEFT JOIN makt ON makt~matnr = mara~matnr AND makt~mandt = mara~mandt AND makt~spras = sy-langu INTO CORRESPONDING FIELDS OF lt_bsim WHERE mara~matnr = lt_bsim-matnr AND marc~werks = lt_bsim-bwkey. MOVE-CORRESPONDING lt_bsim TO it_bsim. APPEND it_bsim. ENDIF. ENDLOOP. FREE lt_bsim. CLEAR: it_bsim. * 取得期初 V1.0 MOD (gjahr = v_edate(4) AND monat = v_edate+4(2)) TO (gjahr = e_gjahr AND monat = e_buper+1(2)). SELECT * FROM ycot0010 INTO TABLE it_ycot0010 WHERE werks = p_werks AND gjahr = e_gjahr AND monat = e_buper+1(2). * 取得差异 DATA: BEGIN OF it_belnr OCCURS 0, bukrs LIKE bseg-bukrs, belnr LIKE bseg-belnr, gjahr LIKE bseg-gjahr, hkont LIKE bseg-hkont, END OF it_belnr. SELECT bukrs belnr gjahr hkont INTO CORRESPONDING FIELDS OF TABLE it_belnr FROM bsis WHERE bukrs = 'HL01' AND hkont IN ('0000511910','0000511920','0000511930', '0000511950','0000511960') AND gjahr = p_gjahr AND monat = p_monat AND budat > '20080930'. "差异从2008.10.01开始计算 IF NOT it_belnr[] IS INITIAL. SELECT werks hkont matnr shkzg dmbtr menge bukrs belnr gjahr buzei INTO CORRESPONDING FIELDS OF TABLE lt_bsis FROM bseg FOR ALL ENTRIES IN it_belnr WHERE bukrs = it_belnr-bukrs AND belnr = it_belnr-belnr AND gjahr = it_belnr-gjahr AND hkont = it_belnr-hkont. LOOP AT lt_bsis WHERE matnr ''. CLEAR: it_bsis. IF lt_bsis-shkzg = 'H'. lt_bsis-dmbtr = lt_bsis-dmbtr * -1. lt_bsis-menge = lt_bsis-menge * -1. ENDIF. it_bsis = lt_bsis.* it_bsis-bukrs = ''.* it_bsis-belnr = ''.* it_bsis-gjahr = 0.* it_bsis-buzei = 0.* it_bsis-shkzg = ''. COLLECT it_bsis. ENDLOOP. FREE: lt_bsis. CLEAR: it_bsis. ENDIF. ********************** 填入本期发生数 ********************** LOOP AT it_bsim. CLEAR: it_output. READ TABLE it_output WITH KEY matnr = it_bsim-matnr. IF sy-subrc = 0. IF it_bsim-blart = 'WA'. "发 it_output-qzjssl = it_output-qzjssl + it_bsim-menge. "本期减少数量 it_output-qzjsje = it_output-qzjsje + it_bsim-dmbtr. "本期减少金额 ENDIF. IF it_bsim-blart = 'WE'. "收 it_output-qzzjsl = it_output-qzzjsl + it_bsim-menge. "本期增加数量 it_output-qzzjje = it_output-qzzjje + it_bsim-dmbtr. "本期增加金额 ENDIF. MODIFY it_output INDEX sy-tabix. ELSE. MOVE-CORRESPONDING it_bsim TO it_output. it_output-gjahr = p_gjahr. it_output-monat = p_monat. it_output-werks = it_bsim-bwkey. it_output-meins = it_bsim-meins. IF it_bsim-blart = 'WA'. "发 it_output-qzjssl = it_bsim-menge. "本期减少数量 it_output-qzjsje = it_bsim-dmbtr. "本期减少金额 ENDIF. IF it_bsim-blart = 'WE'. "收 it_output-qzzjsl = it_bsim-menge. "本期增加数量 it_output-qzzjje = it_bsim-dmbtr. "本期增加金额 ENDIF. APPEND it_output. ENDIF. CLEAR: it_output. ENDLOOP. FREE: it_bsim. CLEAR: it_output. *************************************** 统计外协加工金额 LKJ 2009/02/11 *************************************** LOOP AT it_output. LOOP AT it_mseg WHERE matnr = it_output-matnr. it_output-qzzjjea = it_output-qzzjjea + it_mseg-dmbtr. it_output-qzzjsla = it_output-qzzjsla + it_mseg-menge. ENDLOOP. MODIFY it_output. ENDLOOP. CLEAR it_output. ******************** 填入本期差异 ******************** LOOP AT it_bsis. CLEAR: it_output. READ TABLE it_output WITH KEY matnr = it_bsis-matnr. IF sy-subrc = 0. it_output-qzzjdiff = it_output-qzzjdiff + it_bsis-dmbtr. MODIFY it_output INDEX sy-tabix. ELSE. IF it_bsis-werks ''. it_output-werks = it_bsis-werks. ELSE. it_output-werks = 'LN01'. ENDIF. IF it_bsis-gjahr ''. it_output-gjahr = it_bsis-gjahr. ELSE. it_output-gjahr = p_gjahr. ENDIF. IF it_output-monat = ''. it_output-monat = p_monat. ENDIF. it_output-matnr = it_bsis-matnr. it_output-qzzjdiff = it_bsis-dmbtr. APPEND it_output. ENDIF. CLEAR: it_output. ENDLOOP. FREE: it_bsis. CLEAR: it_output. ************************** 填入期初金额和差异 ************************** LOOP AT it_ycot0010. CLEAR: it_output. READ TABLE it_output WITH KEY matnr = it_ycot0010-matnr. IF sy-subrc = 0. it_output-qckcsl = it_ycot0010-qmkcsl. it_output-qckcje = it_ycot0010-qmkcje. it_output-qcdiff = it_ycot0010-qmdiff. MODIFY it_output INDEX sy-tabix. ELSE. MOVE-CORRESPONDING it_ycot0010 TO it_output. it_output-gjahr = p_gjahr. it_output-monat = p_monat. it_output-qckcsl = it_ycot0010-qmkcsl. it_output-qckcje = it_ycot0010-qmkcje. it_output-qcdiff = it_ycot0010-qmdiff. CLEAR: it_output-qzzjsl, it_output-qzzjje, it_output-qzjssl, it_output-qzjsje, it_output-qzzjsla,it_output-qzzjjea, it_output-qmkcsl, it_output-qmkcje, it_output-qzzjdiff, it_output-qzjsdiff. APPEND it_output. ENDIF. CLEAR: it_output. ENDLOOP. REFRESH: it_ycot0010. CLEAR: it_output. ************************** 填入期末金额和差异 ************************** DATA: v_price TYPE p DECIMALS 8, v_tabix TYPE sy-tabix. LOOP AT it_output. v_tabix = sy-tabix. it_output-waers = v_waers. READ TABLE it_t134t WITH KEY mtart = it_output-mtart. IF sy-subrc = 0. it_output-mtbez = it_t134t-mtbez. ENDIF. READ TABLE it_t023t WITH KEY matkl = it_output-matkl. IF sy-subrc = 0. it_output-wgbez = it_t023t-wgbez. ENDIF. READ TABLE lt_mbew WITH KEY matnr = it_output-matnr. IF sy-subrc = 0. it_output-bklas = lt_mbew-bklas. ENDIF. READ TABLE lt_t030 WITH KEY bklas = it_output-bklas. IF sy-subrc = 0. it_output-hkont = lt_t030-konts. ENDIF. * 期末数量=期初数量+本期增加数量-本期减少数量. it_output-qmkcsl = it_output-qckcsl + it_output-qzzjsl - it_output-qzjssl. * 期末金额=期初金额+本期增加金额-本期减少金额. it_output-qmkcje = it_output-qckcje + it_output-qzzjje - it_output-qzjsje. * [处理期末差异]* A) 求本期差异率: = (期初差异+本期总差异) / (期初数量+本期收入数) DATA: lv_rate TYPE p DECIMALS 8, lv_menge LIKE bsim-menge ,lv_diff LIKE ycot0010-qcdiff. lv_menge = it_output-qckcsl + it_output-qzzjsl. lv_diff = it_output-qcdiff + it_output-qzzjdiff. IF lv_menge 0 AND lv_diff 0 . lv_rate = ( it_output-qcdiff + it_output-qzzjdiff ) / lv_menge. ELSE. lv_rate = 0. ENDIF. * B) 本期发出差异: = 本月发出数量 * 本月差异率 it_output-qzjsdiff = it_output-qzjssl * lv_rate. * C) 算出期末差异: = (期初差异+本期收入差异)-本期发出差异 it_output-qmdiff = it_output-qcdiff + it_output-qzzjdiff - it_output-qzjsdiff. IF it_output-qzzjsl = 0 AND it_output-qzzjje = 0 AND it_output-qzjssl = 0 AND it_output-qzjsje = 0 AND it_output-qzzjdiff = 0 AND it_output-qzjsdiff = 0 AND ( it_output-qckcsl 0 OR it_output-qckcje 0 ). "有期初,无期中,为黄灯 it_output-flagt = icon_led_yellow. ELSEIF it_output-qzzjsl = 0 AND it_output-qzzjje = 0 AND it_output-qzjssl = 0 AND it_output-qzjsje = 0 AND it_output-qzzjdiff = 0 AND it_output-qzjsdiff = 0 AND it_output-qckcsl = 0 AND it_output-qckcje = 0 . "有期初,无期中,为黄灯 it_output-flagt = icon_led_red. ELSE. it_output-flagt = icon_led_green. ENDIF. MODIFY it_output. * 转入it_ycot0010,用于保存 CLEAR: it_ycot0010. MOVE-CORRESPONDING it_output TO it_ycot0010. IF it_output-qckcsl = 0 AND it_output-qckcje = 0 AND it_output-qzzjsl = 0 AND it_output-qzzjje = 0 AND it_output-qzjssl = 0 AND it_output-qzjsje = 0 AND it_output-qcdiff = 0 AND it_output-qmdiff = 0 AND "add by LKJ it_output-qzzjdiff = 0 AND it_output-qzjsdiff = 0 AND it_output-qzzjsla = 0 AND it_output-qzzjjea = 0. DELETE it_output INDEX v_tabix. ELSE. APPEND it_ycot0010. ENDIF. CLEAR: it_ycot0010. ENDLOOP. CLEAR: it_output.
* 取物料常规数据中的物料组,利润中心到表 add by LKJ 2009/03/02 LOOP AT it_output. SELECT SINGLE matkl INTO it_output-matkl FROM mara WHERE matnr = it_output-matnr. SELECT SINGLE mtart INTO it_output-mtart FROM mara WHERE matnr = it_output-matnr. SELECT SINGLE prctr INTO it_output-prctr FROM marc WHERE matnr = it_output-matnr. SELECT SINGLE maktx INTO it_output-maktx FROM makt WHERE matnr = it_output-matnr. * 取物料组,物料类型描述 add by LKJ 2009/03/02 SELECT SINGLE wgbez INTO it_output-wgbez FROM t023t WHERE matkl = it_output-matkl. SELECT SINGLE mtbez INTO it_output-mtbez FROM t134t WHERE mtart = it_output-mtart. MODIFY it_output. ENDLOOP. CLEAR it_output.
* 取物料常规数据中的物料组,利润中心到表 add by LKJ 2009/03/02 LOOP AT it_ycot0010. SELECT SINGLE matkl INTO it_ycot0010-matkl FROM mara WHERE matnr = it_ycot0010-matnr. SELECT SINGLE mtart INTO it_ycot0010-mtart FROM mara WHERE matnr = it_ycot0010-matnr. SELECT SINGLE maktx INTO it_ycot0010-maktx FROM makt WHERE matnr = it_ycot0010-matnr. SELECT SINGLE prctr INTO it_ycot0010-prctr FROM marc WHERE matnr = it_ycot0010-matnr.* 取物料组描述 add by LKJ 2009/03/02 SELECT SINGLE wgbez INTO it_ycot0010-wgbez FROM t023t WHERE matkl = it_ycot0010-matkl. SELECT SINGLE mtbez INTO it_ycot0010-mtbez FROM t134t WHERE mtart = it_ycot0010-mtart. MODIFY it_ycot0010. ENDLOOP. CLEAR it_ycot0010. ******************** 保存全部结果 ******************** DATA: v_answer TYPE c, v_breakp TYPE c VALUE 'Y'. SORT it_output BY hkont mtart matkl matnr. CALL FUNCTION 'POPUP_TO_CONFIRM' EXPORTING titlebar = '保存差异' text_question = '是否保存? 按[ 是 ]将覆盖查询年度和期间的原有记录!' text_button_1 = '是' icon_button_1 = 'ICON_OKAY' text_button_2 = '否' icon_button_2 = 'ICON_CANCEL' display_cancel_button = ' ' default_button = '1' IMPORTING answer = v_answer EXCEPTIONS text_not_found = 1 OTHERS = 2. IF v_answer = '1'. * 先检查一下上期有没有保存!* SELECT SINGLE * FROM ycot0010 WHERE gjahr = v_edate(4) AND* monat = v_edate+4(2).*-----------------ADD V1.0----------------------------------- SELECT SINGLE * FROM ycot0010 WHERE gjahr = e_gjahr AND monat = e_buper+1(2). IF sy-subrc 0 AND v_edate(6) > '200808'. CALL FUNCTION 'POPUP_TO_CONFIRM' EXPORTING titlebar = '保存差异错误' text_question = '因前一期间未做保存, 所以本次无法保存!' text_button_1 = '取消' icon_button_1 = 'ICON_CANCEL' display_cancel_button = ' ' default_button = '1' IMPORTING answer = v_answer EXCEPTIONS text_not_found = 1 OTHERS = 2. v_breakp = 'N'. ELSE. * 先清空YCOT0010自定义表的本期数据记录 DELETE FROM ycot0010 WHERE gjahr = p_gjahr AND monat = p_monat. COMMIT WORK. CHECK NOT it_ycot0010[] IS INITIAL. CASE v_breakp. "THIS BREAK POINT TO DELETE ALL RECORD. WHEN 'Y'. INSERT ycot0010 FROM TABLE it_ycot0010. COMMIT WORK. WHEN 'B'. DELETE FROM ycot0010. ENDCASE. ENDIF. ELSE. v_breakp = 'N'. ENDIF. FREE: it_ycot0010. * 输出ALV DESCRIBE TABLE it_output LINES v_dbcnt. IF v_dbcnt 0. IF v_breakp = 'Y'. CONCATENATE '共找到记录: ' v_dbcnt ' 条, 并成功保存至自定义表[ YCOT0010 ]中!' INTO v_msg. ELSE. CONCATENATE '共找到记录: ' v_dbcnt ' 条!' INTO v_msg. ENDIF. MESSAGE v_msg TYPE 'S'. ELSE. MESSAGE '未找到任何记录,请检查选择条件!' TYPE 'S'. STOP. ENDIF.ENDFORM. " get_save_kcdata *&---------------------------------------------------------------------**& Form output_to_alv*&---------------------------------------------------------------------*FORM output_to_alv TABLES pt_output STRUCTURE it_output. DATA: v_title TYPE lvc_title. v_repid = sy-repid. CONCATENATE '工厂:' p_werks ' 会计年度:' p_gjahr ' 期间:' p_monat INTO v_title. CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' EXPORTING i_bypassing_buffer = 'X' i_buffer_active = 'X' i_interface_check = v_check i_callback_program = v_repid i_grid_title = v_title i_callback_user_command = 'FRM_USER_COMMAND' is_layout = is_alv_layout it_fieldcat = it_alv_fieldcat[] it_sort = it_alv_sort[] i_default = 'X' i_save = 'A' is_variant = is_alv_disvariant it_events = it_alv_events[] is_print = is_alv_print TABLES t_outtab = it_output EXCEPTIONS OTHERS = 2. IF sy-subrc 0. MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. ENDIF. ENDFORM. " output_to_alv *--------------------------------------------------------------------------------------------------------------------------------------**& Form set_fcatlog_report1 ALV的列字段显示 **& 1_col_pos 2_fieldname 3_Itabname 4_ref_tabname 5_ref_fieldname 6_key 7_scrtext_l 8_scrtext_m 9_scrtext_s 10_outputlen **& 11_just 12_no_out 13_do_sum 14_no_zero 15_emphasize **--------------------------------------------------------------------------------------------------------------------------------------*FORM alv_fieldcat TABLES pt_alv_fieldcat STRUCTURE it_alv_fieldcat. DATA: ii TYPE i VALUE 1. * 报表一*******************************1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 IF r_save = 'X'. PERFORM fieldcat_int USING ii 'FLAGT' 'IT_OUTPUT' ' ' ' ' 'X' '有无本期' '本期' '本期' '4' 'C' ' ' ' ' ' ' ' ' . PERFORM fieldcat_int USING ii 'HKONT' 'IT_OUTPUT' 'BSIS' 'HKONT' 'X' '总账科目' '总账科目' '总账科目' '8' 'C' ' ' ' ' ' ' ' ' . PERFORM fieldcat_int USING ii 'PRCTR' 'IT_OUTPUT' 'MARC' 'PRCTR' 'X' '利润中心' '利润中心' '利润中心' '7' 'C' ' ' ' ' ' ' ' ' . PERFORM fieldcat_int USING ii 'MATKL' 'IT_OUTPUT' 'S032' 'MATKL' 'X' '物料组' '物料组' '物料组' '6' 'C' ' ' ' ' ' ' ' ' . PERFORM fieldcat_int USING ii 'WGBEZ' 'IT_OUTPUT' 'MAKT' 'WGBEZ' ' ' '物料组描述' '物料组描述' '物料组描述' '14' 'L' 'X' ' ' ' ' ' ' . PERFORM fieldcat_int USING ii 'MATNR' 'IT_OUTPUT' 'YCOT0010' 'MATNR' 'X' '物料号' '物料号' '物料号' '16' 'L' ' ' ' ' ' ' ' ' . PERFORM fieldcat_int USING ii 'MAKTX' 'IT_OUTPUT' 'MAKT' 'MAKTX' ' ' '物料描述' '物料描述' '物料描述' '30' 'L' 'X' ' ' ' ' ' ' . PERFORM fieldcat_int USING ii 'MEINS' 'IT_OUTPUT' 'YCOT0010' 'BASME' ' ' '基本计量单位' '基本单位' '单位' '4' 'C' ' ' ' ' ' ' ' ' . PERFORM fieldcat_int USING ii 'WAERS' 'IT_OUTPUT' 'YCOT0010' 'HWAER' ' ' '货币码' '货币' '货币' '4' 'C' ' ' ' ' ' ' ' ' . PERFORM fieldcat_int USING ii 'QCKCSL' 'IT_OUTPUT' ' ' 'MBWBEST' ' ' '期初数量' '期初数量' '期初数量' '14' 'R' ' ' ' ' 'X' ' ' . PERFORM fieldcat_int USING ii 'QCKCJE' 'IT_OUTPUT' ' ' 'WBWBEST' ' ' '期初金额' '期初金额' '期初金额' '14' 'R' ' ' 'X' 'X' ' ' . PERFORM fieldcat_int USING ii 'QCDIFF' 'IT_OUTPUT' ' ' 'WBWBEST' ' ' '期初差异金额' '期初差异' '期初差异' '14' 'R' ' ' 'X' 'X' 'C600' . PERFORM fieldcat_int USING ii 'QZZJSL' 'IT_OUTPUT' ' ' 'MBWBEST' ' ' '本期增加数量' '本期增加数量' '本期增加数' '14' 'R' ' ' ' ' 'X' ' ' . PERFORM fieldcat_int USING ii 'QZZJJE' 'IT_OUTPUT' ' ' 'WBWBEST' ' ' '本期增加金额' '本期增加金额' '本期增加额' '14' 'R' ' ' 'X' 'X' ' ' . PERFORM fieldcat_int USING ii 'QZZJDIFF' 'IT_OUTPUT' ' ' 'WBWBEST' ' ' '本期增加差异' '本期增加差异' '本增加差异' '14' 'R' ' ' 'X' 'X' 'C600' . PERFORM fieldcat_int USING ii 'QZZJSLA' 'IT_OUTPUT' ' ' 'MBWBEST' ' ' '本期外协数量' '本期外协数量' '本期外协数' '14' 'R' ' ' '' 'X' ' ' . PERFORM fieldcat_int USING ii 'QZZJJEA' 'IT_OUTPUT' ' ' 'WBWBEST' ' ' '本期外协金额' '本期外协金额' '本期外协额' '14' 'R' ' ' 'X' 'X' ' ' . PERFORM fieldcat_int USING ii 'QZJSSL' 'IT_OUTPUT' ' ' 'MBWBEST' ' ' '本期减少数量' '本期减少数量' '本期减少数' '14' 'R' ' ' ' ' 'X' ' ' . PERFORM fieldcat_int USING ii 'QZJSJE' 'IT_OUTPUT' ' ' 'WBWBEST' ' ' '本期减少金额' '本期减少金额' '本期减少额' '14' 'R' ' ' 'X' 'X' ' ' . PERFORM fieldcat_int USING ii 'QZJSDIFF' 'IT_OUTPUT' ' ' 'WBWBEST' ' ' '本期减少差异' '本期减少差异' '本减少差异' '14' 'R' ' ' 'X' 'X' 'C600' . PERFORM fieldcat_int USING ii 'QMKCSL' 'IT_OUTPUT' ' ' 'MBWBEST' ' ' '期末数量' '期末数量' '期末数量' '14' 'R' ' ' ' ' 'X' ' ' . PERFORM fieldcat_int USING ii 'QMKCJE' 'IT_OUTPUT' ' ' 'WBWBEST' ' ' '期末金额' '期末金额' '期末金额' '14' 'R' ' ' 'X' 'X' ' ' . PERFORM fieldcat_int USING ii 'QMDIFF' 'IT_OUTPUT' ' ' 'WBWBEST' ' ' '期末差异金额' '期末差异' '期末差异' '14' 'R' ' ' 'X' 'X' 'C600' . PERFORM fieldcat_int USING ii 'WERKS' 'IT_OUTPUT' 'YCOT0010' 'WERKS' ' ' '工厂' '工厂' '工厂' '4' 'C' 'X' ' ' ' ' ' ' . PERFORM fieldcat_int USING ii 'GJAHR' 'IT_OUTPUT' 'YCOT0010' 'GJAHR' ' ' '会计年度' '会计年度' '年度' '4' 'C' 'X' ' ' ' ' ' ' . PERFORM fieldcat_int USING ii 'MONAT' 'IT_OUTPUT' 'YCOT0010' 'MONAT' ' ' '会计期间' '会计期间' '期间' '4' 'C' 'X' ' ' ' ' ' ' . PERFORM fieldcat_int USING ii 'MTART' 'IT_OUTPUT' 'YCOT0010' 'MTART' ' ' '物料类型' '物料类型' 'MTYP' '5' 'L' 'X' ' ' ' ' ' ' . PERFORM fieldcat_int USING ii 'MTBEZ' 'IT_OUTPUT' 'YCOT0010' 'MTBEZ' ' ' '物料类型描述' '物料类型描述' 'M类型描述' '14' 'L' 'X' ' ' ' ' ' ' . ENDIF. * 报表二*******************************1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 IF r_qqty = 'X'. PERFORM fieldcat_int USING ii 'FLAGT' 'IT_OUTPUT' ' ' ' ' 'X' '有无本期' '本期' '本期' '4' 'C' 'X' ' ' ' ' ' ' . PERFORM fieldcat_int USING ii 'HKONT' 'IT_OUTPUT' 'BSIS' 'HKONT' 'X' '总账科目' '总账科目' '总账科目' '8' 'C' ' ' ' ' ' ' ' ' . PERFORM fieldcat_int USING ii 'PRCTR' 'IT_OUTPUT' 'MARC' 'PRCTR' 'X' '利润中心' '利润中心' '利润中心' '7' 'C' ' ' ' ' ' ' ' ' . PERFORM fieldcat_int USING ii 'MATKL' 'IT_OUTPUT' 'S032' 'MATKL' 'X' '物料组' '物料组' '物料组' '6' 'C' ' ' ' ' ' ' ' ' . PERFORM fieldcat_int USING ii 'WGBEZ' 'IT_OUTPUT' 'MAKT' 'WGBEZ' ' ' '物料组描述' '物料组描述' '物料组描述' '14' 'L' 'X' ' ' ' ' ' ' . PERFORM fieldcat_int USING ii 'MATNR' 'IT_OUTPUT' 'YCOT0010' 'MATNR' 'X' '物料号' '物料号' '物料号' '16' 'L' ' ' ' ' ' ' ' ' . PERFORM fieldcat_int USING ii 'MAKTX' 'IT_OUTPUT' 'MAKT' 'MAKTX' ' ' '物料描述' '物料描述' '物料描述' '30' 'L' 'X' ' ' ' ' ' ' . PERFORM fieldcat_int USING ii 'MEINS' 'IT_OUTPUT' 'YCOT0010' 'BASME' ' ' '基本计量单位' '基本单位' '单位' '4' 'C' ' ' ' ' ' ' ' ' . PERFORM fieldcat_int USING ii 'WAERS' 'IT_OUTPUT' 'YCOT0010' 'HWAER' ' ' '货币码' '货币' '货币' '4' 'C' ' ' ' ' ' ' ' ' . PERFORM fieldcat_int USING ii 'QCKCSL' 'IT_OUTPUT' ' ' 'MBWBEST' ' ' '期初数量' '期初数量' '期初数量' '14' 'R' ' ' ' ' 'X' ' ' . PERFORM fieldcat_int USING ii 'QCKCJE' 'IT_OUTPUT' ' ' 'WBWBEST' ' ' '期初金额' '期初金额' '期初金额' '14' 'R' ' ' 'X' 'X' ' ' . PERFORM fieldcat_int USING ii 'QCDIFF' 'IT_OUTPUT' ' ' 'WBWBEST' ' ' '期初差异金额' '期初差异' '期初差异' '14' 'R' 'X' 'X' 'X' 'C600' . PERFORM fieldcat_int USING ii 'QZZJSL' 'IT_OUTPUT' ' ' 'MBWBEST' ' ' '本期增加数量' '本期增加数量' '本期增加数' '14' 'R' ' ' ' ' 'X' ' ' . PERFORM fieldcat_int USING ii 'QZZJJE' 'IT_OUTPUT' ' ' 'WBWBEST' ' ' '本期增加金额' '本期增加金额' '本期增加额' '14' 'R' ' ' 'X' 'X' ' ' . PERFORM fieldcat_int USING ii 'QZZJDIFF' 'IT_OUTPUT' ' ' 'WBWBEST' ' ' '本期增加差异' '本期增加差异' '本增加差异' '14' 'R' 'X' 'X' 'X' 'C600' . PERFORM fieldcat_int USING ii 'QZZJSLA' 'IT_OUTPUT' ' ' 'MBWBEST' ' ' '本期外协数量' '本期外协数量' '本期外协数' '14' 'R' ' ' '' 'X' ' ' . PERFORM fieldcat_int USING ii 'QZZJJEA' 'IT_OUTPUT' ' ' 'WBWBEST' ' ' '本期外协金额' '本期外协金额' '本期外协额' '14' 'R' ' ' 'X' 'X' ' ' . PERFORM fieldcat_int USING ii 'QZJSSL' 'IT_OUTPUT' ' ' 'MBWBEST' ' ' '本期减少数量' '本期减少数量' '本期减少数' '14' 'R' ' ' ' ' 'X' ' ' . PERFORM fieldcat_int USING ii 'QZJSJE' 'IT_OUTPUT' ' ' 'WBWBEST' ' ' '本期减少金额' '本期减少金额' '本期减少额' '14' 'R' ' ' 'X' 'X' ' ' . PERFORM fieldcat_int USING ii 'QZJSDIFF' 'IT_OUTPUT' ' ' 'WBWBEST' ' ' '本期减少差异' '本期减少差异' '本减少差异' '14' 'R' 'X' 'X' 'X' 'C600' . PERFORM fieldcat_int USING ii 'QMKCSL' 'IT_OUTPUT' ' ' 'MBWBEST' ' ' '期末数量' '期末数量' '期末数量' '14' 'R' ' ' ' ' 'X' ' ' . PERFORM fieldcat_int USING ii 'QMKCJE' 'IT_OUTPUT' ' ' 'WBWBEST' ' ' '期末金额' '期末金额' '期末金额' '14' 'R' ' ' 'X' 'X' ' ' . PERFORM fieldcat_int USING ii 'QMDIFF' 'IT_OUTPUT' ' ' 'WBWBEST' ' ' '期末差异金额' '期末差异' '期末差异' '14' 'R' 'X' 'X' 'X' 'C600' . PERFORM fieldcat_int USING ii 'WERKS' 'IT_OUTPUT' 'YCOT0010' 'WERKS' ' ' '工厂' '工厂' '工厂' '4' 'C' 'X' ' ' ' ' ' ' . PERFORM fieldcat_int USING ii 'GJAHR' 'IT_OUTPUT' 'YCOT0010' 'GJAHR' ' ' '会计年度' '会计年度' '年度' '4' 'C' 'X' ' ' ' ' ' ' . PERFORM fieldcat_int USING ii 'MONAT' 'IT_OUTPUT' 'YCOT0010' 'MONAT' ' ' '会计期间' '会计期间' '期间' '4' 'C' 'X' ' ' ' ' ' ' . PERFORM fieldcat_int USING ii 'MTART' 'IT_OUTPUT' 'YCOT0010' 'MTART' ' ' '物料类型' '物料类型' 'MTYP' '5' 'L' 'X' ' ' ' ' ' ' . PERFORM fieldcat_int USING ii 'MTBEZ' 'IT_OUTPUT' 'YCOT0010' 'MTBEZ' ' ' '物料类型描述' '物料类型描述' 'M类型描述' '14' 'L' 'X' ' ' ' ' ' ' . ENDIF. * 报表三*******************************1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 IF r_qamt = 'X'. PERFORM fieldcat_int USING ii 'FLAGT' 'IT_OUTPUT' ' ' ' ' 'X' '有无本期' '本期' '本期' '4' 'C' 'X' ' ' ' ' ' ' . PERFORM fieldcat_int USING ii 'HKONT' 'IT_OUTPUT' 'BSIS' 'HKONT' 'X' '总账科目' '总账科目' '总账科目' '8' 'C' ' ' ' ' ' ' ' ' . PERFORM fieldcat_int USING ii 'PRCTR' 'IT_OUTPUT' 'MARC' 'PRCTR' 'X' '利润中心' '利润中心' '利润中心' '7' 'C' ' ' ' ' ' ' ' ' . PERFORM fieldcat_int USING ii 'MATKL' 'IT_OUTPUT' 'S032' 'MATKL' 'X' '物料组' '物料组' '物料组' '6' 'C' ' ' ' ' ' ' ' ' . PERFORM fieldcat_int USING ii 'WGBEZ' 'IT_OUTPUT' 'MAKT' 'WGBEZ' ' ' '物料组描述' '物料组描述' '物料组描述' '14' 'L' 'X' ' ' ' ' ' ' . PERFORM fieldcat_int USING ii 'MATNR' 'IT_OUTPUT' 'YCOT0010' 'MATNR' 'X' '物料号' '物料号' '物料号' '16' 'L' ' ' ' ' ' ' ' ' . PERFORM fieldcat_int USING ii 'MAKTX' 'IT_OUTPUT' 'MAKT' 'MAKTX' ' ' '物料描述' '物料描述' '物料描述' '30' 'L' 'X' ' ' ' ' ' ' . PERFORM fieldcat_int USING ii 'MEINS' 'IT_OUTPUT' 'YCOT0010' 'BASME' ' ' '基本计量单位' '基本单位' '单位' '4' 'C' ' ' ' ' ' ' ' ' . PERFORM fieldcat_int USING ii 'WAERS' 'IT_OUTPUT' 'YCOT0010' 'HWAER' ' ' '货币码' '货币' '货币' '4' 'C' ' ' ' ' ' ' ' ' . PERFORM fieldcat_int USING ii 'QCKCSL' 'IT_OUTPUT' ' ' 'MBWBEST' ' ' '期初数量' '期初数量' '期初数量' '14' 'R' ' ' ' ' 'X' ' ' . PERFORM fieldcat_int USING ii 'QCKCJE' 'IT_OUTPUT' ' ' 'WBWBEST' ' ' '期初金额' '期初金额' '期初金额' '14' 'R' 'X' 'X' 'X' ' ' . PERFORM fieldcat_int USING ii 'QCDIFF' 'IT_OUTPUT' ' ' 'WBWBEST' ' ' '期初差异金额' '期初差异' '期初差异' '14' 'R' ' ' 'X' 'X' 'C600' . PERFORM fieldcat_int USING ii 'QZZJSL' 'IT_OUTPUT' ' ' 'MBWBEST' ' ' '本期增加数量' '本期增加数量' '本期增加数' '14' 'R' ' ' ' ' 'X' ' ' . PERFORM fieldcat_int USING ii 'QZZJJE' 'IT_OUTPUT' ' ' 'WBWBEST' ' ' '本期增加金额' '本期增加金额' '本期增加额' '14' 'R' 'X' 'X' 'X' ' ' . PERFORM fieldcat_int USING ii 'QZZJDIFF' 'IT_OUTPUT' ' ' 'WBWBEST' ' ' '本期增加差异' '本期增加差异' '本增加差异' '14' 'R' ' ' 'X' 'X' 'C600' . PERFORM fieldcat_int USING ii 'QZZJSLA' 'IT_OUTPUT' ' ' 'MBWBEST' ' ' '本期外协数量' '本期外协数量' '本期外协数' '14' 'R' ' ' '' 'X' ' ' . PERFORM fieldcat_int USING ii 'QZZJJEA' 'IT_OUTPUT' ' ' 'WBWBEST' ' ' '本期外协金额' '本期外协金额' '本期外协额' '14' 'R' ' ' 'X' 'X' ' ' . PERFORM fieldcat_int USING ii 'QZJSSL' 'IT_OUTPUT' ' ' 'MBWBEST' ' ' '本期减少数量' '本期减少数量' '本期减少数' '14' 'R' ' ' ' ' 'X' ' ' . PERFORM fieldcat_int USING ii 'QZJSJE' 'IT_OUTPUT' ' ' 'WBWBEST' ' ' '本期减少金额' '本期减少金额' '本期减少额' '14' 'R' 'X' 'X' 'X' ' ' . PERFORM fieldcat_int USING ii 'QZJSDIFF' 'IT_OUTPUT' ' ' 'WBWBEST' ' ' '本期减少差异' '本期减少差异' '本减少差异' '14' 'R' ' ' 'X' 'X' 'C600' . PERFORM fieldcat_int USING ii 'QMKCSL' 'IT_OUTPUT' ' ' 'MBWBEST' ' ' '期末数量' '期末数量' '期末数量' '14' 'R' ' ' ' ' 'X' ' ' . PERFORM fieldcat_int USING ii 'QMKCJE' 'IT_OUTPUT' ' ' 'WBWBEST' ' ' '期末金额' '期末金额' '期末金额' '14' 'R' 'X' 'X' 'X' ' ' . PERFORM fieldcat_int USING ii 'QMDIFF' 'IT_OUTPUT' ' ' 'WBWBEST' ' ' '期末差异金额' '期末差异' '期末差异' '14' 'R' ' ' 'X' 'X' 'C600' . PERFORM fieldcat_int USING ii 'WERKS' 'IT_OUTPUT' 'YCOT0010' 'WERKS' ' ' '工厂' '工厂' '工厂' '4' 'C' 'X' ' ' ' ' ' ' . PERFORM fieldcat_int USING ii 'GJAHR' 'IT_OUTPUT' 'YCOT0010' 'GJAHR' ' ' '会计年度' '会计年度' '年度' '4' 'C' 'X' ' ' ' ' ' ' . PERFORM fieldcat_int USING ii 'MONAT' 'IT_OUTPUT' 'YCOT0010' 'MONAT' ' ' '会计期间' '会计期间' '期间' '4' 'C' 'X' ' ' ' ' ' ' . PERFORM fieldcat_int USING ii 'MTART' 'IT_OUTPUT' 'YCOT0010' 'MTART' ' ' '物料类型' '物料类型' 'MTYP' '5' 'L' 'X' ' ' ' ' ' ' . PERFORM fieldcat_int USING ii 'MTBEZ' 'IT_OUTPUT' 'YCOT0010' 'MTBEZ' ' ' '物料类型描述' '物料类型描述' 'M类型描述' '14' 'L' 'X' ' ' ' ' ' ' . ENDIF. ENDFORM. " alv_fieldcat *&---------------------------------------------------------------------**& Form FIELDCAT_INT*&---------------------------------------------------------------------*FORM fieldcat_int USING p_col_pos " 1 p_fieldname " 2 p_itabname " 3 p_ref_tabname " 4 p_ref_fieldname " 5 p_key " 6 p_seltext_l " 7 p_seltext_m " 8 p_seltext_s " 9 p_outputlen "10 p_just "11 p_no_out "12 p_do_sum "13 p_no_zero "14 p_emphasize. "15 * is_alv_fieldcat-row_pos = p_ROW_pos. is_alv_fieldcat-col_pos = p_col_pos. is_alv_fieldcat-fieldname = p_fieldname. is_alv_fieldcat-tabname = p_itabname. is_alv_fieldcat-ref_tabname = p_ref_tabname. is_alv_fieldcat-ref_fieldname = p_ref_fieldname. is_alv_fieldcat-key = p_key. is_alv_fieldcat-seltext_l = p_seltext_l. is_alv_fieldcat-seltext_m = p_seltext_m. is_alv_fieldcat-seltext_s = p_seltext_s. is_alv_fieldcat-outputlen = p_outputlen. is_alv_fieldcat-just = p_just. is_alv_fieldcat-no_out = p_no_out. is_alv_fieldcat-do_sum = p_do_sum. is_alv_fieldcat-no_zero = p_no_zero. is_alv_fieldcat-emphasize = p_emphasize.* is_alv_fieldcat-ddictxt = 'M'. CASE is_alv_fieldcat-fieldname. WHEN 'QCKCJE' OR 'QZZJJE' OR 'QZZJJEA' OR 'QZJSJE' OR 'QMKCJE' OR 'QCDIFF' OR 'QZZJDIFF' OR 'QZJSDIFF' OR 'QMDIFF'. is_alv_fieldcat-cfieldname = 'WAERS'. WHEN 'QCKCSL' OR 'QZZJSL' OR 'QZJSSL' OR 'QMKCSL'. is_alv_fieldcat-qfieldname = 'MEINS'. ENDCASE. APPEND is_alv_fieldcat TO it_alv_fieldcat. p_col_pos = p_col_pos + 1. CLEAR: is_alv_fieldcat. ENDFORM. " FIELDCAT_INT *&---------------------------------------------------------------------**& Form set_vari **&---------------------------------------------------------------------*FORM set_vari CHANGING p_vari TYPE disvariant. p_vari-report = sy-repid. p_vari-handle = space. p_vari-log_group = space. p_vari-username = space. p_vari-variant = space. p_vari-text = space. p_vari-dependvars = space.ENDFORM. " set_vari *&---------------------------------------------------------------------**& Form set_layout*&---------------------------------------------------------------------*FORM set_layout CHANGING p_layo TYPE slis_layout_alv.* p_layo-zebra = 'X'.* p_layo-box_fieldname = 'SEL'.* p_layo-f2code = '&IC1'. p_layo-reprep = 'X'. p_layo-group_change_edit = 'X'. p_layo-info_fieldname = 'LINECOLOR'. p_layo-detail_popup = 'X'.* p_layo-no_hotspot = 'X'. p_layo-confirmation_prompt = 'X'. ENDFORM. " set_layout *&---------------------------------------------------------------------**& Form set_events **&---------------------------------------------------------------------*FORM set_events CHANGING pt_events TYPE slis_t_event. FIELD-SYMBOLS: TYPE slis_alv_event. CALL FUNCTION 'REUSE_ALV_EVENTS_GET' EXPORTING i_list_type = 0 IMPORTING et_events = pt_events EXCEPTIONS list_type_wrong = 1 OTHERS = 2. IF sy-subrc 0. MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. ELSE. DELETE pt_events WHERE name NE 'USER_COMMAND'.* AND name NE 'TOP_OF_PAGE'.* AND name NE 'END_OF_LIST'. ENDIF. LOOP AT pt_events ASSIGNING . CONCATENATE 'FRM_' -name INTO -form. ENDLOOP.ENDFORM. " set_events *&---------------------------------------------------------------------** FORM frm_user_command*&---------------------------------------------------------------------*FORM frm_user_command USING r_ucomm LIKE sy-ucomm rs_selfield TYPE slis_selfield. CLEAR is_output. CASE r_ucomm. WHEN '&IC1' OR '/&IC1'. CASE rs_selfield-fieldname. WHEN OTHERS. ENDCASE. ENDCASE.ENDFORM. "frm_user_command **&--------------------------------------------------------------------***& Form frm_top_of_page**&--------------------------------------------------------------------**FORM frm_top_of_page.** WRITE:/, 50 '存 货 差 异 分 析 表' ,* /2 '会计年度:', p_gjahr,* /2 '会计期间:', p_monat.**ENDFORM. "FRM_TOP_OF_PAGE *&---------------------------------------------------------------------**& Form check_hide*&---------------------------------------------------------------------*FORM check_hide . LOOP AT SCREEN. CASE screen-group1. WHEN 'G1'. IF r_save = 'X'. screen-active = '1'. ELSE. screen-active = '0'. ENDIF. WHEN 'G2'. IF r_qqty = 'X' OR r_qamt = 'X'. screen-active = '1'. ELSE. screen-active = '0'. ENDIF. ENDCASE. MODIFY SCREEN. ENDLOOP.ENDFORM. " check_hide *&---------------------------------------------------------------------**& Form GET_GET_KCQTYDIFF*----------------------------------------------------------------------*FORM get_get_kcqtydiff . SELECT * FROM ycot0010 INTO TABLE it_ycot0010 WHERE werks = p_werks AND gjahr = p_gjahr AND monat = p_monat AND matnr IN s_matnr AND bklas IN s_bklas AND hkont IN s_hkont AND mtart IN s_mtart AND prctr IN s_prctr . LOOP AT it_ycot0010. MOVE-CORRESPONDING it_ycot0010 TO it_output. APPEND it_output. ENDLOOP. * 输出ALV DESCRIBE TABLE it_output LINES v_dbcnt. IF v_dbcnt 0. CONCATENATE '共找到记录: ' v_dbcnt ' 条!' INTO v_msg. MESSAGE v_msg TYPE 'S'. ELSE. MESSAGE '未找到任何记录,请检查选择条件!' TYPE 'S'. STOP. ENDIF. ENDFORM. " GET_GET_KCQTYDIFF
" |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |