标签:
1 *& Program Name: ZMFIX_ASSET 2 *& 3 *& Description: 资产信息一览 4 *& Date/Author: 5 6 *& Table Update: 7 *& Special Logic: 8 *& Include: 9 *----------------------------------------------------------------------* 10 * MODIFICATION LOG : 程序修改更新记录 11 *----------------------------------------------------------------------* 12 * ChangeDate Programmer Request Description 13 * ========== ============= ============ ================================ 14 * NEW PROGRAM 15 *----------------------------------------------------------------------* 16 17 REPORT ZMFIX_ASSET NO STANDARD PAGE HEADING. 18 19 *----------------------------------------------------------------------* 20 * TABLES * 21 *----------------------------------------------------------------------* 22 23 TABLES : 24 ANLA, "资产主记录段 25 ANLH, "主资产号 26 ANKT, "资产类别描述 27 T087S, "评估组8测试表位置 28 ANLZ, "时间相关资产分配 29 ANLC, "资产值字段 30 ANLB, "折旧期限 31 ANLP, "资产期间价值 32 FIAA_DPOST, "已记帐价值的显示结构 33 BSID, "会计核算:客户的第二次索引 34 ANEP, "资产行项目 35 CSKS. "成本中心主数据 36 37 *----------------------------------------------------------------------* 38 * DATA * 39 *----------------------------------------------------------------------* 40 41 TYPES : BEGIN OF TY_ASSET , 42 GJAHR LIKE ANLP-GJAHR,"会计年度 43 BUKRS LIKE ANLA-BUKRS,"公司代码 44 ANLN1 LIKE ANLA-ANLN1,"主资产号 45 TXT50 LIKE ANLA-TXT50,"资产描述 46 TXA50 LIKE ANLA-TXA50,"附加资产描述 47 ANLN2 LIKE ANLA-ANLN2,"次资产号 48 ANLHTXT LIKE ANLH-ANLHTXT,"主资产号描述 49 KFZKZ LIKE ANLZ-KFZKZ,"执照牌号 50 MCOAL LIKE M_AANLA-MCOA1,"次资产号描述 51 ANLKL LIKE ANLA-ANLKL,"资产种类 52 TXK20 LIKE ANKT-TXK20,"资产种类描述 53 GDLGRP LIKE ANLA-GDLGRP,"资产小类 54 GDLGRP_TXT LIKE T087S-GDLGRP_TXT,"资产小类描述 55 NAFAG LIKE ANLC-NAFAG,"记帐在当前年的正常折旧 56 KNAFA LIKE ANLC-KNAFA,"累计正常折旧 57 KOSTL LIKE ANLZ-KOSTL,"成本中心 58 SERNR LIKE ANLA-SERNR,"实际卡片编号 59 AIBN1 LIKE ANLA-AIBN1,"来源资产编号 60 ORD41 LIKE ANLA-ORD41,"资产小类 61 LIFNR LIKE ANLA-LIFNR,"供应商科目编号(其他关键字) 62 LIEFE LIKE ANLA-LIEFE,"资产提供者名 63 ORDTX1 LIKE T087T-ORDTX,"资产小类名称 64 ORD42 LIKE ANLA-ORD42, "评审小组2 65 ORDTX2 LIKE T087T-ORDTX,"评审小组:短描述 66 KTEXT LIKE CSKT-KTEXT,"成本中心描述 67 AFASL LIKE ANLB-AFASL,"折旧码 68 YZ LIKE ANLC-KANSW,"累积购置和生产费用 69 KANSW LIKE ANLC-KANSW,"累积购置和生产费用 70 KAUFW LIKE ANLC-KAUFW,"重置价值的累计重估 71 ANBTR LIKE ANEP-ANBTR,"记帐金额 72 AKTIV LIKE ANLA-AKTIV,"资产资本化日期 73 DEAKT LIKE ANLA-DEAKT,"不激活的日期 74 NDJAR LIKE ANLB-NDJAR,"计划年使用期 75 NDPER LIKE ANLB-NDPER,"计划使用期间 76 YJCZ LIKE ANLC-KANSW,"累积购置和生产费用 77 NAFAZ TYPE ANLP-NAFAZ,"记帐的正常折旧 78 AAFAZ LIKE ANLP-AAFAZ,"待过帐的计划外折旧 79 LJPTZJ LIKE ANLP-NAFAZ,"记帐的正常折旧 80 NAFAV LIKE ANLC-NAFAV,"比例累积正常折旧 81 NAFAL LIKE ANLC-NAFAL,"此年的比例正常折旧 82 PERAF LIKE ANLP-PERAF,"折旧计算期 83 AAFAP LIKE ANLP-AAFAP,"年内已预定的未计划折旧 84 JZ LIKE ANLP-AAFAP,"净值 = 原值-累计普通折旧-累计计划外折旧 85 AFBNR LIKE ANLP-AFBNR,"此期间折旧记帐运行的顺序号 86 GSBER LIKE ANLZ-GSBER,"业务范围 87 GTEXT LIKE TGSBT-GTEXT,"业务部门描述 88 PRCTR LIKE CSKS-PRCTR,"利润中心 89 PKTEXT LIKE CEPCT-KTEXT," 90 CSHZJ LIKE ANLP-AAFAP,"年内已预定的未计划折旧 91 AUFWB LIKE ANLC-AUFWB,"重置价值的重估记帐 92 AUFNG LIKE ANLC-AUFNG,"有关累积正常折旧的记帐评估 93 AFABG LIKE ANLB-AFABG,"折旧计算开始日期 94 XFABG LIKE KOMP-ANZ_MONATE,"月数 95 XFABG1 TYPE I," 96 COLOR TYPE CHAR4, "行颜色 97 CELLCOLOR TYPE LVC_T_SCOL, "单元格颜色 98 END OF TY_ASSET. 99 100 DATA : IT_ASSET TYPE STANDARD TABLE OF TY_ASSET, 101 IW_ASSET TYPE TY_ASSET, 102 103 IT_ASSET1 TYPE STANDARD TABLE OF TY_ASSET, 104 IW_ASSET1 TYPE TY_ASSET. 105 DATA : IW_CELLCOLOR TYPE LVC_S_SCOL. 106 DATA : P_AFBNR LIKE ANLP-AFBNR. 107 108 *----------------------------------------------------------------------* 109 * TYPE-POOLS * 110 *----------------------------------------------------------------------* 111 TYPE-POOLS : SLIS. 112 DATA : IT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV, 113 114 IT_EVENT TYPE SLIS_T_EVENT, "不能有表头,否则会RUNTIME ERROR 115 IW_LAYOUT TYPE SLIS_LAYOUT_ALV, 116 IT_LISTHEADER TYPE SLIS_T_LISTHEADER. 117 118 DATA : P_NUM TYPE VBRK-NETWR, 119 XL_SUM TYPE I, 120 FLAG TYPE CHAR01. 121 122 123 RANGES : S_HKONT FOR BSEG-HKONT. 124 125 *----------------------------------------------------------------------* 126 * SCREEN * 127 *----------------------------------------------------------------------* 128 129 SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001. 130 PARAMETERS: P_BUKRS LIKE ANLA-BUKRS OBLIGATORY DEFAULT ‘1000‘, 131 P_GJAHR LIKE ANLC-GJAHR OBLIGATORY,"DEFAULT SY-DATUM+0(4), 132 P_PERAF LIKE ANLP-PERAF OBLIGATORY."DEFAULT SY-DATUM+4(2). 133 134 SELECT-OPTIONS : S_GSBER FOR ANLZ-GSBER, 135 S_PRCTR FOR CSKS-PRCTR OBLIGATORY , 136 S_ANLN1 FOR ANLA-ANLN1, 137 S_ANLKL FOR ANLA-ANLKL, 138 S_KOSTL FOR ANLZ-KOSTL, 139 S_ORD41 FOR ANLA-ORD41. 140 SELECTION-SCREEN SKIP 1. 141 142 SELECTION-SCREEN END OF BLOCK B1. 143 144 *----------------------------------------------------------------------* 145 * * 146 *----------------------------------------------------------------------* 147 148 149 INITIALIZATION. 150 151 152 START-OF-SELECTION. 153 154 PERFORM FRM_GET_EVENTS. 155 PERFORM FRM_GET_DATA. 156 PERFORM FRM_COMMENT_BUILD. 157 PERFORM FRM_FDCAT. 158 PERFORM FRM_LAYOUT. 159 PERFORM FRM_ALV_DISPLAY. 160 161 END-OF-SELECTION. 162 163 164 165 *&---------------------------------------------------------------------* 166 *& Form FRM_GET_EVENTS 167 *&---------------------------------------------------------------------* 168 * text 169 *----------------------------------------------------------------------* 170 * --> p1 text 171 * <-- p2 text 172 *----------------------------------------------------------------------* 173 FORM FRM_GET_EVENTS . 174 175 * EVENTS 176 *SLIS_EV_ITEM_DATA_EXPAND TYPE SLIS_FORMNAME VALUE ‘ITEM_DATA_EXPAND‘, 177 *SLIS_EV_REPREP_SEL_MODIFY TYPE SLIS_FORMNAME VALUE ‘REPREP_SEL_MODIFY‘, 178 *SLIS_EV_CALLER_EXIT_AT_START TYPE SLIS_FORMNAME VALUE ‘CALLER_EXIT‘, 179 *SLIS_EV_USER_COMMAND TYPE SLIS_FORMNAME VALUE ‘USER_COMMAND‘, 180 *SLIS_EV_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE ‘TOP_OF_PAGE‘, 181 *SLIS_EV_DATA_CHANGED TYPE SLIS_FORMNAME VALUE ‘DATA_CHANGED‘, 182 *SLIS_EV_TOP_OF_COVERPAGE TYPE SLIS_FORMNAME VALUE ‘TOP_OF_COVERPAGE‘, 183 *SLIS_EV_END_OF_COVERPAGE TYPE SLIS_FORMNAME VALUE ‘END_OF_COVERPAGE‘, 184 *SLIS_EV_FOREIGN_TOP_OF_PAGE TYPE SLIS_FORMNAME 185 * VALUE ‘FOREIGN_TOP_OF_PAGE‘, 186 *SLIS_EV_FOREIGN_END_OF_PAGE TYPE SLIS_FORMNAME 187 * VALUE ‘FOREIGN_END_OF_PAGE‘, 188 *SLIS_EV_PF_STATUS_SET TYPE SLIS_FORMNAME VALUE ‘PF_STATUS_SET‘, 189 *SLIS_EV_LIST_MODIFY TYPE SLIS_FORMNAME VALUE ‘LIST_MODIFY‘, 190 *SLIS_EV_TOP_OF_LIST TYPE SLIS_FORMNAME VALUE ‘TOP_OF_LIST‘, 191 *SLIS_EV_END_OF_PAGE TYPE SLIS_FORMNAME VALUE ‘END_OF_PAGE‘, 192 *SLIS_EV_END_OF_LIST TYPE SLIS_FORMNAME VALUE ‘END_OF_LIST‘, 193 *SLIS_EV_AFTER_LINE_OUTPUT TYPE SLIS_FORMNAME VALUE ‘AFTER_LINE_OUTPUT‘, 194 *SLIS_EV_BEFORE_LINE_OUTPUT TYPE SLIS_FORMNAME VALUE 195 * ‘BEFORE_LINE_OUTPUT‘, 196 *SLIS_EV_SUBTOTAL_TEXT TYPE SLIS_FORMNAME VALUE ‘SUBTOTAL_TEXT‘, 197 *SLIS_EV_GROUPLEVEL_CHANGE TYPE SLIS_FORMNAME VALUE 198 * ‘GROUPLEVEL_CHANGE‘, 199 *SLIS_EV_CONTEXT_MENU TYPE SLIS_FORMNAME VALUE ‘CONTEXT_MENU‘. 200 201 DATA: FORMNAME_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE ‘FRM_TOP_OF_PAGE‘. 202 203 DATA L_EVENTS TYPE SLIS_ALV_EVENT. 204 205 CALL FUNCTION ‘REUSE_ALV_EVENTS_GET‘ 206 EXPORTING 207 I_LIST_TYPE = 0 208 IMPORTING 209 ET_EVENTS = IT_EVENT 210 EXCEPTIONS 211 LIST_TYPE_WRONG = 1 212 OTHERS = 2. 213 IF SY-SUBRC <> 0. 214 MESSAGE ID SY-MSGID TYPE SY-MSGTY 215 NUMBER SY-MSGNO 216 WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. 217 ENDIF. 218 * 在事件(字段名:NAME)为"TOP_OF_PAGE"的行中 219 *将FORM名(字段名:FORM)设为"FRM_TOP_OF_PAGE" 220 * 这样,系统就会自动PERFORM FRM_TOP_OF_PAGE. 221 CLEAR L_EVENTS. 222 READ TABLE IT_EVENT 223 WITH KEY NAME = SLIS_EV_TOP_OF_PAGE 224 INTO L_EVENTS. 225 226 IF SY-SUBRC = 0. 227 MOVE FORMNAME_TOP_OF_PAGE TO L_EVENTS-FORM. 228 MODIFY IT_EVENT FROM L_EVENTS INDEX SY-TABIX. 229 ELSE. 230 L_EVENTS-FORM = FORMNAME_TOP_OF_PAGE. 231 L_EVENTS-NAME = FORMNAME_TOP_OF_PAGE. 232 APPEND L_EVENTS TO IT_EVENT. 233 ENDIF. 234 235 ENDFORM. " FRM_GET_EVENTS 236 237 *&---------------------------------------------------------------------* 238 *& Form FRM_TOP_OF_PAGE 239 *&---------------------------------------------------------------------* 240 * 表头 241 *----------------------------------------------------------------------* 242 * --> p1 text 243 * <-- p2 text 244 *----------------------------------------------------------------------* 245 FORM FRM_TOP_OF_PAGE. 246 CALL FUNCTION ‘REUSE_ALV_COMMENTARY_WRITE‘ 247 EXPORTING 248 IT_LIST_COMMENTARY = IT_LISTHEADER 249 I_LOGO = ‘ENJOYSAP_LOGO‘ 250 * I_END_OF_LIST_GRID = 251 * I_ALV_FORM = 252 . 253 * "TCODE:OAOR,CLASS 254 * NAME:PICTURES,CLASS TYPE :OT,执行,可以看到所有的PICTURE 255 256 ENDFORM. "FRM_TOP_OF_PAGE 257 258 259 *&---------------------------------------------------------------------* 260 *& Form FRM_COMMENT_BUILD 261 *&---------------------------------------------------------------------* 262 * text 263 *----------------------------------------------------------------------* 264 * --> p1 text 265 * <-- p2 text 266 *----------------------------------------------------------------------* 267 FORM FRM_COMMENT_BUILD. 268 269 DATA LW_LISTHEADER TYPE SLIS_LISTHEADER. 270 271 CLEAR: IT_LISTHEADER, LW_LISTHEADER. 272 273 LW_LISTHEADER-TYP = ‘H‘. 274 LW_LISTHEADER-INFO = ‘资产信息一览‘. 275 APPEND LW_LISTHEADER TO IT_LISTHEADER. 276 277 CLEAR LW_LISTHEADER. 278 LW_LISTHEADER-TYP = ‘S‘. 279 LW_LISTHEADER-KEY = ‘用户:‘. 280 LW_LISTHEADER-INFO = SY-UNAME. 281 APPEND LW_LISTHEADER TO IT_LISTHEADER. 282 283 CLEAR LW_LISTHEADER. 284 LW_LISTHEADER-TYP = ‘S‘. 285 LW_LISTHEADER-KEY = ‘日期:‘. 286 LW_LISTHEADER-INFO = SY-DATUM. 287 APPEND LW_LISTHEADER TO IT_LISTHEADER. 288 289 ENDFORM. " FRM_COMMENT_BUILD 290 291 *&---------------------------------------------------------------------* 292 *& Form FRM_GET_DATA 293 *&---------------------------------------------------------------------* 294 * text 295 *----------------------------------------------------------------------* 296 * --> p1 text 297 * <-- p2 text 298 *----------------------------------------------------------------------* 299 FORM FRM_GET_DATA . 300 DATA : WRK_TABIX TYPE SY-TABIX. 301 * 查询固定资产 302 SELECT 303 ANLA~ANLN1 304 ANLA~TXT50 305 ANLA~TXA50 306 ANLH~ANLHTXT 307 ANLA~ANLKL 308 ANKT~TXK20 309 ANLA~ANLN2 310 ANLA~GDLGRP 311 T087S~GDLGRP_TXT 312 ANLZ~KOSTL 313 CSKT~KTEXT 314 ANLA~SERNR 315 ANLA~AIBN1 316 ANLA~ORD41 317 ANLA~LIFNR 318 T087T1~ORDTX AS ORDTX1 319 ANLB~NDPER 320 ANLC~KANSW 321 ANLC~KAUFW 322 ANLA~AKTIV 323 ANLA~DEAKT 324 ANLB~NDJAR 325 ANLB~AFABG 326 ANLB~AFASL 327 ANLC~ANLN1 328 ANLC~KNAFA 329 ANLP~PERAF 330 ANLC~GJAHR 331 ANLA~BUKRS 332 ANLZ~GSBER 333 TGSBT~GTEXT 334 ANLC~NAFAG 335 ANLC~KNAFA 336 ANLC~AUFWB 337 ANLC~AUFNG 338 ANLC~NAFAV 339 ANLC~NAFAL 340 ANLZ~KFZKZ 341 INTO CORRESPONDING FIELDS OF TABLE IT_ASSET 342 FROM ANLA 343 INNER JOIN ANLH 344 ON ANLH~BUKRS = ANLA~BUKRS AND 345 ANLH~ANLN1 = ANLA~ANLN1 346 LEFT JOIN T087S 347 ON T087S~GDLGRP = ANLA~GDLGRP AND 348 T087S~SPRAS = SY-LANGU 349 LEFT JOIN T087T AS T087T1 350 ON T087T1~ORDNR = ‘1‘ AND 351 T087T1~ORD4X = ANLA~ORD41 AND 352 T087T1~SPRAS = SY-LANGU 353 LEFT JOIN T087T AS T087T2 354 ON T087T2~ORDNR = ‘2‘ AND 355 T087T2~ORD4X = ANLA~ORD42 AND 356 T087T2~SPRAS = SY-LANGU 357 INNER JOIN ANLZ 358 ON ANLZ~BUKRS = ANLA~BUKRS AND 359 ANLZ~ANLN1 = ANLA~ANLN1 AND 360 ANLZ~ANLN2 = ANLA~ANLN2 AND 361 ANLZ~BDATU = ‘99991231‘ 362 INNER JOIN ANKT 363 ON ANKT~SPRAS = SY-LANGU AND 364 ANKT~ANLKL = ANLA~ANLKL 365 INNER JOIN ANLC 366 ON ANLC~BUKRS = ANLA~BUKRS AND 367 ANLC~ANLN1 = ANLA~ANLN1 AND 368 ANLC~ANLN2 = ANLA~ANLN2 AND 369 ANLC~AFABE = ‘01‘ 370 INNER JOIN ANLB 371 ON ANLB~BUKRS = ANLA~BUKRS AND 372 ANLB~ANLN1 = ANLA~ANLN1 AND 373 ANLB~ANLN2 = ANLA~ANLN2 AND 374 ANLB~AFABE = ‘01‘ AND 375 ANLB~BDATU = ‘99991231‘ 376 LEFT JOIN ANLP 377 ON ANLP~BUKRS = ANLA~BUKRS AND 378 ANLP~PERAF = P_PERAF AND 379 ANLP~ANLN1 = ANLA~ANLN1 AND 380 ANLP~ANLN2 = ANLA~ANLN2 AND 381 ANLP~AFABER = ‘01‘ 382 LEFT JOIN TGSBT 383 ON ANLZ~GSBER = TGSBT~GSBER 384 LEFT JOIN CSKT 385 ON ANLZ~KOSTL = CSKT~KOSTL AND 386 CSKT~SPRAS = ‘EN ‘ AND 387 CSKT~DATBI = ‘99991231‘ AND 388 CSKT~KOKRS = ‘1000‘ 389 WHERE ANLA~BUKRS = P_BUKRS 390 AND ANLC~GJAHR = P_GJAHR 391 AND ANLA~ANLN1 IN S_ANLN1 392 AND ANLA~ANLKL IN S_ANLKL 393 AND ANLZ~KOSTL IN S_KOSTL 394 AND ANLA~ORD41 IN S_ORD41 395 AND ANLZ~GSBER IN S_GSBER. 396 397 SORT IT_ASSET BY GJAHR BUKRS ANLN1 ANLKL GDLGRP KOSTL. 398 399 DELETE ADJACENT DUPLICATES FROM IT_ASSET 400 COMPARING GJAHR BUKRS ANLN1 ANLKL GDLGRP KOSTL. 401 402 LOOP AT IT_ASSET INTO IW_ASSET. 403 WRK_TABIX = SY-TABIX. 404 405 "根据成本中心获取利润中心 406 SELECT SINGLE PRCTR 407 INTO IW_ASSET-PRCTR 408 FROM CSKS 409 WHERE KOSTL = IW_ASSET-KOSTL AND 410 KOKRS = ‘1000‘. 411 412 "删除非利润中心查询条件内的固定资产查询结果 413 IF IW_ASSET-PRCTR NOT IN S_PRCTR. 414 DELETE IT_ASSET INDEX WRK_TABIX. 415 CLEAR WRK_TABIX. 416 CONTINUE. 417 ENDIF. 418 419 "从供应商信息视图获取供应商名称 420 SELECT SINGLE MCOD1"匹配码搜索的搜索条件 421 INTO IW_ASSET-LIEFE 422 FROM M_KREDI"生成匹配码ID KRED-I的视图 423 WHERE LIFNR = IW_ASSET-LIFNR AND 424 BUKRS = P_BUKRS AND 425 LAND1 = ‘DE‘. 426 427 "获取利润中心的名称 428 IF IW_ASSET-PRCTR IS NOT INITIAL. 429 SELECT SINGLE KTEXT 430 INTO IW_ASSET-PKTEXT 431 FROM CEPCT"利润中心主数据文本 432 WHERE PRCTR = IW_ASSET-PRCTR 433 AND SPRAS = ‘EN‘"SY-LANGU‘ 434 AND KOKRS = ‘1000‘. 435 ENDIF. 436 437 "获取当前期间的累计值 438 DATA : N TYPE I, 439 NC TYPE STRING, 440 F_ANBTR LIKE ANEP-ANBTR, "记账金额 441 F_BEGIN LIKE SY-DATUM, 442 F_END LIKE SY-DATUM. 443 444 N = P_PERAF. 445 NC = N. 446 447 IF N < 10. 448 CONCATENATE P_GJAHR ‘0‘ NC ‘01‘ INTO F_BEGIN. 449 ELSE. 450 CONCATENATE P_GJAHR NC ‘01‘ INTO F_BEGIN. 451 ENDIF. 452 453 "该函数获取某月的最后一天 454 CALL FUNCTION ‘RP_LAST_DAY_OF_MONTHS‘ 455 EXPORTING 456 DAY_IN = F_BEGIN 457 IMPORTING 458 LAST_DAY_OF_MONTH = F_END 459 EXCEPTIONS 460 DAY_IN_NO_DATE = 1 461 OTHERS = 2. 462 IF SY-SUBRC <> 0. 463 * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO 464 * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. 465 ENDIF. 466 467 "计算某段期间内的记账金额,可以通过abep-bwasl来指定资产业务类型,提高查询 468 CLEAR : F_ANBTR. 469 SELECT SINGLE SUM( ANBTR ) 470 INTO F_ANBTR 471 FROM ANEP"资产行项目 472 WHERE BUKRS = P_BUKRS 473 AND GJAHR = P_GJAHR 474 AND ANLN1 = IW_ASSET-ANLN1 475 AND BZDAT BETWEEN ‘1900101‘ AND F_END 476 AND ANEP~AFABE = ‘01‘. 477 478 "计算资产原值,为购置和生产费用(KANSW)资产重置费用(KAUFW)以及累计记账之和 479 IW_ASSET-YZ = IW_ASSET-KANSW + IW_ASSET-KAUFW + F_ANBTR. 480 481 * 折旧率----具体看公司了 482 "检查是否存在资产折旧记录,若有,则根据折旧码来推算扣除折旧的资产余值 483 SELECT SINGLE * 484 FROM ANLB"折旧期限 485 WHERE ANLN1 = IW_ASSET-ANLN1 486 AND BUKRS = P_BUKRS. 487 488 IF SY-SUBRC = 0. 489 IF ANLB-AFASL = ‘0000‘."折旧码 490 IW_ASSET-YJCZ = IW_ASSET-YZ. 491 ELSEIF ANLB-AFASL = ‘1000‘. 492 IW_ASSET-YJCZ = IW_ASSET-YZ * ‘0.1‘. 493 ELSEIF ANLB-AFASL = ‘2000‘. 494 IW_ASSET-YJCZ = 0. 495 ENDIF. 496 ENDIF. 497 498 "获取当月折旧 499 SELECT SINGLE SUM( NAFAZ ) 500 INTO IW_ASSET-NAFAZ 501 FROM ANLP 502 WHERE ANLN1 = IW_ASSET-ANLN1 503 AND BUKRS = IW_ASSET-BUKRS 504 AND GJAHR = IW_ASSET-GJAHR 505 AND PERAF = IW_ASSET-PERAF 506 AND AFABER = ‘01‘. 507 508 "获取当月计划外折旧 509 SELECT SINGLE SUM( AAFAZ ) 510 INTO IW_ASSET-AAFAZ 511 FROM ANLP 512 WHERE ANLN1 = IW_ASSET-ANLN1 513 AND BUKRS = IW_ASSET-BUKRS 514 AND GJAHR = IW_ASSET-GJAHR 515 AND PERAF = IW_ASSET-PERAF 516 AND AFABER = ‘01‘. 517 518 DATA : P_NAFAG LIKE ANLP-NAFAG, 519 P_NAFAZ LIKE ANLP-NAFAZ, 520 P_NAFAV LIKE ANLC-NAFAV, 521 P_NAFAL LIKE ANLC-NAFAL. 522 DATA : MIN_PER LIKE ANLP-PERAF, 523 MIN_NO LIKE ANLP-AFBNR. 524 525 "获取当前年度折旧 526 SELECT SUM( NAFAZ ) 527 INTO P_NAFAZ FROM ANLP 528 WHERE ANLN1 = IW_ASSET-ANLN1 529 AND BUKRS = IW_ASSET-BUKRS 530 AND GJAHR = P_GJAHR 531 AND PERAF >= 1 532 AND PERAF <= P_PERAF 533 AND AFABER = ‘01‘. 534 535 "获取历史折旧 536 SELECT SUM( NAFAG ) 537 INTO P_NAFAG 538 FROM ANLC 539 WHERE ANLN1 = IW_ASSET-ANLN1 540 AND BUKRS = IW_ASSET-BUKRS 541 AND GJAHR < P_GJAHR 542 AND AFABE = ‘01‘. 543 544 "获取结转的历史折旧 545 SELECT SUM( NAFAV ) SUM( NAFAL ) INTO (P_NAFAV,P_NAFAL) 546 FROM ANLC 547 WHERE ANLN1 = IW_ASSET-ANLN1 548 AND BUKRS = IW_ASSET-BUKRS 549 AND GJAHR <= P_GJAHR 550 AND AFABE = ‘01‘. 551 552 IW_ASSET-CSHZJ = P_NAFAV + P_NAFAL. 553 554 "获取累计正常折旧 555 SELECT SUM( KNAFA ) 556 INTO IW_ASSET-KNAFA 557 FROM ANLC 558 WHERE ANLN1 = IW_ASSET-ANLN1 559 AND BUKRS = IW_ASSET-BUKRS 560 AND GJAHR < P_GJAHR 561 AND AFABE = ‘01‘. 562 563 IW_ASSET-LJPTZJ = P_NAFAZ + 564 P_NAFAG + 565 IW_ASSET-CSHZJ + 566 IW_ASSET-KNAFA + 567 IW_ASSET-AUFNG. 568 569 "获取折旧运行顺序号 570 SELECT SINGLE MAX( AFBNR ) 571 INTO P_AFBNR 572 FROM ANLP 573 WHERE ANLN1 = IW_ASSET-ANLN1 574 AND BUKRS = IW_ASSET-BUKRS 575 AND GJAHR = IW_ASSET-GJAHR 576 AND PERAF = P_PERAF 577 AND AFABER = ‘01‘. 578 579 "通过折旧运行的顺序号获取累计计划外折旧 580 SELECT SINGLE AAFAP 581 INTO IW_ASSET-AAFAP 582 FROM ANLP 583 WHERE ANLN1 = IW_ASSET-ANLN1 584 AND BUKRS = IW_ASSET-BUKRS 585 AND GJAHR = IW_ASSET-GJAHR 586 AND PERAF = P_PERAF 587 AND AFBNR = P_AFBNR 588 AND AFABER = ‘01‘. 589 590 "获取指定期间折旧记账运行的顺序号 591 SELECT SINGLE MAX( AFBNR ) 592 INTO P_AFBNR 593 FROM ANLP 594 WHERE ANLN1 = IW_ASSET-ANLN1 595 AND BUKRS = IW_ASSET-BUKRS 596 AND GJAHR = IW_ASSET-GJAHR 597 AND PERAF = IW_ASSET-PERAF 598 AND AFABER = ‘01‘. 599 600 IW_ASSET-JZ = IW_ASSET-YZ + IW_ASSET-LJPTZJ + IW_ASSET-AAFAP. 601 602 DATA : L_DATE LIKE SY-DATUM. 603 604 CONCATENATE P_GJAHR P_PERAF+1(2) ‘01‘ INTO L_DATE. 605 606 "通过函数计算两个日期的差异月份 607 CALL FUNCTION ‘MONTHS_BETWEEN_TWO_DATES_NEW‘ 608 EXPORTING 609 I_DATUM_BIS = L_DATE 610 I_DATUM_VON = IW_ASSET-AFABG 611 * I_KZ_INCL_BIS = ‘ ‘ 612 * I_KZ_VOLLE_MONATE = ‘X‘ 613 IMPORTING 614 E_MONATE = IW_ASSET-XFABG 615 616 . 617 618 "工作中心为0000003120的行,颜色为红色 619 IF IW_ASSET-KOSTL = ‘0000003120‘. 620 IW_ASSET-COLOR = ‘C610‘. 621 ENDIF. 622 623 IF IW_ASSET-KOSTL = ‘0000004250‘. 624 IW_CELLCOLOR-FNAME = ‘PRCTR‘. 625 IW_CELLCOLOR-COLOR-COL = 3. 626 IW_CELLCOLOR-COLOR-INT = 1. 627 IW_CELLCOLOR-COLOR-INV = 0. 628 629 APPEND IW_CELLCOLOR TO IW_ASSET-CELLCOLOR. 630 ENDIF. 631 632 IW_ASSET-XFABG1 = IW_ASSET-XFABG + 1. 633 MODIFY IT_ASSET FROM IW_ASSET. 634 CLEAR : IW_ASSET. 635 ENDLOOP. 636 ENDFORM. " FRM_GET_DATA 637 638 *&---------------------------------------------------------------------* 639 *& Form FRM_FDCAT_BUILD 640 *&---------------------------------------------------------------------* 641 * text 642 *----------------------------------------------------------------------* 643 * --> p1 text 644 * <-- p2 text 645 *----------------------------------------------------------------------* 646 FORM FRM_FDCAT . 647 DATA LW_FCAT TYPE SLIS_FIELDCAT_ALV. 648 CLEAR IT_FIELDCAT. 649 650 ** 函数调I用获得标准字段 651 * PERFORM FRM_GET_ALL_FIELD USING LW_FCAT. 652 * RFE自定义字段 653 PERFORM FRM_REDEFINE_FIELD USING LW_FCAT. 654 * 求和 655 PERFORM FRM_SUM_FIELD USING LW_FCAT. 656 * 颜色和HOTSPOT和对齐 657 PERFORM FRM_COLOR_HOTSPOT USING LW_FCAT. 658 * 格式调整 659 " PERFORM FRM_FORMAT_FIELD USING LW_FCAT. 660 661 ENDFORM. " FRM_FDCAT 662 663 664 *&---------------------------------------------------------------------* 665 *& Form FRM_LAYOUT 666 *&---------------------------------------------------------------------* 667 * text 668 *----------------------------------------------------------------------* 669 * --> p1 text 670 * <-- p2 text 671 *----------------------------------------------------------------------* 672 FORM FRM_LAYOUT . 673 674 IW_LAYOUT-COLWIDTH_OPTIMIZE = ‘X‘."自适应字段宽度 675 IW_LAYOUT-ZEBRA = ‘X‘. "斑马线显示 676 IW_LAYOUT-INFO_FIELDNAME = ‘COLOR‘. "保存行颜色代码的字段 677 IW_LAYOUT-COLTAB_FIELDNAME = ‘CELLCOLOR‘. "单元格颜色内表字段 678 * IW_LAYOUT-EDIT = ‘X‘. "可以修改所有ALV列的数据, 679 * 左边也会出来选择行的按钮","保存"按钮也会出来 680 IW_LAYOUT-F2CODE = ‘PICK‘."双击触发的FUNCTION CODE 681 ENDFORM. " FRM_LAYOUT 682 683 *&---------------------------------------------------------------------* 684 *& Form FRM_GET_ALL_FIELD 685 *&---------------------------------------------------------------------* 686 * text 687 *----------------------------------------------------------------------* 688 * --> p1 text 689 * <-- p2 text 690 *----------------------------------------------------------------------* 691 FORM FRM_GET_ALL_FIELD USING PS_FCAT TYPE SLIS_FIELDCAT_ALV. 692 DATA W_REPID TYPE SY-REPID. 693 W_REPID = SY-REPID. 694 695 CALL FUNCTION ‘REUSE_ALV_FIELDCATALOG_MERGE‘ 696 EXPORTING 697 I_PROGRAM_NAME = W_REPID 698 * I_INTERNAL_TABNAME = 699 I_STRUCTURE_NAME = ‘‘ 700 * I_CLIENT_NEVER_DISPLAY = ‘X‘ 701 * I_INCLNAME = 702 * I_BYPASSING_BUFFER = 703 * I_BUFFER_ACTIVE = 704 CHANGING 705 CT_FIELDCAT = IT_FIELDCAT 706 EXCEPTIONS 707 INCONSISTENT_INTERFACE = 1 708 PROGRAM_ERROR = 2 709 OTHERS = 3. 710 IF SY-SUBRC <> 0. 711 MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO 712 WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. 713 ENDIF. 714 715 ENDFORM. " FRM_GET_ALL_FIELD 716 717 *&---------------------------------------------------------------------* 718 *& Form FRM_REDEFINE_FIELD 719 *&---------------------------------------------------------------------* 720 * text 721 *----------------------------------------------------------------------* 722 * -->P_LW_FCAT text 723 *----------------------------------------------------------------------* 724 FORM FRM_REDEFINE_FIELD USING P_LW_FCAT TYPE SLIS_FIELDCAT_ALV. 725 CLEAR P_LW_FCAT. 726 DEFINE INITIAL_FIELD. 727 P_LW_FCAT-SELTEXT_L = &1. DEFINE alv_fieldcat. 728 P_LW_FCAT-SELTEXT_M = &1. ADD 1 TO col_pos . 729 P_LW_FCAT-SELTEXT_S = &1. CLEAR ls_fieldcat. 730 P_LW_FCAT-FIELDNAME = &2. ls_fieldcat-col_pos = col_pos . 731 APPEND P_LW_FCAT TO IT_FIELDCAT. ls_fieldcat-tabname = tabname. 732 END-OF-DEFINITION. ls_fieldcat-fieldname = &1. 733 ls_fieldcat-reptext_ddic = &2. 734 INITIAL_FIELD ‘主资产编号‘ ‘ANLN1‘. ls_fieldcat-outputlen = &3 . 735 INITIAL_FIELD ‘资产名称‘ ‘TXT50‘. APPEND ls_fieldcat TO gt_fieldcat . 736 INITIAL_FIELD ‘资产名称2‘ ‘TXA50‘. END-OF-DEFINITION. 737 INITIAL_FIELD ‘公司代码‘ ‘BUKRS‘. 738 INITIAL_FIELD ‘会计年度‘ ‘GJAHR‘. 739 INITIAL_FIELD ‘成本中心‘ ‘KOSTL‘. 740 INITIAL_FIELD ‘成本中心描述‘ ‘KTEXT‘. 741 INITIAL_FIELD ‘业务范围‘ ‘GSBER‘. 742 INITIAL_FIELD ‘业务范围描述‘ ‘GTEXT‘. 743 INITIAL_FIELD ‘利润中心‘ ‘PRCTR‘. 744 INITIAL_FIELD ‘利润中心描述‘ ‘PKTEXT‘. 745 INITIAL_FIELD ‘资产大类‘ ‘ANLKL‘. 746 INITIAL_FIELD ‘资产大类名称‘ ‘TXK20‘. 747 INITIAL_FIELD ‘存放地点‘ ‘ANLHTXT‘. 748 INITIAL_FIELD ‘使用人/保管人‘ ‘KFZKZ‘. 749 INITIAL_FIELD ‘规格‘ ‘SERNR‘. 750 INITIAL_FIELD ‘来源资产卡片编号‘ ‘AIBN1‘. 751 INITIAL_FIELD ‘资产小类编码‘ ‘ORD41‘. 752 INITIAL_FIELD ‘资产小类名称‘ ‘ORDTX1‘. 753 INITIAL_FIELD ‘资本化日期‘ ‘AKTIV‘. 754 INITIAL_FIELD ‘已折旧月份‘ ‘XFABG1‘. 755 INITIAL_FIELD ‘不活动日期‘ ‘DEAKT‘. 756 INITIAL_FIELD ‘折旧期限-年‘ ‘NDJAR‘. 757 INITIAL_FIELD ‘折旧期限-月‘ ‘NDPER‘. 758 INITIAL_FIELD ‘折旧码‘ ‘AFASL‘. 759 INITIAL_FIELD ‘原值‘ ‘YZ‘. 760 INITIAL_FIELD ‘预计净残值‘ ‘YJCZ‘. 761 INITIAL_FIELD ‘本月折旧‘ ‘NAFAZ‘. 762 INITIAL_FIELD ‘本月计划外折旧‘ ‘AAFAZ‘. 763 INITIAL_FIELD ‘累计普通折旧‘ ‘LJPTZJ‘. 764 INITIAL_FIELD ‘累计计划外折旧‘ ‘AAFAP‘. 765 INITIAL_FIELD ‘净值‘ ‘JZ‘. 766 INITIAL_FIELD ‘初始化折旧‘ ‘CSHZJ‘. 767 INITIAL_FIELD ‘供应商代码‘ ‘LIFNR‘. 768 INITIAL_FIELD ‘供应商名称‘ ‘LIEFE‘. 769 770 ENDFORM. " FRM_REDEFINE_FIELD 771 772 *&---------------------------------------------------------------------* 773 *& Form FRM_SUM_FIELD 774 *&---------------------------------------------------------------------* 775 * text 776 *----------------------------------------------------------------------* 777 * -->P_LW_FCAT text 778 *----------------------------------------------------------------------* 779 FORM FRM_SUM_FIELD USING P_LW_FCAT TYPE SLIS_FIELDCAT_ALV. 780 * 求和 781 CLEAR P_LW_FCAT. 782 P_LW_FCAT-FIELDNAME = ‘NAFAZ‘. 783 "P_LW_FCAT-REF_TABNAME = ‘ ‘. 784 "P_LW_FCAT-COL_POS = ‘ ‘. 785 P_LW_FCAT-DO_SUM = ‘X‘. "立即求和,只有I,F,P类型的列可以求和 786 MODIFY IT_FIELDCAT FROM P_LW_FCAT TRANSPORTING DO_SUM 787 WHERE FIELDNAME = ‘NAFAZ‘. 788 ENDFORM. " FRM_SUM_FIELD 789 790 *&---------------------------------------------------------------------* 791 *& Form FRM_COLOR_HOTSPOT 792 *&---------------------------------------------------------------------* 793 * text 794 *----------------------------------------------------------------------* 795 * -->P_LW_FCAT text 796 *----------------------------------------------------------------------* 797 FORM FRM_COLOR_HOTSPOT USING P_CLR_FCAT TYPE SLIS_FIELDCAT_ALV. 798 CLEAR P_CLR_FCAT. 799 800 "列 LJPTZJ 的字体颜色为红色 801 P_CLR_FCAT-EMPHASIZE = ‘C601‘. 802 MODIFY IT_FIELDCAT FROM P_CLR_FCAT TRANSPORTING EMPHASIZE 803 WHERE FIELDNAME = ‘ANLKL‘. 804 805 "定义热键显示字段,使双击事件有效 806 P_CLR_FCAT-REF_TABNAME = ‘IT_ASSET‘. 807 P_CLR_FCAT-HOTSPOT = ‘X‘. 808 P_CLR_FCAT-KEY = ‘X‘. 809 MODIFY IT_FIELDCAT FROM P_CLR_FCAT 810 TRANSPORTING REF_TABNAME HOTSPOT KEY 811 WHERE FIELDNAME = ‘ANLN1‘. 812 ENDFORM. " FRM_COLOR_HOTSPOT 813 814 *&---------------------------------------------------------------------* 815 *& Form FRM_STATUS_EX 816 *&---------------------------------------------------------------------* 817 * text 818 *----------------------------------------------------------------------* 819 * --> p1 text 820 * <-- p2 text 821 *----------------------------------------------------------------------* 822 FORM FRM_STATUS_EX USING EXTAB TYPE SLIS_T_EXTAB. 823 DATA:BEGIN OF TAB OCCURS 0, 824 FCODE LIKE RSMPE-FUNC, 825 END OF TAB. 826 827 TAB-FCODE = ‘&OL0‘.APPEND TAB. 828 TAB-FCODE = ‘&OAD‘.APPEND TAB. 829 TAB-FCODE = ‘&AVE‘.APPEND TAB. 830 831 SET PF-STATUS ‘STANDARD_FULLSCREEN‘ OF PROGRAM ‘SAPLKKBL‘ 832 EXCLUDING TAB IMMEDIATELY. 833 834 ENDFORM. " FRM_STATUS_EX 835 836 837 *&---------------------------------------------------------------------* 838 *& Form FRM_ALV_DISPLAY 839 *&---------------------------------------------------------------------* 840 * text 841 *----------------------------------------------------------------------* 842 * --> p1 text 843 * <-- p2 text 844 *----------------------------------------------------------------------* 845 FORM FRM_ALV_DISPLAY . 846 DATA W_REPID TYPE SY-REPID. 847 848 W_REPID = SY-REPID. 849 850 CALL FUNCTION ‘REUSE_ALV_GRID_DISPLAY‘ 851 EXPORTING 852 * I_INTERFACE_CHECK = ‘ ‘ 853 * I_BYPASSING_BUFFER = ‘ ‘ 854 * I_BUFFER_ACTIVE = ‘ ‘ 855 I_CALLBACK_PROGRAM = W_REPID 856 I_CALLBACK_PF_STATUS_SET = ‘FRM_STATUS_EX‘ 857 I_CALLBACK_USER_COMMAND = ‘FRM_ALV_USER_COMMAND‘ 858 * I_CALLBACK_TOP_OF_PAGE = ‘ ‘ 859 * I_CALLBACK_HTML_TOP_OF_PAGE = ‘ ‘ 860 * I_CALLBACK_HTML_END_OF_LIST = ‘ ‘ 861 * I_STRUCTURE_NAME = 862 * I_BACKGROUND_ID = ‘ ‘ 863 I_GRID_TITLE = ‘资产信息一览‘ 864 * I_GRID_SETTINGS = 865 IS_LAYOUT = IW_LAYOUT 866 IT_FIELDCAT = IT_FIELDCAT 867 * IT_EXCLUDING = 868 * IT_SPECIAL_GROUPS = 869 * IT_SORT = 870 * IT_FILTER = 871 * IS_SEL_HIDE = 872 I_DEFAULT = ‘X‘ 873 I_SAVE = ‘X‘ 874 * IS_VARIANT = 875 IT_EVENTS = IT_EVENT 876 * IT_EVENT_EXIT = 877 * IS_PRINT = 878 * IS_REPREP_ID = 879 * I_SCREEN_START_COLUMN = 0 880 * I_SCREEN_START_LINE = 0 881 * I_SCREEN_END_COLUMN = 0 882 * I_SCREEN_END_LINE = 0 883 * I_HTML_HEIGHT_TOP = 0 884 * I_HTML_HEIGHT_END = 0 885 * IT_ALV_GRAPHICS = 886 * IT_HYPERLINK = 887 * IT_ADD_FIELDCAT = 888 * IT_EXCEPT_QINFO = 889 * IR_SALV_FULLSCREEN_ADAPTER = 890 * IMPORTING 891 * E_EXIT_CAUSED_BY_CALLER = 892 * ES_EXIT_CAUSED_BY_USER = 893 TABLES 894 T_OUTTAB = IT_ASSET 895 EXCEPTIONS 896 PROGRAM_ERROR = 1 897 OTHERS = 2 898 . 899 IF SY-SUBRC <> 0. 900 *MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO 901 * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. 902 ENDIF. 903 ENDFORM. " FRM_ALV_DISPLAY 904 *&---------------------------------------------------------------------* 905 *& Form FRM_ALV_USER_COMMAND 906 *&---------------------------------------------------------------------* 907 * text 908 *----------------------------------------------------------------------* 909 * --> p1 text 910 * <-- p2 text 911 *----------------------------------------------------------------------* 912 FORM FRM_ALV_USER_COMMAND USING R_UCOMM TYPE SY-UCOMM 913 RS_SELFIELD TYPE SLIS_SELFIELD. 914 CASE R_UCOMM. 915 WHEN ‘PICK‘. 916 READ TABLE IT_ASSET INTO IW_ASSET INDEX RS_SELFIELD-TABINDEX. 917 SET PARAMETER ID: ‘AN1‘ FIELD IW_ASSET-ANLN1, 918 ‘BUK‘ FIELD IW_ASSET-BUKRS. 919 920 CALL TRANSACTION ‘AS03‘ AND SKIP FIRST SCREEN. 921 ENDCASE. 922 ENDFORM. " FRM_ALV_USER_COMMAND
ABAP ALV 示例:ALV单元格颜色,ALV行颜色,ALV双击事件,数据合计,ALV表头,ALV GUI STATUS
标签:
原文地址:http://www.cnblogs.com/mingdashu/p/alv-demo.html