博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SAP库龄表
阅读量:4552 次
发布时间:2019-06-08

本文共 44300 字,大约阅读时间需要 147 分钟。

&---------------------------------------------------------------------**& Report  ZFIR005*&*&---------------------------------------------------------------------**& Programe ID: ZFIR005*& Programe Discription: 财务库龄表*& Change Date: 2015/1/15*& Change By:  **有希望的草根,QQ:654563691***& Version: Ver0.1*&---------------------------------------------------------------------*REPORT  ZFIR005 NO STANDARD PAGE HEADING.TYPE-POOLS: SLIS.*&---------------------------------------------------------------------**&     TYPES DEFINITION*&---------------------------------------------------------------------** 物料数据TYPES: BEGIN OF TP_MATNR,        WERKS  TYPE MARD-WERKS,  "工厂        MATNR  TYPE MARD-MATNR,  "物料号        LGORT  TYPE MARD-LGORT,  "库存地点        MAKTX  TYPE MAKT-MAKTX,  "物料描述        PRCTR  TYPE MARC-PRCTR,  "利润中心        MATKL  TYPE MARA-MATKL,  "物料组        XCHPF  TYPE MARA-XCHPF,  "批次管理需求的标识        MENGE  TYPE BSEG-MENGE,  "数量        MEINS  TYPE MARA-MEINS,  "数量单位       END OF TP_MATNR.* 物料总数量TYPES: BEGIN OF TP_QTY,        WERKS  TYPE BSEG-WERKS,  "工厂        MATNR  TYPE BSEG-MATNR,  "物料号        MENGE  TYPE BSEG-MENGE,  "数量        DMBTR  TYPE BSEG-DMBTR,  "按本位币计的金额       END OF TP_QTY.* 物料库存数据TYPES: BEGIN OF TP_DATA,        WERKS  TYPE MCHB-WERKS, "工厂        MATNR  TYPE MCHB-MATNR, "物料号        LGORT  TYPE MCHB-LGORT, "库存地点        CHARG  TYPE MCHB-CHARG, "批号        LFGJA  TYPE MCHB-LFGJA, "当前期间的会计年度        LFMON  TYPE MCHB-LFMON, "当前期间        SDATE  TYPE SY-DATUM,   "当前日期        CLABS  TYPE MCHB-CLABS, "非限制使用的估价的库存        CUMLM  TYPE MCHB-CUMLM, "在运库存        CINSM  TYPE MCHB-CINSM, "质量检验中的库存        SOBKZ  TYPE MSKA-SOBKZ, "特殊库存标识        VBELN  TYPE MSKA-VBELN, "销售和分销凭证号        POSNR  TYPE MSKA-POSNR, "销售和分销凭证的项目号        XCHPF  TYPE MARA-XCHPF, "批次管理标志        MENGE  TYPE MSEG-MENGE, "数量        LWEDT  TYPE MCH1-LWEDT, "收货日期       END OF TP_DATA.* 物料移动数据TYPES: BEGIN OF TP_MSEG,        BUKRS  TYPE MSEG-BUKRS,  "公司代码        MBLNR  TYPE MSEG-MBLNR,  "物料凭证编号        MJAHR  TYPE MSEG-MJAHR,  "物料凭证年度        ZEILE  TYPE MSEG-ZEILE,  "物料凭证中的项目        MATNR  TYPE MSEG-MATNR,  "物料号        WERKS  TYPE MSEG-WERKS,  "工厂        LGORT  TYPE MSEG-LGORT,  "库存地点        BWART  TYPE MSEG-BWART,  "移动类型        SHKZG  TYPE MSEG-SHKZG,  "借贷标识        MENGE  TYPE MSEG-MENGE,  "数量        EXBWR  TYPE MSEG-EXBWR,  "以本地货币计量的过帐金额        CHARG  TYPE MSEG-CHARG,  "批号        WAERS  TYPE MSEG-WAERS,  "价格单位        BUDAT  TYPE MKPF-BUDAT,  "凭证中的过帐日期        LWEDT  TYPE MCH1-LWEDT,  "最近的收货日期       END OF TP_MSEG.* 会计凭证数据TYPES: BEGIN OF TP_BSEG,        BUKRS  TYPE BSEG-BUKRS,  "公司代码        WERKS  TYPE BSEG-WERKS,  "工厂        BELNR  TYPE BSEG-BELNR,  "会计凭证编号        GJAHR  TYPE BSEG-GJAHR,  "会计年度        BUZEI  TYPE BSEG-BUZEI,  "项目号        SHKZG  TYPE BSEG-SHKZG,  "借方/贷方标识        DMBTR  TYPE BSEG-DMBTR,  "按本位币计的金额        MATNR  TYPE BSEG-MATNR,  "物料号        MENGE  TYPE BSEG-MENGE,  "数量        MEINS  TYPE BSEG-MEINS,  "数量单位        BUDAT  TYPE BKPF-BUDAT,  "凭证中的过帐日期        BLART  TYPE BKPF-BLART,  "凭证类型        AWTYP  TYPE BKPF-AWTYP,  "参考交易        AWKEY  TYPE BKPF-AWKEY,  "字段参考关键       END OF TP_BSEG.* ALV 输出字段TYPES: BEGIN OF TP_ALV,        CHK    TYPE CHAR1,       "CHECBOX        WERKS  TYPE MARD-WERKS,  "工厂        LGORT  TYPE MARD-LGORT,  "库存地点        ZYEAR  TYPE CHAR4,       "运行年份        ZMONTH TYPE CHAR2,       "运行月份        MATNR  TYPE MARD-MATNR,  "物料号        MAKTX  TYPE MAKT-MAKTX,  "物料描述        MATKL  TYPE MARA-MATKL,  "物料组        PRCTR  TYPE MARC-PRCTR,  "利润中心        PRTXT  TYPE CEPCT-MCTXT, "利润中心描述        XCHPF  TYPE MARA-XCHPF,  "批次管理        LDATE1 TYPE SY-DATUM,    "最后异动日期        LDATE2 TYPE SY-DATUM,    "最后销售日期        PRICE  TYPE MBEW-SALK3,  "单价        SALK3  TYPE MBEW-SALK3,  "库存金额        LBKUM1 TYPE MBEW-LBKUM,  "库存数量        MEINS1 TYPE MARA-MEINS,  "数量单位        LBKUM2 TYPE MBEW-LBKUM,  "财务库存数量        MEINS2 TYPE MARA-MEINS,  "财务数量单位        QTY3M  TYPE MBEW-LBKUM,  "3月以内的库龄数量        QTY6M  TYPE MBEW-LBKUM,  "4月到6月以内的库龄数量        QTY9M  TYPE MBEW-LBKUM,  "7月到9月以内的库龄数量        QTY12M TYPE MBEW-LBKUM,  "10月到12月以内的库龄数量        QTY18M TYPE MBEW-LBKUM,  "13月到18月以内的库龄数量        QTY24M TYPE MBEW-LBKUM,  "19月到24月以内的库龄数量        QTY36M TYPE MBEW-LBKUM,  "25月到36月以内的库龄数量        QTY60M TYPE MBEW-LBKUM,  "37月到60月以内的库龄数量        QTY61M TYPE MBEW-LBKUM,  "61月以上的库龄数量        PRC3M  TYPE MBEW-SALK3,  "3月以内的库龄金额        PRC6M  TYPE MBEW-SALK3,  "4月到6月以内的库龄金额        PRC9M  TYPE MBEW-SALK3,  "7月到9月以内的库龄金额        PRC12M TYPE MBEW-SALK3,  "10月到12月以内的库龄金额        PRC18M TYPE MBEW-SALK3,  "13月到18月以内的库龄金额        PRC24M TYPE MBEW-SALK3,  "19月到24月以内的库龄金额        PRC36M TYPE MBEW-SALK3,  "25月到36月以内的库龄金额        PRC60M TYPE MBEW-SALK3,  "37月到60月以内的库龄金额        PRC61M TYPE MBEW-SALK3,  "60月以上的库龄金额        PERPRC TYPE MBEW-SALK3,  "跌价金额        WAERS  TYPE MSEG-WAERS,  "价格单位        PERFLG TYPE CHAR1,       "跌价规则维护标志       END OF TP_ALV.*&---------------------------------------------------------------------**&     DATA DEFINITION*&---------------------------------------------------------------------*DATA: V_GJAHR TYPE BSIS-GJAHR,      V_MONAT TYPE BKPF-MONAT,      V_WERKS TYPE T001W-WERKS,      V_MATNR TYPE MARA-MATNR,      V_LGORT TYPE MARD-LGORT,      V_BWKEY TYPE T001W-BWKEY,      V_QTY   TYPE MBEW-LBKUM,      V_DMBTR TYPE MBEW-SALK3,      V_AWKEY TYPE BKPF-AWKEY,      V_FDATE TYPE SY-DATUM,      V_TDATE TYPE SY-DATUM,      V_COUT  TYPE I,      V_NUM   TYPE NUMC2,      V_FIELD TYPE CHAR5,      V_VALUE TYPE FAGLFLEXT-HSLVT.DATA: S_3M  TYPE RANGE OF SY-DATUM,  "过去3月以内的库龄数量      S_6M  TYPE RANGE OF SY-DATUM,  "过去4月到6月以内的库龄数量      S_9M  TYPE RANGE OF SY-DATUM,  "过去7月到9月以内的库龄数量      S_12M TYPE RANGE OF SY-DATUM,  "过去10月到12月以内的库龄数量      S_18M TYPE RANGE OF SY-DATUM,  "过去13月到18月以内的库龄数量      S_24M TYPE RANGE OF SY-DATUM,  "过去19月到24月以内的库龄数量      S_36M TYPE RANGE OF SY-DATUM,  "过去25月到36月以内的库龄数量      S_60M TYPE RANGE OF SY-DATUM,  "过去37月到60月以内的库龄数量      S_61M TYPE SY-DATUM.           "过去61月以上库龄数量DATA: WK_MATNR    TYPE TP_MATNR,      IT_MATNR    TYPE STANDARD TABLE OF TP_MATNR,      WK_MCHB     TYPE TP_DATA,      IT_MCHB     TYPE STANDARD TABLE OF TP_DATA,      WK_MARD     TYPE TP_DATA,      IT_MARD     TYPE STANDARD TABLE OF TP_DATA,      WK_MSKA     TYPE TP_DATA,      IT_MSKA     TYPE STANDARD TABLE OF TP_DATA,      WK_MARC     TYPE TP_DATA,      IT_MARC     TYPE STANDARD TABLE OF TP_DATA,      WK_CHARG    TYPE TP_DATA,      IT_CHARG    TYPE STANDARD TABLE OF TP_DATA,      WK_DATA     TYPE TP_DATA,      IT_DATA     TYPE STANDARD TABLE OF TP_DATA,      WK_ZMMT001  TYPE ZMMT001,      IT_ZMMT001  TYPE STANDARD TABLE OF ZMMT001,      WK_ZFIT015  TYPE ZFIT015,      IT_ZFIT015  TYPE STANDARD TABLE OF ZFIT015,      WK_ZFIT016  TYPE ZFIT016,      IT_ZFIT016  TYPE STANDARD TABLE OF ZFIT016,      WK_ZFIT017  TYPE ZFIT017,      IT_ZFIT017  TYPE STANDARD TABLE OF ZFIT017,      WK_OBJ      TYPE FAGLFLEXT,      WK_FAG1     TYPE FAGLFLEXT,      IT_FAG1     TYPE STANDARD TABLE OF FAGLFLEXT,      WK_MCH1     TYPE MCH1,      IT_MCH1     TYPE STANDARD TABLE OF MCH1,      WK_CEPCT    TYPE CEPCT,      IT_CEPCT    TYPE STANDARD TABLE OF CEPCT,      WK_MSEG     TYPE TP_MSEG,      IT_MSEG     TYPE STANDARD TABLE OF TP_MSEG,      IT_MSEG1    TYPE STANDARD TABLE OF TP_MSEG,      WK_QTY      TYPE TP_QTY,      IT_QTY      TYPE STANDARD TABLE OF TP_QTY,      WK_BKPF     TYPE BKPF,      IT_BKPF     TYPE STANDARD TABLE OF BKPF,      WK_BSEG     TYPE TP_BSEG,      IT_BSEG     TYPE STANDARD TABLE OF TP_BSEG,      IT_AWKEY    TYPE STANDARD TABLE OF TP_MSEG,      WK_ALV      TYPE TP_ALV,      IT_ALV      TYPE STANDARD TABLE OF TP_ALV,      WK_LAYOUT   TYPE SLIS_LAYOUT_ALV,      IT_FIELDCAT TYPE STANDARD TABLE OF SLIS_FIELDCAT_ALV,      IT_EVENT    TYPE STANDARD TABLE OF SLIS_ALV_EVENT.  FIELD-SYMBOLS: 
TYPE FAGLFLEXT,
TYPE ANY,
TYPE TP_MSEG,
TYPE TP_DATA,
TYPE TP_DATA,
TYPE TP_DATA,
TYPE TP_DATA,
TYPE TP_DATA,
TYPE TP_ALV.*&---------------------------------------------------------------------**& PARAMETERS DEFINITION*&---------------------------------------------------------------------**PARAMETERS: P_MONAT TYPE BKPF-MONAT OBLIGATORY, "Fiscal Period* P_GJAHR TYPE BSIS-GJAHR OBLIGATORY, "Fiscal YearPARAMETERS: P_SDATE TYPE SY-DATUM OBLIGATORY, P_BUKRS TYPE T001-BUKRS OBLIGATORY. "Company CodeSELECT-OPTIONS: S_WERKS FOR V_WERKS OBLIGATORY, S_MATNR FOR V_MATNR, S_LGORT FOR V_LGORT.*&---------------------------------------------------------------------**& CONSTANTS DEFINITION*&---------------------------------------------------------------------*CONSTANTS: C_X TYPE CHAR1 VALUE 'X', C_DAY TYPE CHAR2 VALUE '01'.*&---------------------------------------------------------------------**& INITIALIZATION*&---------------------------------------------------------------------*INITIALIZATION.* 初始化数据 PERFORM INIT_DATA.* 查询日期设置 PERFORM SET_DATE.*&---------------------------------------------------------------------**& AT SELECTION-SCREEN*&---------------------------------------------------------------------*AT SELECTION-SCREEN.* 输入检查 PERFORM CHECK_INPUT.*&---------------------------------------------------------------------**& START-OF-SELECTION*&---------------------------------------------------------------------*START-OF-SELECTION.* 得到对象数据 PERFORM GET_DATA.* 编辑对象数据 PERFORM EDIT_DATA.* 设定 FIELDCAT PERFORM SET_FIELDCAT.* 设定 LAYOUT PERFORM SET_LAYOUT.* 设定 Eventa PERFORM SET_ALV_EVENT.* 输出 ALV PERFORM SHOW_ALV.*&---------------------------------------------------------------------**& Form INIT_DATA*&---------------------------------------------------------------------** 初始化数据*----------------------------------------------------------------------*FORM INIT_DATA . CLEAR: V_WERKS, V_MATNR, V_LGORT, V_BWKEY, V_QTY, WK_MATNR, WK_ZMMT001, WK_MCH1, WK_MCH1, WK_MSEG, WK_ALV, WK_LAYOUT. REFRESH: IT_MATNR, IT_ZMMT001, IT_MCH1, IT_CEPCT, IT_MSEG, IT_ALV, IT_FIELDCAT, IT_EVENT.ENDFORM. " INIT_DATA*&---------------------------------------------------------------------**& Form CHECK_INPUT*&---------------------------------------------------------------------** 输入检查*----------------------------------------------------------------------*FORM CHECK_INPUT . DATA: L_STR TYPE CHAR300, LT_T001K TYPE STANDARD TABLE OF T001K, LW_T001W TYPE T001W, LT_T001W TYPE STANDARD TABLE OF T001W. REFRESH LT_T001K. SELECT * INTO CORRESPONDING FIELDS OF TABLE LT_T001K FROM T001K WHERE BUKRS = P_BUKRS. REFRESH LT_T001W. SELECT * INTO CORRESPONDING FIELDS OF TABLE LT_T001W FROM T001W WHERE WERKS IN S_WERKS.* 输入判断 LOOP AT LT_T001W INTO LW_T001W. READ TABLE LT_T001K TRANSPORTING NO FIELDS WITH KEY BWKEY = LW_T001W-BWKEY. IF SY-SUBRC <> 0. CONCATENATE L_STR LW_T001W-WERKS INTO L_STR SEPARATED BY '/'. ENDIF. ENDLOOP. IF LT_T001W IS INITIAL. MESSAGE '工厂不存在,请重新输入!' TYPE 'E'. LEAVE TO LIST-PROCESSING. ENDIF. IF L_STR IS NOT INITIAL. L_STR+0(1) = ''. CONCATENATE '该公司代码不包含工厂:' L_STR INTO L_STR. MESSAGE E398(00) WITH L_STR. LEAVE TO LIST-PROCESSING. ENDIF.ENDFORM. " CHECK_INPUT*&---------------------------------------------------------------------**& Form GET_DATA*&---------------------------------------------------------------------** 得到对象数据*----------------------------------------------------------------------*FORM GET_DATA . DATA: L_MENGE TYPE MSEG-MENGE, "数量 LW_MCHB TYPE TP_DATA, LT_MCHB TYPE STANDARD TABLE OF TP_DATA, LW_MSKA TYPE TP_DATA, LT_MSKA TYPE STANDARD TABLE OF TP_DATA, LW_MATNR TYPE TP_MATNR, LT_MATNR TYPE STANDARD TABLE OF TP_MATNR, LW_DATA TYPE TP_DATA, LT_DATA TYPE STANDARD TABLE OF TP_DATA. CLEAR V_FDATE. CONCATENATE P_SDATE+0(6) '01' INTO V_FDATE. V_GJAHR = P_SDATE+0(4). V_MONAT = P_SDATE+4(2).* 得到批次管理物料数据 REFRESH IT_MCHB. SELECT MCHB~MATNR "物料号 MCHB~WERKS "工厂 MCHB~LGORT "库存地点 MCHB~CHARG "批号 MCHB~LFGJA "当前期间的会计年度 MCHB~LFMON "当前期间 MCHB~CLABS "非限制使用的估价的库存 MCHB~CUMLM "在运库存 MCHB~CINSM "质量检验中的库存 MARA~XCHPF "批次管理标志 INTO CORRESPONDING FIELDS OF TABLE IT_MCHB FROM MCHB INNER JOIN MARA ON MCHB~MATNR = MARA~MATNR WHERE MCHB~MATNR IN S_MATNR AND MCHB~WERKS IN S_WERKS AND MCHB~LGORT IN S_LGORT AND MARA~XCHPF = 'X'.* 批次物料历史库存 SELECT MCHBH~MATNR "物料号 MCHBH~WERKS "工厂 MCHBH~LGORT "库存地点 MCHBH~CHARG "批号 MCHBH~LFGJA "当前期间的会计年度 MCHBH~LFMON "当前期间 MCHBH~CLABS "非限制使用的估价的库存 MCHBH~CUMLM "在运库存 MCHBH~CINSM "质量检验中的库存 MARA~XCHPF "批次管理标志 APPENDING CORRESPONDING FIELDS OF TABLE IT_MCHB FROM MCHBH INNER JOIN MARA ON MCHBH~MATNR = MARA~MATNR WHERE MCHBH~MATNR IN S_MATNR AND MCHBH~WERKS IN S_WERKS AND MCHBH~LGORT IN S_LGORT AND MARA~XCHPF = 'X'.* 查询日期绑定 LOOP AT IT_MCHB ASSIGNING
. CONCATENATE
-LFGJA
-LFMON '01' INTO
-SDATE. ENDLOOP.* 排除库存符合查询期间的对象数据 DELETE IT_MCHB WHERE SDATE > V_FDATE. SORT IT_MCHB BY WERKS ASCENDING MATNR ASCENDING LGORT ASCENDING CHARG ASCENDING SDATE DESCENDING.* 得到满足查询条件的唯一的批次物料 DELETE ADJACENT DUPLICATES FROM IT_MCHB COMPARING WERKS MATNR LGORT CHARG.* 排除库存数量为0的对象数据 DELETE IT_MCHB WHERE CLABS = 0 AND CUMLM = 0 AND CINSM = 0. APPEND LINES OF IT_MCHB TO IT_DATA. APPEND LINES OF IT_MCHB TO IT_CHARG.* 普通物料管理 REFRESH IT_MARD. SELECT MARD~MATNR "物料号 MARD~WERKS "工厂 MARD~LGORT "库存地点 MARD~LFGJA "当前期间的会计年度 MARD~LFMON "当前期间 MARD~LABST AS CLABS "非限制使用的估价的库存 MARD~UMLME AS CUMLM "在运库存 MARD~INSME AS CINSM "质量检验中的库存 INTO CORRESPONDING FIELDS OF TABLE IT_MARD FROM MARD INNER JOIN MARA ON MARD~MATNR = MARA~MATNR WHERE MARD~MATNR IN S_MATNR AND MARD~WERKS IN S_WERKS AND MARD~LGORT IN S_LGORT AND MARA~XCHPF <> 'X'.* 普通物料历史库存 SELECT MARDH~MATNR "物料号 MARDH~WERKS "工厂 MARDH~LGORT "库存地点 MARDH~LFGJA "当前期间的会计年度 MARDH~LFMON "当前期间 MARDH~LABST AS CLABS "非限制使用的估价的库存 MARDH~UMLME AS CUMLM "在运库存 MARDH~INSME AS CINSM "质量检验中的库存 APPENDING CORRESPONDING FIELDS OF TABLE IT_MARD FROM MARDH INNER JOIN MARA ON MARDH~MATNR = MARA~MATNR WHERE MARDH~MATNR IN S_MATNR AND MARDH~WERKS IN S_WERKS AND MARDH~LGORT IN S_LGORT AND MARA~XCHPF <> 'X'.* 查询日期绑定 LOOP AT IT_MARD ASSIGNING
. CONCATENATE
-LFGJA
-LFMON '01' INTO
-SDATE. ENDLOOP.* 排除库存符合查询期间的对象数据 DELETE IT_MARD WHERE SDATE > V_FDATE. SORT IT_MARD BY WERKS ASCENDING MATNR ASCENDING LGORT ASCENDING SDATE DESCENDING.* 得到满足查询条件的唯一的批次物料 DELETE ADJACENT DUPLICATES FROM IT_MARD COMPARING WERKS MATNR LGORT.* 排除库存数量为0的对象数据 DELETE IT_MARD WHERE CLABS = 0 AND CUMLM = 0 AND CINSM = 0. APPEND LINES OF IT_MARD TO IT_DATA.* 特殊物料管理 REFRESH IT_MSKA. SELECT MSKA~MATNR "物料号 MSKA~WERKS "工厂 MSKA~LGORT "库存地点 MSKA~CHARG "批号 MSKA~SOBKZ "特殊库存标识 MSKA~VBELN "销售和分销凭证号 MSKA~POSNR "销售和分销凭证的项目号 MSKA~KALAB AS CLABS "非限制使用的估价的库存 MSKA~KAINS AS CINSM "质量检验中的库存 MSKA~LFGJA "当前期间的会计年度 MSKA~LFMON "当前期间 INTO CORRESPONDING FIELDS OF TABLE IT_MSKA FROM MSKA WHERE MSKA~MATNR IN S_MATNR AND MSKA~WERKS IN S_WERKS AND MSKA~LGORT IN S_LGORT.* 特殊物料历史库存 SELECT MSKAH~MATNR "物料号 MSKAH~WERKS "工厂 MSKAH~LGORT "库存地点 MSKAH~CHARG "批号 MSKAH~SOBKZ "特殊库存标识 MSKAH~VBELN "销售和分销凭证号 MSKAH~POSNR "销售和分销凭证的项目号 MSKAH~KALAB AS CLABS "非限制使用的估价的库存 MSKAH~KAINS AS CINSM "质量检验中的库存 MSKAH~LFGJA "当前期间的会计年度 MSKAH~LFMON "当前期间 APPENDING CORRESPONDING FIELDS OF TABLE IT_MSKA FROM MSKAH WHERE MSKAH~MATNR IN S_MATNR AND MSKAH~WERKS IN S_WERKS AND MSKAH~LGORT IN S_LGORT.* 查询日期绑定 LOOP AT IT_MSKA ASSIGNING
. CONCATENATE
-LFGJA
-LFMON '01' INTO
-SDATE. ENDLOOP.* 排除库存符合查询期间的对象数据 DELETE IT_MSKA WHERE SDATE > V_FDATE. SORT IT_MSKA BY WERKS ASCENDING MATNR ASCENDING LGORT ASCENDING CHARG ASCENDING SDATE DESCENDING. REFRESH LT_MSKA. APPEND LINES OF IT_MSKA TO LT_MSKA.* 得到满足查询条件的唯一的批次物料 DELETE ADJACENT DUPLICATES FROM IT_MSKA COMPARING WERKS MATNR LGORT CHARG.* 按批次合计销售订单 LOOP AT IT_MSKA ASSIGNING
. CLEAR:
-CLABS,
-CINSM,
-VBELN,
-POSNR. LOOP AT LT_MSKA INTO LW_MSKA WHERE WERKS =
-WERKS AND MATNR =
-MATNR AND LGORT =
-LGORT AND CHARG =
-CHARG AND SDATE =
-SDATE.
-CLABS =
-CLABS + LW_MSKA-CLABS.
-CINSM =
-CINSM + LW_MSKA-CINSM. ENDLOOP. ENDLOOP.* 排除库存数量为0的对象数据 DELETE IT_MSKA WHERE CLABS = 0 AND CUMLM = 0 AND CINSM = 0. APPEND LINES OF IT_MSKA TO IT_DATA. APPEND LINES OF IT_MSKA TO IT_CHARG.* 在途库存物料管理 REFRESH IT_MARC. SELECT MARC~MATNR "物料号 MARC~WERKS "工厂 MARC~UMLMC AS CLABS "非限制使用的估价的库存 MARC~LFGJA "当前期间的会计年度 MARC~LFMON "当前期间 INTO CORRESPONDING FIELDS OF TABLE IT_MARC FROM MARC WHERE MARC~MATNR IN S_MATNR AND MARC~WERKS IN S_WERKS.* 特殊物料历史库存 SELECT MARCH~MATNR "物料号 MARCH~WERKS "工厂 MARCH~UMLMC AS CLABS "非限制使用的估价的库存 MARCH~LFGJA "当前期间的会计年度 MARCH~LFMON "当前期间 APPENDING CORRESPONDING FIELDS OF TABLE IT_MARC FROM MARCH WHERE MARCH~MATNR IN S_MATNR AND MARCH~WERKS IN S_WERKS.* 查询日期绑定 LOOP AT IT_MARC ASSIGNING
.
-LGORT = 'XXXX'. CONCATENATE
-LFGJA
-LFMON '01' INTO
-SDATE. ENDLOOP.* 排除库存符合查询期间的对象数据 DELETE IT_MARC WHERE SDATE > V_FDATE. SORT IT_MARC BY WERKS ASCENDING MATNR ASCENDING SDATE DESCENDING.* 得到满足查询条件的唯一的批次物料 DELETE ADJACENT DUPLICATES FROM IT_MARC COMPARING WERKS MATNR.* 排除库存数量为0的对象数据 DELETE IT_MARC WHERE CLABS = 0 AND CUMLM = 0 AND CINSM = 0. APPEND LINES OF IT_MARC TO IT_DATA.* 排除库存数量为0的对象数据 DELETE IT_DATA WHERE ( CLABS = 0 AND CUMLM = 0 AND CINSM = 0 ) OR SDATE > V_FDATE. SORT IT_DATA BY WERKS ASCENDING MATNR ASCENDING LGORT ASCENDING SDATE DESCENDING.* 得到输出对象 DELETE ADJACENT DUPLICATES FROM IT_DATA COMPARING WERKS MATNR LGORT. IF IT_DATA IS NOT INITIAL.* 得到物料属性 REFRESH LT_MATNR. SELECT MARA~MATNR "物料号 MARA~MATKL "物料组 MAKT~MAKTX "物料描述 MARA~XCHPF "批次管理需求的标识 MARA~MEINS "数量单位 MARC~PRCTR "利润中心 INTO CORRESPONDING FIELDS OF TABLE LT_MATNR FROM MARA INNER JOIN MARC ON MARC~MATNR = MARA~MATNR INNER JOIN MAKT ON MAKT~MATNR = MARA~MATNR AND MAKT~SPRAS = SY-LANGU FOR ALL ENTRIES IN IT_DATA WHERE MARA~MATNR = IT_DATA-MATNR AND MARC~WERKS = IT_DATA-WERKS. ENDIF.* 整合对象数据 REFRESH LT_DATA. LOOP AT IT_DATA INTO WK_DATA. CLEAR WK_MATNR. WK_MATNR-WERKS = WK_DATA-WERKS. WK_MATNR-LGORT = WK_DATA-LGORT. WK_MATNR-MATNR = WK_DATA-MATNR. CLEAR LW_MATNR. READ TABLE LT_MATNR INTO LW_MATNR WITH KEY MATNR = WK_DATA-MATNR. IF SY-SUBRC = 0. WK_MATNR-MAKTX = LW_MATNR-MAKTX. WK_MATNR-XCHPF = LW_MATNR-XCHPF. WK_MATNR-MEINS = LW_MATNR-MEINS. WK_MATNR-PRCTR = LW_MATNR-PRCTR. WK_MATNR-MATKL = LW_MATNR-MATKL. ENDIF.* 计算库位总数量 IF WK_MATNR-XCHPF IS NOT INITIAL. LOOP AT IT_MCHB INTO WK_MCHB WHERE WERKS = WK_MATNR-WERKS AND MATNR = WK_MATNR-MATNR AND LGORT = WK_MATNR-LGORT.* 数量累计:限制使用的估价的库存/在运库存/质量检验中的库存 CLEAR L_MENGE. L_MENGE = WK_MCHB-CLABS + WK_MCHB-CUMLM + WK_MCHB-CINSM. WK_MATNR-MENGE = WK_MATNR-MENGE + L_MENGE. ENDLOOP. ELSE.* 非批次管理物料设置 APPEND WK_DATA TO LT_DATA. LOOP AT IT_MARD INTO WK_MARD WHERE WERKS = WK_MATNR-WERKS AND MATNR = WK_MATNR-MATNR AND LGORT = WK_MATNR-LGORT.* 数量累计:限制使用的估价的库存/在运库存/质量检验中的库存 CLEAR L_MENGE. L_MENGE = WK_MARD-CLABS + WK_MARD-CUMLM + WK_MARD-CINSM. WK_MATNR-MENGE = WK_MATNR-MENGE + L_MENGE. ENDLOOP. ENDIF. LOOP AT IT_MSKA INTO WK_MSKA WHERE WERKS = WK_MATNR-WERKS AND MATNR = WK_MATNR-MATNR AND LGORT = WK_MATNR-LGORT.* 数量累计:限制使用的估价的库存/在运库存/质量检验中的库存 CLEAR L_MENGE. L_MENGE = WK_MSKA-CLABS + WK_MSKA-CUMLM + WK_MSKA-CINSM. WK_MATNR-MENGE = WK_MATNR-MENGE + L_MENGE. ENDLOOP.* 在途库存设置 IF WK_MATNR-LGORT = 'XXXX'. CLEAR WK_MARC. READ TABLE IT_MARC INTO WK_MARC WITH KEY WERKS = WK_MATNR-WERKS MATNR = WK_MATNR-MATNR. IF SY-SUBRC = 0. WK_MATNR-MENGE = WK_MARC-CLABS. ENDIF. ENDIF. APPEND WK_MATNR TO IT_MATNR. ENDLOOP.* 非批次管理物料物料移动数据 IF LT_DATA IS NOT INITIAL.* 计算库龄和最后物料移动时间 REFRESH IT_MSEG. SELECT MSEG~BUKRS "公司代码 MSEG~MBLNR "物料凭证编号 MSEG~MJAHR "物料凭证年度 MSEG~ZEILE "物料凭证中的项目 MSEG~MATNR "物料号 MSEG~WERKS "工厂 MSEG~LGORT "库存地点 MSEG~BWART "移动类型 MSEG~SHKZG "借贷标识 MSEG~MENGE "数量 MSEG~EXBWR "以本地货币计量的过帐金额 MSEG~CHARG "批号 MSEG~WAERS "价格单位 MKPF~BUDAT "凭证中的过帐日期 INTO CORRESPONDING FIELDS OF TABLE IT_MSEG FROM MKPF INNER JOIN MSEG ON MKPF~MBLNR = MSEG~MBLNR AND MKPF~MJAHR = MSEG~MJAHR FOR ALL ENTRIES IN LT_DATA WHERE MSEG~WERKS = LT_DATA-WERKS AND MSEG~MATNR = LT_DATA-MATNR AND MSEG~LGORT = LT_DATA-LGORT AND MSEG~BUKRS = P_BUKRS AND MKPF~BUDAT <= P_SDATE AND MSEG~MENGE <> 0 AND MSEG~BWART IN ('101', '701', '561') AND MSEG~XAUTO = ''. DELETE IT_MSEG WHERE MATNR IS INITIAL. SORT IT_MSEG BY WERKS ASCENDING MATNR ASCENDING LGORT ASCENDING BUDAT DESCENDING. ENDIF. IF IT_MATNR IS NOT INITIAL.* 得到批次管理的日期 IF IT_CHARG IS NOT INITIAL. REFRESH IT_MCH1. SELECT * INTO CORRESPONDING FIELDS OF TABLE IT_MCH1 FROM MCH1 FOR ALL ENTRIES IN IT_CHARG WHERE MATNR = IT_CHARG-MATNR AND CHARG = IT_CHARG-CHARG.* 按照物料号/最近收货日期排序 SORT IT_MCH1 BY MATNR ASCENDING CHARG ASCENDING LWEDT DESCENDING. ENDIF.* 批次收货日期管理绑定 LOOP AT IT_CHARG ASSIGNING
. CLEAR WK_MCH1. READ TABLE IT_MCH1 INTO WK_MCH1 WITH KEY MATNR =
-MATNR CHARG =
-CHARG BINARY SEARCH. IF SY-SUBRC = 0.
-LWEDT = WK_MCH1-LWEDT. ENDIF.
-MENGE =
-CLABS +
-CUMLM +
-CINSM. ENDLOOP.* 得到库龄金额 REFRESH IT_ZFIT015. IF P_BUKRS <> '3200' AND P_BUKRS <> '3300'. SELECT * FROM ZFIT015 INTO CORRESPONDING FIELDS OF TABLE IT_ZFIT015 FOR ALL ENTRIES IN IT_MATNR WHERE BUKRS = P_BUKRS AND MATNR = IT_MATNR-MATNR AND WERKS = IT_MATNR-WERKS AND GJAHR = V_GJAHR AND MONAT = V_MONAT. ELSE. SELECT * FROM ZFIT015 INTO CORRESPONDING FIELDS OF TABLE IT_ZFIT015 FOR ALL ENTRIES IN IT_MATNR WHERE BUKRS = P_BUKRS AND MATNR = IT_MATNR-MATNR AND GJAHR = V_GJAHR AND MONAT = V_MONAT. LOOP AT IT_ZFIT015 INTO WK_ZFIT015 WHERE WERKS IS INITIAL. WK_ZFIT015-WERKS = WK_ZFIT015-BUKRS. MODIFY IT_ZFIT015 FROM WK_ZFIT015 TRANSPORTING WERKS. ENDLOOP. ENDIF. SORT IT_ZFIT015 BY WERKS ASCENDING MATNR ASCENDING.* 得到跌价比率 REFRESH IT_ZFIT017. SELECT * FROM ZFIT017 INTO CORRESPONDING FIELDS OF TABLE IT_ZFIT017 FOR ALL ENTRIES IN IT_MATNR WHERE MATKL = IT_MATNR-MATKL AND PRCTR = IT_MATNR-PRCTR. SORT IT_ZFIT017 BY MATKL ASCENDING PRCTR ASCENDING.* 利润中心描述 REFRESH IT_CEPCT. SELECT * INTO CORRESPONDING FIELDS OF TABLE IT_CEPCT FROM CEPCT FOR ALL ENTRIES IN IT_MATNR WHERE PRCTR = IT_MATNR-PRCTR AND SPRAS = SY-LANGU. SORT IT_CEPCT BY PRCTR ASCENDING. DELETE ADJACENT DUPLICATES FROM IT_CEPCT COMPARING PRCTR.* 计算物料财务数量和单位 REFRESH IT_ZMMT001. SELECT * INTO CORRESPONDING FIELDS OF TABLE IT_ZMMT001 FROM ZMMT001 FOR ALL ENTRIES IN IT_MATNR WHERE MATNR = IT_MATNR-MATNR. SORT IT_ZMMT001 BY MATNR ASCENDING. ENDIF.* 取得总帐科目数据 REFRESH IT_FAG1. SELECT * INTO CORRESPONDING FIELDS OF TABLE IT_FAG1 FROM FAGLFLEXT WHERE RYEAR = V_GJAHR AND RACCT = '0014100000' AND RBUKRS = P_BUKRS AND RBUSA IN S_WERKS AND RRCTY = '0' AND RLDNR = '0L'.* 得到发票校验引起的尾差金额 REFRESH IT_ZFIT016. SELECT * FROM ZFIT016 INTO CORRESPONDING FIELDS OF TABLE IT_ZFIT016 WHERE BUKRS = P_BUKRS AND BUDAT <= P_SDATE AND GSBER IN S_WERKS.ENDFORM. " GET_DATA*&---------------------------------------------------------------------**& Form EDIT_DATA*&---------------------------------------------------------------------** 编辑对象数据*----------------------------------------------------------------------*FORM EDIT_DATA . DATA: L_QTY TYPE MBEW-LBKUM, L_MENGE TYPE MSEG-MENGE, L_SQTY TYPE MBEW-LBKUM, L_NUM TYPE MBEW-LBKUM, L_DMBTR TYPE MBEW-SALK3, L_SALK3 TYPE MBEW-SALK3, L_INDEX TYPE SY-INDEX, LW_MATNR TYPE TP_MATNR, L_SUM TYPE ZFIT015-DMBTR, LW_ALV TYPE TP_ALV.* 设置期间范围 PERFORM SET_MONTH.* 数据整合 LOOP AT IT_MATNR INTO WK_MATNR. L_INDEX = SY-TABIX + 1. CLEAR: WK_ALV,L_QTY.* 物料启用批次管理判断 IF WK_MATNR-XCHPF IS NOT INITIAL.* 按照输出行循环批次管理表(物料/库位查找) LOOP AT IT_CHARG INTO WK_CHARG WHERE WERKS = WK_MATNR-WERKS AND MATNR = WK_MATNR-MATNR AND LGORT = WK_MATNR-LGORT.* 计算物料所在库位的数量 L_QTY = L_QTY + WK_CHARG-MENGE.* 库龄数量差异调整 IF L_QTY > WK_MATNR-MENGE. WK_CHARG-MENGE = WK_MATNR-MENGE - ( L_QTY - WK_CHARG-MENGE ) . L_QTY = WK_MATNR-MENGE. ENDIF.* 过去3月以内的库龄数量 IF WK_CHARG-LWEDT IN S_3M OR WK_CHARG-LWEDT >= P_SDATE. WK_ALV-QTY3M = WK_ALV-QTY3M + WK_CHARG-MENGE. CONTINUE. ENDIF.* 过去4月到6月以内的库龄数量 IF WK_CHARG-LWEDT IN S_6M. WK_ALV-QTY6M = WK_ALV-QTY6M + WK_CHARG-MENGE. CONTINUE. ENDIF.* 过去7月到9月以内的库龄数量 IF WK_CHARG-LWEDT IN S_9M. WK_ALV-QTY9M = WK_ALV-QTY9M + WK_CHARG-MENGE. CONTINUE. ENDIF.* 过去10月到12月以内的库龄数量 IF WK_CHARG-LWEDT IN S_12M. WK_ALV-QTY12M = WK_ALV-QTY12M + WK_CHARG-MENGE. CONTINUE. ENDIF.* 过去13月到18月以内的库龄数量 IF WK_CHARG-LWEDT IN S_18M. WK_ALV-QTY18M = WK_ALV-QTY18M + WK_CHARG-MENGE. CONTINUE. ENDIF.* 过去19月到24月以内的库龄数量 IF WK_CHARG-LWEDT IN S_24M. WK_ALV-QTY24M = WK_ALV-QTY24M + WK_CHARG-MENGE. CONTINUE. ENDIF.* 过去25月到36月以内的库龄数量 IF WK_CHARG-LWEDT IN S_36M. WK_ALV-QTY36M = WK_ALV-QTY36M + WK_CHARG-MENGE. CONTINUE. ENDIF.* 过去37月到60月以内的库龄数量 IF WK_CHARG-LWEDT IN S_60M. WK_ALV-QTY60M = WK_ALV-QTY60M + WK_CHARG-MENGE. CONTINUE. ENDIF.* 过去61月以上的库龄数量 IF WK_CHARG-LWEDT < S_61M. WK_ALV-QTY61M = WK_ALV-QTY61M + WK_CHARG-MENGE. CONTINUE. ENDIF.* 库位数量相等判断 IF L_QTY = WK_MATNR-MENGE. EXIT. ENDIF. ENDLOOP. ELSE.* 按照输出行循环MSEG(物料/库位查找) LOOP AT IT_MSEG INTO WK_MSEG WHERE WERKS = WK_MATNR-WERKS AND MATNR = WK_MATNR-MATNR AND LGORT = WK_MATNR-LGORT.* 移动数量类型判断 CLEAR L_MENGE. L_MENGE = WK_MSEG-MENGE.* 计算物料所在库位的数量 L_QTY = L_QTY + L_MENGE.* 库龄数量差异调整 IF L_QTY > WK_MATNR-MENGE. L_MENGE = WK_MATNR-MENGE - ( L_QTY - L_MENGE ). L_QTY = WK_MATNR-MENGE. ENDIF.* 过去3月以内的库龄数量 IF WK_MSEG-BUDAT IN S_3M. WK_ALV-QTY3M = WK_ALV-QTY3M + L_MENGE. CONTINUE. ENDIF.* 过去4月到6月以内的库龄数量 IF WK_MSEG-BUDAT IN S_6M. WK_ALV-QTY6M = WK_ALV-QTY6M + L_MENGE. CONTINUE. ENDIF.* 过去7月到9月以内的库龄数量 IF WK_MSEG-BUDAT IN S_9M. WK_ALV-QTY9M = WK_ALV-QTY9M + L_MENGE. CONTINUE. ENDIF.* 过去10月到12月以内的库龄数量 IF WK_MSEG-BUDAT IN S_12M. WK_ALV-QTY12M = WK_ALV-QTY12M + L_MENGE. CONTINUE. ENDIF.* 过去13月到18月以内的库龄数量 IF WK_MSEG-BUDAT IN S_18M. WK_ALV-QTY18M = WK_ALV-QTY18M + L_MENGE. CONTINUE. ENDIF.* 过去19月到24月以内的库龄数量 IF WK_MSEG-BUDAT IN S_24M. WK_ALV-QTY24M = WK_ALV-QTY24M + L_MENGE. CONTINUE. ENDIF.* 过去25月到36月以内的库龄数量 IF WK_MSEG-BUDAT IN S_36M. WK_ALV-QTY36M = WK_ALV-QTY36M + L_MENGE. CONTINUE. ENDIF.* 过去37月到60月以内的库龄数量 IF WK_MSEG-BUDAT IN S_60M. WK_ALV-QTY60M = WK_ALV-QTY60M + L_MENGE. CONTINUE. ENDIF.* 过去61月以上的库龄数量 IF WK_MSEG-BUDAT < S_61M. WK_ALV-QTY61M = WK_ALV-QTY61M + L_MENGE. CONTINUE. ENDIF.* 库位数量相等判断 IF L_QTY = WK_MATNR-MENGE. EXIT. ENDIF. ENDLOOP. ENDIF. IF L_QTY < WK_MATNR-MENGE. WK_ALV-QTY61M = WK_ALV-QTY61M + WK_MATNR-MENGE - L_QTY. ENDIF.* 计算物料总数量 L_SQTY = L_SQTY + WK_MATNR-MENGE.* 库存数量/数量单位 WK_ALV-LBKUM1 = WK_MATNR-MENGE. WK_ALV-MEINS1 = WK_MATNR-MEINS. WK_ALV-WAERS = WK_MSEG-WAERS. WK_ALV-WERKS = WK_MATNR-WERKS. WK_ALV-LGORT = WK_MATNR-LGORT. WK_ALV-ZYEAR = V_GJAHR. WK_ALV-ZMONTH = V_MONAT. WK_ALV-MATNR = WK_MATNR-MATNR. WK_ALV-MAKTX = WK_MATNR-MAKTX. WK_ALV-MATKL = WK_MATNR-MATKL. WK_ALV-XCHPF = WK_MATNR-XCHPF. WK_ALV-PRCTR = WK_MATNR-PRCTR.* 利润中心描述 CLEAR WK_CEPCT. READ TABLE IT_CEPCT INTO WK_CEPCT WITH KEY PRCTR = WK_MATNR-PRCTR BINARY SEARCH. IF SY-SUBRC = 0. WK_ALV-PRTXT = WK_CEPCT-MCTXT. ENDIF.* 财务库存数量/数量单位 CLEAR WK_ZMMT001. READ TABLE IT_ZMMT001 INTO WK_ZMMT001 BINARY SEARCH WITH KEY MATNR = WK_MATNR-MATNR. IF WK_ZMMT001-VALUE1 <> 0. WK_ALV-LBKUM2 = WK_ALV-LBKUM1 * WK_ZMMT001-VALUE2 / WK_ZMMT001-VALUE1. WK_ALV-MEINS2 = WK_ZMMT001-UNIT. ENDIF.* 同组的最后一行数据 CLEAR LW_MATNR. READ TABLE IT_MATNR INTO LW_MATNR INDEX L_INDEX. IF WK_MATNR-MATNR <> LW_MATNR-MATNR.* 计算库存金额 CLEAR L_SUM. LOOP AT IT_ZFIT015 INTO WK_ZFIT015 WHERE WERKS = WK_MATNR-WERKS AND MATNR = WK_MATNR-MATNR. L_SUM = L_SUM + WK_ZFIT015-DMBTR. ENDLOOP.* 物料总数量/金额保存 CLEAR WK_QTY. WK_QTY-WERKS = WK_MATNR-WERKS. WK_QTY-MATNR = WK_MATNR-MATNR. WK_QTY-MENGE = L_SQTY. WK_QTY-DMBTR = L_SUM. APPEND WK_QTY TO IT_QTY. CLEAR L_SQTY. ENDIF. APPEND WK_ALV TO IT_ALV. ENDLOOP.* 排序 SORT IT_QTY BY WERKS ASCENDING MATNR ASCENDING.* 输出列表金额设定 CLEAR L_INDEX. LOOP AT IT_ALV ASSIGNING
. L_INDEX = SY-TABIX + 1.* 库位数量在物料总数量所占比例 CLEAR WK_QTY. READ TABLE IT_QTY INTO WK_QTY WITH KEY WERKS =
-WERKS MATNR =
-MATNR BINARY SEARCH. IF WK_QTY-MENGE <> 0.
-PRICE = WK_QTY-DMBTR / WK_QTY-MENGE. "价格* 库位金额
-SALK3 =
-LBKUM1 * ( WK_QTY-DMBTR / WK_QTY-MENGE ). L_SALK3 = L_SALK3 +
-SALK3.* 过去历史期间的库龄金额
-PRC3M =
-QTY3M * ( WK_QTY-DMBTR / WK_QTY-MENGE ).
-PRC6M =
-QTY6M * ( WK_QTY-DMBTR / WK_QTY-MENGE ).
-PRC9M =
-QTY9M * ( WK_QTY-DMBTR / WK_QTY-MENGE ).
-PRC12M =
-QTY12M * ( WK_QTY-DMBTR / WK_QTY-MENGE ).
-PRC18M =
-QTY18M * ( WK_QTY-DMBTR / WK_QTY-MENGE ).
-PRC24M =
-QTY24M * ( WK_QTY-DMBTR / WK_QTY-MENGE ).
-PRC36M =
-QTY36M * ( WK_QTY-DMBTR / WK_QTY-MENGE ).
-PRC60M =
-QTY60M * ( WK_QTY-DMBTR / WK_QTY-MENGE ).
-PRC61M =
-QTY61M * ( WK_QTY-DMBTR / WK_QTY-MENGE ). ENDIF.* 差异列累计 CLEAR L_DMBTR. L_DMBTR =
-PRC3M +
-PRC6M +
-PRC9M +
-PRC12M +
-PRC18M +
-PRC24M +
-PRC36M +
-PRC60M +
-PRC61M. IF
-SALK3 <> L_DMBTR.
-PRC3M =
-PRC3M + (
-SALK3 - L_DMBTR ). ENDIF.* 跌价金额/跌价维护标志 CLEAR WK_ZFIT017. READ TABLE IT_ZFIT017 INTO WK_ZFIT017 WITH KEY MATKL =
-MATKL PRCTR =
-PRCTR BINARY SEARCH. IF SY-SUBRC = 0.
-PERPRC =
-PRC3M * WK_ZFIT017-PER3M / 100 +
-PRC6M * WK_ZFIT017-PER6M / 100 +
-PRC9M * WK_ZFIT017-PER9M / 100 +
-PRC12M * WK_ZFIT017-PER12M / 100 +
-PRC18M * WK_ZFIT017-PER18M / 100 +
-PRC24M * WK_ZFIT017-PER24M / 100 +
-PRC36M * WK_ZFIT017-PER36M / 100 +
-PRC60M * WK_ZFIT017-PER60M / 100 +
-PRC61M * WK_ZFIT017-PER61M / 100.
-PERFLG = C_X. ENDIF.* 同组物料的最后一行数据 CLEAR LW_ALV. READ TABLE IT_ALV INTO LW_ALV INDEX L_INDEX. IF
-MATNR <> LW_ALV-MATNR.* 库位差异金额
-SALK3 =
-SALK3 + ( WK_QTY-DMBTR - L_SALK3 ).
-PRC3M =
-PRC3M + ( WK_QTY-DMBTR - L_SALK3 ). CLEAR L_SALK3. ENDIF. ENDLOOP.* 特殊行:0库存物料金额 LOOP AT IT_ZFIT015 INTO WK_ZFIT015. READ TABLE IT_ALV TRANSPORTING NO FIELDS WITH KEY MATNR = WK_ZFIT015-MATNR. IF SY-SUBRC <> 0. CLEAR LW_ALV. LW_ALV-ZYEAR = V_GJAHR. LW_ALV-ZMONTH = V_MONAT. LW_ALV-WERKS = WK_ZFIT015-WERKS. LW_ALV-MATNR = WK_ZFIT015-MATNR. LW_ALV-MAKTX = 'Special line: Qty:0/Amount'. LW_ALV-SALK3 = WK_ZFIT015-DMBTR. LW_ALV-PRC3M = WK_ZFIT015-DMBTR. APPEND LW_ALV TO IT_ALV. ENDIF. ENDLOOP.* 特殊行追加: 在制品 CLEAR WK_OBJ. LOOP AT IT_FAG1 INTO WK_FAG1. WK_OBJ-HSLVT = WK_OBJ-HSLVT + WK_FAG1-HSLVT. WK_OBJ-HSL01 = WK_OBJ-HSL01 + WK_FAG1-HSL01. WK_OBJ-HSL02 = WK_OBJ-HSL02 + WK_FAG1-HSL02. WK_OBJ-HSL03 = WK_OBJ-HSL03 + WK_FAG1-HSL03. WK_OBJ-HSL04 = WK_OBJ-HSL04 + WK_FAG1-HSL04. WK_OBJ-HSL05 = WK_OBJ-HSL05 + WK_FAG1-HSL05. WK_OBJ-HSL06 = WK_OBJ-HSL06 + WK_FAG1-HSL06. WK_OBJ-HSL07 = WK_OBJ-HSL07 + WK_FAG1-HSL07. WK_OBJ-HSL08 = WK_OBJ-HSL08 + WK_FAG1-HSL08. WK_OBJ-HSL09 = WK_OBJ-HSL09 + WK_FAG1-HSL09. WK_OBJ-HSL10 = WK_OBJ-HSL10 + WK_FAG1-HSL10. WK_OBJ-HSL11 = WK_OBJ-HSL11 + WK_FAG1-HSL11. WK_OBJ-HSL12 = WK_OBJ-HSL12 + WK_FAG1-HSL12. ENDLOOP.* 指针指向对象行 ASSIGN WK_OBJ TO
.* 默认值 V_VALUE = WK_OBJ-HSLVT. "余额结转 V_COUT = V_MONAT.* 得到指定月的累积金额 CLEAR V_NUM. DO V_COUT TIMES.* 字段 V_NUM = V_NUM + 1. CONCATENATE 'HSL' V_NUM INTO V_FIELD. ASSIGN COMPONENT V_FIELD OF STRUCTURE
TO
. IF
<> 0. V_VALUE = V_VALUE +
. ENDIF. ENDDO. CLEAR LW_ALV. LW_ALV-ZYEAR = V_GJAHR. LW_ALV-ZMONTH = V_MONAT. LW_ALV-MAKTX = 'Special line: 14100000'. LW_ALV-SALK3 = V_VALUE. LW_ALV-PRC3M = V_VALUE. APPEND LW_ALV TO IT_ALV.* 特殊行追加: 尾差 CLEAR L_DMBTR. LOOP AT IT_ZFIT016 INTO WK_ZFIT016. IF WK_ZFIT016-SHKZG = 'S'. L_DMBTR = L_DMBTR + WK_ZFIT016-DMBTR. ELSE. L_DMBTR = L_DMBTR - WK_ZFIT016-DMBTR. ENDIF. ENDLOOP. CLEAR LW_ALV. LW_ALV-ZYEAR = V_GJAHR. LW_ALV-ZMONTH = V_MONAT. LW_ALV-MAKTX = 'Special line: Tail Difference'. LW_ALV-SALK3 = L_DMBTR. LW_ALV-PRC3M = L_DMBTR. APPEND LW_ALV TO IT_ALV.ENDFORM. " EDIT_DATA*&---------------------------------------------------------------------**& Form SET_FIELDCAT*&---------------------------------------------------------------------** 设定 FIELDCAT*----------------------------------------------------------------------*FORM SET_FIELDCAT . DATA LW_FIEDCAT TYPE SLIS_FIELDCAT_ALV. REFRESH IT_FIELDCAT.* 仓库 CLEAR LW_FIEDCAT. LW_FIEDCAT-FIELDNAME = 'LGORT'. LW_FIEDCAT-SELTEXT_L = TEXT-T01. APPEND LW_FIEDCAT TO IT_FIELDCAT.* 年 CLEAR LW_FIEDCAT. LW_FIEDCAT-FIELDNAME = 'ZYEAR'. LW_FIEDCAT-SELTEXT_L = TEXT-T02. APPEND LW_FIEDCAT TO IT_FIELDCAT.* 月 CLEAR LW_FIEDCAT. LW_FIEDCAT-FIELDNAME = 'ZMONTH'. LW_FIEDCAT-SELTEXT_L = TEXT-T03. APPEND LW_FIEDCAT TO IT_FIELDCAT.* 产品编号 CLEAR LW_FIEDCAT. LW_FIEDCAT-FIELDNAME = 'MATNR'. LW_FIEDCAT-EDIT_MASK = '==MATN1'. LW_FIEDCAT-SELTEXT_L = TEXT-T04. APPEND LW_FIEDCAT TO IT_FIELDCAT.* 产品描述 CLEAR LW_FIEDCAT. LW_FIEDCAT-FIELDNAME = 'MAKTX'. LW_FIEDCAT-SELTEXT_L = TEXT-T05. APPEND LW_FIEDCAT TO IT_FIELDCAT.* 物料组 CLEAR LW_FIEDCAT. LW_FIEDCAT-FIELDNAME = 'MATKL'. LW_FIEDCAT-SELTEXT_L = TEXT-T40. APPEND LW_FIEDCAT TO IT_FIELDCAT.* 利润中心 CLEAR LW_FIEDCAT. LW_FIEDCAT-FIELDNAME = 'PRCTR'. LW_FIEDCAT-SELTEXT_L = TEXT-T06. APPEND LW_FIEDCAT TO IT_FIELDCAT.* 利润中心描述 CLEAR LW_FIEDCAT. LW_FIEDCAT-FIELDNAME = 'PRTXT'. LW_FIEDCAT-SELTEXT_L = TEXT-T43. APPEND LW_FIEDCAT TO IT_FIELDCAT.* 批次管理 CLEAR LW_FIEDCAT. LW_FIEDCAT-FIELDNAME = 'XCHPF'. LW_FIEDCAT-SELTEXT_L = TEXT-T39. APPEND LW_FIEDCAT TO IT_FIELDCAT.** 最后异动日期* CLEAR LW_FIEDCAT.* LW_FIEDCAT-FIELDNAME = 'LDATE1'.* LW_FIEDCAT-SELTEXT_L = TEXT-T07.* APPEND LW_FIEDCAT TO IT_FIELDCAT.*** 最后销售日期* CLEAR LW_FIEDCAT.* LW_FIEDCAT-FIELDNAME = 'LDATE2'.* LW_FIEDCAT-SELTEXT_L = TEXT-T08.* APPEND LW_FIEDCAT TO IT_FIELDCAT.* 成本单价 CLEAR LW_FIEDCAT. LW_FIEDCAT-FIELDNAME = 'PRICE'. LW_FIEDCAT-SELTEXT_L = TEXT-T09. APPEND LW_FIEDCAT TO IT_FIELDCAT.* 价格单位 CLEAR LW_FIEDCAT. LW_FIEDCAT-FIELDNAME = 'WAERS'. LW_FIEDCAT-SELTEXT_L = TEXT-T44. APPEND LW_FIEDCAT TO IT_FIELDCAT.* 实际成本金额 CLEAR LW_FIEDCAT. LW_FIEDCAT-FIELDNAME = 'SALK3'. LW_FIEDCAT-SELTEXT_L = TEXT-T10. APPEND LW_FIEDCAT TO IT_FIELDCAT.* 数量(基本计量单位) CLEAR LW_FIEDCAT. LW_FIEDCAT-FIELDNAME = 'LBKUM1'. LW_FIEDCAT-SELTEXT_L = TEXT-T11. APPEND LW_FIEDCAT TO IT_FIELDCAT.* 基本计量单位 CLEAR LW_FIEDCAT. LW_FIEDCAT-FIELDNAME = 'MEINS1'. LW_FIEDCAT-SELTEXT_L = TEXT-T12. APPEND LW_FIEDCAT TO IT_FIELDCAT.* 数量(财务价量统一单位) CLEAR LW_FIEDCAT. LW_FIEDCAT-FIELDNAME = 'LBKUM2'. LW_FIEDCAT-SELTEXT_L = TEXT-T13. APPEND LW_FIEDCAT TO IT_FIELDCAT.* 财务统一计量单位 CLEAR LW_FIEDCAT. LW_FIEDCAT-FIELDNAME = 'MEINS2'. LW_FIEDCAT-SELTEXT_L = TEXT-T14. APPEND LW_FIEDCAT TO IT_FIELDCAT.* 库龄数量(3月以内) CLEAR LW_FIEDCAT. LW_FIEDCAT-FIELDNAME = 'QTY3M'. LW_FIEDCAT-SELTEXT_L = TEXT-T15. LW_FIEDCAT-EMPHASIZE = 'C500'. APPEND LW_FIEDCAT TO IT_FIELDCAT.* 库龄数量(4-6月) CLEAR LW_FIEDCAT. LW_FIEDCAT-FIELDNAME = 'QTY6M'. LW_FIEDCAT-SELTEXT_L = TEXT-T16. LW_FIEDCAT-EMPHASIZE = 'C500'. APPEND LW_FIEDCAT TO IT_FIELDCAT.* 库龄数量(7-9月) CLEAR LW_FIEDCAT. LW_FIEDCAT-FIELDNAME = 'QTY9M'. LW_FIEDCAT-SELTEXT_L = TEXT-T17. LW_FIEDCAT-EMPHASIZE = 'C500'. APPEND LW_FIEDCAT TO IT_FIELDCAT.* 库龄数量(10-12月) CLEAR LW_FIEDCAT. LW_FIEDCAT-FIELDNAME = 'QTY12M'. LW_FIEDCAT-SELTEXT_L = TEXT-T18. LW_FIEDCAT-EMPHASIZE = 'C500'. APPEND LW_FIEDCAT TO IT_FIELDCAT.* 库龄数量(13-18月) CLEAR LW_FIEDCAT. LW_FIEDCAT-FIELDNAME = 'QTY18M'. LW_FIEDCAT-SELTEXT_L = TEXT-T19. LW_FIEDCAT-EMPHASIZE = 'C500'. APPEND LW_FIEDCAT TO IT_FIELDCAT.* 库龄数量(19-24月) CLEAR LW_FIEDCAT. LW_FIEDCAT-FIELDNAME = 'QTY24M'. LW_FIEDCAT-SELTEXT_L = TEXT-T20. LW_FIEDCAT-EMPHASIZE = 'C500'. APPEND LW_FIEDCAT TO IT_FIELDCAT.* 库龄数量(25-36月) CLEAR LW_FIEDCAT. LW_FIEDCAT-FIELDNAME = 'QTY36M'. LW_FIEDCAT-SELTEXT_L = TEXT-T21. LW_FIEDCAT-EMPHASIZE = 'C500'. APPEND LW_FIEDCAT TO IT_FIELDCAT.* 库龄数量(37-60月) CLEAR LW_FIEDCAT. LW_FIEDCAT-FIELDNAME = 'QTY60M'. LW_FIEDCAT-SELTEXT_L = TEXT-T22. LW_FIEDCAT-EMPHASIZE = 'C500'. APPEND LW_FIEDCAT TO IT_FIELDCAT.* 库龄数量(60月以上) CLEAR LW_FIEDCAT. LW_FIEDCAT-FIELDNAME = 'QTY61M'. LW_FIEDCAT-SELTEXT_L = TEXT-T23. LW_FIEDCAT-EMPHASIZE = 'C500'. APPEND LW_FIEDCAT TO IT_FIELDCAT.* 库龄金额(3月以内) CLEAR LW_FIEDCAT. LW_FIEDCAT-FIELDNAME = 'PRC3M'. LW_FIEDCAT-SELTEXT_L = TEXT-T24. LW_FIEDCAT-EMPHASIZE = 'C410'. APPEND LW_FIEDCAT TO IT_FIELDCAT.* 库龄金额(4-6月) CLEAR LW_FIEDCAT. LW_FIEDCAT-FIELDNAME = 'PRC6M'. LW_FIEDCAT-SELTEXT_L = TEXT-T25. LW_FIEDCAT-EMPHASIZE = 'C410'. APPEND LW_FIEDCAT TO IT_FIELDCAT.* 库龄金额(7-9月) CLEAR LW_FIEDCAT. LW_FIEDCAT-FIELDNAME = 'PRC9M'. LW_FIEDCAT-SELTEXT_L = TEXT-T26. LW_FIEDCAT-EMPHASIZE = 'C410'. APPEND LW_FIEDCAT TO IT_FIELDCAT.* 库龄金额(10-12月) CLEAR LW_FIEDCAT. LW_FIEDCAT-FIELDNAME = 'PRC12M'. LW_FIEDCAT-SELTEXT_L = TEXT-T27. LW_FIEDCAT-EMPHASIZE = 'C410'. APPEND LW_FIEDCAT TO IT_FIELDCAT.* 库龄金额(13-18月) CLEAR LW_FIEDCAT. LW_FIEDCAT-FIELDNAME = 'PRC18M'. LW_FIEDCAT-SELTEXT_L = TEXT-T28. LW_FIEDCAT-EMPHASIZE = 'C410'. APPEND LW_FIEDCAT TO IT_FIELDCAT.* 库龄金额(19-24月) CLEAR LW_FIEDCAT. LW_FIEDCAT-FIELDNAME = 'PRC24M'. LW_FIEDCAT-SELTEXT_L = TEXT-T29. LW_FIEDCAT-EMPHASIZE = 'C410'. APPEND LW_FIEDCAT TO IT_FIELDCAT.* 库龄金额(25-36月) CLEAR LW_FIEDCAT. LW_FIEDCAT-FIELDNAME = 'PRC36M'. LW_FIEDCAT-SELTEXT_L = TEXT-T30. LW_FIEDCAT-EMPHASIZE = 'C410'. APPEND LW_FIEDCAT TO IT_FIELDCAT.* 库龄金额(37-60月) CLEAR LW_FIEDCAT. LW_FIEDCAT-FIELDNAME = 'PRC60M'. LW_FIEDCAT-SELTEXT_L = TEXT-T31. LW_FIEDCAT-EMPHASIZE = 'C410'. APPEND LW_FIEDCAT TO IT_FIELDCAT.* 库龄金额(60月以上) CLEAR LW_FIEDCAT. LW_FIEDCAT-FIELDNAME = 'PRC61M'. LW_FIEDCAT-SELTEXT_L = TEXT-T32. LW_FIEDCAT-EMPHASIZE = 'C410'. APPEND LW_FIEDCAT TO IT_FIELDCAT.* 跌价金额 CLEAR LW_FIEDCAT. LW_FIEDCAT-FIELDNAME = 'PERPRC'. LW_FIEDCAT-SELTEXT_L = TEXT-T41. APPEND LW_FIEDCAT TO IT_FIELDCAT.* 跌价维护标志 CLEAR LW_FIEDCAT. LW_FIEDCAT-FIELDNAME = 'PERFLG'. LW_FIEDCAT-SELTEXT_L = TEXT-T42. APPEND LW_FIEDCAT TO IT_FIELDCAT.ENDFORM. " SET_FIELDCAT*&---------------------------------------------------------------------**& Form SET_LAYOUT*&---------------------------------------------------------------------** 设定 LAYOUT*----------------------------------------------------------------------*FORM SET_LAYOUT . WK_LAYOUT-ZEBRA = C_X. WK_LAYOUT-COLWIDTH_OPTIMIZE = C_X. WK_LAYOUT-BOX_FIELDNAME = 'CHK'.ENDFORM. " SET_LAYOUT*&---------------------------------------------------------------------**& Form SET_ALV_EVENT*&---------------------------------------------------------------------** 设定 Eventa*----------------------------------------------------------------------*FORM SET_ALV_EVENT . DATA: LW_EVENT TYPE SLIS_ALV_EVENT, LW_NAME TYPE SLIS_FORMNAME VALUE 'TOP_OF_PAGE'. REFRESH IT_EVENT. CALL FUNCTION 'REUSE_ALV_EVENTS_GET' EXPORTING I_LIST_TYPE = 0 IMPORTING ET_EVENTS = IT_EVENT 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. ENDIF. CLEAR LW_EVENT. READ TABLE IT_EVENT INTO LW_EVENT WITH KEY NAME = LW_NAME. IF SY-SUBRC = 0. MOVE LW_NAME TO LW_EVENT-FORM. MODIFY IT_EVENT FROM LW_EVENT INDEX SY-TABIX.. ELSE. LW_EVENT-FORM = LW_NAME. LW_EVENT-NAME = LW_NAME. APPEND LW_EVENT TO IT_EVENT. ENDIF.ENDFORM. " SET_ALV_EVENT*&---------------------------------------------------------------------**& Form SHOW_ALV*&---------------------------------------------------------------------** 输出 ALV*----------------------------------------------------------------------*FORM SHOW_ALV .* Call ALV CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' EXPORTING I_CALLBACK_PROGRAM = SY-REPID IT_EVENTS = IT_EVENT IS_LAYOUT = WK_LAYOUT IT_FIELDCAT = IT_FIELDCAT I_SAVE = C_X TABLES T_OUTTAB = IT_ALV EXCEPTIONS PROGRAM_ERROR = 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. ENDIF.ENDFORM. " SHOW_ALV*&---------------------------------------------------------------------**& Form TOP_OF_PAGE1*&---------------------------------------------------------------------** ALV Header Setting*----------------------------------------------------------------------*FORM TOP_OF_PAGE. DATA: L_MATNR1 TYPE MARA-MATNR, L_MATNR2 TYPE MARA-MATNR, LT_HEAD TYPE SLIS_T_LISTHEADER, LW_HEAD TYPE SLIS_LISTHEADER. REFRESH LT_HEAD. CLEAR LW_HEAD. LW_HEAD-TYP = 'H'. "Header LW_HEAD-INFO = TEXT-T33. "财务库龄表 APPEND LW_HEAD TO LT_HEAD. CLEAR LW_HEAD. LW_HEAD-TYP = 'S'. "Selection LW_HEAD-KEY = TEXT-T35. "会计期间: CONCATENATE V_GJAHR '/' V_MONAT INTO LW_HEAD-INFO. APPEND LW_HEAD TO LT_HEAD. CLEAR LW_HEAD. LW_HEAD-TYP = 'S'. "Selection LW_HEAD-KEY = TEXT-T34. "Company Name: LW_HEAD-INFO = P_BUKRS. APPEND LW_HEAD TO LT_HEAD.* 工厂 IF S_WERKS IS NOT INITIAL. CLEAR LW_HEAD. LW_HEAD-TYP = 'S'. "Selection LW_HEAD-KEY = TEXT-T36. "工厂:* 多个单值查询 IF S_WERKS-LOW IS NOT INITIAL AND S_WERKS-HIGH IS INITIAL. LOOP AT S_WERKS. CONCATENATE LW_HEAD-INFO S_WERKS-LOW INTO LW_HEAD-INFO SEPARATED BY '/'. ENDLOOP. LW_HEAD-INFO+0(1) = ''. ENDIF.* 范围查询 IF S_WERKS-HIGH IS NOT INITIAL. CONCATENATE S_WERKS-LOW '~' S_WERKS-HIGH INTO LW_HEAD-INFO. ENDIF. APPEND LW_HEAD TO LT_HEAD. ENDIF.* 物料编号 IF S_MATNR IS NOT INITIAL. CLEAR LW_HEAD. LW_HEAD-TYP = 'S'. "Selection LW_HEAD-KEY = TEXT-T37. "物料编号:* 多个单值查询 IF S_MATNR-LOW IS NOT INITIAL AND S_MATNR-HIGH IS INITIAL. CALL FUNCTION 'CONVERSION_EXIT_MATN1_OUTPUT' EXPORTING INPUT = S_MATNR-LOW IMPORTING OUTPUT = LW_HEAD-INFO. ENDIF.* 范围查询 IF S_MATNR-HIGH IS NOT INITIAL. CALL FUNCTION 'CONVERSION_EXIT_MATN1_OUTPUT' EXPORTING INPUT = S_MATNR-LOW IMPORTING OUTPUT = L_MATNR1. CALL FUNCTION 'CONVERSION_EXIT_MATN1_OUTPUT' EXPORTING INPUT = S_MATNR-HIGH IMPORTING OUTPUT = L_MATNR2. CONCATENATE L_MATNR1 '~' L_MATNR2 INTO LW_HEAD-INFO. ENDIF. APPEND LW_HEAD TO LT_HEAD. ENDIF.* 库存地点 IF S_LGORT IS NOT INITIAL. CLEAR LW_HEAD. LW_HEAD-TYP = 'S'. "Selection LW_HEAD-KEY = TEXT-T38. "库存地点:* 多个单值查询 IF S_LGORT-LOW IS NOT INITIAL AND S_LGORT-HIGH IS INITIAL. LW_HEAD-INFO = S_LGORT-LOW. ENDIF.* 范围查询 IF S_LGORT-HIGH IS NOT INITIAL. CONCATENATE S_LGORT-LOW '~' S_LGORT-HIGH INTO LW_HEAD-INFO. ENDIF. APPEND LW_HEAD TO LT_HEAD. ENDIF. CLEAR LW_HEAD. LW_HEAD-TYP = 'S'. APPEND LW_HEAD TO LT_HEAD. CLEAR LW_HEAD. LW_HEAD-TYP = 'S'. APPEND LW_HEAD TO LT_HEAD. CLEAR LW_HEAD. LW_HEAD-TYP = 'S'. APPEND LW_HEAD TO LT_HEAD. CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE' EXPORTING IT_LIST_COMMENTARY = LT_HEAD.ENDFORM. " TOP_OF_PAGE*&---------------------------------------------------------------------**& Form GET_DATE*&---------------------------------------------------------------------** 得到查询日期范围*----------------------------------------------------------------------** -->I_IDATE 输入日期* -->I_MONTH 月份* <--C_DATE 查询日期*----------------------------------------------------------------------*FORM GET_DATE USING I_IDATE TYPE SY-DATUM I_MONTH TYPE T5A4A-DLYMO CHANGING C_DATE. CLEAR C_DATE. CALL FUNCTION 'RP_CALC_DATE_IN_INTERVAL' EXPORTING DATE = I_IDATE DAYS = '00' MONTHS = I_MONTH SIGNUM = '-' YEARS = '00' IMPORTING CALC_DATE = C_DATE.ENDFORM. " GET_DATE*&---------------------------------------------------------------------**& Form SET_MONTH*&---------------------------------------------------------------------** 设置各期间的范围*----------------------------------------------------------------------*FORM SET_MONTH . DATA: L_DATE1 TYPE SY-DATUM, L_DATE2 TYPE SY-DATUM, LW_MONTH LIKE LINE OF S_3M.* 得到查询日期范围(3月以内) PERFORM GET_DATE USING P_SDATE '03' CHANGING L_DATE1. CLEAR LW_MONTH. LW_MONTH-SIGN = 'I'. LW_MONTH-OPTION = 'BT'. LW_MONTH-LOW = L_DATE1. LW_MONTH-HIGH = P_SDATE. APPEND LW_MONTH TO S_3M.* 得到查询日期范围(4-6月) PERFORM GET_DATE USING L_DATE1 '03' CHANGING L_DATE2. CLEAR LW_MONTH. LW_MONTH-SIGN = 'I'. LW_MONTH-OPTION = 'BT'. LW_MONTH-LOW = L_DATE2. LW_MONTH-HIGH = L_DATE1. APPEND LW_MONTH TO S_6M.* 得到查询日期范围(7-9月) PERFORM GET_DATE USING L_DATE2 '03' CHANGING L_DATE1. CLEAR LW_MONTH. LW_MONTH-SIGN = 'I'. LW_MONTH-OPTION = 'BT'. LW_MONTH-LOW = L_DATE1. LW_MONTH-HIGH = L_DATE2. APPEND LW_MONTH TO S_9M.* 得到查询日期范围(10-12月) PERFORM GET_DATE USING L_DATE1 '03' CHANGING L_DATE2. CLEAR LW_MONTH. LW_MONTH-SIGN = 'I'. LW_MONTH-OPTION = 'BT'. LW_MONTH-LOW = L_DATE2. LW_MONTH-HIGH = L_DATE1. APPEND LW_MONTH TO S_12M.* 得到查询日期范围(13-18月) PERFORM GET_DATE USING L_DATE2 '06' CHANGING L_DATE1. CLEAR LW_MONTH. LW_MONTH-SIGN = 'I'. LW_MONTH-OPTION = 'BT'. LW_MONTH-LOW = L_DATE1. LW_MONTH-HIGH = L_DATE2. APPEND LW_MONTH TO S_18M.* 得到查询日期范围(19-24月) PERFORM GET_DATE USING L_DATE1 '06' CHANGING L_DATE2. CLEAR LW_MONTH. LW_MONTH-SIGN = 'I'. LW_MONTH-OPTION = 'BT'. LW_MONTH-LOW = L_DATE2. LW_MONTH-HIGH = L_DATE1. APPEND LW_MONTH TO S_24M.* 得到查询日期范围(25-36月) PERFORM GET_DATE USING L_DATE2 '12' CHANGING L_DATE1. CLEAR LW_MONTH. LW_MONTH-SIGN = 'I'. LW_MONTH-OPTION = 'BT'. LW_MONTH-LOW = L_DATE1. LW_MONTH-HIGH = L_DATE2. APPEND LW_MONTH TO S_36M.* 得到查询日期范围(37-60月) PERFORM GET_DATE USING L_DATE1 '24' CHANGING L_DATE2. CLEAR LW_MONTH. LW_MONTH-SIGN = 'I'. LW_MONTH-OPTION = 'BT'. LW_MONTH-LOW = L_DATE2. LW_MONTH-HIGH = L_DATE1. APPEND LW_MONTH TO S_60M.* 得到查询日期范围(61月) S_61M = L_DATE2.ENDFORM. " SET_MONTH*&---------------------------------------------------------------------**& Form SET_DATE*&---------------------------------------------------------------------** 查询日期设置*----------------------------------------------------------------------*FORM SET_DATE . CLEAR P_SDATE. CALL FUNCTION 'LAST_DAY_OF_MONTHS' EXPORTING DAY_IN = SY-DATUM IMPORTING LAST_DAY_OF_MONTH = P_SDATE EXCEPTIONS DAY_IN_NO_DATE = 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. ENDIF.ENDFORM. " SET_DATE

本文转载自:https://blog.csdn.net/sinat_28730703/article/details/46357159

转载于:https://www.cnblogs.com/BruceKing/p/10729845.html

你可能感兴趣的文章
php 事件驱动 消息机制 共享内存
查看>>
剑指offer 二叉树的bfs
查看>>
LeetCode Maximum Subarray
查看>>
Ubuntu 14.04 更新源
查看>>
kafka生产者与消费者
查看>>
单元测试框架"艾信.NET单元测试工具(AssionUnit)"开发---第二步
查看>>
git 项目最常用命令总结
查看>>
[Arduino] 在串口读取多个字符串,并且转换为数字数组
查看>>
redis-window 集群配置
查看>>
4.1.6 Grundy数-硬币游戏2
查看>>
图像处理的软件
查看>>
Sql 2000系统表 语句查询表结构
查看>>
[CentOS_7.4]Linux编译安装ffmpeg
查看>>
大数据存储平台之异构存储实践深度解读
查看>>
1.2 Stream API
查看>>
Less2css error 终极解决方案
查看>>
DNS服务器的原理
查看>>
django_数据库操作—增、删、改、查
查看>>
django_mysql_配置
查看>>
day 37 并发编程和操作系统的发展史 + 进程
查看>>