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 .
<ITAB> -KNAFA = 0 - <ITAB> -KNAFA .
LOOP AT LT_ANLP WHERE BUKRS = <ITAB> -BUKRS
AND ANLN1 = <ITAB> -ANLN1
AND ANLN2 = <ITAB> -ANLN2 .
LT_ANLP -NAFAZ = 0 - LT_ANLP -NAFAZ .
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 C LENGTH 3 .
DATA L_ITEM TYPE C 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
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 .
<ITAB> -KNAFA = 0 - <ITAB> -KNAFA .
LOOP AT LT_ANLP WHERE BUKRS = <ITAB> -BUKRS
AND ANLN1 = <ITAB> -ANLN1
AND ANLN2 = <ITAB> -ANLN2 .
LT_ANLP -NAFAZ = 0 - LT_ANLP -NAFAZ .
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 C LENGTH 3 .
DATA L_ITEM TYPE C 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