SAP库龄表(转)

1&---------------------------------------------------------------------* 2*& Report ZFIR005 3*& 4*&---------------------------------------------------------------------* 5*& Programe ID: ZFIR005 6*& Programe Discription: 财务库龄表 7*& Change Date: 8*& Change By: 9*& Version: Ver0.1 10*&---------------------------------------------------------------------* 11 12REPORT ZFIR005 NO STANDARD PAGE HEADING. 13 14TYPE-POOLS: SLIS. 15*&---------------------------------------------------------------------* 16*& TYPES DEFINITION 17*&---------------------------------------------------------------------* 18* 物料数据 19TYPES: BEGIN OF TP_MATNR, 20 WERKS TYPE MARD-WERKS, "工厂 21 MATNR TYPE MARD-MATNR, "物料号 22 LGORT TYPE MARD-LGORT, "库存地点 23 MAKTX TYPE MAKT-MAKTX, "物料描述 24 PRCTR TYPE MARC-PRCTR, "利润中心 25 MATKL TYPE MARA-MATKL, "物料组 26 XCHPF TYPE MARA-XCHPF, "批次管理需求的标识 27 MENGE TYPE BSEG-MENGE, "数量 28 MEINS TYPE MARA-MEINS, "数量单位 29 END OF TP_MATNR. 30* 物料总数量 31TYPES: BEGIN OF TP_QTY, 32 WERKS TYPE BSEG-WERKS, "工厂 33 MATNR TYPE BSEG-MATNR, "物料号 34 MENGE TYPE BSEG-MENGE, "数量 35 DMBTR TYPE BSEG-DMBTR, "按本位币计的金额 36 END OF TP_QTY. 37* 物料库存数据 38TYPES: BEGIN OF TP_DATA, 39 WERKS TYPE MCHB-WERKS, "工厂 40 MATNR TYPE MCHB-MATNR, "物料号 41 LGORT TYPE MCHB-LGORT, "库存地点 42 CHARG TYPE MCHB-CHARG, "批号 43 LFGJA TYPE MCHB-LFGJA, "当前期间的会计年度 44 LFMON TYPE MCHB-LFMON, "当前期间 45 SDATE TYPE SY-DATUM, "当前日期 46 CLABS TYPE MCHB-CLABS, "非限制使用的估价的库存 47 CUMLM TYPE MCHB-CUMLM, "在运库存 48 CINSM TYPE MCHB-CINSM, "质量检验中的库存 49 SOBKZ TYPE MSKA-SOBKZ, "特殊库存标识 50 VBELN TYPE MSKA-VBELN, "销售和分销凭证号 51 POSNR TYPE MSKA-POSNR, "销售和分销凭证的项目号 52 XCHPF TYPE MARA-XCHPF, "批次管理标志 53 MENGE TYPE MSEG-MENGE, "数量 54 LWEDT TYPE MCH1-LWEDT, "收货日期 55 END OF TP_DATA. 56* 物料移动数据 57TYPES: BEGIN OF TP_MSEG, 58 BUKRS TYPE MSEG-BUKRS, "公司代码 59 MBLNR TYPE MSEG-MBLNR, "物料凭证编号 60 MJAHR TYPE MSEG-MJAHR, "物料凭证年度 61 ZEILE TYPE MSEG-ZEILE, "物料凭证中的项目 62 MATNR TYPE MSEG-MATNR, "物料号 63 WERKS TYPE MSEG-WERKS, "工厂 64 LGORT TYPE MSEG-LGORT, "库存地点 65 BWART TYPE MSEG-BWART, "移动类型 66 SHKZG TYPE MSEG-SHKZG, "借贷标识 67 MENGE TYPE MSEG-MENGE, "数量 68 EXBWR TYPE MSEG-EXBWR, "以本地货币计量的过帐金额 69 CHARG TYPE MSEG-CHARG, "批号 70 WAERS TYPE MSEG-WAERS, "价格单位 71 BUDAT TYPE MKPF-BUDAT, "凭证中的过帐日期 72 LWEDT TYPE MCH1-LWEDT, "最近的收货日期 73 END OF TP_MSEG. 74* 会计凭证数据 75TYPES: BEGIN OF TP_BSEG, 76 BUKRS TYPE BSEG-BUKRS, "公司代码 77 WERKS TYPE BSEG-WERKS, "工厂 78 BELNR TYPE BSEG-BELNR, "会计凭证编号 79 GJAHR TYPE BSEG-GJAHR, "会计年度 80 BUZEI TYPE BSEG-BUZEI, "项目号 81 SHKZG TYPE BSEG-SHKZG, "借方/贷方标识 82 DMBTR TYPE BSEG-DMBTR, "按本位币计的金额 83 MATNR TYPE BSEG-MATNR, "物料号 84 MENGE TYPE BSEG-MENGE, "数量 85 MEINS TYPE BSEG-MEINS, "数量单位 86 BUDAT TYPE BKPF-BUDAT, "凭证中的过帐日期 87 BLART TYPE BKPF-BLART, "凭证类型 88 AWTYP TYPE BKPF-AWTYP, "参考交易 89 AWKEY TYPE BKPF-AWKEY, "字段参考关键 90 END OF TP_BSEG. 91* ALV 输出字段 92TYPES: BEGIN OF TP_ALV, 93 CHK TYPE CHAR1, "CHECBOX 94 WERKS TYPE MARD-WERKS, "工厂 95 LGORT TYPE MARD-LGORT, "库存地点 96 ZYEAR TYPE CHAR4, "运行年份 97 ZMONTH TYPE CHAR2, "运行月份 98 MATNR TYPE MARD-MATNR, "物料号 99 MAKTX TYPE MAKT-MAKTX, "物料描述 100 MATKL TYPE MARA-MATKL, "物料组 101 PRCTR TYPE MARC-PRCTR, "利润中心 102 PRTXT TYPE CEPCT-MCTXT, "利润中心描述 103 XCHPF TYPE MARA-XCHPF, "批次管理 104 LDATE1 TYPE SY-DATUM, "最后异动日期 105 LDATE2 TYPE SY-DATUM, "最后销售日期 106 PRICE TYPE MBEW-SALK3, "单价 107 SALK3 TYPE MBEW-SALK3, "库存金额 108 LBKUM1 TYPE MBEW-LBKUM, "库存数量 109 MEINS1 TYPE MARA-MEINS, "数量单位 110 LBKUM2 TYPE MBEW-LBKUM, "财务库存数量 111 MEINS2 TYPE MARA-MEINS, "财务数量单位 112 QTY3M TYPE MBEW-LBKUM, "3月以内的库龄数量 113 QTY6M TYPE MBEW-LBKUM, "4月到6月以内的库龄数量 114 QTY9M TYPE MBEW-LBKUM, "7月到9月以内的库龄数量 115 QTY12M TYPE MBEW-LBKUM, "10月到12月以内的库龄数量 116 QTY18M TYPE MBEW-LBKUM, "13月到18月以内的库龄数量 117 QTY24M TYPE MBEW-LBKUM, "19月到24月以内的库龄数量 118 QTY36M TYPE MBEW-LBKUM, "25月到36月以内的库龄数量 119 QTY60M TYPE MBEW-LBKUM, "37月到60月以内的库龄数量 120 QTY61M TYPE MBEW-LBKUM, "61月以上的库龄数量 121 PRC3M TYPE MBEW-SALK3, "3月以内的库龄金额 122 PRC6M TYPE MBEW-SALK3, "4月到6月以内的库龄金额 123 PRC9M TYPE MBEW-SALK3, "7月到9月以内的库龄金额 124 PRC12M TYPE MBEW-SALK3, "10月到12月以内的库龄金额 125 PRC18M TYPE MBEW-SALK3, "13月到18月以内的库龄金额 126 PRC24M TYPE MBEW-SALK3, "19月到24月以内的库龄金额 127 PRC36M TYPE MBEW-SALK3, "25月到36月以内的库龄金额 128 PRC60M TYPE MBEW-SALK3, "37月到60月以内的库龄金额 129 PRC61M TYPE MBEW-SALK3, "60月以上的库龄金额 130 PERPRC TYPE MBEW-SALK3, "跌价金额 131 WAERS TYPE MSEG-WAERS, "价格单位 132 PERFLG TYPE CHAR1, "跌价规则维护标志 133 END OF TP_ALV. 134*&---------------------------------------------------------------------* 135*& DATA DEFINITION 136*&---------------------------------------------------------------------* 137DATA: V_GJAHR TYPE BSIS-GJAHR, 138 V_MONAT TYPE BKPF-MONAT, 139 V_WERKS TYPE T001W-WERKS, 140 V_MATNR TYPE MARA-MATNR, 141 V_LGORT TYPE MARD-LGORT, 142 V_BWKEY TYPE T001W-BWKEY, 143 V_QTY TYPE MBEW-LBKUM, 144 V_DMBTR TYPE MBEW-SALK3, 145 V_AWKEY TYPE BKPF-AWKEY, 146 V_FDATE TYPE SY-DATUM, 147 V_TDATE TYPE SY-DATUM, 148 V_COUT TYPE I, 149 V_NUM TYPE NUMC2, 150 V_FIELD TYPE CHAR5, 151 V_VALUE TYPE FAGLFLEXT-HSLVT. 152 153DATA: S_3M TYPE RANGE OF SY-DATUM, "过去3月以内的库龄数量 154 S_6M TYPE RANGE OF SY-DATUM, "过去4月到6月以内的库龄数量 155 S_9M TYPE RANGE OF SY-DATUM, "过去7月到9月以内的库龄数量 156 S_12M TYPE RANGE OF SY-DATUM, "过去10月到12月以内的库龄数量 157 S_18M TYPE RANGE OF SY-DATUM, "过去13月到18月以内的库龄数量 158 S_24M TYPE RANGE OF SY-DATUM, "过去19月到24月以内的库龄数量 159 S_36M TYPE RANGE OF SY-DATUM, "过去25月到36月以内的库龄数量 160 S_60M TYPE RANGE OF SY-DATUM, "过去37月到60月以内的库龄数量 161 S_61M TYPE SY-DATUM. "过去61月以上库龄数量 162 163DATA: WK_MATNR TYPE TP_MATNR, 164 IT_MATNR TYPE STANDARD TABLE OF TP_MATNR, 165 WK_MCHB TYPE TP_DATA, 166 IT_MCHB TYPE STANDARD TABLE OF TP_DATA, 167 WK_MARD TYPE TP_DATA, 168 IT_MARD TYPE STANDARD TABLE OF TP_DATA, 169 WK_MSKA TYPE TP_DATA, 170 IT_MSKA TYPE STANDARD TABLE OF TP_DATA, 171 WK_MARC TYPE TP_DATA, 172 IT_MARC TYPE STANDARD TABLE OF TP_DATA, 173 WK_CHARG TYPE TP_DATA, 174 IT_CHARG TYPE STANDARD TABLE OF TP_DATA, 175 WK_DATA TYPE TP_DATA, 176 IT_DATA TYPE STANDARD TABLE OF TP_DATA, 177 WK_ZMMT001 TYPE ZMMT001, 178 IT_ZMMT001 TYPE STANDARD TABLE OF ZMMT001, 179 WK_ZFIT015 TYPE ZFIT015, 180 IT_ZFIT015 TYPE STANDARD TABLE OF ZFIT015, 181 WK_ZFIT016 TYPE ZFIT016, 182 IT_ZFIT016 TYPE STANDARD TABLE OF ZFIT016, 183 WK_ZFIT017 TYPE ZFIT017, 184 IT_ZFIT017 TYPE STANDARD TABLE OF ZFIT017, 185 WK_OBJ TYPE FAGLFLEXT, 186 WK_FAG1 TYPE FAGLFLEXT, 187 IT_FAG1 TYPE STANDARD TABLE OF FAGLFLEXT, 188 WK_MCH1 TYPE MCH1, 189 IT_MCH1 TYPE STANDARD TABLE OF MCH1, 190 WK_CEPCT TYPE CEPCT, 191 IT_CEPCT TYPE STANDARD TABLE OF CEPCT, 192 WK_MSEG TYPE TP_MSEG, 193 IT_MSEG TYPE STANDARD TABLE OF TP_MSEG, 194 IT_MSEG1 TYPE STANDARD TABLE OF TP_MSEG, 195 WK_QTY TYPE TP_QTY, 196 IT_QTY TYPE STANDARD TABLE OF TP_QTY, 197 WK_BKPF TYPE BKPF, 198 IT_BKPF TYPE STANDARD TABLE OF BKPF, 199 WK_BSEG TYPE TP_BSEG, 200 IT_BSEG TYPE STANDARD TABLE OF TP_BSEG, 201 IT_AWKEY TYPE STANDARD TABLE OF TP_MSEG, 202 WK_ALV TYPE TP_ALV, 203 IT_ALV TYPE STANDARD TABLE OF TP_ALV, 204 WK_LAYOUT TYPE SLIS_LAYOUT_ALV, 205 IT_FIELDCAT TYPE STANDARD TABLE OF SLIS_FIELDCAT_ALV, 206 IT_EVENT TYPE STANDARD TABLE OF SLIS_ALV_EVENT. 207 208 209 FIELD-SYMBOLS: <FS_HEAD> TYPE FAGLFLEXT, 210 <FS_FIELD> TYPE ANY, 211 <FS_MSEG> TYPE TP_MSEG, 212 <FS_CHARG> TYPE TP_DATA, 213 <FS_MCHB> TYPE TP_DATA, 214 <FS_MARD> TYPE TP_DATA, 215 <FS_MSKA> TYPE TP_DATA, 216 <FS_MARC> TYPE TP_DATA, 217 <FS_ALV> TYPE TP_ALV. 218 219*&---------------------------------------------------------------------* 220*& PARAMETERS DEFINITION 221*&---------------------------------------------------------------------* 222*PARAMETERS: P_MONAT TYPE BKPF-MONAT OBLIGATORY, "Fiscal Period 223* P_GJAHR TYPE BSIS-GJAHR OBLIGATORY, "Fiscal Year 224PARAMETERS: P_SDATE TYPE SY-DATUM OBLIGATORY, 225 P_BUKRS TYPE T001-BUKRS OBLIGATORY. "Company Code 226 227SELECT-OPTIONS: S_WERKS FOR V_WERKS OBLIGATORY, 228 S_MATNR FOR V_MATNR, 229 S_LGORT FOR V_LGORT. 230 231*&---------------------------------------------------------------------* 232*& CONSTANTS DEFINITION 233*&---------------------------------------------------------------------* 234CONSTANTS: C_X TYPE CHAR1 VALUE 'X', 235 C_DAY TYPE CHAR2 VALUE '01'. 236 237*&---------------------------------------------------------------------* 238*& INITIALIZATION 239*&---------------------------------------------------------------------* 240INITIALIZATION. 241* 初始化数据 242 PERFORM INIT_DATA. 243* 查询日期设置 244 PERFORM SET_DATE. 245 246*&---------------------------------------------------------------------* 247*& AT SELECTION-SCREEN 248*&---------------------------------------------------------------------* 249AT SELECTION-SCREEN. 250* 输入检查 251 PERFORM CHECK_INPUT. 252*&---------------------------------------------------------------------* 253*& START-OF-SELECTION 254*&---------------------------------------------------------------------* 255START-OF-SELECTION. 256* 得到对象数据 257 PERFORM GET_DATA. 258* 编辑对象数据 259 PERFORM EDIT_DATA. 260* 设定 FIELDCAT 261 PERFORM SET_FIELDCAT. 262* 设定 LAYOUT 263 PERFORM SET_LAYOUT. 264* 设定 Eventa 265 PERFORM SET_ALV_EVENT. 266* 输出 ALV 267 PERFORM SHOW_ALV. 268 269*&---------------------------------------------------------------------* 270*& Form INIT_DATA 271*&---------------------------------------------------------------------* 272* 初始化数据 273*----------------------------------------------------------------------* 274FORM INIT_DATA . 275 276 CLEAR: V_WERKS, 277 V_MATNR, 278 V_LGORT, 279 V_BWKEY, 280 V_QTY, 281 WK_MATNR, 282 WK_ZMMT001, 283 WK_MCH1, 284 WK_MCH1, 285 WK_MSEG, 286 WK_ALV, 287 WK_LAYOUT. 288 REFRESH: IT_MATNR, 289 IT_ZMMT001, 290 IT_MCH1, 291 IT_CEPCT, 292 IT_MSEG, 293 IT_ALV, 294 IT_FIELDCAT, 295 IT_EVENT. 296 297ENDFORM. " INIT_DATA 298*&---------------------------------------------------------------------* 299*& Form CHECK_INPUT 300*&---------------------------------------------------------------------* 301* 输入检查 302*----------------------------------------------------------------------* 303FORM CHECK_INPUT . 304 305 DATA: L_STR TYPE CHAR300, 306 LT_T001K TYPE STANDARD TABLE OF T001K, 307 LW_T001W TYPE T001W, 308 LT_T001W TYPE STANDARD TABLE OF T001W. 309 310 REFRESH LT_T001K. 311 SELECT * 312 INTO CORRESPONDING FIELDS OF TABLE LT_T001K 313 FROM T001K 314 WHERE BUKRS = P_BUKRS. 315 316 REFRESH LT_T001W. 317 SELECT * 318 INTO CORRESPONDING FIELDS OF TABLE LT_T001W 319 FROM T001W 320 WHERE WERKS IN S_WERKS. 321 322* 输入判断 323 LOOP AT LT_T001W INTO LW_T001W. 324 READ TABLE LT_T001K TRANSPORTING NO FIELDS 325 WITH KEY BWKEY = LW_T001W-BWKEY. 326 IF SY-SUBRC <> 0. 327 CONCATENATE L_STR 328 LW_T001W-WERKS 329 INTO L_STR 330 SEPARATED BY '/'. 331 ENDIF. 332 ENDLOOP. 333 IF LT_T001W IS INITIAL. 334 MESSAGE '工厂不存在,请重新输入!' TYPE 'E'. 335 LEAVE TO LIST-PROCESSING. 336 ENDIF. 337 IF L_STR IS NOT INITIAL. 338 L_STR+0(1) = ''. 339 CONCATENATE '该公司代码不包含工厂:' 340 L_STR 341 INTO L_STR. 342 MESSAGE E398(00) WITH L_STR. 343 LEAVE TO LIST-PROCESSING. 344 ENDIF. 345 346ENDFORM. " CHECK_INPUT 347*&---------------------------------------------------------------------* 348*& Form GET_DATA 349*&---------------------------------------------------------------------* 350* 得到对象数据 351*----------------------------------------------------------------------* 352FORM GET_DATA . 353 354 DATA: L_MENGE TYPE MSEG-MENGE, "数量 355 LW_MCHB TYPE TP_DATA, 356 LT_MCHB TYPE STANDARD TABLE OF TP_DATA, 357 LW_MSKA TYPE TP_DATA, 358 LT_MSKA TYPE STANDARD TABLE OF TP_DATA, 359 LW_MATNR TYPE TP_MATNR, 360 LT_MATNR TYPE STANDARD TABLE OF TP_MATNR, 361 LW_DATA TYPE TP_DATA, 362 LT_DATA TYPE STANDARD TABLE OF TP_DATA. 363 364 CLEAR V_FDATE. 365 CONCATENATE P_SDATE+0(6) 366 '01' 367 INTO V_FDATE. 368 V_GJAHR = P_SDATE+0(4). 369 V_MONAT = P_SDATE+4(2). 370 371* 得到批次管理物料数据 372 REFRESH IT_MCHB. 373 SELECT MCHB~MATNR "物料号 374 MCHB~WERKS "工厂 375 MCHB~LGORT "库存地点 376 MCHB~CHARG "批号 377 MCHB~LFGJA "当前期间的会计年度 378 MCHB~LFMON "当前期间 379 MCHB~CLABS "非限制使用的估价的库存 380 MCHB~CUMLM "在运库存 381 MCHB~CINSM "质量检验中的库存 382 MARA~XCHPF "批次管理标志 383 INTO CORRESPONDING FIELDS OF TABLE IT_MCHB 384 FROM MCHB 385 INNER JOIN MARA ON MCHB~MATNR = MARA~MATNR 386 WHERE MCHB~MATNR IN S_MATNR 387 AND MCHB~WERKS IN S_WERKS 388 AND MCHB~LGORT IN S_LGORT 389 AND MARA~XCHPF = 'X'. 390 391* 批次物料历史库存 392 SELECT MCHBH~MATNR "物料号 393 MCHBH~WERKS "工厂 394 MCHBH~LGORT "库存地点 395 MCHBH~CHARG "批号 396 MCHBH~LFGJA "当前期间的会计年度 397 MCHBH~LFMON "当前期间 398 MCHBH~CLABS "非限制使用的估价的库存 399 MCHBH~CUMLM "在运库存 400 MCHBH~CINSM "质量检验中的库存 401 MARA~XCHPF "批次管理标志 402 APPENDING CORRESPONDING FIELDS OF TABLE IT_MCHB 403 FROM MCHBH 404 INNER JOIN MARA ON MCHBH~MATNR = MARA~MATNR 405 WHERE MCHBH~MATNR IN S_MATNR 406 AND MCHBH~WERKS IN S_WERKS 407 AND MCHBH~LGORT IN S_LGORT 408 AND MARA~XCHPF = 'X'. 409 410* 查询日期绑定 411 LOOP AT IT_MCHB ASSIGNING <FS_MCHB>. 412 CONCATENATE <FS_MCHB>-LFGJA 413 <FS_MCHB>-LFMON 414 '01' 415 INTO <FS_MCHB>-SDATE. 416 ENDLOOP. 417 418* 排除库存符合查询期间的对象数据 419 DELETE IT_MCHB WHERE SDATE > V_FDATE. 420 421 SORT IT_MCHB BY WERKS ASCENDING 422 MATNR ASCENDING 423 LGORT ASCENDING 424 CHARG ASCENDING 425 SDATE DESCENDING. 426* 得到满足查询条件的唯一的批次物料 427 DELETE ADJACENT DUPLICATES FROM IT_MCHB COMPARING WERKS 428 MATNR 429 LGORT 430 CHARG. 431* 排除库存数量为0的对象数据 432 DELETE IT_MCHB WHERE CLABS = 0 433 AND CUMLM = 0 434 AND CINSM = 0. 435 436 APPEND LINES OF IT_MCHB TO IT_DATA. 437 APPEND LINES OF IT_MCHB TO IT_CHARG. 438 439* 普通物料管理 440 REFRESH IT_MARD. 441 SELECT MARD~MATNR "物料号 442 MARD~WERKS "工厂 443 MARD~LGORT "库存地点 444 MARD~LFGJA "当前期间的会计年度 445 MARD~LFMON "当前期间 446 MARD~LABST AS CLABS "非限制使用的估价的库存 447 MARD~UMLME AS CUMLM "在运库存 448 MARD~INSME AS CINSM "质量检验中的库存 449 INTO CORRESPONDING FIELDS OF TABLE IT_MARD 450 FROM MARD 451 INNER JOIN MARA ON MARD~MATNR = MARA~MATNR 452 WHERE MARD~MATNR IN S_MATNR 453 AND MARD~WERKS IN S_WERKS 454 AND MARD~LGORT IN S_LGORT 455 AND MARA~XCHPF <> 'X'. 456 457* 普通物料历史库存 458 SELECT MARDH~MATNR "物料号 459 MARDH~WERKS "工厂 460 MARDH~LGORT "库存地点 461 MARDH~LFGJA "当前期间的会计年度 462 MARDH~LFMON "当前期间 463 MARDH~LABST AS CLABS "非限制使用的估价的库存 464 MARDH~UMLME AS CUMLM "在运库存 465 MARDH~INSME AS CINSM "质量检验中的库存 466 APPENDING CORRESPONDING FIELDS OF TABLE IT_MARD 467 FROM MARDH 468 INNER JOIN MARA ON MARDH~MATNR = MARA~MATNR 469 WHERE MARDH~MATNR IN S_MATNR 470 AND MARDH~WERKS IN S_WERKS 471 AND MARDH~LGORT IN S_LGORT 472 AND MARA~XCHPF <> 'X'. 473 474* 查询日期绑定 475 LOOP AT IT_MARD ASSIGNING <FS_MARD>. 476 CONCATENATE <FS_MARD>-LFGJA 477 <FS_MARD>-LFMON 478 '01' 479 INTO <FS_MARD>-SDATE. 480 ENDLOOP. 481 482* 排除库存符合查询期间的对象数据 483 DELETE IT_MARD WHERE SDATE > V_FDATE. 484 485 SORT IT_MARD BY WERKS ASCENDING 486 MATNR ASCENDING 487 LGORT ASCENDING 488 SDATE DESCENDING. 489* 得到满足查询条件的唯一的批次物料 490 DELETE ADJACENT DUPLICATES FROM IT_MARD COMPARING WERKS 491 MATNR 492 LGORT. 493* 排除库存数量为0的对象数据 494 DELETE IT_MARD WHERE CLABS = 0 495 AND CUMLM = 0 496 AND CINSM = 0. 497 498 APPEND LINES OF IT_MARD TO IT_DATA. 499 500* 特殊物料管理 501 REFRESH IT_MSKA. 502 SELECT MSKA~MATNR "物料号 503 MSKA~WERKS "工厂 504 MSKA~LGORT "库存地点 505 MSKA~CHARG "批号 506 MSKA~SOBKZ "特殊库存标识 507 MSKA~VBELN "销售和分销凭证号 508 MSKA~POSNR "销售和分销凭证的项目号 509 MSKA~KALAB AS CLABS "非限制使用的估价的库存 510 MSKA~KAINS AS CINSM "质量检验中的库存 511 MSKA~LFGJA "当前期间的会计年度 512 MSKA~LFMON "当前期间 513 INTO CORRESPONDING FIELDS OF TABLE IT_MSKA 514 FROM MSKA 515 WHERE MSKA~MATNR IN S_MATNR 516 AND MSKA~WERKS IN S_WERKS 517 AND MSKA~LGORT IN S_LGORT. 518* 特殊物料历史库存 519 SELECT MSKAH~MATNR "物料号 520 MSKAH~WERKS "工厂 521 MSKAH~LGORT "库存地点 522 MSKAH~CHARG "批号 523 MSKAH~SOBKZ "特殊库存标识 524 MSKAH~VBELN "销售和分销凭证号 525 MSKAH~POSNR "销售和分销凭证的项目号 526 MSKAH~KALAB AS CLABS "非限制使用的估价的库存 527 MSKAH~KAINS AS CINSM "质量检验中的库存 528 MSKAH~LFGJA "当前期间的会计年度 529 MSKAH~LFMON "当前期间 530 APPENDING CORRESPONDING FIELDS OF TABLE IT_MSKA 531 FROM MSKAH 532 WHERE MSKAH~MATNR IN S_MATNR 533 AND MSKAH~WERKS IN S_WERKS 534 AND MSKAH~LGORT IN S_LGORT. 535 536* 查询日期绑定 537 LOOP AT IT_MSKA ASSIGNING <FS_MSKA>. 538 CONCATENATE <FS_MSKA>-LFGJA 539 <FS_MSKA>-LFMON 540 '01' 541 INTO <FS_MSKA>-SDATE. 542 ENDLOOP. 543 544* 排除库存符合查询期间的对象数据 545 DELETE IT_MSKA WHERE SDATE > V_FDATE. 546 547 SORT IT_MSKA BY WERKS ASCENDING 548 MATNR ASCENDING 549 LGORT ASCENDING 550 CHARG ASCENDING 551 SDATE DESCENDING. 552 553 REFRESH LT_MSKA. 554 APPEND LINES OF IT_MSKA TO LT_MSKA. 555* 得到满足查询条件的唯一的批次物料 556 DELETE ADJACENT DUPLICATES FROM IT_MSKA COMPARING WERKS 557 MATNR 558 LGORT 559 CHARG. 560* 按批次合计销售订单 561 LOOP AT IT_MSKA ASSIGNING <FS_MSKA>. 562 CLEAR: <FS_MSKA>-CLABS, 563 <FS_MSKA>-CINSM, 564 <FS_MSKA>-VBELN, 565 <FS_MSKA>-POSNR. 566 LOOP AT LT_MSKA INTO LW_MSKA 567 WHERE WERKS = <FS_MSKA>-WERKS 568 AND MATNR = <FS_MSKA>-MATNR 569 AND LGORT = <FS_MSKA>-LGORT 570 AND CHARG = <FS_MSKA>-CHARG 571 AND SDATE = <FS_MSKA>-SDATE. 572 <FS_MSKA>-CLABS = <FS_MSKA>-CLABS + LW_MSKA-CLABS. 573 <FS_MSKA>-CINSM = <FS_MSKA>-CINSM + LW_MSKA-CINSM. 574 ENDLOOP. 575 ENDLOOP. 576 577* 排除库存数量为0的对象数据 578 DELETE IT_MSKA WHERE CLABS = 0 579 AND CUMLM = 0 580 AND CINSM = 0. 581 582 APPEND LINES OF IT_MSKA TO IT_DATA. 583 APPEND LINES OF IT_MSKA TO IT_CHARG. 584 585* 在途库存物料管理 586 REFRESH IT_MARC. 587 SELECT MARC~MATNR "物料号 588 MARC~WERKS "工厂 589 MARC~UMLMC AS CLABS "非限制使用的估价的库存 590 MARC~LFGJA "当前期间的会计年度 591 MARC~LFMON "当前期间 592 INTO CORRESPONDING FIELDS OF TABLE IT_MARC 593 FROM MARC 594 WHERE MARC~MATNR IN S_MATNR 595 AND MARC~WERKS IN S_WERKS. 596 597* 特殊物料历史库存 598 SELECT MARCH~MATNR "物料号 599 MARCH~WERKS "工厂 600 MARCH~UMLMC AS CLABS "非限制使用的估价的库存 601 MARCH~LFGJA "当前期间的会计年度 602 MARCH~LFMON "当前期间 603 APPENDING CORRESPONDING FIELDS OF TABLE IT_MARC 604 FROM MARCH 605 WHERE MARCH~MATNR IN S_MATNR 606 AND MARCH~WERKS IN S_WERKS. 607 608 609* 查询日期绑定 610 LOOP AT IT_MARC ASSIGNING <FS_MARC>. 611 <FS_MARC>-LGORT = 'XXXX'. 612 CONCATENATE <FS_MARC>-LFGJA 613 <FS_MARC>-LFMON 614 '01' 615 INTO <FS_MARC>-SDATE. 616 ENDLOOP. 617 618* 排除库存符合查询期间的对象数据 619 DELETE IT_MARC WHERE SDATE > V_FDATE. 620 621 SORT IT_MARC BY WERKS ASCENDING 622 MATNR ASCENDING 623 SDATE DESCENDING. 624 625* 得到满足查询条件的唯一的批次物料 626 DELETE ADJACENT DUPLICATES FROM IT_MARC COMPARING WERKS 627 MATNR. 628* 排除库存数量为0的对象数据 629 DELETE IT_MARC WHERE CLABS = 0 630 AND CUMLM = 0 631 AND CINSM = 0. 632 633 APPEND LINES OF IT_MARC TO IT_DATA. 634 635 636* 排除库存数量为0的对象数据 637 DELETE IT_DATA WHERE ( CLABS = 0 638 AND CUMLM = 0 639 AND CINSM = 0 ) 640 OR SDATE > V_FDATE. 641 SORT IT_DATA BY WERKS ASCENDING 642 MATNR ASCENDING 643 LGORT ASCENDING 644 SDATE DESCENDING. 645* 得到输出对象 646 DELETE ADJACENT DUPLICATES FROM IT_DATA COMPARING WERKS 647 MATNR 648 LGORT. 649 650 IF IT_DATA IS NOT INITIAL. 651* 得到物料属性 652 REFRESH LT_MATNR. 653 SELECT MARA~MATNR "物料号 654 MARA~MATKL "物料组 655 MAKT~MAKTX "物料描述 656 MARA~XCHPF "批次管理需求的标识 657 MARA~MEINS "数量单位 658 MARC~PRCTR "利润中心 659 INTO CORRESPONDING FIELDS OF TABLE LT_MATNR 660 FROM MARA 661 INNER JOIN MARC ON MARC~MATNR = MARA~MATNR 662 INNER JOIN MAKT ON MAKT~MATNR = MARA~MATNR 663 AND MAKT~SPRAS = SY-LANGU 664 FOR ALL ENTRIES IN IT_DATA 665 WHERE MARA~MATNR = IT_DATA-MATNR 666 AND MARC~WERKS = IT_DATA-WERKS. 667 ENDIF. 668 669* 整合对象数据 670 REFRESH LT_DATA. 671 LOOP AT IT_DATA INTO WK_DATA. 672 CLEAR WK_MATNR. 673 WK_MATNR-WERKS = WK_DATA-WERKS. 674 WK_MATNR-LGORT = WK_DATA-LGORT. 675 WK_MATNR-MATNR = WK_DATA-MATNR. 676 CLEAR LW_MATNR. 677 READ TABLE LT_MATNR INTO LW_MATNR 678 WITH KEY MATNR = WK_DATA-MATNR. 679 IF SY-SUBRC = 0. 680 WK_MATNR-MAKTX = LW_MATNR-MAKTX. 681 WK_MATNR-XCHPF = LW_MATNR-XCHPF. 682 WK_MATNR-MEINS = LW_MATNR-MEINS. 683 WK_MATNR-PRCTR = LW_MATNR-PRCTR. 684 WK_MATNR-MATKL = LW_MATNR-MATKL. 685 ENDIF. 686* 计算库位总数量 687 IF WK_MATNR-XCHPF IS NOT INITIAL. 688 LOOP AT IT_MCHB INTO WK_MCHB 689 WHERE WERKS = WK_MATNR-WERKS 690 AND MATNR = WK_MATNR-MATNR 691 AND LGORT = WK_MATNR-LGORT. 692* 数量累计:限制使用的估价的库存/在运库存/质量检验中的库存 693 CLEAR L_MENGE. 694 L_MENGE = WK_MCHB-CLABS + WK_MCHB-CUMLM + WK_MCHB-CINSM. 695 WK_MATNR-MENGE = WK_MATNR-MENGE + L_MENGE. 696 ENDLOOP. 697 ELSE. 698* 非批次管理物料设置 699 APPEND WK_DATA TO LT_DATA. 700 LOOP AT IT_MARD INTO WK_MARD 701 WHERE WERKS = WK_MATNR-WERKS 702 AND MATNR = WK_MATNR-MATNR 703 AND LGORT = WK_MATNR-LGORT. 704* 数量累计:限制使用的估价的库存/在运库存/质量检验中的库存 705 CLEAR L_MENGE. 706 L_MENGE = WK_MARD-CLABS + WK_MARD-CUMLM + WK_MARD-CINSM. 707 WK_MATNR-MENGE = WK_MATNR-MENGE + L_MENGE. 708 ENDLOOP. 709 ENDIF. 710 LOOP AT IT_MSKA INTO WK_MSKA 711 WHERE WERKS = WK_MATNR-WERKS 712 AND MATNR = WK_MATNR-MATNR 713 AND LGORT = WK_MATNR-LGORT. 714* 数量累计:限制使用的估价的库存/在运库存/质量检验中的库存 715 CLEAR L_MENGE. 716 L_MENGE = WK_MSKA-CLABS + WK_MSKA-CUMLM + WK_MSKA-CINSM. 717 WK_MATNR-MENGE = WK_MATNR-MENGE + L_MENGE. 718 ENDLOOP. 719* 在途库存设置 720 IF WK_MATNR-LGORT = 'XXXX'. 721 CLEAR WK_MARC. 722 READ TABLE IT_MARC INTO WK_MARC 723 WITH KEY WERKS = WK_MATNR-WERKS 724 MATNR = WK_MATNR-MATNR. 725 IF SY-SUBRC = 0. 726 WK_MATNR-MENGE = WK_MARC-CLABS. 727 ENDIF. 728 ENDIF. 729 APPEND WK_MATNR TO IT_MATNR. 730 ENDLOOP. 731 732* 非批次管理物料物料移动数据 733 IF LT_DATA IS NOT INITIAL. 734* 计算库龄和最后物料移动时间 735 REFRESH IT_MSEG. 736 SELECT MSEG~BUKRS "公司代码 737 MSEG~MBLNR "物料凭证编号 738 MSEG~MJAHR "物料凭证年度 739 MSEG~ZEILE "物料凭证中的项目 740 MSEG~MATNR "物料号 741 MSEG~WERKS "工厂 742 MSEG~LGORT "库存地点 743 MSEG~BWART "移动类型 744 MSEG~SHKZG "借贷标识 745 MSEG~MENGE "数量 746 MSEG~EXBWR "以本地货币计量的过帐金额 747 MSEG~CHARG "批号 748 MSEG~WAERS "价格单位 749 MKPF~BUDAT "凭证中的过帐日期 750 INTO CORRESPONDING FIELDS OF TABLE IT_MSEG 751 FROM MKPF 752 INNER JOIN MSEG ON MKPF~MBLNR = MSEG~MBLNR 753 AND MKPF~MJAHR = MSEG~MJAHR 754 FOR ALL ENTRIES IN LT_DATA 755 WHERE MSEG~WERKS = LT_DATA-WERKS 756 AND MSEG~MATNR = LT_DATA-MATNR 757 AND MSEG~LGORT = LT_DATA-LGORT 758 AND MSEG~BUKRS = P_BUKRS 759 AND MKPF~BUDAT <= P_SDATE 760 AND MSEG~MENGE <> 0 761 AND MSEG~BWART IN ('101', '701', '561') 762 AND MSEG~XAUTO = ''. 763 764 DELETE IT_MSEG WHERE MATNR IS INITIAL. 765 766 SORT IT_MSEG BY WERKS ASCENDING 767 MATNR ASCENDING 768 LGORT ASCENDING 769 BUDAT DESCENDING. 770 ENDIF. 771 772 IF IT_MATNR IS NOT INITIAL. 773* 得到批次管理的日期 774 775 IF IT_CHARG IS NOT INITIAL. 776 REFRESH IT_MCH1. 777 SELECT * 778 INTO CORRESPONDING FIELDS OF TABLE IT_MCH1 779 FROM MCH1 780 FOR ALL ENTRIES IN IT_CHARG 781 WHERE MATNR = IT_CHARG-MATNR 782 AND CHARG = IT_CHARG-CHARG. 783 784* 按照物料号/最近收货日期排序 785 SORT IT_MCH1 BY MATNR ASCENDING 786 CHARG ASCENDING 787 LWEDT DESCENDING. 788 ENDIF. 789* 批次收货日期管理绑定 790 LOOP AT IT_CHARG ASSIGNING <FS_CHARG>. 791 CLEAR WK_MCH1. 792 READ TABLE IT_MCH1 INTO WK_MCH1 793 WITH KEY MATNR = <FS_CHARG>-MATNR 794 CHARG = <FS_CHARG>-CHARG 795 BINARY SEARCH. 796 IF SY-SUBRC = 0. 797 <FS_CHARG>-LWEDT = WK_MCH1-LWEDT. 798 ENDIF. 799 <FS_CHARG>-MENGE = <FS_CHARG>-CLABS + 800 <FS_CHARG>-CUMLM + 801 <FS_CHARG>-CINSM. 802 ENDLOOP. 803* 得到库龄金额 804 REFRESH IT_ZFIT015. 805 IF P_BUKRS <> '3200' 806 AND P_BUKRS <> '3300'. 807 SELECT * 808 FROM ZFIT015 809 INTO CORRESPONDING FIELDS OF TABLE IT_ZFIT015 810 FOR ALL ENTRIES IN IT_MATNR 811 WHERE BUKRS = P_BUKRS 812 AND MATNR = IT_MATNR-MATNR 813 AND WERKS = IT_MATNR-WERKS 814 AND GJAHR = V_GJAHR 815 AND MONAT = V_MONAT. 816 ELSE. 817 SELECT * 818 FROM ZFIT015 819 INTO CORRESPONDING FIELDS OF TABLE IT_ZFIT015 820 FOR ALL ENTRIES IN IT_MATNR 821 WHERE BUKRS = P_BUKRS 822 AND MATNR = IT_MATNR-MATNR 823 AND GJAHR = V_GJAHR 824 AND MONAT = V_MONAT. 825 LOOP AT IT_ZFIT015 INTO WK_ZFIT015 826 WHERE WERKS IS INITIAL. 827 WK_ZFIT015-WERKS = WK_ZFIT015-BUKRS. 828 MODIFY IT_ZFIT015 FROM WK_ZFIT015 TRANSPORTING WERKS. 829 ENDLOOP. 830 ENDIF. 831 SORT IT_ZFIT015 BY WERKS ASCENDING 832 MATNR ASCENDING. 833* 得到跌价比率 834 REFRESH IT_ZFIT017. 835 SELECT * 836 FROM ZFIT017 837 INTO CORRESPONDING FIELDS OF TABLE IT_ZFIT017 838 FOR ALL ENTRIES IN IT_MATNR 839 WHERE MATKL = IT_MATNR-MATKL 840 AND PRCTR = IT_MATNR-PRCTR. 841 842 SORT IT_ZFIT017 BY MATKL ASCENDING 843 PRCTR ASCENDING. 844 845* 利润中心描述 846 REFRESH IT_CEPCT. 847 SELECT * 848 INTO CORRESPONDING FIELDS OF TABLE IT_CEPCT 849 FROM CEPCT 850 FOR ALL ENTRIES IN IT_MATNR 851 WHERE PRCTR = IT_MATNR-PRCTR 852 AND SPRAS = SY-LANGU. 853 SORT IT_CEPCT BY PRCTR ASCENDING. 854 DELETE ADJACENT DUPLICATES FROM IT_CEPCT COMPARING PRCTR. 855 856* 计算物料财务数量和单位 857 REFRESH IT_ZMMT001. 858 SELECT * 859 INTO CORRESPONDING FIELDS OF TABLE IT_ZMMT001 860 FROM ZMMT001 861 FOR ALL ENTRIES IN IT_MATNR 862 WHERE MATNR = IT_MATNR-MATNR. 863 SORT IT_ZMMT001 BY MATNR ASCENDING. 864 ENDIF. 865 866* 取得总帐科目数据 867 REFRESH IT_FAG1. 868 SELECT * 869 INTO CORRESPONDING FIELDS OF TABLE IT_FAG1 870 FROM FAGLFLEXT 871 WHERE RYEAR = V_GJAHR 872 AND RACCT = '0014100000' 873 AND RBUKRS = P_BUKRS 874 AND RBUSA IN S_WERKS 875 AND RRCTY = '0' 876 AND RLDNR = '0L'. 877 878* 得到发票校验引起的尾差金额 879 REFRESH IT_ZFIT016. 880 SELECT * 881 FROM ZFIT016 882 INTO CORRESPONDING FIELDS OF TABLE IT_ZFIT016 883 WHERE BUKRS = P_BUKRS 884 AND BUDAT <= P_SDATE 885 AND GSBER IN S_WERKS. 886 887ENDFORM. " GET_DATA 888*&---------------------------------------------------------------------* 889*& Form EDIT_DATA 890*&---------------------------------------------------------------------* 891* 编辑对象数据 892*----------------------------------------------------------------------* 893FORM EDIT_DATA . 894 895 DATA: L_QTY TYPE MBEW-LBKUM, 896 L_MENGE TYPE MSEG-MENGE, 897 L_SQTY TYPE MBEW-LBKUM, 898 L_NUM TYPE MBEW-LBKUM, 899 L_DMBTR TYPE MBEW-SALK3, 900 L_SALK3 TYPE MBEW-SALK3, 901 L_INDEX TYPE SY-INDEX, 902 LW_MATNR TYPE TP_MATNR, 903 L_SUM TYPE ZFIT015-DMBTR, 904 LW_ALV TYPE TP_ALV. 905 906* 设置期间范围 907 PERFORM SET_MONTH. 908 909* 数据整合 910 LOOP AT IT_MATNR INTO WK_MATNR. 911 L_INDEX = SY-TABIX + 1. 912 913 CLEAR: WK_ALV,L_QTY. 914* 物料启用批次管理判断 915 IF WK_MATNR-XCHPF IS NOT INITIAL. 916* 按照输出行循环批次管理表(物料/库位查找) 917 LOOP AT IT_CHARG INTO WK_CHARG 918 WHERE WERKS = WK_MATNR-WERKS 919 AND MATNR = WK_MATNR-MATNR 920 AND LGORT = WK_MATNR-LGORT. 921 922* 计算物料所在库位的数量 923 L_QTY = L_QTY + WK_CHARG-MENGE. 924 925* 库龄数量差异调整 926 IF L_QTY > WK_MATNR-MENGE. 927 WK_CHARG-MENGE = WK_MATNR-MENGE - ( L_QTY - WK_CHARG-MENGE ) . 928 L_QTY = WK_MATNR-MENGE. 929 ENDIF. 930 931* 过去3月以内的库龄数量 932 IF WK_CHARG-LWEDT IN S_3M 933 OR WK_CHARG-LWEDT >= P_SDATE. 934 WK_ALV-QTY3M = WK_ALV-QTY3M + WK_CHARG-MENGE. 935 CONTINUE. 936 ENDIF. 937* 过去4月到6月以内的库龄数量 938 IF WK_CHARG-LWEDT IN S_6M. 939 WK_ALV-QTY6M = WK_ALV-QTY6M + WK_CHARG-MENGE. 940 CONTINUE. 941 ENDIF. 942* 过去7月到9月以内的库龄数量 943 IF WK_CHARG-LWEDT IN S_9M. 944 WK_ALV-QTY9M = WK_ALV-QTY9M + WK_CHARG-MENGE. 945 CONTINUE. 946 ENDIF. 947* 过去10月到12月以内的库龄数量 948 IF WK_CHARG-LWEDT IN S_12M. 949 WK_ALV-QTY12M = WK_ALV-QTY12M + WK_CHARG-MENGE. 950 CONTINUE. 951 ENDIF. 952* 过去13月到18月以内的库龄数量 953 IF WK_CHARG-LWEDT IN S_18M. 954 WK_ALV-QTY18M = WK_ALV-QTY18M + WK_CHARG-MENGE. 955 CONTINUE. 956 ENDIF. 957* 过去19月到24月以内的库龄数量 958 IF WK_CHARG-LWEDT IN S_24M. 959 WK_ALV-QTY24M = WK_ALV-QTY24M + WK_CHARG-MENGE. 960 CONTINUE. 961 ENDIF. 962* 过去25月到36月以内的库龄数量 963 IF WK_CHARG-LWEDT IN S_36M. 964 WK_ALV-QTY36M = WK_ALV-QTY36M + WK_CHARG-MENGE. 965 CONTINUE. 966 ENDIF. 967* 过去37月到60月以内的库龄数量 968 IF WK_CHARG-LWEDT IN S_60M. 969 WK_ALV-QTY60M = WK_ALV-QTY60M + WK_CHARG-MENGE. 970 CONTINUE. 971 ENDIF. 972* 过去61月以上的库龄数量 973 IF WK_CHARG-LWEDT < S_61M. 974 WK_ALV-QTY61M = WK_ALV-QTY61M + WK_CHARG-MENGE. 975 CONTINUE. 976 ENDIF. 977* 库位数量相等判断 978 IF L_QTY = WK_MATNR-MENGE. 979 EXIT. 980 ENDIF. 981 ENDLOOP. 982 ELSE. 983* 按照输出行循环MSEG(物料/库位查找) 984 LOOP AT IT_MSEG INTO WK_MSEG 985 WHERE WERKS = WK_MATNR-WERKS 986 AND MATNR = WK_MATNR-MATNR 987 AND LGORT = WK_MATNR-LGORT. 988 989* 移动数量类型判断 990 CLEAR L_MENGE. 991 L_MENGE = WK_MSEG-MENGE. 992 993* 计算物料所在库位的数量 994 L_QTY = L_QTY + L_MENGE. 995 996* 库龄数量差异调整 997 IF L_QTY > WK_MATNR-MENGE. 998 L_MENGE = WK_MATNR-MENGE - ( L_QTY - L_MENGE ). 999 L_QTY = WK_MATNR-MENGE. 1000 ENDIF. 1001 1002* 过去3月以内的库龄数量 1003 IF WK_MSEG-BUDAT IN S_3M. 1004 WK_ALV-QTY3M = WK_ALV-QTY3M + L_MENGE. 1005 CONTINUE. 1006 ENDIF. 1007* 过去4月到6月以内的库龄数量 1008 IF WK_MSEG-BUDAT IN S_6M. 1009 WK_ALV-QTY6M = WK_ALV-QTY6M + L_MENGE. 1010 CONTINUE. 1011 ENDIF. 1012* 过去7月到9月以内的库龄数量 1013 IF WK_MSEG-BUDAT IN S_9M. 1014 WK_ALV-QTY9M = WK_ALV-QTY9M + L_MENGE. 1015 CONTINUE. 1016 ENDIF. 1017* 过去10月到12月以内的库龄数量 1018 IF WK_MSEG-BUDAT IN S_12M. 1019 WK_ALV-QTY12M = WK_ALV-QTY12M + L_MENGE. 1020 CONTINUE. 1021 ENDIF. 1022* 过去13月到18月以内的库龄数量 1023 IF WK_MSEG-BUDAT IN S_18M. 1024 WK_ALV-QTY18M = WK_ALV-QTY18M + L_MENGE. 1025 CONTINUE. 1026 ENDIF. 1027* 过去19月到24月以内的库龄数量 1028 IF WK_MSEG-BUDAT IN S_24M. 1029 WK_ALV-QTY24M = WK_ALV-QTY24M + L_MENGE. 1030 CONTINUE. 1031 ENDIF. 1032* 过去25月到36月以内的库龄数量 1033 IF WK_MSEG-BUDAT IN S_36M. 1034 WK_ALV-QTY36M = WK_ALV-QTY36M + L_MENGE. 1035 CONTINUE. 1036 ENDIF. 1037* 过去37月到60月以内的库龄数量 1038 IF WK_MSEG-BUDAT IN S_60M. 1039 WK_ALV-QTY60M = WK_ALV-QTY60M + L_MENGE. 1040 CONTINUE. 1041 ENDIF. 1042* 过去61月以上的库龄数量 1043 IF WK_MSEG-BUDAT < S_61M. 1044 WK_ALV-QTY61M = WK_ALV-QTY61M + L_MENGE. 1045 CONTINUE. 1046 ENDIF. 1047* 库位数量相等判断 1048 IF L_QTY = WK_MATNR-MENGE. 1049 EXIT. 1050 ENDIF. 1051 ENDLOOP. 1052 ENDIF. 1053 IF L_QTY < WK_MATNR-MENGE. 1054 WK_ALV-QTY61M = WK_ALV-QTY61M + 1055 WK_MATNR-MENGE - L_QTY. 1056 ENDIF. 1057* 计算物料总数量 1058 L_SQTY = L_SQTY + WK_MATNR-MENGE. 1059* 库存数量/数量单位 1060 WK_ALV-LBKUM1 = WK_MATNR-MENGE. 1061 WK_ALV-MEINS1 = WK_MATNR-MEINS. 1062 WK_ALV-WAERS = WK_MSEG-WAERS. 1063 WK_ALV-WERKS = WK_MATNR-WERKS. 1064 WK_ALV-LGORT = WK_MATNR-LGORT. 1065 WK_ALV-ZYEAR = V_GJAHR. 1066 WK_ALV-ZMONTH = V_MONAT. 1067 WK_ALV-MATNR = WK_MATNR-MATNR. 1068 WK_ALV-MAKTX = WK_MATNR-MAKTX. 1069 WK_ALV-MATKL = WK_MATNR-MATKL. 1070 WK_ALV-XCHPF = WK_MATNR-XCHPF. 1071 WK_ALV-PRCTR = WK_MATNR-PRCTR. 1072* 利润中心描述 1073 CLEAR WK_CEPCT. 1074 READ TABLE IT_CEPCT INTO WK_CEPCT 1075 WITH KEY PRCTR = WK_MATNR-PRCTR 1076 BINARY SEARCH. 1077 IF SY-SUBRC = 0. 1078 WK_ALV-PRTXT = WK_CEPCT-MCTXT. 1079 ENDIF. 1080* 财务库存数量/数量单位 1081 CLEAR WK_ZMMT001. 1082 READ TABLE IT_ZMMT001 INTO WK_ZMMT001 1083 BINARY SEARCH 1084 WITH KEY MATNR = WK_MATNR-MATNR. 1085 IF WK_ZMMT001-VALUE1 <> 0. 1086 WK_ALV-LBKUM2 = WK_ALV-LBKUM1 * 1087 WK_ZMMT001-VALUE2 / WK_ZMMT001-VALUE1. 1088 WK_ALV-MEINS2 = WK_ZMMT001-UNIT. 1089 ENDIF. 1090 1091* 同组的最后一行数据 1092 CLEAR LW_MATNR. 1093 READ TABLE IT_MATNR INTO LW_MATNR INDEX L_INDEX. 1094 IF WK_MATNR-MATNR <> LW_MATNR-MATNR. 1095* 计算库存金额 1096 CLEAR L_SUM. 1097 LOOP AT IT_ZFIT015 INTO WK_ZFIT015 1098 WHERE WERKS = WK_MATNR-WERKS 1099 AND MATNR = WK_MATNR-MATNR. 1100 L_SUM = L_SUM + WK_ZFIT015-DMBTR. 1101 ENDLOOP. 1102* 物料总数量/金额保存 1103 CLEAR WK_QTY. 1104 WK_QTY-WERKS = WK_MATNR-WERKS. 1105 WK_QTY-MATNR = WK_MATNR-MATNR. 1106 WK_QTY-MENGE = L_SQTY. 1107 WK_QTY-DMBTR = L_SUM. 1108 APPEND WK_QTY TO IT_QTY. 1109 CLEAR L_SQTY. 1110 ENDIF. 1111 APPEND WK_ALV TO IT_ALV. 1112 ENDLOOP. 1113* 排序 1114 SORT IT_QTY BY WERKS ASCENDING 1115 MATNR ASCENDING. 1116* 输出列表金额设定 1117 CLEAR L_INDEX. 1118 1119 LOOP AT IT_ALV ASSIGNING <FS_ALV>. 1120 L_INDEX = SY-TABIX + 1. 1121 1122* 库位数量在物料总数量所占比例 1123 CLEAR WK_QTY. 1124 READ TABLE IT_QTY INTO WK_QTY 1125 WITH KEY WERKS = <FS_ALV>-WERKS 1126 MATNR = <FS_ALV>-MATNR 1127 BINARY SEARCH. 1128 IF WK_QTY-MENGE <> 0. 1129 <FS_ALV>-PRICE = WK_QTY-DMBTR / WK_QTY-MENGE. "价格 1130 1131* 库位金额 1132 <FS_ALV>-SALK3 = <FS_ALV>-LBKUM1 * ( WK_QTY-DMBTR / WK_QTY-MENGE ). 1133 L_SALK3 = L_SALK3 + <FS_ALV>-SALK3. 1134 1135* 过去历史期间的库龄金额 1136 <FS_ALV>-PRC3M = <FS_ALV>-QTY3M * ( WK_QTY-DMBTR / WK_QTY-MENGE ). 1137 <FS_ALV>-PRC6M = <FS_ALV>-QTY6M * ( WK_QTY-DMBTR / WK_QTY-MENGE ). 1138 <FS_ALV>-PRC9M = <FS_ALV>-QTY9M * ( WK_QTY-DMBTR / WK_QTY-MENGE ). 1139 <FS_ALV>-PRC12M = <FS_ALV>-QTY12M * ( WK_QTY-DMBTR / WK_QTY-MENGE ). 1140 <FS_ALV>-PRC18M = <FS_ALV>-QTY18M * ( WK_QTY-DMBTR / WK_QTY-MENGE ). 1141 <FS_ALV>-PRC24M = <FS_ALV>-QTY24M * ( WK_QTY-DMBTR / WK_QTY-MENGE ). 1142 <FS_ALV>-PRC36M = <FS_ALV>-QTY36M * ( WK_QTY-DMBTR / WK_QTY-MENGE ). 1143 <FS_ALV>-PRC60M = <FS_ALV>-QTY60M * ( WK_QTY-DMBTR / WK_QTY-MENGE ). 1144 <FS_ALV>-PRC61M = <FS_ALV>-QTY61M * ( WK_QTY-DMBTR / WK_QTY-MENGE ). 1145 ENDIF. 1146 1147* 差异列累计 1148 CLEAR L_DMBTR. 1149 L_DMBTR = <FS_ALV>-PRC3M + <FS_ALV>-PRC6M + <FS_ALV>-PRC9M 1150 + <FS_ALV>-PRC12M + <FS_ALV>-PRC18M + <FS_ALV>-PRC24M 1151 + <FS_ALV>-PRC36M + <FS_ALV>-PRC60M + <FS_ALV>-PRC61M. 1152 IF <FS_ALV>-SALK3 <> L_DMBTR. 1153 <FS_ALV>-PRC3M = <FS_ALV>-PRC3M + ( <FS_ALV>-SALK3 - L_DMBTR ). 1154 ENDIF. 1155 1156* 跌价金额/跌价维护标志 1157 CLEAR WK_ZFIT017. 1158 READ TABLE IT_ZFIT017 INTO WK_ZFIT017 1159 WITH KEY MATKL = <FS_ALV>-MATKL 1160 PRCTR = <FS_ALV>-PRCTR 1161 BINARY SEARCH. 1162 IF SY-SUBRC = 0. 1163 <FS_ALV>-PERPRC = <FS_ALV>-PRC3M * WK_ZFIT017-PER3M / 100 + 1164 <FS_ALV>-PRC6M * WK_ZFIT017-PER6M / 100 + 1165 <FS_ALV>-PRC9M * WK_ZFIT017-PER9M / 100 + 1166 <FS_ALV>-PRC12M * WK_ZFIT017-PER12M / 100 + 1167 <FS_ALV>-PRC18M * WK_ZFIT017-PER18M / 100 + 1168 <FS_ALV>-PRC24M * WK_ZFIT017-PER24M / 100 + 1169 <FS_ALV>-PRC36M * WK_ZFIT017-PER36M / 100 + 1170 <FS_ALV>-PRC60M * WK_ZFIT017-PER60M / 100 + 1171 <FS_ALV>-PRC61M * WK_ZFIT017-PER61M / 100. 1172 <FS_ALV>-PERFLG = C_X. 1173 ENDIF. 1174 1175* 同组物料的最后一行数据 1176 CLEAR LW_ALV. 1177 READ TABLE IT_ALV INTO LW_ALV INDEX L_INDEX. 1178 IF <FS_ALV>-MATNR <> LW_ALV-MATNR. 1179* 库位差异金额 1180 <FS_ALV>-SALK3 = <FS_ALV>-SALK3 + ( WK_QTY-DMBTR - L_SALK3 ). 1181 <FS_ALV>-PRC3M = <FS_ALV>-PRC3M + ( WK_QTY-DMBTR - L_SALK3 ). 1182 CLEAR L_SALK3. 1183 ENDIF. 1184 ENDLOOP. 1185 1186* 特殊行:0库存物料金额 1187 LOOP AT IT_ZFIT015 INTO WK_ZFIT015. 1188 READ TABLE IT_ALV TRANSPORTING NO FIELDS 1189 WITH KEY MATNR = WK_ZFIT015-MATNR. 1190 IF SY-SUBRC <> 0. 1191 CLEAR LW_ALV. 1192 LW_ALV-ZYEAR = V_GJAHR. 1193 LW_ALV-ZMONTH = V_MONAT. 1194 LW_ALV-WERKS = WK_ZFIT015-WERKS. 1195 LW_ALV-MATNR = WK_ZFIT015-MATNR. 1196 LW_ALV-MAKTX = 'Special line: Qty:0/Amount'. 1197 LW_ALV-SALK3 = WK_ZFIT015-DMBTR. 1198 LW_ALV-PRC3M = WK_ZFIT015-DMBTR. 1199 APPEND LW_ALV TO IT_ALV. 1200 ENDIF. 1201 ENDLOOP. 1202 1203* 特殊行追加: 在制品 1204 CLEAR WK_OBJ. 1205 LOOP AT IT_FAG1 INTO WK_FAG1. 1206 WK_OBJ-HSLVT = WK_OBJ-HSLVT + WK_FAG1-HSLVT. 1207 WK_OBJ-HSL01 = WK_OBJ-HSL01 + WK_FAG1-HSL01. 1208 WK_OBJ-HSL02 = WK_OBJ-HSL02 + WK_FAG1-HSL02. 1209 WK_OBJ-HSL03 = WK_OBJ-HSL03 + WK_FAG1-HSL03. 1210 WK_OBJ-HSL04 = WK_OBJ-HSL04 + WK_FAG1-HSL04. 1211 WK_OBJ-HSL05 = WK_OBJ-HSL05 + WK_FAG1-HSL05. 1212 WK_OBJ-HSL06 = WK_OBJ-HSL06 + WK_FAG1-HSL06. 1213 WK_OBJ-HSL07 = WK_OBJ-HSL07 + WK_FAG1-HSL07. 1214 WK_OBJ-HSL08 = WK_OBJ-HSL08 + WK_FAG1-HSL08. 1215 WK_OBJ-HSL09 = WK_OBJ-HSL09 + WK_FAG1-HSL09. 1216 WK_OBJ-HSL10 = WK_OBJ-HSL10 + WK_FAG1-HSL10. 1217 WK_OBJ-HSL11 = WK_OBJ-HSL11 + WK_FAG1-HSL11. 1218 WK_OBJ-HSL12 = WK_OBJ-HSL12 + WK_FAG1-HSL12. 1219 ENDLOOP. 1220* 指针指向对象行 1221 ASSIGN WK_OBJ TO <FS_HEAD>. 1222 1223* 默认值 1224 V_VALUE = WK_OBJ-HSLVT. "余额结转 1225 1226 V_COUT = V_MONAT. 1227 1228* 得到指定月的累积金额 1229 CLEAR V_NUM. 1230 DO V_COUT TIMES. 1231* 字段 1232 V_NUM = V_NUM + 1. 1233 CONCATENATE 'HSL' 1234 V_NUM 1235 INTO V_FIELD. 1236 ASSIGN COMPONENT V_FIELD OF STRUCTURE <FS_HEAD> TO <FS_FIELD>. 1237 IF <FS_FIELD> <> 0. 1238 V_VALUE = V_VALUE + <FS_FIELD>. 1239 ENDIF. 1240 ENDDO. 1241 CLEAR LW_ALV. 1242 LW_ALV-ZYEAR = V_GJAHR. 1243 LW_ALV-ZMONTH = V_MONAT. 1244 LW_ALV-MAKTX = 'Special line: 14100000'. 1245 LW_ALV-SALK3 = V_VALUE. 1246 LW_ALV-PRC3M = V_VALUE. 1247 APPEND LW_ALV TO IT_ALV. 1248 1249* 特殊行追加: 尾差 1250 CLEAR L_DMBTR. 1251 LOOP AT IT_ZFIT016 INTO WK_ZFIT016. 1252 IF WK_ZFIT016-SHKZG = 'S'. 1253 L_DMBTR = L_DMBTR + WK_ZFIT016-DMBTR. 1254 ELSE. 1255 L_DMBTR = L_DMBTR - WK_ZFIT016-DMBTR. 1256 ENDIF. 1257 ENDLOOP. 1258 CLEAR LW_ALV. 1259 LW_ALV-ZYEAR = V_GJAHR. 1260 LW_ALV-ZMONTH = V_MONAT. 1261 LW_ALV-MAKTX = 'Special line: Tail Difference'. 1262 LW_ALV-SALK3 = L_DMBTR. 1263 LW_ALV-PRC3M = L_DMBTR. 1264 APPEND LW_ALV TO IT_ALV. 1265 1266 1267ENDFORM. " EDIT_DATA 1268*&---------------------------------------------------------------------* 1269*& Form SET_FIELDCAT 1270*&---------------------------------------------------------------------* 1271* 设定 FIELDCAT 1272*----------------------------------------------------------------------* 1273FORM SET_FIELDCAT . 1274 1275 DATA LW_FIEDCAT TYPE SLIS_FIELDCAT_ALV. 1276 REFRESH IT_FIELDCAT. 1277 1278* 仓库 1279 CLEAR LW_FIEDCAT. 1280 LW_FIEDCAT-FIELDNAME = 'LGORT'. 1281 LW_FIEDCAT-SELTEXT_L = TEXT-T01. 1282 APPEND LW_FIEDCAT TO IT_FIELDCAT. 1283 1284*1285 CLEAR LW_FIEDCAT. 1286 LW_FIEDCAT-FIELDNAME = 'ZYEAR'. 1287 LW_FIEDCAT-SELTEXT_L = TEXT-T02. 1288 APPEND LW_FIEDCAT TO IT_FIELDCAT. 1289 1290*1291 CLEAR LW_FIEDCAT. 1292 LW_FIEDCAT-FIELDNAME = 'ZMONTH'. 1293 LW_FIEDCAT-SELTEXT_L = TEXT-T03. 1294 APPEND LW_FIEDCAT TO IT_FIELDCAT. 1295 1296* 产品编号 1297 CLEAR LW_FIEDCAT. 1298 LW_FIEDCAT-FIELDNAME = 'MATNR'. 1299 LW_FIEDCAT-EDIT_MASK = '==MATN1'. 1300 LW_FIEDCAT-SELTEXT_L = TEXT-T04. 1301 1302 APPEND LW_FIEDCAT TO IT_FIELDCAT. 1303 1304* 产品描述 1305 CLEAR LW_FIEDCAT. 1306 LW_FIEDCAT-FIELDNAME = 'MAKTX'. 1307 LW_FIEDCAT-SELTEXT_L = TEXT-T05. 1308 APPEND LW_FIEDCAT TO IT_FIELDCAT. 1309 1310* 物料组 1311 CLEAR LW_FIEDCAT. 1312 LW_FIEDCAT-FIELDNAME = 'MATKL'. 1313 LW_FIEDCAT-SELTEXT_L = TEXT-T40. 1314 APPEND LW_FIEDCAT TO IT_FIELDCAT. 1315 1316* 利润中心 1317 CLEAR LW_FIEDCAT. 1318 LW_FIEDCAT-FIELDNAME = 'PRCTR'. 1319 LW_FIEDCAT-SELTEXT_L = TEXT-T06. 1320 APPEND LW_FIEDCAT TO IT_FIELDCAT. 1321 1322* 利润中心描述 1323 CLEAR LW_FIEDCAT. 1324 LW_FIEDCAT-FIELDNAME = 'PRTXT'. 1325 LW_FIEDCAT-SELTEXT_L = TEXT-T43. 1326 APPEND LW_FIEDCAT TO IT_FIELDCAT. 1327 1328* 批次管理 1329 CLEAR LW_FIEDCAT. 1330 LW_FIEDCAT-FIELDNAME = 'XCHPF'. 1331 LW_FIEDCAT-SELTEXT_L = TEXT-T39. 1332 APPEND LW_FIEDCAT TO IT_FIELDCAT. 1333 1334** 最后异动日期 1335* CLEAR LW_FIEDCAT. 1336* LW_FIEDCAT-FIELDNAME = 'LDATE1'. 1337* LW_FIEDCAT-SELTEXT_L = TEXT-T07. 1338* APPEND LW_FIEDCAT TO IT_FIELDCAT. 1339* 1340** 最后销售日期 1341* CLEAR LW_FIEDCAT. 1342* LW_FIEDCAT-FIELDNAME = 'LDATE2'. 1343* LW_FIEDCAT-SELTEXT_L = TEXT-T08. 1344* APPEND LW_FIEDCAT TO IT_FIELDCAT. 1345 1346* 成本单价 1347 CLEAR LW_FIEDCAT. 1348 LW_FIEDCAT-FIELDNAME = 'PRICE'. 1349 LW_FIEDCAT-SELTEXT_L = TEXT-T09. 1350 APPEND LW_FIEDCAT TO IT_FIELDCAT. 1351 1352* 价格单位 1353 CLEAR LW_FIEDCAT. 1354 LW_FIEDCAT-FIELDNAME = 'WAERS'. 1355 LW_FIEDCAT-SELTEXT_L = TEXT-T44. 1356 APPEND LW_FIEDCAT TO IT_FIELDCAT. 1357 1358* 实际成本金额 1359 CLEAR LW_FIEDCAT. 1360 LW_FIEDCAT-FIELDNAME = 'SALK3'. 1361 LW_FIEDCAT-SELTEXT_L = TEXT-T10. 1362 APPEND LW_FIEDCAT TO IT_FIELDCAT. 1363 1364* 数量(基本计量单位) 1365 CLEAR LW_FIEDCAT. 1366 LW_FIEDCAT-FIELDNAME = 'LBKUM1'. 1367 LW_FIEDCAT-SELTEXT_L = TEXT-T11. 1368 APPEND LW_FIEDCAT TO IT_FIELDCAT. 1369 1370* 基本计量单位 1371 CLEAR LW_FIEDCAT. 1372 LW_FIEDCAT-FIELDNAME = 'MEINS1'. 1373 LW_FIEDCAT-SELTEXT_L = TEXT-T12. 1374 APPEND LW_FIEDCAT TO IT_FIELDCAT. 1375 1376* 数量(财务价量统一单位) 1377 CLEAR LW_FIEDCAT. 1378 LW_FIEDCAT-FIELDNAME = 'LBKUM2'. 1379 LW_FIEDCAT-SELTEXT_L = TEXT-T13. 1380 APPEND LW_FIEDCAT TO IT_FIELDCAT. 1381 1382* 财务统一计量单位 1383 CLEAR LW_FIEDCAT. 1384 LW_FIEDCAT-FIELDNAME = 'MEINS2'. 1385 LW_FIEDCAT-SELTEXT_L = TEXT-T14. 1386 APPEND LW_FIEDCAT TO IT_FIELDCAT. 1387 1388* 库龄数量(3月以内) 1389 CLEAR LW_FIEDCAT. 1390 LW_FIEDCAT-FIELDNAME = 'QTY3M'. 1391 LW_FIEDCAT-SELTEXT_L = TEXT-T15. 1392 LW_FIEDCAT-EMPHASIZE = 'C500'. 1393 APPEND LW_FIEDCAT TO IT_FIELDCAT. 1394 1395* 库龄数量(4-6月) 1396 CLEAR LW_FIEDCAT. 1397 LW_FIEDCAT-FIELDNAME = 'QTY6M'. 1398 LW_FIEDCAT-SELTEXT_L = TEXT-T16. 1399 LW_FIEDCAT-EMPHASIZE = 'C500'. 1400 APPEND LW_FIEDCAT TO IT_FIELDCAT. 1401 1402* 库龄数量(7-9月) 1403 CLEAR LW_FIEDCAT. 1404 LW_FIEDCAT-FIELDNAME = 'QTY9M'. 1405 LW_FIEDCAT-SELTEXT_L = TEXT-T17. 1406 LW_FIEDCAT-EMPHASIZE = 'C500'. 1407 APPEND LW_FIEDCAT TO IT_FIELDCAT. 1408 1409* 库龄数量(10-12月) 1410 CLEAR LW_FIEDCAT. 1411 LW_FIEDCAT-FIELDNAME = 'QTY12M'. 1412 LW_FIEDCAT-SELTEXT_L = TEXT-T18. 1413 LW_FIEDCAT-EMPHASIZE = 'C500'. 1414 APPEND LW_FIEDCAT TO IT_FIELDCAT. 1415 1416* 库龄数量(13-18月) 1417 CLEAR LW_FIEDCAT. 1418 LW_FIEDCAT-FIELDNAME = 'QTY18M'. 1419 LW_FIEDCAT-SELTEXT_L = TEXT-T19. 1420 LW_FIEDCAT-EMPHASIZE = 'C500'. 1421 APPEND LW_FIEDCAT TO IT_FIELDCAT. 1422 1423* 库龄数量(19-24月) 1424 CLEAR LW_FIEDCAT. 1425 LW_FIEDCAT-FIELDNAME = 'QTY24M'. 1426 LW_FIEDCAT-SELTEXT_L = TEXT-T20. 1427 LW_FIEDCAT-EMPHASIZE = 'C500'. 1428 APPEND LW_FIEDCAT TO IT_FIELDCAT. 1429 1430* 库龄数量(25-36月) 1431 CLEAR LW_FIEDCAT. 1432 LW_FIEDCAT-FIELDNAME = 'QTY36M'. 1433 LW_FIEDCAT-SELTEXT_L = TEXT-T21. 1434 LW_FIEDCAT-EMPHASIZE = 'C500'. 1435 APPEND LW_FIEDCAT TO IT_FIELDCAT. 1436 1437* 库龄数量(37-60月) 1438 CLEAR LW_FIEDCAT. 1439 LW_FIEDCAT-FIELDNAME = 'QTY60M'. 1440 LW_FIEDCAT-SELTEXT_L = TEXT-T22. 1441 LW_FIEDCAT-EMPHASIZE = 'C500'. 1442 APPEND LW_FIEDCAT TO IT_FIELDCAT. 1443 1444* 库龄数量(60月以上) 1445 CLEAR LW_FIEDCAT. 1446 LW_FIEDCAT-FIELDNAME = 'QTY61M'. 1447 LW_FIEDCAT-SELTEXT_L = TEXT-T23. 1448 LW_FIEDCAT-EMPHASIZE = 'C500'. 1449 APPEND LW_FIEDCAT TO IT_FIELDCAT. 1450 1451 1452* 库龄金额(3月以内) 1453 CLEAR LW_FIEDCAT. 1454 LW_FIEDCAT-FIELDNAME = 'PRC3M'. 1455 LW_FIEDCAT-SELTEXT_L = TEXT-T24. 1456 LW_FIEDCAT-EMPHASIZE = 'C410'. 1457 APPEND LW_FIEDCAT TO IT_FIELDCAT. 1458 1459* 库龄金额(4-6月) 1460 CLEAR LW_FIEDCAT. 1461 LW_FIEDCAT-FIELDNAME = 'PRC6M'. 1462 LW_FIEDCAT-SELTEXT_L = TEXT-T25. 1463 LW_FIEDCAT-EMPHASIZE = 'C410'. 1464 APPEND LW_FIEDCAT TO IT_FIELDCAT. 1465 1466* 库龄金额(7-9月) 1467 CLEAR LW_FIEDCAT. 1468 LW_FIEDCAT-FIELDNAME = 'PRC9M'. 1469 LW_FIEDCAT-SELTEXT_L = TEXT-T26. 1470 LW_FIEDCAT-EMPHASIZE = 'C410'. 1471 APPEND LW_FIEDCAT TO IT_FIELDCAT. 1472 1473* 库龄金额(10-12月) 1474 CLEAR LW_FIEDCAT. 1475 LW_FIEDCAT-FIELDNAME = 'PRC12M'. 1476 LW_FIEDCAT-SELTEXT_L = TEXT-T27. 1477 LW_FIEDCAT-EMPHASIZE = 'C410'. 1478 APPEND LW_FIEDCAT TO IT_FIELDCAT. 1479 1480* 库龄金额(13-18月) 1481 CLEAR LW_FIEDCAT. 1482 LW_FIEDCAT-FIELDNAME = 'PRC18M'. 1483 LW_FIEDCAT-SELTEXT_L = TEXT-T28. 1484 LW_FIEDCAT-EMPHASIZE = 'C410'. 1485 APPEND LW_FIEDCAT TO IT_FIELDCAT. 1486 1487* 库龄金额(19-24月) 1488 CLEAR LW_FIEDCAT. 1489 LW_FIEDCAT-FIELDNAME = 'PRC24M'. 1490 LW_FIEDCAT-SELTEXT_L = TEXT-T29. 1491 LW_FIEDCAT-EMPHASIZE = 'C410'. 1492 APPEND LW_FIEDCAT TO IT_FIELDCAT. 1493 1494* 库龄金额(25-36月) 1495 CLEAR LW_FIEDCAT. 1496 LW_FIEDCAT-FIELDNAME = 'PRC36M'. 1497 LW_FIEDCAT-SELTEXT_L = TEXT-T30. 1498 LW_FIEDCAT-EMPHASIZE = 'C410'. 1499 APPEND LW_FIEDCAT TO IT_FIELDCAT. 1500 1501* 库龄金额(37-60月) 1502 CLEAR LW_FIEDCAT. 1503 LW_FIEDCAT-FIELDNAME = 'PRC60M'. 1504 LW_FIEDCAT-SELTEXT_L = TEXT-T31. 1505 LW_FIEDCAT-EMPHASIZE = 'C410'. 1506 APPEND LW_FIEDCAT TO IT_FIELDCAT. 1507 1508* 库龄金额(60月以上) 1509 CLEAR LW_FIEDCAT. 1510 LW_FIEDCAT-FIELDNAME = 'PRC61M'. 1511 LW_FIEDCAT-SELTEXT_L = TEXT-T32. 1512 LW_FIEDCAT-EMPHASIZE = 'C410'. 1513 APPEND LW_FIEDCAT TO IT_FIELDCAT. 1514 1515* 跌价金额 1516 CLEAR LW_FIEDCAT. 1517 LW_FIEDCAT-FIELDNAME = 'PERPRC'. 1518 LW_FIEDCAT-SELTEXT_L = TEXT-T41. 1519 APPEND LW_FIEDCAT TO IT_FIELDCAT. 1520 1521* 跌价维护标志 1522 CLEAR LW_FIEDCAT. 1523 LW_FIEDCAT-FIELDNAME = 'PERFLG'. 1524 LW_FIEDCAT-SELTEXT_L = TEXT-T42. 1525 APPEND LW_FIEDCAT TO IT_FIELDCAT. 1526 1527ENDFORM. " SET_FIELDCAT 1528*&---------------------------------------------------------------------* 1529*& Form SET_LAYOUT 1530*&---------------------------------------------------------------------* 1531* 设定 LAYOUT 1532*----------------------------------------------------------------------* 1533FORM SET_LAYOUT . 1534 1535 WK_LAYOUT-ZEBRA = C_X. 1536 WK_LAYOUT-COLWIDTH_OPTIMIZE = C_X. 1537 WK_LAYOUT-BOX_FIELDNAME = 'CHK'. 1538 1539ENDFORM. " SET_LAYOUT 1540*&---------------------------------------------------------------------* 1541*& Form SET_ALV_EVENT 1542*&---------------------------------------------------------------------* 1543* 设定 Eventa 1544*----------------------------------------------------------------------* 1545FORM SET_ALV_EVENT . 1546 1547 DATA: LW_EVENT TYPE SLIS_ALV_EVENT, 1548 LW_NAME TYPE SLIS_FORMNAME VALUE 'TOP_OF_PAGE'. 1549 REFRESH IT_EVENT. 1550 CALL FUNCTION 'REUSE_ALV_EVENTS_GET' 1551 EXPORTING 1552 I_LIST_TYPE = 0 1553 IMPORTING 1554 ET_EVENTS = IT_EVENT 1555 EXCEPTIONS 1556 LIST_TYPE_WRONG = 1 1557 OTHERS = 2. 1558 IF SY-SUBRC <> 0. 1559 MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO 1560 WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. 1561 ENDIF. 1562 CLEAR LW_EVENT. 1563 READ TABLE IT_EVENT INTO LW_EVENT 1564 WITH KEY NAME = LW_NAME. 1565 IF SY-SUBRC = 0. 1566 MOVE LW_NAME TO LW_EVENT-FORM. 1567 MODIFY IT_EVENT FROM LW_EVENT INDEX SY-TABIX.. 1568 ELSE. 1569 LW_EVENT-FORM = LW_NAME. 1570 LW_EVENT-NAME = LW_NAME. 1571 APPEND LW_EVENT TO IT_EVENT. 1572 ENDIF. 1573 1574ENDFORM. " SET_ALV_EVENT 1575*&---------------------------------------------------------------------* 1576*& Form SHOW_ALV 1577*&---------------------------------------------------------------------* 1578* 输出 ALV 1579*----------------------------------------------------------------------* 1580FORM SHOW_ALV . 1581 1582* Call ALV 1583 CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' 1584 EXPORTING 1585 I_CALLBACK_PROGRAM = SY-REPID 1586 IT_EVENTS = IT_EVENT 1587 IS_LAYOUT = WK_LAYOUT 1588 IT_FIELDCAT = IT_FIELDCAT 1589 I_SAVE = C_X 1590 TABLES 1591 T_OUTTAB = IT_ALV 1592 EXCEPTIONS 1593 PROGRAM_ERROR = 1 1594 OTHERS = 2. 1595 IF SY-SUBRC <> 0. 1596 MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO 1597 WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. 1598 ENDIF. 1599 1600ENDFORM. " SHOW_ALV 1601*&---------------------------------------------------------------------* 1602*& Form TOP_OF_PAGE1 1603*&---------------------------------------------------------------------* 1604* ALV Header Setting 1605*----------------------------------------------------------------------* 1606FORM TOP_OF_PAGE. 1607 1608 DATA: L_MATNR1 TYPE MARA-MATNR, 1609 L_MATNR2 TYPE MARA-MATNR, 1610 LT_HEAD TYPE SLIS_T_LISTHEADER, 1611 LW_HEAD TYPE SLIS_LISTHEADER. 1612 1613 REFRESH LT_HEAD. 1614 CLEAR LW_HEAD. 1615 LW_HEAD-TYP = 'H'. "Header 1616 LW_HEAD-INFO = TEXT-T33. "财务库龄表 1617 APPEND LW_HEAD TO LT_HEAD. 1618 CLEAR LW_HEAD. 1619 LW_HEAD-TYP = 'S'. "Selection 1620 LW_HEAD-KEY = TEXT-T35. "会计期间: 1621 CONCATENATE V_GJAHR 1622 '/' 1623 V_MONAT 1624 INTO LW_HEAD-INFO. 1625 APPEND LW_HEAD TO LT_HEAD. 1626 CLEAR LW_HEAD. 1627 LW_HEAD-TYP = 'S'. "Selection 1628 LW_HEAD-KEY = TEXT-T34. "Company Name: 1629 LW_HEAD-INFO = P_BUKRS. 1630 APPEND LW_HEAD TO LT_HEAD. 1631* 工厂 1632 IF S_WERKS IS NOT INITIAL. 1633 CLEAR LW_HEAD. 1634 LW_HEAD-TYP = 'S'. "Selection 1635 LW_HEAD-KEY = TEXT-T36. "工厂: 1636* 多个单值查询 1637 IF S_WERKS-LOW IS NOT INITIAL 1638 AND S_WERKS-HIGH IS INITIAL. 1639 LOOP AT S_WERKS. 1640 CONCATENATE LW_HEAD-INFO 1641 S_WERKS-LOW 1642 INTO LW_HEAD-INFO 1643 SEPARATED BY '/'. 1644 ENDLOOP. 1645 LW_HEAD-INFO+0(1) = ''. 1646 ENDIF. 1647* 范围查询 1648 IF S_WERKS-HIGH IS NOT INITIAL. 1649 CONCATENATE S_WERKS-LOW 1650 '~' 1651 S_WERKS-HIGH 1652 INTO LW_HEAD-INFO. 1653 ENDIF. 1654 APPEND LW_HEAD TO LT_HEAD. 1655 ENDIF. 1656* 物料编号 1657 IF S_MATNR IS NOT INITIAL. 1658 CLEAR LW_HEAD. 1659 LW_HEAD-TYP = 'S'. "Selection 1660 LW_HEAD-KEY = TEXT-T37. "物料编号: 1661* 多个单值查询 1662 IF S_MATNR-LOW IS NOT INITIAL 1663 AND S_MATNR-HIGH IS INITIAL. 1664 CALL FUNCTION 'CONVERSION_EXIT_MATN1_OUTPUT' 1665 EXPORTING 1666 INPUT = S_MATNR-LOW 1667 IMPORTING 1668 OUTPUT = LW_HEAD-INFO. 1669 ENDIF. 1670* 范围查询 1671 IF S_MATNR-HIGH IS NOT INITIAL. 1672 CALL FUNCTION 'CONVERSION_EXIT_MATN1_OUTPUT' 1673 EXPORTING 1674 INPUT = S_MATNR-LOW 1675 IMPORTING 1676 OUTPUT = L_MATNR1. 1677 CALL FUNCTION 'CONVERSION_EXIT_MATN1_OUTPUT' 1678 EXPORTING 1679 INPUT = S_MATNR-HIGH 1680 IMPORTING 1681 OUTPUT = L_MATNR2. 1682 CONCATENATE L_MATNR1 1683 '~' 1684 L_MATNR2 1685 INTO LW_HEAD-INFO. 1686 ENDIF. 1687 APPEND LW_HEAD TO LT_HEAD. 1688 ENDIF. 1689* 库存地点 1690 IF S_LGORT IS NOT INITIAL. 1691 CLEAR LW_HEAD. 1692 LW_HEAD-TYP = 'S'. "Selection 1693 LW_HEAD-KEY = TEXT-T38. "库存地点: 1694* 多个单值查询 1695 IF S_LGORT-LOW IS NOT INITIAL 1696 AND S_LGORT-HIGH IS INITIAL. 1697 LW_HEAD-INFO = S_LGORT-LOW. 1698 ENDIF. 1699* 范围查询 1700 IF S_LGORT-HIGH IS NOT INITIAL. 1701 CONCATENATE S_LGORT-LOW 1702 '~' 1703 S_LGORT-HIGH 1704 INTO LW_HEAD-INFO. 1705 ENDIF. 1706 APPEND LW_HEAD TO LT_HEAD. 1707 ENDIF. 1708 CLEAR LW_HEAD. 1709 LW_HEAD-TYP = 'S'. 1710 APPEND LW_HEAD TO LT_HEAD. 1711 CLEAR LW_HEAD. 1712 LW_HEAD-TYP = 'S'. 1713 APPEND LW_HEAD TO LT_HEAD. 1714 CLEAR LW_HEAD. 1715 LW_HEAD-TYP = 'S'. 1716 APPEND LW_HEAD TO LT_HEAD. 1717 CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE' 1718 EXPORTING 1719 IT_LIST_COMMENTARY = LT_HEAD. 1720 1721ENDFORM. " TOP_OF_PAGE 1722*&---------------------------------------------------------------------* 1723*& Form GET_DATE 1724*&---------------------------------------------------------------------* 1725* 得到查询日期范围 1726*----------------------------------------------------------------------* 1727* -->I_IDATE 输入日期 1728* -->I_MONTH 月份 1729* <--C_DATE 查询日期 1730*----------------------------------------------------------------------* 1731FORM GET_DATE USING I_IDATE TYPE SY-DATUM 1732 I_MONTH TYPE T5A4A-DLYMO 1733 CHANGING C_DATE. 1734 1735 CLEAR C_DATE. 1736 CALL FUNCTION 'RP_CALC_DATE_IN_INTERVAL' 1737 EXPORTING 1738 DATE = I_IDATE 1739 DAYS = '00' 1740 MONTHS = I_MONTH 1741 SIGNUM = '-' 1742 YEARS = '00' 1743 IMPORTING 1744 CALC_DATE = C_DATE. 1745 1746ENDFORM. " GET_DATE 1747*&---------------------------------------------------------------------* 1748*& Form SET_MONTH 1749*&---------------------------------------------------------------------* 1750* 设置各期间的范围 1751*----------------------------------------------------------------------* 1752FORM SET_MONTH . 1753 1754 DATA: L_DATE1 TYPE SY-DATUM, 1755 L_DATE2 TYPE SY-DATUM, 1756 LW_MONTH LIKE LINE OF S_3M. 1757 1758* 得到查询日期范围(3月以内) 1759 PERFORM GET_DATE USING P_SDATE 1760 '03' 1761 CHANGING L_DATE1. 1762 CLEAR LW_MONTH. 1763 LW_MONTH-SIGN = 'I'. 1764 LW_MONTH-OPTION = 'BT'. 1765 LW_MONTH-LOW = L_DATE1. 1766 LW_MONTH-HIGH = P_SDATE. 1767 APPEND LW_MONTH TO S_3M. 1768 1769* 得到查询日期范围(4-6) 1770 PERFORM GET_DATE USING L_DATE1 1771 '03' 1772 CHANGING L_DATE2. 1773 CLEAR LW_MONTH. 1774 LW_MONTH-SIGN = 'I'. 1775 LW_MONTH-OPTION = 'BT'. 1776 LW_MONTH-LOW = L_DATE2. 1777 LW_MONTH-HIGH = L_DATE1. 1778 APPEND LW_MONTH TO S_6M. 1779 1780* 得到查询日期范围(7-9) 1781 PERFORM GET_DATE USING L_DATE2 1782 '03' 1783 CHANGING L_DATE1. 1784 CLEAR LW_MONTH. 1785 LW_MONTH-SIGN = 'I'. 1786 LW_MONTH-OPTION = 'BT'. 1787 LW_MONTH-LOW = L_DATE1. 1788 LW_MONTH-HIGH = L_DATE2. 1789 APPEND LW_MONTH TO S_9M. 1790 1791* 得到查询日期范围(10-12) 1792 PERFORM GET_DATE USING L_DATE1 1793 '03' 1794 CHANGING L_DATE2. 1795 CLEAR LW_MONTH. 1796 LW_MONTH-SIGN = 'I'. 1797 LW_MONTH-OPTION = 'BT'. 1798 LW_MONTH-LOW = L_DATE2. 1799 LW_MONTH-HIGH = L_DATE1. 1800 APPEND LW_MONTH TO S_12M. 1801 1802* 得到查询日期范围(13-18) 1803 PERFORM GET_DATE USING L_DATE2 1804 '06' 1805 CHANGING L_DATE1. 1806 CLEAR LW_MONTH. 1807 LW_MONTH-SIGN = 'I'. 1808 LW_MONTH-OPTION = 'BT'. 1809 LW_MONTH-LOW = L_DATE1. 1810 LW_MONTH-HIGH = L_DATE2. 1811 APPEND LW_MONTH TO S_18M. 1812 1813* 得到查询日期范围(19-24) 1814 PERFORM GET_DATE USING L_DATE1 1815 '06' 1816 CHANGING L_DATE2. 1817 CLEAR LW_MONTH. 1818 LW_MONTH-SIGN = 'I'. 1819 LW_MONTH-OPTION = 'BT'. 1820 LW_MONTH-LOW = L_DATE2. 1821 LW_MONTH-HIGH = L_DATE1. 1822 APPEND LW_MONTH TO S_24M. 1823 1824* 得到查询日期范围(25-36) 1825 PERFORM GET_DATE USING L_DATE2 1826 '12' 1827 CHANGING L_DATE1. 1828 CLEAR LW_MONTH. 1829 LW_MONTH-SIGN = 'I'. 1830 LW_MONTH-OPTION = 'BT'. 1831 LW_MONTH-LOW = L_DATE1. 1832 LW_MONTH-HIGH = L_DATE2. 1833 APPEND LW_MONTH TO S_36M. 1834 1835* 得到查询日期范围(37-60) 1836 PERFORM GET_DATE USING L_DATE1 1837 '24' 1838 CHANGING L_DATE2. 1839 CLEAR LW_MONTH. 1840 LW_MONTH-SIGN = 'I'. 1841 LW_MONTH-OPTION = 'BT'. 1842 LW_MONTH-LOW = L_DATE2. 1843 LW_MONTH-HIGH = L_DATE1. 1844 APPEND LW_MONTH TO S_60M. 1845 1846* 得到查询日期范围(61) 1847 S_61M = L_DATE2. 1848 1849ENDFORM. " SET_MONTH 1850*&---------------------------------------------------------------------* 1851*& Form SET_DATE 1852*&---------------------------------------------------------------------* 1853* 查询日期设置 1854*----------------------------------------------------------------------* 1855FORM SET_DATE . 1856 1857 CLEAR P_SDATE. 1858 CALL FUNCTION 'LAST_DAY_OF_MONTHS' 1859 EXPORTING 1860 DAY_IN = SY-DATUM 1861 IMPORTING 1862 LAST_DAY_OF_MONTH = P_SDATE 1863 EXCEPTIONS 1864 DAY_IN_NO_DATE = 1 1865 OTHERS = 2. 1866 IF SY-SUBRC <> 0. 1867 MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO 1868 WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. 1869 ENDIF. 1870 1871ENDFORM. " SET_DATE

本文转载自:https://blog.csdn.net/sinat\_28730703/article/details/46357159

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

sql注入

反引号是个比较特别的字符,下面记录下怎么利用0x00SQL注入反引号可利用在分隔符及注释作用,不过使用范围只于表名、数据库名、字段名、起别名这些场景,下面具体说下1)表名payload:select\from\users\whereuser\_id1limit0,1;!(https://o

Android So动态加载 优雅实现与原理分析

背景:漫品Android客户端集成适配转换功能(基于目标识别(So库35M)和人脸识别库(5M)),导致apk体积50M左右,为优化客户端体验,决定实现So文件动态加载.!(https://oscimg.oschina.net/oscnet/00d1ff90e4b34869664fef59e3ec3fdd20b.png)点击上方“蓝字”关注我