FICO 成本差异分析表

您所在的位置:网站首页 成本差异分析表怎么填 FICO 成本差异分析表

FICO 成本差异分析表

2023-06-08 19:47| 来源: 网络整理| 查看: 265

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