科目余额表批量显示
最近做的科目余额表,实现交易货币,集团货币,本位币一个页面展示
代码如下:
*&---------------------------------------------------------------------*
*& Report ZFIR122
*&---------------------------------------------------------------------*
*&科目余额表查询
*&---------------------------------------------------------------------*
REPORT ZFIR122.
*&---------------------------------------------------------------------*
*& 包含 ZFIR092_TOP
*&---------------------------------------------------------------------*
TABLES:ACDOCA,BKPF,EKKN,VBAP,SKB1.
TYPE-POOLS:SLIS.
"定义ALV输出所需变量
DATA: S_LAYOUT TYPE SLIS_LAYOUT_ALV,
GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV.
DATA: S_LAYOUT_SUB TYPE SLIS_LAYOUT_ALV,
GT_FIELDCAT_SUB TYPE SLIS_T_FIELDCAT_ALV.
DATA: GT_RETURN LIKE BAPIRET2 OCCURS 0 WITH HEADER LINE.
DATA: U_BUDAT TYPE BUDAT.
DATA: N_BUDAT TYPE BUDAT.
DATA: Y_BUDAT TYPE BUDAT.
DATA: P_BUDAT TYPE ACDOCA-BUDAT.
TYPES: BEGIN OF GTS_DATA,
CLR TYPE CHAR4, "可以控制行颜色
RBUKRS TYPE ACDOCA-RBUKRS, "公司代码
BUTXT TYPE T001-BUTXT, "公司代码名称
GJAHR TYPE ACDOCA-GJAHR, "财年
N_MONAT TYPE BKPF-MONAT, "期间从
U_MONAT TYPE BKPF-MONAT, "期间到
TXT30 TYPE T077Z-TXT30, "科目组
RFAREA TYPE ACDOCA-RFAREA, "一级科目
RACCT TYPE ACDOCA-RACCT, "科目代码
RACMX TYPE CHAR30, "明细科目
TXT20 TYPE SKAT-TXT20, "科目名称
WAERS TYPE FINSC_001A-WAERS, "集团货币
FX_QCYE TYPE CHAR4, "方向
KSL_QCYE TYPE ACDOCA-KSL, "期初余额(集团货币)
KSL_BQJF TYPE ACDOCA-KSL, "本期借方(集团货币)
KSL_BQDF TYPE ACDOCA-KSL, "本期贷方(集团货币)
FX_BQYE TYPE CHAR4, "方向
KSL_BQYE TYPE ACDOCA-KSL, "本期余额(集团货币)
FX_LJYE TYPE CHAR4, "方向
KSL_LJYE TYPE ACDOCA-KSL, "累计余额(集团货币)
DRCRK TYPE FAGLFLEXT-DRCRK, "借方/贷方标识
TSL_QCYE TYPE ACDOCA-TSL, "期初余额(集团货币)"IT与丘 20240429
TSL_BQJF TYPE ACDOCA-TSL, "本期借方(集团货币)
TSL_BQDF TYPE ACDOCA-TSL, "本期贷方(集团货币)
TSL_BQYE TYPE ACDOCA-TSL, "本期余额(集团货币)
TSL_LJYE TYPE ACDOCA-TSL, "累计余额(集团货币)
HSL_QCYE TYPE ACDOCA-HSL, "期初余额(集团货币)
HSL_BQJF TYPE ACDOCA-HSL, "本期借方(集团货币)
HSL_BQDF TYPE ACDOCA-HSL, "本期贷方(集团货币)
HSL_BQYE TYPE ACDOCA-HSL, "本期余额(集团货币)
HSL_LJYE TYPE ACDOCA-HSL, "累计余额(集团货币)
TSLVT TYPE FAGLFLEXT-TSLVT, "交易货币金额 "IT与丘 20240429
TSL01 TYPE FAGLFLEXT-TSL01, "交易货币金额
TSL02 TYPE FAGLFLEXT-TSL02, "交易货币金额
TSL03 TYPE FAGLFLEXT-TSL03, "交易货币金额
TSL04 TYPE FAGLFLEXT-TSL04, "交易货币金额
TSL05 TYPE FAGLFLEXT-TSL05, "交易货币金额
TSL06 TYPE FAGLFLEXT-TSL06, "交易货币金额
TSL07 TYPE FAGLFLEXT-TSL07, "交易货币金额
TSL08 TYPE FAGLFLEXT-TSL08, "交易货币金额
TSL09 TYPE FAGLFLEXT-TSL09, "交易货币金额
TSL10 TYPE FAGLFLEXT-TSL10, "交易货币金额
TSL11 TYPE FAGLFLEXT-TSL11, "交易货币金额
TSL12 TYPE FAGLFLEXT-TSL12, "交易货币金额
TSL13 TYPE FAGLFLEXT-TSL13, "交易货币金额
TSL14 TYPE FAGLFLEXT-TSL14, "交易货币金额
TSL15 TYPE FAGLFLEXT-TSL15, "交易货币金额
TSL16 TYPE FAGLFLEXT-TSL16, "交易货币金额
KSLVT TYPE FAGLFLEXT-KSLVT, "集团货币金额 "IT与丘 20240429
KSL01 TYPE FAGLFLEXT-KSL01, "集团货币金额
KSL02 TYPE FAGLFLEXT-KSL02, "集团货币金额
KSL03 TYPE FAGLFLEXT-KSL03, "集团货币金额
KSL04 TYPE FAGLFLEXT-KSL04, "集团货币金额
KSL05 TYPE FAGLFLEXT-KSL05, "集团货币金额
KSL06 TYPE FAGLFLEXT-KSL06, "集团货币金额
KSL07 TYPE FAGLFLEXT-KSL07, "集团货币金额
KSL08 TYPE FAGLFLEXT-KSL08, "集团货币金额
KSL09 TYPE FAGLFLEXT-KSL09, "集团货币金额
KSL10 TYPE FAGLFLEXT-KSL10, "集团货币金额
KSL11 TYPE FAGLFLEXT-KSL11, "集团货币金额
KSL12 TYPE FAGLFLEXT-KSL12, "集团货币金额
KSL13 TYPE FAGLFLEXT-KSL13, "集团货币金额
KSL14 TYPE FAGLFLEXT-KSL14, "集团货币金额
KSL15 TYPE FAGLFLEXT-KSL15, "集团货币金额
KSL16 TYPE FAGLFLEXT-KSL16, "集团货币金额
HSLVT TYPE FAGLFLEXT-HSLVT, "集团货币金额
HSL01 TYPE FAGLFLEXT-HSL01, "集团货币金额
HSL02 TYPE FAGLFLEXT-HSL02, "集团货币金额
HSL03 TYPE FAGLFLEXT-HSL03, "集团货币金额
HSL04 TYPE FAGLFLEXT-HSL04, "集团货币金额
HSL05 TYPE FAGLFLEXT-HSL05, "集团货币金额
HSL06 TYPE FAGLFLEXT-HSL06, "集团货币金额
HSL07 TYPE FAGLFLEXT-HSL07, "集团货币金额
HSL08 TYPE FAGLFLEXT-HSL08, "集团货币金额
HSL09 TYPE FAGLFLEXT-HSL09, "集团货币金额
HSL10 TYPE FAGLFLEXT-HSL10, "集团货币金额
HSL11 TYPE FAGLFLEXT-HSL11, "集团货币金额
HSL12 TYPE FAGLFLEXT-HSL12, "集团货币金额
HSL13 TYPE FAGLFLEXT-HSL13, "集团货币金额
HSL14 TYPE FAGLFLEXT-HSL14, "集团货币金额
HSL15 TYPE FAGLFLEXT-HSL15, "集团货币金额
HSL16 TYPE FAGLFLEXT-HSL16, "集团货币金额
KSL TYPE ACDOCA-KSL, "集团货币金额
HSL TYPE ACDOCA-HSL, "集团货币金额
TSL TYPE ACDOCA-TSL, "集团货币金额
LIFNR TYPE ACDOCA-LIFNR, "供应商
KUNNR TYPE ACDOCA-KUNNR, "客户
FISCYEARPER TYPE ACDOCA-FISCYEARPER, "期间/年度
MITKZ TYPE SKB1-MITKZ, "统驭科目
KTOKS TYPE SKA1-KTOKS, "总帐科目组
A1 TYPE char4, "A1
END OF GTS_DATA.
DATA: GLAG_N TYPE C .
DATA: GLAG_E TYPE C .
DATA: GT_DATA TYPE TABLE OF GTS_DATA WITH HEADER LINE.
DATA: GT_DATA_A TYPE TABLE OF GTS_DATA WITH HEADER LINE.
DATA: GT_DATA_B TYPE TABLE OF GTS_DATA WITH HEADER LINE.
DATA: GT_DATA_C TYPE TABLE OF GTS_DATA WITH HEADER LINE.
DATA: GT_DATA_D TYPE TABLE OF GTS_DATA WITH HEADER LINE.
DATA: GT_DATA_E TYPE TABLE OF GTS_DATA WITH HEADER LINE.
DATA: GT_DATA_F TYPE TABLE OF GTS_DATA WITH HEADER LINE.
TYPES: BEGIN OF GTS_DATAMX,
RBUKRS TYPE ACDOCA-RBUKRS, "公司代码
GJAHR TYPE ACDOCA-GJAHR, "财年
BELNR TYPE ACDOCA-BELNR, "会计凭证
DOCLN TYPE ACDOCA-DOCLN, "行项目
BLART TYPE ACDOCA-BLART, "凭证类型
BUDAT TYPE ACDOCA-BUDAT, "过账日期
FISCYEARPER TYPE ACDOCA-FISCYEARPER, "年度期间
RACCT TYPE ACDOCA-RACCT, "科目
HSL TYPE ACDOCA-HSL, "本币金额
KSL TYPE ACDOCA-KSL, "集团货币金额
DRCRK TYPE ACDOCA-DRCRK, "借贷
ZUONR TYPE ACDOCA-ZUONR, "分配
SGTXT TYPE ACDOCA-SGTXT, "摘要
LIFNR TYPE ACDOCA-LIFNR, "供应商
NAMEL TYPE LFA1-NAME1, "供应商名称
KUNNR TYPE ACDOCA-KUNNR, "客户
NAMEK TYPE KNA1-NAME1, "客户名称
RCNTR TYPE ACDOCA-RCNTR, "成本中心
KTEXT TYPE CSKT-KTEXT, "成本中心名称
RFAREA TYPE ACDOCA-RFAREA, "功能范围
ANLN1 TYPE ACDOCA-ANLN1, "固定资产
TXT50 TYPE ANLA-TXT50, "资产名称
PRCTR TYPE ACDOCA-PRCTR, "利润中心
SEGMENT TYPE ACDOCA-SEGMENT, "段
WERKS TYPE ACDOCA-WERKS, "工厂
MATNR TYPE ACDOCA-MATNR, "物料
AUFNR TYPE ACDOCA-AUFNR, "内部订单
PS_POSID TYPE ACDOCA-PS_POSID, "WBS
END OF GTS_DATAMX.
DATA: GT_DATAMX TYPE TABLE OF GTS_DATAMX WITH HEADER LINE.
DATA: GT_DATAMX_A TYPE TABLE OF GTS_DATAMX WITH HEADER LINE.
DATA: GT_DATAMX_B TYPE TABLE OF GTS_DATAMX WITH HEADER LINE.
DATA: GT_DATAMX_C TYPE TABLE OF GTS_DATAMX WITH HEADER LINE.
DATA: GT_DATAMX_D TYPE TABLE OF GTS_DATAMX WITH HEADER LINE.
DATA: GT_DATAMX_E TYPE TABLE OF GTS_DATAMX WITH HEADER LINE.
DATA: GT_DATAMX_F TYPE TABLE OF GTS_DATAMX WITH HEADER LINE.
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME.
SELECT-OPTIONS: S_BUKRS FOR ACDOCA-RBUKRS MODIF ID C1 OBLIGATORY . "公司代码
PARAMETERS: P_GJAHR LIKE BKPF-GJAHR MODIF ID C1 OBLIGATORY . "财年
SELECT-OPTIONS:
S_MONAT FOR BKPF-MONAT MODIF ID C1 OBLIGATORY , "期间
S_SAKNR FOR SKB1-SAKNR MODIF ID C1 , "总账科目
S_RFAREA FOR ACDOCA-RFAREA MODIF ID C1 . "功能范围
* PARAMETERS: P_X1 RADIOBUTTON GROUP GP1 DEFAULT 'X', "集团货币
* P_X2 RADIOBUTTON GROUP GP1. "本币
SELECTION-SCREEN END OF BLOCK B1.
*&---------------------------------------------------------------------*
*& 包含 ZFIR101_CLASS
*&---------------------------------------------------------------------*
*----------------------------------------------------------------------*
* CLASS DEMO DEFINITION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
*CLASS DEMO DEFINITION.
* PUBLIC SECTION.
* CLASS-METHODS:
* MAIN.
*ENDCLASS.
*
*CLASS DEMO IMPLEMENTATION.
* METHOD MAIN.
* DATA(OUT) = CL_DEMO_OUTPUT=>NEW( ).
*
* OUT->BEGIN_SECTION( `报错信息回执`
* )->WRITE( GT_RETURN[] ).
*
* OUT->DISPLAY( ).
* ENDMETHOD.
*ENDCLASS.
*&---------------------------------------------------------------------*
*& 包含 ZFIR092_FOM
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Form FRM_EXCLUDE_OPTION
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM FRM_EXCLUDE_OPTION .
ENDFORM.
*&---------------------------------------------------------------------*
*& Form SCREEN_OUTPUT
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM SCREEN_OUTPUT .
LOOP AT SCREEN.
CASE SCREEN-GROUP1.
WHEN 'M1'.
SCREEN-INPUT = '0'.
ENDCASE.
MODIFY SCREEN.
ENDLOOP.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form SCREEN_SETTING
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM SCREEN_SETTING .
* AUTHORITY-CHECK OBJECT 'F_BKPF_BUK'
* ID 'BUKRS' FIELD P_BUKRS.
* IF SY-SUBRC <> 0.
* MESSAGE '您没有公司:'&& P_BUKRS && ' 的权限!' TYPE 'E' .
* ENDIF.
* MESSAGE I000(0K) WITH TEXT-115 SPACE SPACE SPACE.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FOM_GETDATA
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM FOM_GETDATA .
FIELD-SYMBOLS <FS> .
DATA: G_FIELD(40).
DATA: LV_NUM TYPE BKPF-MONAT .
DATA: LV_MONAT TYPE BKPF-MONAT .
DATA GV_FISCYEARPER TYPE JAHRPER .
DATA GV_FISCYEARPERH TYPE JAHRPER .
* IF P_X1 IS NOT INITIAL.
* Access logic A
* 根据科目表(KTOPL)=CP11、科目1000NR)=屏幕科目、科目组(KTOKS)不等于A900;再根据屏幕公司代码、财年(RYEAR)= 屏幕财年、
* 科目(RACCT) = 科目(SAKNR)、RLDNR = 0L、RRCTY=0、RVERS = 001,取表FAGLFLEXT的公司代码、科目、功能范围(RFAREA)、借贷(DRCRK)、
* 集团货币金额(KSLVT、KSLXX:XX表示到屏幕上限期间),再按公司代码、科目、功能范围、借贷汇总集团货币金额;再按以下逻辑赋值:
SELECT
FAGLFLEXT~RBUKRS
FAGLFLEXT~RACCT
FAGLFLEXT~RFAREA
FAGLFLEXT~DRCRK
FAGLFLEXT~TSLVT
FAGLFLEXT~TSL01
FAGLFLEXT~TSL02
FAGLFLEXT~TSL03
FAGLFLEXT~TSL04
FAGLFLEXT~TSL05
FAGLFLEXT~TSL06
FAGLFLEXT~TSL07
FAGLFLEXT~TSL08
FAGLFLEXT~TSL09
FAGLFLEXT~TSL10
FAGLFLEXT~TSL11
FAGLFLEXT~TSL12
FAGLFLEXT~TSL13
FAGLFLEXT~TSL14
FAGLFLEXT~TSL15
FAGLFLEXT~TSL16
FAGLFLEXT~HSLVT
FAGLFLEXT~HSL01
FAGLFLEXT~HSL02
FAGLFLEXT~HSL03
FAGLFLEXT~HSL04
FAGLFLEXT~HSL05
FAGLFLEXT~HSL06
FAGLFLEXT~HSL07
FAGLFLEXT~HSL08
FAGLFLEXT~HSL09
FAGLFLEXT~HSL10
FAGLFLEXT~HSL11
FAGLFLEXT~HSL12
FAGLFLEXT~HSL13
FAGLFLEXT~HSL14
FAGLFLEXT~HSL15
FAGLFLEXT~HSL16
FAGLFLEXT~KSLVT
FAGLFLEXT~KSL01
FAGLFLEXT~KSL02
FAGLFLEXT~KSL03
FAGLFLEXT~KSL04
FAGLFLEXT~KSL05
FAGLFLEXT~KSL06
FAGLFLEXT~KSL07
FAGLFLEXT~KSL08
FAGLFLEXT~KSL09
FAGLFLEXT~KSL10
FAGLFLEXT~KSL11
FAGLFLEXT~KSL12
FAGLFLEXT~KSL13
FAGLFLEXT~KSL14
FAGLFLEXT~KSL15
FAGLFLEXT~KSL16
SKA1~KTOKS
INTO CORRESPONDING FIELDS OF TABLE GT_DATA[]
FROM FAGLFLEXT
INNER JOIN SKA1 ON FAGLFLEXT~RACCT = SKA1~SAKNR
WHERE FAGLFLEXT~RYEAR = P_GJAHR
AND FAGLFLEXT~RBUKRS IN S_BUKRS
AND FAGLFLEXT~RLDNR = '0L'
AND FAGLFLEXT~RRCTY = '0'
AND FAGLFLEXT~RVERS = '001'
AND SKA1~KTOPL = '1000'
AND SKA1~KTOKS <> '900'
AND SKA1~SAKNR IN S_SAKNR
.
LOOP AT GT_DATA.
* 期初余额(集团货币):
CLEAR GT_DATA-KSL_QCYE .
GT_DATA-KSL_QCYE = GT_DATA-KSLVT .
IF S_MONAT-LOW > '01' AND S_MONAT-LOW <= '16'.
LV_MONAT = S_MONAT-LOW - 1 .
LV_NUM = '01' .
WHILE LV_NUM <= LV_MONAT .
CLEAR G_FIELD .
G_FIELD = 'GT_DATA-KSL' && LV_NUM .
ASSIGN (G_FIELD) TO <FS>.
IF <FS> IS ASSIGNED.
GT_DATA-KSL_QCYE = GT_DATA-KSL_QCYE + <FS>.
ENDIF.
UNASSIGN <FS>.
ADD 1 TO LV_NUM.
ENDWHILE.
CLEAR LV_MONAT .
ENDIF.
IF GT_DATA-DRCRK = 'S'.
* 本期借方(集团货币):
CLEAR GT_DATA-KSL_BQJF .
LV_NUM = S_MONAT-LOW .
WHILE LV_NUM <= S_MONAT-HIGH .
CLEAR G_FIELD .
G_FIELD = 'GT_DATA-KSL' && LV_NUM .
ASSIGN (G_FIELD) TO <FS>.
IF <FS> IS ASSIGNED.
GT_DATA-KSL_BQJF = GT_DATA-KSL_BQJF + <FS>.
ENDIF.
UNASSIGN <FS>.
ADD 1 TO LV_NUM.
ENDWHILE.
CLEAR LV_MONAT .
ELSEIF GT_DATA-DRCRK = 'H'.
* 本期贷方(集团货币):
CLEAR GT_DATA-KSL_BQDF .
LV_NUM = S_MONAT-LOW .
WHILE LV_NUM <= S_MONAT-HIGH .
CLEAR G_FIELD .
G_FIELD = 'GT_DATA-KSL' && LV_NUM .
ASSIGN (G_FIELD) TO <FS>.
IF <FS> IS ASSIGNED.
GT_DATA-KSL_BQDF = GT_DATA-KSL_BQDF + <FS>.
ENDIF.
UNASSIGN <FS>.
ADD 1 TO LV_NUM.
ENDWHILE.
CLEAR LV_MONAT .
ENDIF.
* 本期余额(集团货币):
CLEAR GT_DATA-KSL_BQYE .
LV_NUM = S_MONAT-LOW .
WHILE LV_NUM <= S_MONAT-HIGH .
CLEAR G_FIELD .
G_FIELD = 'GT_DATA-KSL' && LV_NUM .
ASSIGN (G_FIELD) TO <FS>.
IF <FS> IS ASSIGNED.
GT_DATA-KSL_BQYE = GT_DATA-KSL_BQYE + <FS>.
ENDIF.
UNASSIGN <FS>.
ADD 1 TO LV_NUM.
ENDWHILE.
CLEAR LV_MONAT .
* 累计余额(集团货币):
CLEAR GT_DATA-KSL_LJYE .
GT_DATA-KSL_LJYE = GT_DATA-KSLVT .
LV_NUM = '01' .
WHILE LV_NUM <= S_MONAT-HIGH .
CLEAR G_FIELD .
G_FIELD = 'GT_DATA-KSL' && LV_NUM .
ASSIGN (G_FIELD) TO <FS>.
IF <FS> IS ASSIGNED.
* GT_DATA-KSL_QCYE = GT_DATA-KSL_QCYE + <FS>.
GT_DATA-KSL_LJYE = GT_DATA-KSL_QCYE + <FS>.
ENDIF.
UNASSIGN <FS>.
ADD 1 TO LV_NUM.
ENDWHILE.
CLEAR LV_MONAT .
CLEAR GT_DATA-TSL_QCYE .
GT_DATA-TSL_QCYE = GT_DATA-TSLVT .
IF S_MONAT-LOW > '01' AND S_MONAT-LOW <= '16'.
LV_MONAT = S_MONAT-LOW - 1 .
LV_NUM = '01' .
WHILE LV_NUM <= LV_MONAT .
CLEAR G_FIELD .
G_FIELD = 'GT_DATA-TSL' && LV_NUM .
ASSIGN (G_FIELD) TO <FS>.
IF <FS> IS ASSIGNED.
GT_DATA-TSL_QCYE = GT_DATA-TSL_QCYE + <FS>.
ENDIF.
UNASSIGN <FS>.
ADD 1 TO LV_NUM.
ENDWHILE.
CLEAR LV_MONAT .
ENDIF.
IF GT_DATA-DRCRK = 'S'.
* 本期借方(集团货币):
CLEAR GT_DATA-TSL_BQJF .
LV_NUM = S_MONAT-LOW .
WHILE LV_NUM <= S_MONAT-HIGH .
CLEAR G_FIELD .
G_FIELD = 'GT_DATA-TSL' && LV_NUM .
ASSIGN (G_FIELD) TO <FS>.
IF <FS> IS ASSIGNED.
GT_DATA-TSL_BQJF = GT_DATA-TSL_BQJF + <FS>.
ENDIF.
UNASSIGN <FS>.
ADD 1 TO LV_NUM.
ENDWHILE.
CLEAR LV_MONAT .
ELSEIF GT_DATA-DRCRK = 'H'.
* 本期贷方(集团货币):
CLEAR GT_DATA-TSL_BQDF .
LV_NUM = S_MONAT-LOW .
WHILE LV_NUM <= S_MONAT-HIGH .
CLEAR G_FIELD .
G_FIELD = 'GT_DATA-TSL' && LV_NUM .
ASSIGN (G_FIELD) TO <FS>.
IF <FS> IS ASSIGNED.
GT_DATA-TSL_BQDF = GT_DATA-TSL_BQDF + <FS>.
ENDIF.
UNASSIGN <FS>.
ADD 1 TO LV_NUM.
ENDWHILE.
CLEAR LV_MONAT .
ENDIF.
* 本期余额(集团货币):
CLEAR GT_DATA-TSL_BQYE .
LV_NUM = S_MONAT-LOW .
WHILE LV_NUM <= S_MONAT-HIGH .
CLEAR G_FIELD .
G_FIELD = 'GT_DATA-TSL' && LV_NUM .
ASSIGN (G_FIELD) TO <FS>.
IF <FS> IS ASSIGNED.
GT_DATA-TSL_BQYE = GT_DATA-TSL_BQYE + <FS>.
ENDIF.
UNASSIGN <FS>.
ADD 1 TO LV_NUM.
ENDWHILE.
CLEAR LV_MONAT .
* 累计余额(集团货币):
CLEAR GT_DATA-TSL_LJYE .
GT_DATA-TSL_LJYE = GT_DATA-TSLVT .
LV_NUM = '01' .
WHILE LV_NUM <= S_MONAT-HIGH .
CLEAR G_FIELD .
G_FIELD = 'GT_DATA-TSL' && LV_NUM .
ASSIGN (G_FIELD) TO <FS>.
IF <FS> IS ASSIGNED.
* GT_DATA-TSL_QCYE = GT_DATA-TSL_QCYE + <FS>.
GT_DATA-TSL_LJYE = GT_DATA-TSL_QCYE + <FS>.
ENDIF.
UNASSIGN <FS>.
ADD 1 TO LV_NUM.
ENDWHILE.
CLEAR LV_MONAT .
CLEAR GT_DATA-HSL_QCYE .
GT_DATA-HSL_QCYE = GT_DATA-HSLVT .
IF S_MONAT-LOW > '01' AND S_MONAT-LOW <= '16'.
LV_MONAT = S_MONAT-LOW - 1 .
LV_NUM = '01' .
WHILE LV_NUM <= LV_MONAT .
CLEAR G_FIELD .
G_FIELD = 'GT_DATA-HSL' && LV_NUM .
ASSIGN (G_FIELD) TO <FS>.
IF <FS> IS ASSIGNED.
GT_DATA-HSL_QCYE = GT_DATA-HSL_QCYE + <FS>.
ENDIF.
UNASSIGN <FS>.
ADD 1 TO LV_NUM.
ENDWHILE.
CLEAR LV_MONAT .
ENDIF.
IF GT_DATA-DRCRK = 'S'.
* 本期借方(集团货币):
CLEAR GT_DATA-HSL_BQJF .
LV_NUM = S_MONAT-LOW .
WHILE LV_NUM <= S_MONAT-HIGH .
CLEAR G_FIELD .
G_FIELD = 'GT_DATA-HSL' && LV_NUM .
ASSIGN (G_FIELD) TO <FS>.
IF <FS> IS ASSIGNED.
GT_DATA-HSL_BQJF = GT_DATA-HSL_BQJF + <FS>.
ENDIF.
UNASSIGN <FS>.
ADD 1 TO LV_NUM.
ENDWHILE.
CLEAR LV_MONAT .
ELSEIF GT_DATA-DRCRK = 'H'.
* 本期贷方(集团货币):
CLEAR GT_DATA-HSL_BQDF .
LV_NUM = S_MONAT-LOW .
WHILE LV_NUM <= S_MONAT-HIGH .
CLEAR G_FIELD .
G_FIELD = 'GT_DATA-HSL' && LV_NUM .
ASSIGN (G_FIELD) TO <FS>.
IF <FS> IS ASSIGNED.
GT_DATA-HSL_BQDF = GT_DATA-HSL_BQDF + <FS>.
ENDIF.
UNASSIGN <FS>.
ADD 1 TO LV_NUM.
ENDWHILE.
CLEAR LV_MONAT .
ENDIF.
* 本期余额(集团货币):
CLEAR GT_DATA-HSL_BQYE .
LV_NUM = S_MONAT-LOW .
WHILE LV_NUM <= S_MONAT-HIGH .
CLEAR G_FIELD .
G_FIELD = 'GT_DATA-HSL' && LV_NUM .
ASSIGN (G_FIELD) TO <FS>.
IF <FS> IS ASSIGNED.
GT_DATA-HSL_BQYE = GT_DATA-HSL_BQYE + <FS>.
ENDIF.
UNASSIGN <FS>.
ADD 1 TO LV_NUM.
ENDWHILE.
CLEAR LV_MONAT .
* 累计余额(集团货币):
CLEAR GT_DATA-HSL_LJYE .
GT_DATA-HSL_LJYE = GT_DATA-HSLVT .
LV_NUM = '01' .
WHILE LV_NUM <= S_MONAT-HIGH .
CLEAR G_FIELD .
G_FIELD = 'GT_DATA-HSL' && LV_NUM .
ASSIGN (G_FIELD) TO <FS>.
IF <FS> IS ASSIGNED.
* GT_DATA-HSL_QCYE = GT_DATA-HSL_QCYE + <FS>.
GT_DATA-HSL_LJYE = GT_DATA-HSL_QCYE + <FS>.
ENDIF.
UNASSIGN <FS>.
ADD 1 TO LV_NUM.
ENDWHILE.
CLEAR LV_MONAT .
MODIFY GT_DATA .
CLEAR GT_DATA .
ENDLOOP.
GT_DATA_A[] = GT_DATA[] .
SORT GT_DATA_A[] BY RACCT .
DELETE ADJACENT DUPLICATES FROM GT_DATA_A[] COMPARING RACCT.
IF GT_DATA[] IS NOT INITIAL.
LOOP AT GT_DATA_A.
CLEAR GT_DATA_A-KSL_QCYE .
CLEAR GT_DATA_A-KSL_BQJF .
CLEAR GT_DATA_A-KSL_BQDF .
CLEAR GT_DATA_A-KSL_BQYE .
CLEAR GT_DATA_A-KSL_LJYE .
CLEAR GT_DATA_A-TSL_QCYE .
CLEAR GT_DATA_A-TSL_BQJF .
CLEAR GT_DATA_A-TSL_BQDF .
CLEAR GT_DATA_A-TSL_BQYE .
CLEAR GT_DATA_A-TSL_LJYE .
CLEAR GT_DATA_A-HSL_QCYE .
CLEAR GT_DATA_A-HSL_BQJF .
CLEAR GT_DATA_A-HSL_BQDF .
CLEAR GT_DATA_A-HSL_BQYE .
CLEAR GT_DATA_A-HSL_LJYE .
LOOP AT GT_DATA WHERE RACCT = GT_DATA_A-RACCT.
GT_DATA_A-KSL_QCYE = GT_DATA_A-KSL_QCYE + GT_DATA-KSL_QCYE .
GT_DATA_A-KSL_BQJF = GT_DATA_A-KSL_BQJF + GT_DATA-KSL_BQJF .
GT_DATA_A-KSL_BQDF = GT_DATA_A-KSL_BQDF + GT_DATA-KSL_BQDF .
GT_DATA_A-KSL_BQYE = GT_DATA_A-KSL_BQYE + GT_DATA-KSL_BQYE .
GT_DATA_A-KSL_LJYE = GT_DATA_A-KSL_LJYE + GT_DATA-KSL_LJYE .
GT_DATA_A-HSL_QCYE = GT_DATA_A-HSL_QCYE + GT_DATA-HSL_QCYE .
GT_DATA_A-HSL_BQJF = GT_DATA_A-HSL_BQJF + GT_DATA-HSL_BQJF .
GT_DATA_A-HSL_BQDF = GT_DATA_A-HSL_BQDF + GT_DATA-HSL_BQDF .
GT_DATA_A-HSL_BQYE = GT_DATA_A-HSL_BQYE + GT_DATA-HSL_BQYE .
GT_DATA_A-HSL_LJYE = GT_DATA_A-HSL_LJYE + GT_DATA-HSL_LJYE .
GT_DATA_A-TSL_QCYE = GT_DATA_A-TSL_QCYE + GT_DATA-TSL_QCYE .
GT_DATA_A-TSL_BQJF = GT_DATA_A-TSL_BQJF + GT_DATA-TSL_BQJF .
GT_DATA_A-TSL_BQDF = GT_DATA_A-TSL_BQDF + GT_DATA-TSL_BQDF .
GT_DATA_A-TSL_BQYE = GT_DATA_A-TSL_BQYE + GT_DATA-TSL_BQYE .
GT_DATA_A-TSL_LJYE = GT_DATA_A-TSL_LJYE + GT_DATA-TSL_LJYE .
CLEAR GT_DATA .
ENDLOOP.
* IF GT_DATA_A-KSL_QCYE > 0.
* GT_DATA_A-FX_QCYE = '借'.
* ELSEIF GT_DATA_A-KSL_QCYE < 0.
* GT_DATA_A-KSL_QCYE = GT_DATA_A-KSL_QCYE * -1 .
* GT_DATA_A-FX_QCYE = '贷'.
* ELSE.
* GT_DATA_A-FX_QCYE = '平'.
* ENDIF.
*
* IF GT_DATA_A-KSL_BQYE > 0.
* GT_DATA_A-FX_BQYE = '借'.
* ELSEIF GT_DATA_A-KSL_BQYE < 0.
* GT_DATA_A-KSL_BQYE = GT_DATA_A-KSL_BQYE * -1 .
* GT_DATA_A-FX_BQYE = '贷'.
* ELSE.
* GT_DATA_A-FX_BQYE = '平'.
* ENDIF.
*
* IF GT_DATA_A-KSL_LJYE > 0.
* GT_DATA_A-FX_LJYE = '借'.
* ELSEIF GT_DATA_A-KSL_LJYE < 0.
* GT_DATA_A-KSL_LJYE = GT_DATA_A-KSL_LJYE * -1 .
* GT_DATA_A-FX_LJYE = '贷'.
* ELSE.
* GT_DATA_A-FX_LJYE = '平'.
* ENDIF.
MODIFY GT_DATA_A .
CLEAR GT_DATA_A .
ENDLOOP.
ENDIF.
* Access logic B
* 根据公司代码、科目代码查询表SKB1,如果统驭科目(MITKZ)等于D、K,则继续取其明细的往来数据,列在该科目代码下:
* 根据条目的公司代码、FISCYEARPER 小于等于 财年+上限期间(三位)、科目(RACCT)、RLDNR = 0L、RRCTY=0,
* 取表ACDOCA的公司代码、科目、借贷(DRCRK)、集团货币金额(KSL)、供应商(LIFNR)、客户(KUNNR),再按公司代码、科目;再按以下逻辑赋值:统驭科目等于D的:
CLEAR GV_FISCYEARPER .
GV_FISCYEARPER = P_GJAHR && '0' && S_MONAT-HIGH .
SELECT
ACDOCA~RBUKRS
ACDOCA~RACCT
ACDOCA~DRCRK
ACDOCA~KSL
ACDOCA~TSL "IT与丘 20240430
ACDOCA~HSL
ACDOCA~LIFNR
ACDOCA~KUNNR
ACDOCA~FISCYEARPER
SKB1~MITKZ
INTO CORRESPONDING FIELDS OF TABLE GT_DATA_B[]
FROM ACDOCA
INNER JOIN SKB1 ON ACDOCA~RACCT = SKB1~SAKNR AND ACDOCA~RBUKRS = SKB1~BUKRS
WHERE ACDOCA~RBUKRS IN S_BUKRS
AND ACDOCA~RLDNR = '0L'
AND ACDOCA~RRCTY = '0'
AND ACDOCA~BLART <> ''
AND SKB1~MITKZ IN ('D','K')
AND ACDOCA~FISCYEARPER <= GV_FISCYEARPER
AND SKB1~SAKNR IN S_SAKNR
.
GT_DATA_C[] = GT_DATA_B[] .
SORT GT_DATA_C[] BY RACCT KUNNR LIFNR.
DELETE ADJACENT DUPLICATES FROM GT_DATA_C[] COMPARING RACCT KUNNR LIFNR.
LOOP AT GT_DATA_C.
CLEAR GT_DATA_C-KSL_QCYE .
CLEAR GT_DATA_C-KSL_BQJF .
CLEAR GT_DATA_C-KSL_BQDF .
CLEAR GT_DATA_C-KSL_BQYE .
CLEAR GT_DATA_C-KSL_LJYE .
CLEAR GT_DATA_A-TSL_QCYE .
CLEAR GT_DATA_A-TSL_BQJF .
CLEAR GT_DATA_A-TSL_BQDF .
CLEAR GT_DATA_A-TSL_BQYE .
CLEAR GT_DATA_A-TSL_LJYE .
CLEAR GT_DATA_A-HSL_QCYE .
CLEAR GT_DATA_A-HSL_BQJF .
CLEAR GT_DATA_A-HSL_BQDF .
CLEAR GT_DATA_A-HSL_BQYE .
CLEAR GT_DATA_A-HSL_LJYE .
LOOP AT GT_DATA_B WHERE RACCT = GT_DATA_C-RACCT .
IF ( GT_DATA_C-MITKZ = 'D' AND GT_DATA_C-KUNNR = GT_DATA_B-KUNNR )
OR ( GT_DATA_C-MITKZ = 'K' AND GT_DATA_C-LIFNR = GT_DATA_B-LIFNR ).
* 期初余额(集团货币):
CLEAR LV_MONAT .
LV_MONAT = S_MONAT-LOW - 1 .
CLEAR GV_FISCYEARPER .
GV_FISCYEARPER = P_GJAHR && '0' && S_MONAT-LOW .
IF GT_DATA_B-FISCYEARPER <= GV_FISCYEARPER.
GT_DATA_C-KSL_QCYE = GT_DATA_C-KSL_QCYE + GT_DATA_B-KSL .
ENDIF.
* 本期借方(集团货币):& 本期贷方(集团货币):& 本期余额(集团货币):
CLEAR GV_FISCYEARPER .
GV_FISCYEARPER = P_GJAHR && '0' && S_MONAT-LOW .
CLEAR GV_FISCYEARPERH .
GV_FISCYEARPERH = P_GJAHR && '0' && S_MONAT-HIGH .
IF GT_DATA_B-FISCYEARPER >= GV_FISCYEARPER AND GT_DATA_B-FISCYEARPER <= GV_FISCYEARPERH.
IF GT_DATA_B-DRCRK = 'S'.
GT_DATA_C-KSL_BQJF = GT_DATA_C-KSL_BQJF + GT_DATA_B-KSL .
ELSEIF GT_DATA_B-DRCRK = 'H'.
GT_DATA_C-KSL_BQDF = GT_DATA_C-KSL_BQDF + GT_DATA_B-KSL .
ENDIF.
GT_DATA_C-KSL_BQYE = GT_DATA_C-KSL_BQYE + GT_DATA_B-KSL .
ENDIF.
* 累计余额(集团货币):
CLEAR GV_FISCYEARPERH .
GV_FISCYEARPERH = P_GJAHR && '0' && S_MONAT-HIGH .
IF GT_DATA_B-FISCYEARPER <= GV_FISCYEARPERH.
GT_DATA_C-KSL_LJYE = GT_DATA_C-KSL_LJYE + GT_DATA_B-KSL .
ENDIF.
************************ 8888
* * 期初余额(集团货币):
CLEAR LV_MONAT .
LV_MONAT = S_MONAT-LOW - 1 .
CLEAR GV_FISCYEARPER .
GV_FISCYEARPER = P_GJAHR && '0' && S_MONAT-LOW .
IF GT_DATA_B-FISCYEARPER <= GV_FISCYEARPER.
GT_DATA_C-TSL_QCYE = GT_DATA_C-TSL_QCYE + GT_DATA_B-TSL .
ENDIF.
* 本期借方(集团货币):& 本期贷方(集团货币):& 本期余额(集团货币):
CLEAR GV_FISCYEARPER .
GV_FISCYEARPER = P_GJAHR && '0' && S_MONAT-LOW .
CLEAR GV_FISCYEARPERH .
GV_FISCYEARPERH = P_GJAHR && '0' && S_MONAT-HIGH .
IF GT_DATA_B-FISCYEARPER >= GV_FISCYEARPER AND GT_DATA_B-FISCYEARPER <= GV_FISCYEARPERH.
IF GT_DATA_B-DRCRK = 'S'.
GT_DATA_C-TSL_BQJF = GT_DATA_C-TSL_BQJF + GT_DATA_B-TSL .
ELSEIF GT_DATA_B-DRCRK = 'H'.
GT_DATA_C-TSL_BQDF = GT_DATA_C-TSL_BQDF + GT_DATA_B-TSL .
ENDIF.
GT_DATA_C-TSL_BQYE = GT_DATA_C-TSL_BQYE + GT_DATA_B-TSL .
ENDIF.
* 累计余额(集团货币):
CLEAR GV_FISCYEARPERH .
GV_FISCYEARPERH = P_GJAHR && '0' && S_MONAT-HIGH .
IF GT_DATA_B-FISCYEARPER <= GV_FISCYEARPERH.
GT_DATA_C-TSL_LJYE = GT_DATA_C-TSL_LJYE + GT_DATA_B-TSL .
ENDIF.
*************
* * 期初余额(集团货币):
CLEAR LV_MONAT .
LV_MONAT = S_MONAT-LOW - 1 .
CLEAR GV_FISCYEARPER .
GV_FISCYEARPER = P_GJAHR && '0' && S_MONAT-LOW .
IF GT_DATA_B-FISCYEARPER <= GV_FISCYEARPER.
GT_DATA_C-HSL_QCYE = GT_DATA_C-HSL_QCYE + GT_DATA_B-HSL .
ENDIF.
* 本期借方(集团货币):& 本期贷方(集团货币):& 本期余额(集团货币):
CLEAR GV_FISCYEARPER .
GV_FISCYEARPER = P_GJAHR && '0' && S_MONAT-LOW .
CLEAR GV_FISCYEARPERH .
GV_FISCYEARPERH = P_GJAHR && '0' && S_MONAT-HIGH .
IF GT_DATA_B-FISCYEARPER >= GV_FISCYEARPER AND GT_DATA_B-FISCYEARPER <= GV_FISCYEARPERH.
IF GT_DATA_B-DRCRK = 'S'.
GT_DATA_C-HSL_BQJF = GT_DATA_C-HSL_BQJF + GT_DATA_B-HSL .
ELSEIF GT_DATA_B-DRCRK = 'H'.
GT_DATA_C-HSL_BQDF = GT_DATA_C-HSL_BQDF + GT_DATA_B-HSL .
ENDIF.
GT_DATA_C-HSL_BQYE = GT_DATA_C-HSL_BQYE + GT_DATA_B-HSL .
ENDIF.
* 累计余额(集团货币):
CLEAR GV_FISCYEARPERH .
GV_FISCYEARPERH = P_GJAHR && '0' && S_MONAT-HIGH .
IF GT_DATA_B-FISCYEARPER <= GV_FISCYEARPERH.
GT_DATA_C-HSL_LJYE = GT_DATA_C-HSL_LJYE + GT_DATA_B-HSL .
ENDIF.
ENDIF.
* ENDIF.
CLEAR GT_DATA_B .
ENDLOOP.
* IF GT_DATA_C-KSL_QCYE > 0.
* GT_DATA_C-FX_QCYE = '借'.
* ELSEIF GT_DATA_C-KSL_QCYE < 0.
* GT_DATA_C-KSL_QCYE = GT_DATA_C-KSL_QCYE * -1 .
* GT_DATA_C-FX_QCYE = '贷'.
* ELSE.
* GT_DATA_C-FX_QCYE = '平'.
* ENDIF.
*
* IF GT_DATA_C-KSL_BQYE > 0.
* GT_DATA_C-FX_BQYE = '借'.
* ELSEIF GT_DATA_C-KSL_BQYE < 0.
* GT_DATA_C-KSL_BQYE = GT_DATA_C-KSL_BQYE * -1 .
* GT_DATA_C-FX_BQYE = '贷'.
* ELSE.
* GT_DATA_C-FX_BQYE = '平'.
* ENDIF.
*
* IF GT_DATA_C-KSL_LJYE > 0.
* GT_DATA_C-FX_LJYE = '借'.
* ELSEIF GT_DATA_C-KSL_LJYE < 0.
* GT_DATA_C-KSL_LJYE = GT_DATA_C-KSL_LJYE * -1 .
* GT_DATA_C-FX_LJYE = '贷'.
* ELSE.
* GT_DATA_C-FX_LJYE = '平'.
* ENDIF.
MODIFY GT_DATA_C .
CLEAR GT_DATA_C .
ENDLOOP.
APPEND LINES OF GT_DATA_C[] TO GT_DATA_A[] .
* ENDIF.
RANGES:R_RACCT FOR ACDOCA-RACCT .
CLEAR R_RACCT[].
R_RACCT-SIGN = 'I'.
R_RACCT-OPTION = 'BT'.
R_RACCT-LOW = '6600000000'.
R_RACCT-HIGH = '6600999999'.
APPEND R_RACCT .
DATA GV_FKBTX TYPE FKBTX .
DATA GV_TXT20 TYPE TXT20 .
LOOP AT GT_DATA_A.
SELECT SINGLE BUTXT INTO GT_DATA_A-BUTXT FROM T001
WHERE BUKRS = GT_DATA_A-RBUKRS
.
GT_DATA_A-GJAHR = P_GJAHR .
GT_DATA_A-N_MONAT = S_MONAT-LOW .
GT_DATA_A-U_MONAT = S_MONAT-HIGH .
IF GT_DATA_A-RACCT NOT IN R_RACCT.
GT_DATA_A-RFAREA = GT_DATA_A-RACCT(4).
ENDIF.
IF GT_DATA_A-MITKZ = 'D'.
GT_DATA_A-RACMX = GT_DATA_A-RACCT && GT_DATA_A-KUNNR .
SELECT SINGLE NAME1 INTO GT_DATA_A-TXT20 FROM KNA1
WHERE KUNNR = GT_DATA_A-KUNNR
.
ELSEIF GT_DATA_A-MITKZ = 'K'.
GT_DATA_A-RACMX = GT_DATA_A-RACCT && GT_DATA_A-LIFNR .
SELECT SINGLE NAME1 INTO GT_DATA_A-TXT20 FROM LFA1
WHERE LIFNR = GT_DATA_A-LIFNR
.
ELSE.
CLEAR GV_FKBTX .
CLEAR GV_TXT20 .
SELECT SINGLE FKBTX INTO GV_FKBTX FROM TFKBT
WHERE SPRAS = 1
AND FKBER = GT_DATA_A-RFAREA
.
SELECT SINGLE TXT20 INTO GV_TXT20 FROM SKAT
WHERE SPRAS = 1
AND KTOPL = '1000'
AND SAKNR = GT_DATA_A-RACCT
.
GT_DATA_A-TXT20 = GV_FKBTX && GV_TXT20 .
* GT_DATA_A-CLR = 'C700' .
ENDIF.
IF GT_DATA_A-KTOKS IS INITIAL.
SELECT SINGLE KTOKS INTO GT_DATA_A-KTOKS FROM SKA1
WHERE SAKNR = GT_DATA_A-RACCT
.
ENDIF.
SELECT SINGLE TXT30 INTO GT_DATA_A-TXT30 FROM T077Z
WHERE SPRAS = 1
AND KTOPL = '1000'
AND KTOKS = GT_DATA_A-KTOKS
.
* IF P_X1 IS NOT INITIAL.
* SELECT SINGLE WAERS INTO GT_DATA_A-WAERS FROM FINSC_001A
* WHERE BUKRS = GT_DATA_A-RBUKRS
* AND CURTYPE = 30
* .
* ELSE.
* SELECT SINGLE WAERS INTO GT_DATA_A-WAERS FROM T001
* WHERE BUKRS = GT_DATA_A-RBUKRS
* .
* ENDIF.
MODIFY GT_DATA_A .
CLEAR GT_DATA_A .
ENDLOOP.
* GT_DATA_D[] = GT_DATA_A[] .
* DELETE GT_DATA_D[] WHERE MITKZ IS NOT INITIAL .
* GT_DATA_E[] = GT_DATA_D[] .
* SORT GT_DATA_D[] BY RFAREA .
* DELETE ADJACENT DUPLICATES FROM GT_DATA_D[] COMPARING RFAREA.
*
** RBUKRS TYPE ACDOCA-RBUKRS, "公司代码
** BUTXT TYPE T001-BUTXT, "公司代码名称
** GJAHR TYPE ACDOCA-GJAHR, "财年
** N_MONAT TYPE BKPF-MONAT, "期间从
** U_MONAT TYPE BKPF-MONAT, "期间到
** TXT30 TYPE T077Z-TXT30, "科目组
** RFAREA TYPE ACDOCA-RFAREA, "一级科目
** RACCT TYPE ACDOCA-RACCT, "科目代码
** RACMX TYPE CHAR30, "明细科目
** TXT20 TYPE SKAT-TXT20, "科目名称
** WAERS TYPE FINSC_001A-WAERS, "集团货币
** FX_QCYE TYPE CHAR4, "方向
** KSL_QCYE TYPE ACDOCA-KSL, "期初余额(集团货币)
** KSL_BQJF TYPE ACDOCA-KSL, "本期借方(集团货币)
** KSL_BQDF TYPE ACDOCA-KSL, "本期贷方(集团货币)
** FX_BQYE TYPE CHAR4, "方向
** KSL_BQYE TYPE ACDOCA-KSL, "本期余额(集团货币)
** FX_LJYE TYPE CHAR4, "方向
** KSL_LJYE TYPE ACDOCA-KSL, "累计余额(集团货币)
*
* LOOP AT GT_DATA_D.
* CLEAR GT_DATA_D-KSL_QCYE .
* CLEAR GT_DATA_D-KSL_BQJF .
* CLEAR GT_DATA_D-KSL_BQDF .
* CLEAR GT_DATA_D-KSL_BQYE .
* CLEAR GT_DATA_D-KSL_LJYE .
*
* CLEAR GT_DATA_D-TXT30 .
* CLEAR GT_DATA_D-RACCT .
* CLEAR GT_DATA_D-RACMX .
* LOOP AT GT_DATA_E WHERE RFAREA = GT_DATA_D-RFAREA.
* GT_DATA_D-KSL_QCYE = GT_DATA_D-KSL_QCYE + GT_DATA_E-KSL_QCYE .
* GT_DATA_D-KSL_BQJF = GT_DATA_D-KSL_BQJF + GT_DATA_E-KSL_BQJF .
* GT_DATA_D-KSL_BQDF = GT_DATA_D-KSL_BQDF + GT_DATA_E-KSL_BQDF .
* GT_DATA_D-KSL_BQYE = GT_DATA_D-KSL_BQYE + GT_DATA_E-KSL_BQYE .
* GT_DATA_D-KSL_LJYE = GT_DATA_D-KSL_LJYE + GT_DATA_E-KSL_LJYE .
* CLEAR GT_DATA_E .
* ENDLOOP.
*
* SPLIT GT_DATA_D-TXT20 AT '-' INTO GT_DATA_D-TXT20 GV_TXT20 .
** IF GT_DATA_D-KSL_QCYE > 0.
** GT_DATA_D-FX_QCYE = '借'.
** ELSEIF GT_DATA_D-KSL_QCYE < 0.
** GT_DATA_D-KSL_QCYE = GT_DATA_D-KSL_QCYE * -1 .
** GT_DATA_D-FX_QCYE = '贷'.
** ELSE.
** GT_DATA_D-FX_QCYE = '平'.
** ENDIF.
**
** IF GT_DATA_D-KSL_BQYE > 0.
** GT_DATA_D-FX_BQYE = '借'.
** ELSEIF GT_DATA_D-KSL_BQYE < 0.
** GT_DATA_D-KSL_BQYE = GT_DATA_D-KSL_BQYE * -1 .
** GT_DATA_D-FX_BQYE = '贷'.
** ELSE.
** GT_DATA_D-FX_BQYE = '平'.
** ENDIF.
**
** IF GT_DATA_D-KSL_LJYE > 0.
** GT_DATA_D-FX_LJYE = '借'.
** ELSEIF GT_DATA_D-KSL_LJYE < 0.
** GT_DATA_D-KSL_LJYE = GT_DATA_D-KSL_LJYE * -1 .
** GT_DATA_D-FX_LJYE = '贷'.
** ELSE.
** GT_DATA_D-FX_LJYE = '平'.
** ENDIF.
* GT_DATA_D-CLR = 'C700' .
* GT_DATA_D-A1 = GT_DATA_D-RACCT(4) .
* MODIFY GT_DATA_D .
* CLEAR GT_DATA_D .
* ENDLOOP.
** SORT GT_DATA_A[] BY A1 RFAREA .
* APPEND LINES OF GT_DATA_D[] TO GT_DATA_A[] .
* LOOP AT GT_DATA_A.
* IF GT_DATA_A-KSL_QCYE > 0.
* GT_DATA_A-FX_QCYE = '借'.
* ELSEIF GT_DATA_A-KSL_QCYE < 0.
* GT_DATA_A-KSL_QCYE = GT_DATA_A-KSL_QCYE * -1 .
* GT_DATA_A-FX_QCYE = '贷'.
* ELSE.
* GT_DATA_A-FX_QCYE = '平'.
* ENDIF.
*
* IF GT_DATA_A-KSL_BQYE > 0.
* GT_DATA_A-FX_BQYE = '借'.
* ELSEIF GT_DATA_A-KSL_BQYE < 0.
* GT_DATA_A-KSL_BQYE = GT_DATA_A-KSL_BQYE * -1 .
* GT_DATA_A-FX_BQYE = '贷'.
* ELSE.
* GT_DATA_A-FX_BQYE = '平'.
* ENDIF.
*
* IF GT_DATA_A-KSL_LJYE > 0.
* GT_DATA_A-FX_LJYE = '借'.
* ELSEIF GT_DATA_A-KSL_LJYE < 0.
* GT_DATA_A-KSL_LJYE = GT_DATA_A-KSL_LJYE * -1 .
* GT_DATA_A-FX_LJYE = '贷'.
* ELSE.
* GT_DATA_A-FX_LJYE = '平'.
* ENDIF.
*
* MODIFY GT_DATA_A .
* CLEAR GT_DATA_A .
* ENDLOOP.
SORT GT_DATA_A[] BY RFAREA CLR A1 RFAREA .
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_DISPLAY
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM FRM_DISPLAY .
CLEAR S_LAYOUT.
S_LAYOUT-ZEBRA = 'X'.
S_LAYOUT-COLWIDTH_OPTIMIZE = 'X'.
S_LAYOUT-INFO_FIELDNAME = 'CLR'. "行颜色代码的字段
* s_layout-box_fieldname = 'BOX'.
PERFORM FRM_FILL_FIELD .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
IS_LAYOUT = S_LAYOUT
IT_FIELDCAT = GT_FIELDCAT
I_CALLBACK_PROGRAM = SY-REPID
I_CALLBACK_PF_STATUS_SET = 'PF_STATUS_SET'
* i_callback_html_top_of_page = 'HTML_TOP_OF_PAGE'
I_CALLBACK_USER_COMMAND = 'USER_COMMAND'
TABLES
T_OUTTAB = GT_DATA_A[].
ENDFORM.
FORM FRM_FILL_FIELD .
DATA: WA_FIELDCAT TYPE SLIS_FIELDCAT_ALV.
DEFINE FILL_FIELD.
wa_fieldcat-fieldname = &1.
wa_fieldcat-seltext_l = &2.
* IF wa_fieldcat-fieldname = 'MSLJH' or wa_fieldcat-fieldname = 'WCBJH'.
* wa_fieldcat-EMPHASIZE = 'C600'. "设置字段的颜色
* ENDIF.
*
* IF wa_fieldcat-fieldname = 'MSLMB' or wa_fieldcat-fieldname = 'WCBMB'.
* wa_fieldcat-EMPHASIZE = 'C710'. "设置字段的颜色
* ENDIF.
IF wa_fieldcat-fieldname = 'PLNBEZ' OR wa_fieldcat-fieldname = 'MATNR' .
wa_fieldcat-ref_tabname = 'MARA'.
wa_fieldcat-ref_fieldname = 'MATNR'.
ENDIF.
IF wa_fieldcat-fieldname = 'ARKTX' OR wa_fieldcat-fieldname = 'WAKTX' .
wa_fieldcat-ref_tabname = 'VBAP'.
wa_fieldcat-ref_fieldname = 'ARKTX'.
ENDIF.
IF wa_fieldcat-fieldname = 'AUFNR' .
wa_fieldcat-ref_tabname = 'AUFK'.
wa_fieldcat-ref_fieldname = 'AUFNR'.
ENDIF.
APPEND wa_fieldcat TO gt_fieldcat.
CLEAR wa_fieldcat.
END-OF-DEFINITION.
FILL_FIELD :
* 'RBUKRS' '公司代码',
* 'BUTXT' '公司代码名称',
'GJAHR' '财年',
'N_MONAT' '期间从',
'U_MONAT' '期间到',
'TXT30' '科目组',
'RFAREA' '一级科目',
'RACCT' '科目代码',
'RACMX' '明细科目',
'TXT20' '科目名称',
'WAERS' '集团货币',
* 'FX_QCYE' '方向',
'KSL_QCYE' '期初余额(集团货币)',
'KSL_BQJF' '本期借方(集团货币)',
'KSL_BQDF' '本期贷方(集团货币)',
* 'FX_BQYE' '方向',
* 'KSL_BQYE' '本期余额(集团货币)',
** 'FX_LJYE' '方向',
* 'KSL_LJYE' '累计余额(集团货币)',
'KSL_LJYE' '本期余额(集团货币)',
'KSL_BQYE' '累计余额(集团货币)',
* 'FX_LJYE' '方向',
'TSL_QCYE' '期初余额(凭证货币)',
'TSL_BQJF' '本期借方(凭证货币)',
'TSL_BQDF' '本期贷方(凭证货币)',
'TSL_LJYE' '本期余额(凭证货币)',
'TSL_BQYE' '累计余额(凭证货币)',
* 'KSL_QCYE' '期初余额(集团货币)',
* 'KSL_BQJF' '本期借方(集团货币)',
* 'KSL_BQDF' '本期贷方(集团货币)',
** 'FX_BQYE' '方向',
* 'KSL_BQYE' '本期余额(集团货币)',
** 'FX_LJYE' '方向',
* 'KSL_LJYE' '累计余额(集团货币)',
'HSL_QCYE' '期初余额(本位币)',
'HSL_BQJF' '本期借方(本位币)',
'HSL_BQDF' '本期贷方(本位币)',
'HSL_LJYE' '本期余额(本位币)',
'HSL_BQYE' '累计余额(本位币)'.
ENDFORM.
FORM PF_STATUS_SET USING RT_EXTAB TYPE SLIS_T_EXTAB.
SET PF-STATUS 'STANDARD_FULLSCREEN'.
ENDFORM.
FORM USER_COMMAND USING I_UCOMM LIKE SY-UCOMM
IS_SELFIELD TYPE SLIS_SELFIELD.
DATA: REF TYPE REF TO CL_GUI_ALV_GRID.
DATA : LV_STABLE TYPE LVC_S_STBL. "刷新稳定性
RANGES: L_WERKS FOR T001W-WERKS.
RANGES: L_MATNR FOR MARA-MATNR.
DATA: L_BUKRS TYPE T001K-BUKRS.
LV_STABLE-ROW = '1'.
LV_STABLE-COL = '1'.
CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
IMPORTING
E_GRID = REF.
CALL METHOD REF->CHECK_CHANGED_DATA.
CASE I_UCOMM.
WHEN '&IC1'."表示双击
CHECK IS_SELFIELD-TABINDEX > 0.
CLEAR GT_DATA_A .
READ TABLE GT_DATA_A INDEX IS_SELFIELD-TABINDEX.
IF IS_SELFIELD-FIELDNAME = 'KSL_BQJF' .
PERFORM FOM_GETDATAMX_A USING GT_DATA_A.
ELSEIF IS_SELFIELD-FIELDNAME = 'KSL_BQDF' .
PERFORM FOM_GETDATAMX_B USING GT_DATA_A.
ELSEIF IS_SELFIELD-FIELDNAME = 'KSL_BQYE' .
PERFORM FOM_GETDATAMX_C USING GT_DATA_A.
ELSE.
MESSAGE '请选择有效字段!'TYPE 'S' DISPLAY LIKE 'W'.
ENDIF.
* SET PARAMETER ID : 'MAT' FIELD IT_MATNR-MATNR.
* CALL TRANSACTION 'MM03' AND SKIP FIRST SCREEN.
WHEN 'POST_T'.
ENDCASE.
CALL METHOD REF->REFRESH_TABLE_DISPLAY
EXPORTING
IS_STABLE = LV_STABLE.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FOM_GETDATAMX_A
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
* -->P_GT_DATA_A text
*&---------------------------------------------------------------------*
FORM FOM_GETDATAMX_A USING P_GT_DATA_A TYPE GTS_DATA.
DATA GV_FISCYEARPER TYPE JAHRPER .
DATA GV_FISCYEARPERH TYPE JAHRPER .
CLEAR GV_FISCYEARPER .
GV_FISCYEARPER = P_GJAHR && '0' && S_MONAT-LOW .
CLEAR GV_FISCYEARPERH .
GV_FISCYEARPERH = P_GJAHR && '0' && S_MONAT-HIGH .
CLEAR GT_DATAMX[] .
SELECT
ACDOCA~RBUKRS
ACDOCA~GJAHR
ACDOCA~BELNR
ACDOCA~DOCLN
ACDOCA~BLART
ACDOCA~BUDAT
ACDOCA~FISCYEARPER
ACDOCA~RACCT
ACDOCA~HSL
ACDOCA~KSL
ACDOCA~DRCRK
ACDOCA~ZUONR
ACDOCA~SGTXT
ACDOCA~LIFNR
ACDOCA~KUNNR
ACDOCA~RCNTR
ACDOCA~RFAREA
ACDOCA~ANLN1
ACDOCA~PRCTR
ACDOCA~SEGMENT
ACDOCA~WERKS
ACDOCA~MATNR
ACDOCA~AUFNR
ACDOCA~PS_POSID
INTO CORRESPONDING FIELDS OF TABLE GT_DATAMX[]
FROM ACDOCA
WHERE RACCT = P_GT_DATA_A-RACCT
AND ( KUNNR = P_GT_DATA_A-KUNNR OR LIFNR = P_GT_DATA_A-LIFNR )
AND FISCYEARPER >= GV_FISCYEARPER
AND FISCYEARPER <= GV_FISCYEARPERH
AND RLDNR = '0L'
AND RRCTY = '0'
AND RBUKRS IN S_BUKRS
AND DRCRK = 'S'
.
IF GT_DATAMX[] IS NOT INITIAL.
LOOP AT GT_DATAMX.
SELECT SINGLE NAME1 INTO GT_DATAMX-NAMEL FROM LFA1
WHERE LIFNR = GT_DATAMX-LIFNR
.
SELECT SINGLE NAME1 INTO GT_DATAMX-NAMEK FROM KNA1
WHERE KUNNR = GT_DATAMX-KUNNR
.
SELECT SINGLE KTEXT INTO GT_DATAMX-KTEXT FROM CSKT
WHERE KOSTL = GT_DATAMX-RCNTR
AND SPRAS = 1
AND KOKRS = '1000'
AND DATBI >= SY-DATUM
.
SELECT SINGLE TXT50 INTO GT_DATAMX-TXT50 FROM ANLA
WHERE BUKRS = GT_DATAMX-RBUKRS
AND ANLN1 = GT_DATAMX-ANLN1
.
MODIFY GT_DATAMX .
CLEAR GT_DATAMX .
ENDLOOP.
PERFORM FRM_DISPLAY_SUB.
ELSE.
MESSAGE 'NO_DATA!'TYPE 'S' DISPLAY LIKE 'W' .
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FOM_GETDATAMX_B
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
* -->P_GT_DATA_A text
*&---------------------------------------------------------------------*
FORM FOM_GETDATAMX_B USING P_GT_DATA_A TYPE GTS_DATA.
DATA GV_FISCYEARPER TYPE JAHRPER .
DATA GV_FISCYEARPERH TYPE JAHRPER .
CLEAR GV_FISCYEARPER .
GV_FISCYEARPER = P_GJAHR && '0' && S_MONAT-LOW .
CLEAR GV_FISCYEARPERH .
GV_FISCYEARPERH = P_GJAHR && '0' && S_MONAT-HIGH .
CLEAR GT_DATAMX[] .
SELECT
ACDOCA~RBUKRS
ACDOCA~GJAHR
ACDOCA~BELNR
ACDOCA~DOCLN
ACDOCA~BLART
ACDOCA~BUDAT
ACDOCA~FISCYEARPER
ACDOCA~RACCT
ACDOCA~HSL
ACDOCA~KSL
ACDOCA~TSL
ACDOCA~DRCRK
ACDOCA~ZUONR
ACDOCA~SGTXT
ACDOCA~LIFNR
ACDOCA~KUNNR
ACDOCA~RCNTR
ACDOCA~RFAREA
ACDOCA~ANLN1
ACDOCA~PRCTR
ACDOCA~SEGMENT
ACDOCA~WERKS
ACDOCA~MATNR
ACDOCA~AUFNR
ACDOCA~PS_POSID
INTO CORRESPONDING FIELDS OF TABLE GT_DATAMX[]
FROM ACDOCA
WHERE RACCT = P_GT_DATA_A-RACCT
AND ( KUNNR = P_GT_DATA_A-KUNNR OR LIFNR = P_GT_DATA_A-LIFNR )
AND FISCYEARPER >= GV_FISCYEARPER
AND FISCYEARPER <= GV_FISCYEARPERH
AND RLDNR = '0L'
AND RRCTY = '0'
AND RBUKRS IN S_BUKRS
AND DRCRK = 'H'
.
IF GT_DATAMX[] IS NOT INITIAL.
LOOP AT GT_DATAMX.
SELECT SINGLE NAME1 INTO GT_DATAMX-NAMEL FROM LFA1
WHERE LIFNR = GT_DATAMX-LIFNR
.
SELECT SINGLE NAME1 INTO GT_DATAMX-NAMEK FROM KNA1
WHERE KUNNR = GT_DATAMX-KUNNR
.
SELECT SINGLE KTEXT INTO GT_DATAMX-KTEXT FROM CSKT
WHERE KOSTL = GT_DATAMX-RCNTR
AND SPRAS = 1
AND KOKRS = '1000'
AND DATBI >= SY-DATUM
.
SELECT SINGLE TXT50 INTO GT_DATAMX-TXT50 FROM ANLA
WHERE BUKRS = GT_DATAMX-RBUKRS
AND ANLN1 = GT_DATAMX-ANLN1
.
MODIFY GT_DATAMX .
CLEAR GT_DATAMX .
ENDLOOP.
PERFORM FRM_DISPLAY_SUB.
ELSE.
MESSAGE 'NO_DATA!'TYPE 'S' DISPLAY LIKE 'W' .
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FOM_GETDATAMX_C
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
* -->P_GT_DATA_A text
*&---------------------------------------------------------------------*
FORM FOM_GETDATAMX_C USING P_GT_DATA_A TYPE GTS_DATA.
DATA GV_FISCYEARPER TYPE JAHRPER .
DATA GV_FISCYEARPERH TYPE JAHRPER .
CLEAR GV_FISCYEARPER .
GV_FISCYEARPER = P_GJAHR && '0' && S_MONAT-LOW .
CLEAR GV_FISCYEARPERH .
GV_FISCYEARPERH = P_GJAHR && '0' && S_MONAT-HIGH .
CLEAR GT_DATAMX[] .
SELECT
ACDOCA~RBUKRS
ACDOCA~GJAHR
ACDOCA~BELNR
ACDOCA~DOCLN
ACDOCA~BLART
ACDOCA~BUDAT
ACDOCA~FISCYEARPER
ACDOCA~RACCT
ACDOCA~HSL
ACDOCA~KSL
ACDOCA~TSL
ACDOCA~DRCRK
ACDOCA~ZUONR
ACDOCA~SGTXT
ACDOCA~LIFNR
ACDOCA~KUNNR
ACDOCA~RCNTR
ACDOCA~RFAREA
ACDOCA~ANLN1
ACDOCA~PRCTR
ACDOCA~SEGMENT
ACDOCA~WERKS
ACDOCA~MATNR
ACDOCA~AUFNR
ACDOCA~PS_POSID
INTO CORRESPONDING FIELDS OF TABLE GT_DATAMX[]
FROM ACDOCA
WHERE RACCT = P_GT_DATA_A-RACCT
AND ( KUNNR = P_GT_DATA_A-KUNNR OR LIFNR = P_GT_DATA_A-LIFNR )
AND FISCYEARPER >= GV_FISCYEARPER
AND FISCYEARPER <= GV_FISCYEARPERH
AND RLDNR = '0L'
AND RRCTY = '0'
AND RBUKRS IN S_BUKRS
* AND DRCRK = 'S'
.
IF GT_DATAMX[] IS NOT INITIAL.
LOOP AT GT_DATAMX.
SELECT SINGLE NAME1 INTO GT_DATAMX-NAMEL FROM LFA1
WHERE LIFNR = GT_DATAMX-LIFNR
.
SELECT SINGLE NAME1 INTO GT_DATAMX-NAMEK FROM KNA1
WHERE KUNNR = GT_DATAMX-KUNNR
.
SELECT SINGLE KTEXT INTO GT_DATAMX-KTEXT FROM CSKT
WHERE KOSTL = GT_DATAMX-RCNTR
AND SPRAS = 1
AND KOKRS = '1000'
AND DATBI >= SY-DATUM
.
SELECT SINGLE TXT50 INTO GT_DATAMX-TXT50 FROM ANLA
WHERE BUKRS = GT_DATAMX-RBUKRS
AND ANLN1 = GT_DATAMX-ANLN1
.
MODIFY GT_DATAMX .
CLEAR GT_DATAMX .
ENDLOOP.
PERFORM FRM_DISPLAY_SUB.
ELSE.
MESSAGE 'NO_DATA!'TYPE 'S' DISPLAY LIKE 'W' .
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_DISPLAY_SUB
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM FRM_DISPLAY_SUB .
CLEAR S_LAYOUT_SUB.
S_LAYOUT_SUB-ZEBRA = 'X'.
S_LAYOUT_SUB-COLWIDTH_OPTIMIZE = 'X'.
* S_LAYOUT_SUB-INFO_FIELDNAME = 'CLR'. "行颜色代码的字段
* s_layout-box_fieldname = 'BOX'.
PERFORM FRM_FILL_FIELD_SUB .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
IS_LAYOUT = S_LAYOUT_SUB
IT_FIELDCAT = GT_FIELDCAT_SUB
I_CALLBACK_PROGRAM = SY-REPID
I_CALLBACK_PF_STATUS_SET = 'PF_STATUS_SET_SUB'
* i_callback_html_top_of_page = 'HTML_TOP_OF_PAGE'
I_CALLBACK_USER_COMMAND = 'USER_COMMAND_SUB'
TABLES
T_OUTTAB = GT_DATAMX[].
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_FILL_FIELD_SUB
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM FRM_FILL_FIELD_SUB .
DATA: WA_FIELDCAT TYPE SLIS_FIELDCAT_ALV.
DEFINE FILL_FIELD.
wa_fieldcat-fieldname = &1.
wa_fieldcat-seltext_l = &2.
* IF wa_fieldcat-fieldname = 'MSLJH' or wa_fieldcat-fieldname = 'WCBJH'.
* wa_fieldcat-EMPHASIZE = 'C600'. "设置字段的颜色
* ENDIF.
*
* IF wa_fieldcat-fieldname = 'MSLMB' or wa_fieldcat-fieldname = 'WCBMB'.
* wa_fieldcat-EMPHASIZE = 'C710'. "设置字段的颜色
* ENDIF.
IF wa_fieldcat-fieldname = 'PLNBEZ' OR wa_fieldcat-fieldname = 'MATNR' .
wa_fieldcat-ref_tabname = 'MARA'.
wa_fieldcat-ref_fieldname = 'MATNR'.
ENDIF.
IF wa_fieldcat-fieldname = 'ARKTX' OR wa_fieldcat-fieldname = 'WAKTX' .
wa_fieldcat-ref_tabname = 'VBAP'.
wa_fieldcat-ref_fieldname = 'ARKTX'.
ENDIF.
IF wa_fieldcat-fieldname = 'AUFNR' .
wa_fieldcat-ref_tabname = 'AUFK'.
wa_fieldcat-ref_fieldname = 'AUFNR'.
ENDIF.
APPEND wa_fieldcat TO gt_fieldcat_SUB.
CLEAR wa_fieldcat.
END-OF-DEFINITION.
FILL_FIELD :
'RBUKRS' '公司代码',
'GJAHR' '财年',
'BELNR' '会计凭证',
'DOCLN' '行项目',
'BLART' '凭证类型',
'BUDAT' '过账日期',
'FISCYEARPER' '年度期间',
'RACCT' '科目',
'HSL' '本币金额',
'KSL' '集团货币金额',
'DRCRK' '借贷',
'ZUONR' '分配',
'SGTXT' '摘要',
'LIFNR' '供应商',
'NAMEL' '供应商名称',
'KUNNR' '客户',
'NAMEK' '客户名称',
'RCNTR' '成本中心',
'KTEXT' '成本中心名称',
'RFAREA' '功能范围',
'ANLN1' '固定资产',
'TXT50' '资产名称',
'PRCTR' '利润中心',
'SEGMENT' '段',
'WERKS' '工厂',
'MATNR' '物料',
'AUFNR' '内部订单',
'PS_POSID' 'WBS'.
ENDFORM.
FORM PF_STATUS_SET_SUB USING RT_EXTAB TYPE SLIS_T_EXTAB.
SET PF-STATUS 'STANDARD_FULLSCREEN'.
ENDFORM.
FORM USER_COMMAND_SUB USING I_UCOMM LIKE SY-UCOMM
IS_SELFIELD TYPE SLIS_SELFIELD.
DATA: REF TYPE REF TO CL_GUI_ALV_GRID.
DATA : LV_STABLE TYPE LVC_S_STBL. "刷新稳定性
RANGES: L_WERKS FOR T001W-WERKS.
RANGES: L_MATNR FOR MARA-MATNR.
DATA: L_BUKRS TYPE T001K-BUKRS.
LV_STABLE-ROW = '1'.
LV_STABLE-COL = '1'.
CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
IMPORTING
E_GRID = REF.
CALL METHOD REF->CHECK_CHANGED_DATA.
CASE I_UCOMM.
WHEN '&F03' OR 'EXIT'.
LEAVE TO SCREEN 0.
WHEN 'CANCEL'.
WHEN '&IC1'."表示双击
CHECK IS_SELFIELD-TABINDEX > 0.
CLEAR GT_DATAMX .
READ TABLE GT_DATAMX INDEX IS_SELFIELD-TABINDEX.
SET PARAMETER ID : 'BLN' FIELD GT_DATAMX-BELNR.
SET PARAMETER ID : 'BUK' FIELD GT_DATAMX-RBUKRS.
SET PARAMETER ID : 'GJR' FIELD GT_DATAMX-GJAHR.
CALL TRANSACTION 'FB03' AND SKIP FIRST SCREEN.
WHEN 'POST_T'.
ENDCASE.
CALL METHOD REF->REFRESH_TABLE_DISPLAY
EXPORTING
IS_STABLE = LV_STABLE.
ENDFORM.
INITIALIZATION.
PERFORM FRM_EXCLUDE_OPTION.
AT SELECTION-SCREEN OUTPUT.
PERFORM SCREEN_OUTPUT.
AT SELECTION-SCREEN.
PERFORM SCREEN_SETTING.
START-OF-SELECTION.
PERFORM FOM_GETDATA.
PERFORM FRM_DISPLAY.