text symbol
T01 基本数据 8 12
T02 附加数据 8 132
T03 报表类型 8 8
T10 [说明]: 8 8
T11 1) 期初数量(金额/差异): = 上期期末数量(金额/差异) ; 51 132
T21 2) 本期增加数量(金额): = 所有本期凭证类型为 WE 收货 的凭证 (表BSIM); 68 132
T31 3) 本期减少数量(金额): = 所有本期凭证类型为 WA, WL, WI, PR等 收货 的凭证 (表BSIM); 82 132
T41 4) 本期增加差异: = 下述第8点的差异之和; 39 132
T42 理论上这两者金额相同, 但不排除有个别差异为手工调整差异, 不在此表中; 71 132
T51 5) 本期差异率%: = (期初差异+本期增加差异) / (期初数量+本期增加数量); 68 132
T61 6) 本期减少差异: = 本期减少数量 * 本期差异率%; 46 132
T71 7) 期末差异: = 期初差异 + 本期增加差异 - 本期减少差异; 54 132
T72 期末数量(金额): = 期初数量(金额) + 本期增加数量(金额) - 本期减少数量(金额); 79 132
T81 8) 本报表中的差异科目为: 511910(原材料差异), 511920(半成品差异), 511930(产成品差异), 84 88
T82 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 <icon>.
*&---------------------------------------------------------------------*
*& 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 g2
SELECTION-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
*&----------------------