资产折旧盘点表


*&---------------------------------------------------------------------*
REPORT ZFIR001 .
TABLES :ANLC ,BSEG ,T001 ,BKPF ,ANLA .
*---定义结构---For Main ALV OutPut-------------------------------------*
TYPES BEGIN  OF TY_ITAB ,
*  CHECK TYPE FLAG,
         BUKRS    TYPE ANLA -BUKRS "公司代码
         BUTXT    TYPE T001 -BUTXT "公司代码描述
         ANLKL    TYPE ANLA -ANLKL "资产类别
         TXK50    TYPE ANKT -TXK50 "资产类别描述
         ANLN1    TYPE ANLA -ANLN1 "资产编号
         ANLN2    TYPE ANLA -ANLN2 "资产编号
         TXT50    TYPE ANLA -TXT50 "固定资产名称
         AKTIV    TYPE ANLA -AKTIV "启用日期
         KANSW    TYPE ANLC -KANSW "
         ANSWL    TYPE ANLC -KANSW "
         YZ       TYPE ANLC -KANSW "账面原值
         JZ       TYPE ANLC -KANSW "账面净值
         KNAFA    TYPE ANLC -KNAFA "以前年度已提折旧
         NAFAG    TYPE ANLC -NAFAG "本年度已提折旧
         NAFAZ1   TYPE ANLP -NAFAZ "本年度已提折旧-1月
         NAFAZ2   TYPE ANLP -NAFAZ "本年度已提折旧-2月
         NAFAZ3   TYPE ANLP -NAFAZ "本年度已提折旧-3月
         NAFAZ4   TYPE ANLP -NAFAZ "本年度已提折旧-4月
         NAFAZ5   TYPE ANLP -NAFAZ "本年度已提折旧-5月
         NAFAZ6   TYPE ANLP -NAFAZ "本年度已提折旧-6月
         NAFAZ7   TYPE ANLP -NAFAZ "本年度已提折旧-7月
         NAFAZ8   TYPE ANLP -NAFAZ "本年度已提折旧-8月
         NAFAZ9   TYPE ANLP -NAFAZ "本年度已提折旧-9月
         NAFAZ10  TYPE ANLP -NAFAZ "本年度已提折旧-10月
         NAFAZ11  TYPE ANLP -NAFAZ "本年度已提折旧-11月
         NAFAZ12  TYPE ANLP -NAFAZ "本年度已提折旧-12月
        END    OF TY_ITAB .

DATA GT_ITAB  TYPE  STANDARD  TABLE  OF TY_ITAB ,
      GW_ITAB  TYPE TY_ITAB .
FIELD-SYMBOLS <ITAB>  TYPE TY_ITAB .

*----------------------------------------------------------------------*
*       CLASS lcl_main_alv DEFINITION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS LCL_MAIN_ALV  DEFINITION .

   PUBLIC  SECTION .
     METHODS GENERATE_ALV .
   PRIVATE  SECTION .
     DATA O_SALV  TYPE  REF  TO CL_SALV_TABLE .
     DATA O_SALV1  TYPE  REF  TO CL_SALV_TABLE .
     METHODS :
      SET_PF_STATUS
         CHANGING
          CO_ALV  TYPE  REF  TO CL_SALV_TABLE ,
      SET_LAYOUT
         CHANGING
          CO_ALV  TYPE  REF  TO CL_SALV_TABLE ,
      SET_DISPLAY_SETTING
         CHANGING
          CO_ALV  TYPE  REF  TO CL_SALV_TABLE ,
      SET_DISPLAY_SETTING_SEC
         CHANGING
          CO_ALV  TYPE  REF  TO CL_SALV_TABLE ,
      SET_COLUMNS
         CHANGING
          CO_ALV  TYPE  REF  TO CL_SALV_TABLE ,
      REFRESH_ALV ,
      ON_USER_COMMAND  FOR  EVENT ADDED_FUNCTION  OF CL_SALV_EVENTS
         IMPORTING E_SALV_FUNCTION ,
      HANDLE_DOUBLE_CLICK
                     FOR  EVENT DOUBLE_CLICK  OF CL_SALV_EVENTS_TABLE
         IMPORTING ROW COLUMN ,
      HANDLE_LINK_CLICK
             FOR  EVENT LINK_CLICK  OF CL_SALV_EVENTS_TABLE
         IMPORTING
            ROW COLUMN .

ENDCLASS .                     "lcl_main_alv DEFINITION

*---------------------------------------------------------------------*
* 选择屏幕
*---------------------------------------------------------------------*
SELECTION-SCREEN : BEGIN  OF  BLOCK B1  WITH  FRAME  TITLE  TEXT - 001 .
SELECT-OPTIONS :
  S_BUKRS  FOR ANLC -BUKRS  NO -EXTENSION OBLIGATORY "公司代码
  S_GJAHR  FOR ANLC -GJAHR  NO INTERVALS  NO -EXTENSION OBLIGATORY  DEFAULT SY -DATUM+0 ( 4 ) ,
  S_MONAT  FOR BKPF -MONAT  NO INTERVALS  NO -EXTENSION OBLIGATORY ,
  S_ANLN1  FOR ANLA -ANLN1 ,
  S_ANLKL  FOR ANLA -ANLKL .
PARAMETERS :
  P_NOZERO  AS  CHECKBOX  DEFAULT  'X' .
SELECTION-SCREEN  END  OF  BLOCK B1 .

*&---------------------------------------------------------------------*
*&      START-OF-SELECTION
*&---------------------------------------------------------------------*
START-OF-SELECTION .

   PERFORM GET_DATA .
   DATA LO_MAIN_ALV  TYPE  REF  TO LCL_MAIN_ALV .
   CREATE OBJECT LO_MAIN_ALV .
  LO_MAIN_ALV ->GENERATE_ALV ) .

END-OF-SELECTION .
*&---------------------------------------------------------------------*
*&      Form  GET_DATA
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM GET_DATA  .
   DATA :LT_ANKT  LIKE  TABLE  OF ANKT  WITH  HEADER  LINE ,
       LT_T001  LIKE  TABLE  OF T001  WITH  HEADER  LINE ,
       LT_ANLP  LIKE  TABLE  OF ANLP  WITH  HEADER  LINE .
   SELECT ANLA ~BUKRS ANLA ~ANLKL ANLA ~ANLN1 ANLA ~ANLN2 ANLA ~TXT50 ANLA ~AKTIV
         ANLC ~KANSW ANLC ~ANSWL ANLC ~KNAFA ANLC ~NAFAG
     FROM ANLA
    INNER  JOIN ANLC  ON ANLC ~BUKRS  ANLA ~BUKRS
                     AND ANLC ~ANLN1  ANLA ~ANLN1
                     AND ANLC ~ANLN2  ANLA ~ANLN2
     INTO CORRESPONDING  FIELDS  OF  TABLE GT_ITAB
    WHERE ANLA ~BUKRS  IN S_BUKRS
      AND ANLA ~ANLN1  IN S_ANLN1
      AND ANLA ~ANLKL  IN S_ANLKL
      AND ANLA ~XLOEV  ''
      AND ANLC ~GJAHR  S_GJAHR -LOW .

   CHECK GT_ITAB[]  IS  NOT  INITIAL .
   SELECT FROM T001  INTO  TABLE LT_T001  WHERE BUKRS  IN S_BUKRS .
   SELECT FROM ANKT  INTO  TABLE LT_ANKT
     FOR  ALL ENTRIES  IN GT_ITAB
     WHERE ANLKL  GT_ITAB -ANLKL
       AND SPRAS  SY -LANGU .
   SELECT FROM ANLP
     INTO CORRESPONDING  FIELDS  OF  TABLE LT_ANLP
     FOR  ALL ENTRIES  IN GT_ITAB
     WHERE ANLP ~BUKRS  GT_ITAB -BUKRS
       AND ANLP ~ANLN1  GT_ITAB -ANLN1
       AND ANLP ~ANLN2  GT_ITAB -ANLN2
       AND GJAHR  S_GJAHR -LOW
       AND PERAF <= S_MONAT -LOW .

   LOOP  AT GT_ITAB  ASSIGNING <ITAB> .
     READ  TABLE LT_T001  WITH  KEY BUKRS  <ITAB> -BUKRS .
     IF SY -SUBRC  0 .
      <ITAB> -BUTXT  LT_T001 -BUTXT .
     ENDIF .
     READ  TABLE LT_ANKT  WITH  KEY ANLKL  <ITAB> -ANLKL .
     IF SY -SUBRC  0 .
      <ITAB> -TXK50  LT_ANKT -TXK50 .
     ENDIF .
    <ITAB> -NAFAG  0 .
     LOOP  AT LT_ANLP  WHERE BUKRS  <ITAB> -BUKRS
                       AND ANLN1  <ITAB> -ANLN1
                       AND ANLN2  <ITAB> -ANLN2 .
       CASE LT_ANLP -PERAF .
         WHEN  1 .
           ADD LT_ANLP -NAFAZ  TO <ITAB> -NAFAZ1 .
         WHEN  2 .
           ADD LT_ANLP -NAFAZ  TO <ITAB> -NAFAZ2 .
         WHEN  3 .
           ADD LT_ANLP -NAFAZ  TO <ITAB> -NAFAZ3 .
         WHEN  4 .
           ADD LT_ANLP -NAFAZ  TO <ITAB> -NAFAZ4 .
         WHEN  5 .
           ADD LT_ANLP -NAFAZ  TO <ITAB> -NAFAZ5 .
         WHEN  6 .
           ADD LT_ANLP -NAFAZ  TO <ITAB> -NAFAZ6 .
         WHEN  7 .
           ADD LT_ANLP -NAFAZ  TO <ITAB> -NAFAZ7 .
         WHEN  8 .
           ADD LT_ANLP -NAFAZ  TO <ITAB> -NAFAZ8 .
         WHEN  9 .
           ADD LT_ANLP -NAFAZ  TO <ITAB> -NAFAZ9 .
         WHEN  10 .
           ADD LT_ANLP -NAFAZ  TO <ITAB> -NAFAZ10 .
         WHEN  11 .
           ADD LT_ANLP -NAFAZ  TO <ITAB> -NAFAZ11 .
         WHEN  12 .
           ADD LT_ANLP -NAFAZ  TO <ITAB> -NAFAZ12 .
       ENDCASE .
       ADD LT_ANLP -NAFAZ  TO <ITAB> -NAFAG .
     ENDLOOP .
    <ITAB> -YZ  <ITAB> -KANSW + <ITAB> -ANSWL .
    <ITAB> -JZ  <ITAB> -YZ  <ITAB> -KNAFA  <ITAB> -NAFAG .
   ENDLOOP .
*  LOOP AT GT_DATA.
**    IF GT_DATA-GJAHR NOT IN S_GJAHR AND GT_DATA-GJAHR IS NOT INITIAL.
**      DELETE GT_DATA INDEX SY-TABIX.
**      CONTINUE.
**    ENDIF.
**    IF GT_DATA-PERAF NOT IN S_MONAT AND GT_DATA-PERAF IS NOT INITIAL.
**      DELETE GT_DATA INDEX SY-TABIX.
**      CONTINUE.
**    ENDIF.
*
*    IF GT_DATA-AKTIV+0(6) > L_AKTIV.
*      DELETE GT_DATA INDEX SY-TABIX.
*      CONTINUE.
*    ENDIF.
*    IF GT_DATA-GJAHR IS NOT INITIAL AND GT_DATA-GJAHR > S_GJAHR-LOW.
*      DELETE GT_DATA INDEX SY-TABIX.
*      CONTINUE.
*    ENDIF.
*    L_PERAF = S_MONAT-LOW  + 1.
*    IF GT_DATA-GJAHR IS NOT INITIAL AND GT_DATA-GJAHR = S_GJAHR-LOW.
**      IF S_MONAT-LOW < GT_DATA-PERAF .
*      IF L_PERAF < GT_DATA-PERAF .
*        DELETE GT_DATA INDEX SY-TABIX.
*        CONTINUE.
*      ENDIF.
*    ENDIF.
*  ENDLOOP.
*  IF GT_DATA[] IS NOT INITIAL.
*    SELECT BUTXT BUKRS
*      INTO CORRESPONDING FIELDS OF TABLE GT_T001
*      FROM T001
*       FOR ALL ENTRIES IN GT_DATA
*     WHERE BUKRS = GT_DATA-BUKRS.
*
*    SELECT ANLKL TXK50
*      INTO CORRESPONDING FIELDS OF TABLE GT_ANKT
*      FROM ANKT
*       FOR ALL ENTRIES IN GT_DATA
*     WHERE ANLKL = GT_DATA-ANLKL
*       AND SPRAS = '1'.
*
*    SELECT LTEXT KOSTL
*      INTO CORRESPONDING FIELDS OF TABLE GT_CSKT
*      FROM CSKT
*       FOR ALL ENTRIES IN GT_DATA
*     WHERE ( KOSTL = GT_DATA-KOSTL OR KOSTL = GT_DATA-KOSTLV )
*       AND SPRAS = '1'
*       AND KOKRS = 'CNYD'
*       AND DATBI >= SY-DATUM.
*
*    SELECT ORD4X ORDNR ORDTX
*      INTO CORRESPONDING FIELDS OF TABLE GT_T087T
*      FROM T087T
*       FOR ALL ENTRIES IN GT_DATA
*     WHERE ( ORD4X = GT_DATA-ORD41 OR ORD4X = GT_DATA-ORD42
*          OR ORD4X = GT_DATA-ORD43 OR ORD4X = GT_DATA-ORD44 )
*       AND SPRAS = '1'.
*
*    SELECT GDLGRP GDLGRP_TXT
*      INTO CORRESPONDING FIELDS OF TABLE GT_T087S
*      FROM T087S
*       FOR ALL ENTRIES IN GT_DATA
*     WHERE SPRAS = '1'
*       AND GDLGRP = GT_DATA-GDLGRP.
*
*    SELECT ANLUE ANLUE_TXT
*      INTO CORRESPONDING FIELDS OF TABLE GT_T087V
*      FROM T087V
*       FOR ALL ENTRIES IN GT_DATA
*     WHERE SPRAS = '1'
*       AND ANLUE = GT_DATA-ANLUE.
*
*    SELECT T090NA~AFASL T091P~AHPROZ
*      INTO CORRESPONDING FIELDS OF TABLE GT_T091P
*      FROM T091P INNER JOIN T090NA ON T090NA~ANHWSL = T091P~ANHWSL.
*
*    SELECT LIFNR NAME1
*      INTO CORRESPONDING FIELDS OF TABLE GT_LFA1
*      FROM LFA1
*       FOR ALL ENTRIES IN GT_DATA
*     WHERE LIFNR = GT_DATA-LIFNR.
*    SELECT PRCTR KTEXT
*      INTO CORRESPONDING FIELDS OF TABLE GT_CEPCT
*      FROM CEPCT
*       FOR ALL ENTRIES IN GT_DATA
*     WHERE PRCTR = GT_DATA-PRCTR
*       AND SPRAS = '1'
*       AND KOKRS = 'CNYD'.
*  ENDIF.

*  SORT GT_DATA BY PRCTR ANLN1 ASCENDING PERAF AFBNR DESCENDING .
*  I_DATA[] = GT_DATA[].
*  LOOP AT GT_DATA.

**    公司代码描述
*      READ TABLE GT_T001 WITH KEY BUKRS = GT_DATA-BUKRS.
*      GW_ITAB-BUTXT = GT_T001.
**    资产类别描述
*      READ TABLE GT_ANKT WITH KEY ANLKL = GT_DATA-ANLKL.
*      GW_ITAB-TXK50 = GT_ANKT-TXK50.
**    使用部门描述
*      READ TABLE GT_CSKT WITH KEY KOSTL = GT_DATA-KOSTL.
*      GW_ITAB-LTEXT = GT_CSKT-LTEXT.
*      CLEAR GT_CSKT.
**    负责部门描述
*      READ TABLE GT_CSKT WITH KEY KOSTL = GT_DATA-KOSTLV.
*      GW_ITAB-LTEXTV = GT_CSKT-LTEXT.
**    资产状态描述
*      READ TABLE GT_T087T WITH KEY ORD4X = GT_DATA-ORD41
*                                   ORDNR = '1'.
*      GW_ITAB-ORDT1 = GT_T087T-ORDTX.
*      CLEAR GT_T087T.
**    增加方式描述
*      READ TABLE GT_T087T WITH KEY ORD4X = GT_DATA-ORD42
*                                   ORDNR = '2'.
*      GW_ITAB-ORDT2 = GT_T087T-ORDTX.
*      CLEAR GT_T087T.

*  ENDLOOP.

ENDFORM .                     " GET_DATA
*----------------------------------------------------------------------*
*       CLASS lcl_main_alv IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS LCL_MAIN_ALV  IMPLEMENTATION .

   METHOD GENERATE_ALV .
*
     DATA LX_MSG  TYPE  REF  TO CX_SALV_MSG .

     TRY .
        CL_SALV_TABLE =>FACTORY (
           IMPORTING
            R_SALV_TABLE  O_SALV
           CHANGING
            T_TABLE       GT_ITAB  ) .
       CATCH CX_SALV_MSG  INTO LX_MSG .
     ENDTRY .


     CALL  METHOD SET_PF_STATUS
       CHANGING
        CO_ALV  O_SALV .

     CALL  METHOD SET_LAYOUT
       CHANGING
        CO_ALV  O_SALV .

     CALL  METHOD SET_DISPLAY_SETTING
       CHANGING
        CO_ALV  O_SALV .

     CALL  METHOD SET_COLUMNS
       CHANGING
        CO_ALV  O_SALV .

     DATA LO_EVENTS  TYPE  REF  TO CL_SALV_EVENTS_TABLE .
     DATA LO_EVENTS1  TYPE  REF  TO CL_SALV_EVENTS_TABLE .
    LO_EVENTS  O_SALV ->GET_EVENT ) .

     SET  HANDLER HANDLE_DOUBLE_CLICK  FOR LO_EVENTS .

     SET  HANDLER ON_USER_COMMAND  FOR LO_EVENTS .

     DATA :LR_SELS  TYPE  REF  TO CL_SALV_SELECTIONS .
    LR_SELS  O_SALV ->GET_SELECTIONS ) .
    LR_SELS ->SET_SELECTION_MODE IF_SALV_C_SELECTION_MODE =>ROW_COLUMN  ) .

*   显示 ALV
    O_SALV ->DISPLAY ) .
   ENDMETHOD .                     "generate_alv
*设置工具栏
   METHOD SET_PF_STATUS .
     DATA LO_FUNCTIONS  TYPE  REF  TO CL_SALV_FUNCTIONS .
    CO_ALV ->SET_SCREEN_STATUS (
      PFSTATUS       =   'ZSALV_STATUS'
       REPORT         =  SY -REPID
      SET_FUNCTIONS  CO_ALV ->C_FUNCTIONS_ALL  ) .

    LO_FUNCTIONS  CO_ALV ->GET_FUNCTIONS ) .
    LO_FUNCTIONS ->SET_ALL ABAP_TRUE  ) .
*    TRY.
*    LO_FUNCTIONS->SET_FUNCTION( NAME = 'ZUNDO' BOOLEAN = '' ).
*      CATCH CX_SALV_WRONG_CALL.                         "#EC NO_HANDLER
*      CATCH CX_SALV_NOT_FOUND.                          "#EC NO_HANDLER
   ENDMETHOD .                     "set_pf_status
* Settings for Layout
   METHOD SET_LAYOUT .
*
     DATA LO_LAYOUT   TYPE  REF  TO CL_SALV_LAYOUT ,
          LF_VARIANT  TYPE SLIS_VARI ,
          LS_LAYOUT   TYPE SALV_S_LAYOUT_INFO ,
          LS_KEY      TYPE SALV_S_LAYOUT_KEY .
*
    LO_LAYOUT  CO_ALV ->GET_LAYOUT ) .
    LS_KEY - REPORT  SY -REPID .
    LS_LAYOUT  CL_SALV_LAYOUT_SERVICE =>GET_DEFAULT_LAYOUT (
        S_KEY     LS_KEY
        RESTRICT  IF_SALV_C_LAYOUT =>RESTRICT_NONE  ) .
    LF_VARIANT  LS_LAYOUT -LAYOUT .
    LO_LAYOUT ->SET_KEY LS_KEY  ) .
    LO_LAYOUT ->SET_DEFAULT ABAP_TRUE  ) .
    LO_LAYOUT ->SET_SAVE_RESTRICTION IF_SALV_C_LAYOUT =>RESTRICT_NONE  ) .
    LO_LAYOUT ->SET_INITIAL_LAYOUT LF_VARIANT  ) .

   ENDMETHOD .                     "set_layout

   METHOD SET_DISPLAY_SETTING .
*
     DATA LO_DISPLAY  TYPE  REF  TO CL_SALV_DISPLAY_SETTINGS .
    LO_DISPLAY  O_SALV ->GET_DISPLAY_SETTINGS ) .
    LO_DISPLAY ->SET_STRIPED_PATTERN 'X'  ) .
    LO_DISPLAY ->SET_FIT_COLUMN_TO_TABLE_SIZE 'X'  ) .
*    lo_display->set_list_header( 'ALV Test for Display Settings' ).
*
   ENDMETHOD .                     "SET_DISPLAY_SETTING
   METHOD SET_DISPLAY_SETTING_SEC .
*
     DATA LO_DISPLAY  TYPE  REF  TO CL_SALV_DISPLAY_SETTINGS .
    LO_DISPLAY  O_SALV1 ->GET_DISPLAY_SETTINGS ) .
    LO_DISPLAY ->SET_STRIPED_PATTERN 'X'  ) .
    LO_DISPLAY ->SET_FIT_COLUMN_TO_TABLE_SIZE 'X'  ) .
*    lo_display->set_list_header( 'ALV Test for Display Settings' ).
*
   ENDMETHOD .
*  设置列属性
   METHOD SET_COLUMNS .
*
     DATA LO_COLS    TYPE  REF  TO CL_SALV_COLUMNS_TABLE ,
          LO_COLUMN  TYPE  REF  TO CL_SALV_COLUMN_TABLE .
     DATA LV_SCRTEXT_L  TYPE SCRTEXT_L .
*    DATA: LV_SCRTEXT_S TYPE SCRTEXT_S.

    LO_COLS  CO_ALV ->GET_COLUMNS ) .
    LO_COLS ->SET_OPTIMIZE ABAP_TRUE  ) .
    LO_COLS ->SET_KEY_FIXATION ABAP_TRUE  ) .
     TRY .
*        LO_COLS->SET_CELL_TYPE_COLUMN( 'IT_CELL_TYPES' ).
*        LO_COLS->SET_COLOR_COLUMN( 'IT_CELL_COLOR' ).
       CATCH CX_SALV_DATA_ERROR .                          "#EC NO_HANDLER
     ENDTRY .

     TRY .
*        LO_COLUMN ?= LO_COLS->GET_COLUMN( 'PSPHI' ).
*        LO_COLUMN->SET_VISIBLE( ABAP_FALSE ).

        LO_COLUMN ?= LO_COLS ->GET_COLUMN 'BUKRS'  ) .
        LV_SCRTEXT_L  '公司代码' .
        LO_COLUMN ->SET_LONG_TEXT LV_SCRTEXT_L  ) .
        LO_COLUMN ->SET_FIXED_HEADER_TEXT 'L'  ) .
        LO_COLUMN ->SET_VISIBLE ABAP_TRUE  ) .

        LO_COLUMN ?= LO_COLS ->GET_COLUMN 'BUTXT'  ) .
        LV_SCRTEXT_L  '公司代码描述' .
        LO_COLUMN ->SET_LONG_TEXT LV_SCRTEXT_L  ) .
        LO_COLUMN ->SET_FIXED_HEADER_TEXT 'L'  ) .
        LO_COLUMN ->SET_VISIBLE ABAP_TRUE  ) .
        LO_COLUMN ?= LO_COLS ->GET_COLUMN 'ANLKL'  ) .
        LV_SCRTEXT_L  '资产类别' .
        LO_COLUMN ->SET_LONG_TEXT LV_SCRTEXT_L  ) .
        LO_COLUMN ->SET_FIXED_HEADER_TEXT 'L'  ) .
        LO_COLUMN ->SET_VISIBLE ABAP_TRUE  ) .

        LO_COLUMN ?= LO_COLS ->GET_COLUMN 'TXK50 '  ) .
        LV_SCRTEXT_L  '资产类别描述' .
        LO_COLUMN ->SET_LONG_TEXT LV_SCRTEXT_L  ) .
        LO_COLUMN ->SET_FIXED_HEADER_TEXT 'L'  ) .
        LO_COLUMN ->SET_VISIBLE ABAP_TRUE  ) .

        LO_COLUMN ?= LO_COLS ->GET_COLUMN 'ANLN1'  ) .
        LV_SCRTEXT_L  '资产卡片号' .
        LO_COLUMN ->SET_LONG_TEXT LV_SCRTEXT_L  ) .
        LO_COLUMN ->SET_FIXED_HEADER_TEXT 'L'  ) .
        LO_COLUMN ->SET_VISIBLE ABAP_TRUE  ) .

        LO_COLUMN ?= LO_COLS ->GET_COLUMN 'TXT50'  ) .
        LV_SCRTEXT_L  '资产名称' .
        LO_COLUMN ->SET_LONG_TEXT LV_SCRTEXT_L  ) .
        LO_COLUMN ->SET_FIXED_HEADER_TEXT 'L'  ) .
        LO_COLUMN ->SET_VISIBLE ABAP_TRUE  ) .

        LO_COLUMN ?= LO_COLS ->GET_COLUMN 'AKTIV'  ) .
        LV_SCRTEXT_L  '购入时间' .
        LO_COLUMN ->SET_LONG_TEXT LV_SCRTEXT_L  ) .
        LO_COLUMN ->SET_FIXED_HEADER_TEXT 'L'  ) .
        LO_COLUMN ->SET_VISIBLE ABAP_TRUE  ) .

        LO_COLUMN ?= LO_COLS ->GET_COLUMN 'YZ'  ) .
        LV_SCRTEXT_L  '账面原值' .
        LO_COLUMN ->SET_LONG_TEXT LV_SCRTEXT_L  ) .
        LO_COLUMN ->SET_FIXED_HEADER_TEXT 'L'  ) .
        LO_COLUMN ->SET_VISIBLE ABAP_TRUE  ) .

        LO_COLUMN ?= LO_COLS ->GET_COLUMN 'JZ'  ) .
        LV_SCRTEXT_L  '账面净值' .
        LO_COLUMN ->SET_LONG_TEXT LV_SCRTEXT_L  ) .
        LO_COLUMN ->SET_FIXED_HEADER_TEXT 'L'  ) .
        LO_COLUMN ->SET_VISIBLE ABAP_TRUE  ) .

        LO_COLUMN ?= LO_COLS ->GET_COLUMN 'KNAFA'  ) .
        LV_SCRTEXT_L  '以前年度已提折旧' .
        LO_COLUMN ->SET_LONG_TEXT LV_SCRTEXT_L  ) .
        LO_COLUMN ->SET_FIXED_HEADER_TEXT 'L'  ) .
        LO_COLUMN ->SET_VISIBLE ABAP_TRUE  ) .

        LO_COLUMN ?= LO_COLS ->GET_COLUMN 'NAFAG'  ) .
        LV_SCRTEXT_L  '本年度已提折旧' .
        LO_COLUMN ->SET_LONG_TEXT LV_SCRTEXT_L  ) .
        LO_COLUMN ->SET_FIXED_HEADER_TEXT 'L'  ) .
        LO_COLUMN ->SET_VISIBLE ABAP_TRUE  ) .

        LO_COLUMN ?= LO_COLS ->GET_COLUMN 'NAFAZ1'  ) .
        LV_SCRTEXT_L  '本年折旧-1月' .
        LO_COLUMN ->SET_LONG_TEXT LV_SCRTEXT_L  ) .
        LO_COLUMN ->SET_FIXED_HEADER_TEXT 'L'  ) .
        LO_COLUMN ->SET_VISIBLE ABAP_TRUE  ) .
        LO_COLUMN ?= LO_COLS ->GET_COLUMN 'NAFAZ2'  ) .
        LV_SCRTEXT_L  '本年折旧-2月' .
        LO_COLUMN ->SET_LONG_TEXT LV_SCRTEXT_L  ) .
        LO_COLUMN ->SET_FIXED_HEADER_TEXT 'L'  ) .
        LO_COLUMN ->SET_VISIBLE ABAP_TRUE  ) .
        LO_COLUMN ?= LO_COLS ->GET_COLUMN 'NAFAZ3'  ) .
        LV_SCRTEXT_L  '本年折旧-3月' .
        LO_COLUMN ->SET_LONG_TEXT LV_SCRTEXT_L  ) .
        LO_COLUMN ->SET_FIXED_HEADER_TEXT 'L'  ) .
        LO_COLUMN ->SET_VISIBLE ABAP_TRUE  ) .
        LO_COLUMN ?= LO_COLS ->GET_COLUMN 'NAFAZ4'  ) .
        LV_SCRTEXT_L  '本年折旧-4月' .
        LO_COLUMN ->SET_LONG_TEXT LV_SCRTEXT_L  ) .
        LO_COLUMN ->SET_FIXED_HEADER_TEXT 'L'  ) .
        LO_COLUMN ->SET_VISIBLE ABAP_TRUE  ) .
        LO_COLUMN ?= LO_COLS ->GET_COLUMN 'NAFAZ5'  ) .
        LV_SCRTEXT_L  '本年折旧-5月' .
        LO_COLUMN ->SET_LONG_TEXT LV_SCRTEXT_L  ) .
        LO_COLUMN ->SET_FIXED_HEADER_TEXT 'L'  ) .
        LO_COLUMN ->SET_VISIBLE ABAP_TRUE  ) .
        LO_COLUMN ?= LO_COLS ->GET_COLUMN 'NAFAZ6'  ) .
        LV_SCRTEXT_L  '本年折旧-6月' .
        LO_COLUMN ->SET_LONG_TEXT LV_SCRTEXT_L  ) .
        LO_COLUMN ->SET_FIXED_HEADER_TEXT 'L'  ) .
        LO_COLUMN ->SET_VISIBLE ABAP_TRUE  ) .
        LO_COLUMN ?= LO_COLS ->GET_COLUMN 'NAFAZ7'  ) .
        LV_SCRTEXT_L  '本年折旧-7月' .
        LO_COLUMN ->SET_LONG_TEXT LV_SCRTEXT_L  ) .
        LO_COLUMN ->SET_FIXED_HEADER_TEXT 'L'  ) .
        LO_COLUMN ->SET_VISIBLE ABAP_TRUE  ) .
        LO_COLUMN ?= LO_COLS ->GET_COLUMN 'NAFAZ8'  ) .
        LV_SCRTEXT_L  '本年折旧-8月' .
        LO_COLUMN ->SET_LONG_TEXT LV_SCRTEXT_L  ) .
        LO_COLUMN ->SET_FIXED_HEADER_TEXT 'L'  ) .
        LO_COLUMN ->SET_VISIBLE ABAP_TRUE  ) .
        LO_COLUMN ?= LO_COLS ->GET_COLUMN 'NAFAZ9'  ) .
        LV_SCRTEXT_L  '本年折旧-9月' .
        LO_COLUMN ->SET_LONG_TEXT LV_SCRTEXT_L  ) .
        LO_COLUMN ->SET_FIXED_HEADER_TEXT 'L'  ) .
        LO_COLUMN ->SET_VISIBLE ABAP_TRUE  ) .
        LO_COLUMN ?= LO_COLS ->GET_COLUMN 'NAFAZ10'  ) .
        LV_SCRTEXT_L  '本年折旧-10月' .
        LO_COLUMN ->SET_LONG_TEXT LV_SCRTEXT_L  ) .
        LO_COLUMN ->SET_FIXED_HEADER_TEXT 'L'  ) .
        LO_COLUMN ->SET_VISIBLE ABAP_TRUE  ) .
        LO_COLUMN ?= LO_COLS ->GET_COLUMN 'NAFAZ11'  ) .
        LV_SCRTEXT_L  '本年折旧-11月' .
        LO_COLUMN ->SET_LONG_TEXT LV_SCRTEXT_L  ) .
        LO_COLUMN ->SET_FIXED_HEADER_TEXT 'L'  ) .
        LO_COLUMN ->SET_VISIBLE ABAP_TRUE  ) .
        LO_COLUMN ?= LO_COLS ->GET_COLUMN 'NAFAZ12'  ) .
        LV_SCRTEXT_L  '本年折旧-12月' .
        LO_COLUMN ->SET_LONG_TEXT LV_SCRTEXT_L  ) .
        LO_COLUMN ->SET_FIXED_HEADER_TEXT 'L'  ) .
        LO_COLUMN ->SET_VISIBLE ABAP_TRUE  ) .
       CATCH CX_SALV_NOT_FOUND .                           "#EC NO_HANDLER
     ENDTRY .
*
*小计及排序设置
     DATA LR_AGGREGATIONS  TYPE  REF  TO CL_SALV_AGGREGATIONS .
    LR_AGGREGATIONS  CO_ALV ->GET_AGGREGATIONS ) .
    LR_AGGREGATIONS -> CLEAR ) .
     DATA LR_GROUPS  TYPE  REF  TO CL_SALV_SORTS  .
    LR_GROUPS  CO_ALV ->GET_SORTS .
    LR_GROUPS -> CLEAR ) .

     TRY .
        LR_AGGREGATIONS ->ADD_AGGREGATION COLUMNNAME  'YUANZ'  ) .
        LR_AGGREGATIONS ->ADD_AGGREGATION COLUMNNAME  'YUEZJ'  ) .
        LR_AGGREGATIONS ->ADD_AGGREGATION COLUMNNAME  'SNLJZ'  ) .
        LR_AGGREGATIONS ->ADD_AGGREGATION COLUMNNAME  'BLJZJ'  ) .
        LR_AGGREGATIONS ->ADD_AGGREGATION COLUMNNAME  'LJZJT'  ) .
        LR_AGGREGATIONS ->ADD_AGGREGATION COLUMNNAME  'JINGE'  ) .

*        LR_GROUPS->ADD_SORT( COLUMNNAME = 'RACCT'
*                             POSITION   = 1
*                             SUBTOTAL   = ABAP_TRUE
*                             SEQUENCE   = IF_SALV_C_SORT=>SORT_UP ).

       CATCH CX_SALV_NOT_FOUND CX_SALV_DATA_ERROR CX_SALV_EXISTING .
     ENDTRY .
   ENDMETHOD .                     "SET_COLUMNS
   METHOD HANDLE_DOUBLE_CLICK .
     CASE COLUMN .
       WHEN  OTHERS .
         READ  TABLE GT_ITAB  INTO GW_ITAB  INDEX ROW .
*        IF SY-SUBRC = 0
*对跳转屏幕数据进行整理

     ENDCASE .
    ME ->REFRESH_ALV (   ) .
   ENDMETHOD .                     "HANDLE_DOUBLE_CLICK
   METHOD HANDLE_LINK_CLICK .
     CASE COLUMN .
       WHEN  'CHECK' .
         READ  TABLE GT_ITAB  ASSIGNING <ITAB>  INDEX ROW .
         IF SY -SUBRC  0 .
*          IF <ITAB>-CHECK = 'X'.
*            <ITAB>-CHECK = ''.
**            MODIFY GT_ITAB FROM <ITAB> TRANSPORTING CHECK WHERE MBLNR = <ITAB>-MBLNR.
*          ELSE.
*            <ITAB>-CHECK = 'X'.
**            MODIFY GT_ITAB FROM <ITAB> TRANSPORTING CHECK WHERE MBLNR = <ITAB>-MBLNR.
*          ENDIF.
         ENDIF .
       WHEN  'BELNR' .
*        READ TABLE GT_SEC INTO GS_SEC INDEX ROW.
*        IF SY-SUBRC = 0.
*          SET PARAMETER ID 'BUK' FIELD GS_SEC-BUKRS.
*          SET PARAMETER ID 'GJR' FIELD GS_SEC-GJAHR.
*          SET PARAMETER ID 'BLN' FIELD GS_SEC-BELNR.
*          CALL TRANSACTION 'FB03' AND SKIP FIRST SCREEN.
*        ENDIF.
     ENDCASE .
   ENDMETHOD .                     "HANDLE_link_click
   METHOD ON_USER_COMMAND .
     DATA O_SELS  TYPE  REF  TO CL_SALV_SELECTIONS ,
          T_ROWS  TYPE SALV_T_ROW ,
          L_ROW   TYPE  LINE  OF SALV_T_ROW .
     DATA LT_DATA  TYPE  STANDARD  TABLE  OF TY_ITAB .
     DATA LS_DATA  TYPE TY_ITAB .
     DATA L_LINES  TYPE  LENGTH  3 .
     DATA L_ITEM  TYPE  LENGTH  3 .
     CASE E_SALV_FUNCTION .
       WHEN  'SALL' .
*        GW_ITAB-CHECK = 'X'.
*        MODIFY GT_ITAB FROM GW_ITAB TRANSPORTING CHECK WHERE CHECK = ''.
       WHEN  'DSAL' .
*        GW_ITAB-CHECK = ''.
*        MODIFY GT_ITAB FROM GW_ITAB TRANSPORTING CHECK WHERE CHECK = 'X'.
*      WHEN 'PRINT'.
*        PERFORM DATA_EDIT.

*      WHEN 'SALL'.
*        O_SELS = O_ALV->GET_SELECTIONS( ).
*        T_ROWS = O_SELS->GET_SELECTED_ROWS( ).
*        IF LINES( T_ROWS ) > 0.
*         READ TABLE T_ROWS INTO L_ROW INDEX 1.
*        ENDIF.
     ENDCASE .

    ME ->REFRESH_ALV (   ) .
   ENDMETHOD .                     "ON_USER_COMMAND

   METHOD REFRESH_ALV .
     DATA LO_COLS  TYPE  REF  TO CL_SALV_COLUMNS_TABLE ,
          LV_STBL  TYPE LVC_S_STBL .
    LO_COLS  O_SALV ->GET_COLUMNS ) .
    LO_COLS ->SET_OPTIMIZE ABAP_TRUE  ) .
    LV_STBL -ROW  'X' .
    LV_STBL -COL  'X' .
    O_SALV -> REFRESH S_STABLE  LV_STBL  ) .
   ENDMETHOD .                     "REFRESH_alv
ENDCLASS .                     "lcl_main_alv IMPLEMENTATION
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SAP剑客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值