科目余额

TABLES:acdoca.

TYPES: BEGIN OF ty_itab,
bukrs TYPE t001-bukrs, ” 公司代码
butxt TYPE t001-butxt, ” 公司名称
saknr TYPE skb1-saknr, ” 会计科目编码
txt20 TYPE skat-txt20, ” 会计科目名称
kunnr TYPE acdoca-kunnr, ” 客户编码
name TYPE kna1-name1, ” 客户名称
lifnr TYPE acdoca-lifnr, ” 供应商编码
name1 TYPE lfa1-name1, ” 供应商名称
ktext TYPE tkt05-ktext, ” 成本中心费用属性
kostl TYPE acdoca-rcntr, ” 成本中心编码
ktext1 TYPE cskt-ktext, ” 成本中心名称
hsl1 TYPE acdoca-hsl, ” 期初借方余额
hsl2 TYPE acdoca-hsl, ” 期初贷方余额
hsl3 TYPE acdoca-hsl, ” 期初累计余额
hsl4 TYPE acdoca-hsl, ” 本期借方金额
hsl5 TYPE acdoca-hsl, ” 本期贷方金额
hsl6 TYPE acdoca-hsl, ” 本年累计借方金额
hsl7 TYPE acdoca-hsl, ” 本年累计贷方金额
* hsl8 TYPE acdoca-hsl, ” 期末借方余额
* hsl9 TYPE acdoca-hsl, ” 期末贷方余额
hsl10 TYPE acdoca-hsl, ” 期末累计余额
gjahr TYPE acdoca-gjahr, ” 期末累计余额
koart TYPE acdoca-koart,
END OF ty_itab.
*&———————————————————————*

DATA: gt_itab TYPE TABLE OF ty_itab,
gs_itab TYPE ty_itab.

FIELD-SYMBOLS:<fs_itab> TYPE ty_itab.

DATA: it_fieldcat TYPE lvc_s_fcat OCCURS 0,
wa_fieldcat TYPE lvc_s_fcat,
wa_layout TYPE lvc_s_layo.

DATA: gs_layo TYPE lvc_s_layo,
gt_fcat TYPE lvc_t_fcat.

DATA: gr_grid TYPE REF TO cl_gui_alv_grid.

DATA: gv_code TYPE tcode.

RANGES: r_bukrs FOR acdoca-rbukrs.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-s01.
SELECT-OPTIONS: s_bukrs FOR acdoca-rbukrs OBLIGATORY.
PARAMETERS: p_gjahr LIKE acdoca-gjahr DEFAULT sy-datum(4) OBLIGATORY.
SELECT-OPTIONS: s_RACCT FOR acdoca-racct.
SELECT-OPTIONS: s_BUDAT FOR acdoca-budat OBLIGATORY.
SELECTION-SCREEN END OF BLOCK b1.

INITIALIZATION.
PERFORM initialization.

AT SELECTION-SCREEN OUTPUT.

AT SELECTION-SCREEN.
“权限控制
PERFORM frm_auth_check.

START-OF-SELECTION.
* 界面友好
PERFORM frm_progress.

PERFORM frm_process_data. ” 获取描述

PERFORM frm_modify_data.

END-OF-SELECTION.

PERFORM frm_data_disp.

FORM initialization .

ENDFORM.

*&———————————————————————*
*& Form FRM_PROGRESS
*&———————————————————————*
* 友好界面
*———————————————————————-*
* –> p1 text
* <– p2 text
*———————————————————————-*
FORM frm_progress .
CALL FUNCTION ‘SAPGUI_PROGRESS_INDICATOR’
EXPORTING
text = ‘正在读取数据,请稍等…’.
ENDFORM. ” FRM_PROGRESS
*&———————————————————————*
*& Form FRM_DATA_DISP
*&———————————————————————*
*& text
*&———————————————————————*
*& –> p1 text
*& <– p2 text
*&———————————————————————*
FORM frm_data_disp .
DATA:lt_fcat TYPE lvc_t_fcat,
ls_layo TYPE lvc_s_layo.

* ALV 布局
PERFORM frm_grid_layo_set CHANGING ls_layo.
* ALV 字段目录
PERFORM frm_grid_fcat_set CHANGING lt_fcat.

CALL FUNCTION ‘REUSE_ALV_GRID_DISPLAY_LVC’
EXPORTING
i_callback_program = sy-repid
i_callback_pf_status_set = ‘FRM_SET_PF_STATUS’
i_callback_user_command = ‘FRM_USER_COMMAND’
* I_GRID_SETTINGS = I_GRID_SETTINGS
is_layout_lvc = ls_layo
it_fieldcat_lvc = lt_fcat
i_save = ‘A’
* IT_EVENTS = GT_EVENTS
TABLES
t_outtab = gt_itab[]
EXCEPTIONS
program_error = 1
OTHERS = 2.
ENDFORM.
*&———————————————————————*
*& Form FRM_GRID_LAYO_SET
*&———————————————————————*
* ALV 布局
*———————————————————————-*
FORM frm_grid_layo_set CHANGING wls_layo TYPE lvc_s_layo.
wls_layo-zebra = ‘X’.
wls_layo-info_fname = ‘CLR’.
wls_layo-sel_mode = ‘A’.
ENDFORM. “frm_grid_layo_set

*&———————————————————————*
*& Form grid_fcat_set
*&———————————————————————*
* ALV 字段目录
*———————————————————————-*
FORM frm_grid_fcat_set CHANGING wct_fcat TYPE lvc_t_fcat.
DATA: temp_lgart(7) TYPE c.
DATA:
wls_fcat TYPE lvc_s_fcat,
wlv_pos TYPE i.

DEFINE addfcat.
ADD 1 TO wlv_pos.
wls_fcat-col_pos = wlv_pos.
wls_fcat-fieldname = &1.
wls_fcat-scrtext_l = &2.
wls_fcat-scrtext_m = &2.
wls_fcat-scrtext_s = &2.
wls_fcat-coltext = &2.
wls_fcat-no_zero = ‘X’.
wls_fcat-col_opt = ‘X’.
wls_fcat-edit = &3.
wls_fcat-checkbox = &4.
wls_fcat-ref_table = &5.
wls_fcat-ref_field = &6.

APPEND wls_fcat TO wct_fcat.
CLEAR wls_fcat.
END-OF-DEFINITION.

addfcat ‘BUKRS’ TEXT-001 ” ” ‘T001’ ‘BUKRS’.
addfcat ‘BUTXT’ TEXT-002 ” ” ‘T001’ ‘BUTXT’.
addfcat ‘SAKNR’ TEXT-003 ” ” ‘SKB1’ ‘SAKNR’.
addfcat ‘TXT20’ TEXT-004 ” ” ‘SKAT’ ‘TXT20’.
addfcat ‘KUNNR’ TEXT-005 ” ” ‘ACDOCA’ ‘KUNNR’.
addfcat ‘NAME’ TEXT-006 ” ” ‘KNA1’ ‘NAME1’.
addfcat ‘LIFNR’ TEXT-007 ” ” ‘ACDOCA’ ‘LIFNR’.
addfcat ‘NAME1’ TEXT-008 ” ” ‘LFA1’ ‘NAME1’.
addfcat ‘KTEXT’ TEXT-009 ” ” ‘TKT05’ ‘KTEXT’.
addfcat ‘KOSTL’ TEXT-010 ” ” ‘ACDOCA’ ‘RCNTR’.
addfcat ‘KTEXT1’ TEXT-011 ” ” ‘CSKT’ ‘KTEXT’.
addfcat ‘HSL1 ‘ TEXT-012 ” ” ‘ACDOCA’ ‘HSL’.
addfcat ‘HSL2 ‘ TEXT-013 ” ” ‘ACDOCA’ ‘HSL’.
addfcat ‘HSL3 ‘ TEXT-014 ” ” ‘ACDOCA’ ‘HSL’.
addfcat ‘HSL4 ‘ TEXT-015 ” ” ‘ACDOCA’ ‘HSL’.
addfcat ‘HSL5 ‘ TEXT-016 ” ” ‘ACDOCA’ ‘HSL’.
addfcat ‘HSL6 ‘ TEXT-017 ” ” ‘ACDOCA’ ‘HSL’.
addfcat ‘HSL7 ‘ TEXT-018 ” ” ‘ACDOCA’ ‘HSL’.
* addfcat ‘HSL8 ‘ TEXT-019 ” ” ‘ACDOCA’ ‘HSL’.
* addfcat ‘HSL9 ‘ TEXT-020 ” ” ‘ACDOCA’ ‘HSL’.
addfcat ‘HSL10’ TEXT-021 ” ” ‘ACDOCA’ ‘HSL’.

ENDFORM. “FRM_FCAT_SET

*&———————————————————————*
*& Form set_pf_status
*&———————————————————————*
* ALV屏幕状态
*&———————————————————————*
FORM frm_set_pf_status USING rt_extab TYPE slis_t_extab.
SET PF-STATUS ‘STANDARD’.
ENDFORM. “set_pf_status

*&———————————————————————*
*& Form FRM_USER_COMMAND
*&———————————————————————*
* ALV屏幕事件
*———————————————————————-*
* –>U_UCOMM text
* –>U_SELFIELD text
*———————————————————————-*
FORM frm_user_command USING u_ucomm LIKE sy-ucomm
u_selfield TYPE slis_selfield.

* DATA: lt_zthr0009 TYPE TABLE OF zthr0009 WITH HEADER LINE.

DATA:
lw_stbl TYPE lvc_s_stbl.

CALL FUNCTION ‘GET_GLOBALS_FROM_SLVC_FULLSCR’
IMPORTING
e_grid = gr_grid.

CALL METHOD gr_grid->check_changed_data.

* CASE u_ucomm.
* WHEN ‘&QX’.
* LOOP AT gt_itab ASSIGNING FIELD-SYMBOL(<f_check>) WHERE checkbox = ”.
* <f_check>-checkbox = ‘X’.
* ENDLOOP.
* WHEN ‘&QBX’.
* LOOP AT gt_itab ASSIGNING <f_check> WHERE checkbox = ‘X’.
* <f_check>-checkbox = ”.
* ENDLOOP.
* ENDCASE.

IF gr_grid IS NOT INITIAL.
* 稳定刷新
lw_stbl-row = ‘X’.” 基于行的稳定刷新
lw_stbl-col = ‘X’.” 基于列稳定刷新
CALL METHOD gr_grid->refresh_table_display
EXPORTING
is_stable = lw_stbl.
ENDIF.
CLEAR u_ucomm.

ENDFORM. “FRM_USER_COMMAND
*&———————————————————————*
*& Form FRM_MODIFY_DATA
*&———————————————————————*
*& text
*&———————————————————————*
*& –> p1 text
*& <– p2 text
*&———————————————————————*
FORM frm_modify_data .
ENDFORM.

FORM frm_process_data.
IF s_BUDAT-low IS NOT INITIAL AND s_BUDAT-high IS INITIAL.
s_BUDAT-high = s_BUDAT-low.
ENDIF.

DATA:BEGIN OF lt_hsl OCCURS 0,
racct TYPE acdoca-racct,
drcrk TYPE acdoca-drcrk,
koart TYPE acdoca-koart,
kunnr TYPE acdoca-kunnr,
lifnr TYPE acdoca-lifnr,
kostl TYPE acdoca-rcntr,
budat TYPE char2,
hsl1 TYPE acdoca-hsl, ” 期初借方余额
hsl2 TYPE acdoca-hsl, ” 期初贷方余额
hsl3 TYPE acdoca-hsl, ” 期初累计余额
hsl4 TYPE acdoca-hsl, ” 本期借方金额
hsl5 TYPE acdoca-hsl, ” 本期贷方金额
hsl6 TYPE acdoca-hsl, ” 本年累计借方金额
hsl7 TYPE acdoca-hsl, ” 本年累计贷方金额
* hsl8 TYPE acdoca-hsl, ” 期末借方余额
* hsl9 TYPE acdoca-hsl, ” 期末贷方余额
hsl10 TYPE acdoca-hsl, ” 期末累计余额
END OF lt_hsl.

SELECT acdoca~rbukrs AS bukrs ,
* t001~butxt ,
acdoca~racct AS saknr ,
* skat~txt20 ,
acdoca~kunnr ,
* kna1~name1 AS name ,
acdoca~lifnr ,
* lfa1~name1 ,
acdoca~rcntr AS kostl,
acdoca~koart
* cskt~ktext AS ktext1
FROM acdoca
* LEFT JOIN t001 ON acdoca~rbukrs = t001~bukrs
* LEFT JOIN kna1 ON acdoca~kunnr = kna1~kunnr
* LEFT JOIN lfa1 ON acdoca~lifnr = kna1~lifnr
* LEFT JOIN cskt ON acdoca~rcntr = cskt~kostl AND cskt~spras = ‘1’
* LEFT JOIN skat ON acdoca~racct = skat~saknr AND skat~spras = ‘1’
INTO CORRESPONDING FIELDS OF TABLE @gt_itab
WHERE acdoca~gjahr = @p_gjahr
AND acdoca~budat IN @s_budat
AND acdoca~racct IN @s_racct
AND acdoca~rbukrs IN @s_bukrs.

IF sy-subrc = 0.

SELECT * FROM t001 INTO TABLE @DATA(lt_t001)
FOR ALL ENTRIES IN @gt_itab
WHERE bukrs = @gt_itab-bukrs.
SORT lt_t001 BY bukrs.

SELECT * FROM kna1 INTO TABLE @DATA(lt_kna1)
FOR ALL ENTRIES IN @gt_itab
WHERE kunnr = @gt_itab-kunnr.
SORT lt_kna1 BY kunnr.

SELECT * FROM lfa1 INTO TABLE @DATA(lt_lfa1)
FOR ALL ENTRIES IN @gt_itab
WHERE lifnr = @gt_itab-lifnr.
SORT lt_lfa1 BY lifnr.

SELECT * FROM cskt INTO TABLE @DATA(lt_cskt)
FOR ALL ENTRIES IN @gt_itab
WHERE kostl = @gt_itab-kostl
AND spras = ‘1’.
SORT lt_cskt BY kostl.

SELECT * FROM skat INTO TABLE @DATA(lt_skat)
FOR ALL ENTRIES IN @gt_itab
WHERE saknr = @gt_itab-saknr
AND spras = ‘1’.
SORT lt_skat BY saknr.

DATA:lv_begda_qc TYPE begda,
lv_endda_qc TYPE begda.
lv_begda_qc = s_BUDAT-low(4) && ‘0101’.
lv_endda_qc = s_BUDAT-low – 1.

SELECT * FROM acdoca INTO TABLE @DATA(lt_acdoca)
FOR ALL ENTRIES IN @gt_itab
WHERE racct = @gt_itab-saknr
AND gjahr = @p_gjahr.
SORT lt_acdoca BY racct kunnr.

CLEAR:lt_hsl,lt_hsl[].
LOOP AT lt_acdoca INTO DATA(ls_acdoca).
CLEAR lt_hsl.
lt_hsl-drcrk = ls_acdoca-drcrk.
IF ls_acdoca-budat >= s_budat-low AND ls_acdoca-budat <= s_budat-high.
lt_hsl-budat = ‘BQ’.
CASE ls_acdoca-drcrk.
WHEN ‘S’.
lt_hsl-hsl4 = ls_acdoca-hsl. ” 本期借方金额
lt_hsl-hsl6 = ls_acdoca-hsl. ” 本年累计借方金额
WHEN ‘H’.
lt_hsl-hsl5 = ls_acdoca-hsl. ” 本期贷方金额
lt_hsl-hsl7 = ls_acdoca-hsl. ” 本年累计借方金额
ENDCASE.
ELSEIF ls_acdoca-budat >= lv_begda_qc AND ls_acdoca-budat <= lv_endda_qc.
lt_hsl-budat = ‘QC’.
CASE ls_acdoca-drcrk.
WHEN ‘S’.
lt_hsl-hsl1 = ls_acdoca-hsl. ” 期初借方余额
* lt_hsl-hsl3 = ls_acdoca-hsl. ” 期初累计余额
lt_hsl-hsl6 = ls_acdoca-hsl. ” 本年累计借方金额
WHEN ‘H’.
lt_hsl-hsl2 = ls_acdoca-hsl. ” 期初贷方余额
* lt_hsl-hsl3 = ls_acdoca-hsl. ” 期初累计余额
lt_hsl-hsl7 = ls_acdoca-hsl. ” 本年累计借方金额
ENDCASE.
ELSE.
CONTINUE.
ENDIF.
lt_hsl-racct = ls_acdoca-racct.
SELECT SINGLE
saknr,
glaccount_type
FROM ska1
WHERE saknr = @ls_acdoca-racct
INTO @DATA(ls_ska1).
IF ls_acdoca-koart = ‘D’.
lt_hsl-koart = ‘D’.
lt_hsl-kunnr = ls_acdoca-kunnr.
ELSEIF ls_acdoca-koart = ‘K’.
lt_hsl-koart = ‘K’.
lt_hsl-lifnr = ls_acdoca-lifnr.
ELSEIF ls_ska1 IS NOT INITIAL AND ls_ska1-glaccount_type = ‘P’.
lt_hsl-koart = ‘P’.
lt_hsl-kostl = ls_acdoca-rcntr.
ENDIF.
CLEAR lt_hsl-drcrk.

IF s_bukrs IS NOT INITIAL.
IF ls_acdoca-rbukrs NOT IN s_bukrs.
CONTINUE.
ENDIF.
ENDIF.

COLLECT lt_hsl.CLEAR lt_hsl.
ENDLOOP.
SORT lt_hsl BY racct kunnr.
*
LOOP AT gt_itab ASSIGNING <fs_itab>.
SELECT SINGLE
saknr,
glaccount_type
FROM ska1
WHERE saknr = @<fs_itab>-saknr
INTO @DATA(ls_ska11).
IF <fs_itab>-koart = ‘D’.
<fs_itab>-lifnr = ”.
<fs_itab>-kostl = ”.
ELSEIF <fs_itab>-koart = ‘K’.
<fs_itab>-kunnr = ”.
<fs_itab>-kostl = ”.
ELSEIF ls_ska11 IS NOT INITIAL AND ls_ska11-glaccount_type = ‘P’.
<fs_itab>-koart = ‘P’.
<fs_itab>-lifnr = ”.
<fs_itab>-kunnr = ”.
ELSE.
<fs_itab>-lifnr = ”.
<fs_itab>-kunnr = ”.
<fs_itab>-kostl = ”.
ENDIF.
CLEAR ls_ska11.

READ TABLE lt_t001 INTO DATA(ls_t001) WITH KEY bukrs = <fs_itab>-bukrs BINARY SEARCH.
IF sy-subrc = 0.
<fs_itab>-butxt = ls_t001-butxt.
ENDIF.

READ TABLE lt_kna1 INTO DATA(ls_kna1) WITH KEY kunnr = <fs_itab>-kunnr BINARY SEARCH.
IF sy-subrc = 0.
<fs_itab>-name = ls_kna1-name1.
ENDIF.

READ TABLE lt_lfa1 INTO DATA(ls_lfa1) WITH KEY lifnr = <fs_itab>-lifnr BINARY SEARCH.
IF sy-subrc = 0.
<fs_itab>-name1 = ls_lfa1-name1.
ENDIF.

READ TABLE lt_cskt INTO DATA(ls_cskt) WITH KEY kostl = <fs_itab>-kostl BINARY SEARCH.
IF sy-subrc = 0.
<fs_itab>-ktext = ls_cskt-ktext.
ENDIF.

READ TABLE lt_skat INTO DATA(ls_skat) WITH KEY saknr = <fs_itab>-saknr BINARY SEARCH.
IF sy-subrc = 0.
<fs_itab>-txt20 = ls_skat-txt20.
ENDIF.

IF <fs_itab>-koart = ‘D’.
LOOP AT lt_hsl WHERE racct = <fs_itab>-saknr AND kunnr = <fs_itab>-kunnr.
IF lt_hsl-budat = ‘QC’.
<fs_itab>-hsl1 = lt_hsl-hsl1 .
<fs_itab>-hsl2 = lt_hsl-hsl2 .
<fs_itab>-hsl3 = lt_hsl-hsl1 + lt_hsl-hsl2 .
ENDIF.
<fs_itab>-hsl4 = lt_hsl-hsl4 .
<fs_itab>-hsl5 = lt_hsl-hsl5 .
<fs_itab>-hsl6 = lt_hsl-hsl1 + lt_hsl-hsl4 .
<fs_itab>-hsl7 = lt_hsl-hsl2 + lt_hsl-hsl5 .
* <fs_itab>-hsl8 = lt_hsl-hsl1 + lt_hsl-hsl4 .
* <fs_itab>-hsl9 = lt_hsl-hsl2 + lt_hsl-hsl5 .
<fs_itab>-hsl10 = lt_hsl-hsl6 + lt_hsl-hsl7 .
ENDLOOP.
ELSEIF <fs_itab>-koart = ‘K’.
LOOP AT lt_hsl WHERE racct = <fs_itab>-saknr AND lifnr = <fs_itab>-lifnr.
IF lt_hsl-budat = ‘QC’.
<fs_itab>-hsl1 = lt_hsl-hsl1 .
<fs_itab>-hsl2 = lt_hsl-hsl2 .
<fs_itab>-hsl3 = lt_hsl-hsl1 + lt_hsl-hsl2 .
ENDIF.
<fs_itab>-hsl4 = lt_hsl-hsl4 .
<fs_itab>-hsl5 = lt_hsl-hsl5 .
<fs_itab>-hsl6 = lt_hsl-hsl1 + lt_hsl-hsl4 .
<fs_itab>-hsl7 = lt_hsl-hsl2 + lt_hsl-hsl5 .
* <fs_itab>-hsl8 = lt_hsl-hsl1 + lt_hsl-hsl4 .
* <fs_itab>-hsl9 = lt_hsl-hsl2 + lt_hsl-hsl5 .
<fs_itab>-hsl10 = lt_hsl-hsl6 + lt_hsl-hsl7 .
ENDLOOP.
ELSEIF <fs_itab>-koart = ‘P’.
LOOP AT lt_hsl WHERE racct = <fs_itab>-saknr AND kostl = <fs_itab>-kostl.
IF lt_hsl-budat = ‘QC’.
<fs_itab>-hsl1 = lt_hsl-hsl1 .
<fs_itab>-hsl2 = lt_hsl-hsl2 .
<fs_itab>-hsl3 = lt_hsl-hsl1 + lt_hsl-hsl2 .
ENDIF.
<fs_itab>-hsl4 = lt_hsl-hsl4 .
<fs_itab>-hsl5 = lt_hsl-hsl5 .
<fs_itab>-hsl6 = lt_hsl-hsl1 + lt_hsl-hsl4 .
<fs_itab>-hsl7 = lt_hsl-hsl2 + lt_hsl-hsl5 .
* <fs_itab>-hsl8 = lt_hsl-hsl1 + lt_hsl-hsl4 .
* <fs_itab>-hsl9 = lt_hsl-hsl2 + lt_hsl-hsl5 .
<fs_itab>-hsl10 = lt_hsl-hsl6 + lt_hsl-hsl7 .
ENDLOOP.
ELSE.
LOOP AT lt_hsl WHERE racct = <fs_itab>-saknr.
IF lt_hsl-budat = ‘QC’.
<fs_itab>-hsl1 = lt_hsl-hsl1 .
<fs_itab>-hsl2 = lt_hsl-hsl2 .
<fs_itab>-hsl3 = lt_hsl-hsl1 + lt_hsl-hsl2 .
ENDIF.
<fs_itab>-hsl4 = lt_hsl-hsl4 .
<fs_itab>-hsl5 = lt_hsl-hsl5 .
<fs_itab>-hsl6 = lt_hsl-hsl1 + lt_hsl-hsl4 .
<fs_itab>-hsl7 = lt_hsl-hsl2 + lt_hsl-hsl5 .
* <fs_itab>-hsl8 = lt_hsl-hsl1 + lt_hsl-hsl4 .
* <fs_itab>-hsl9 = lt_hsl-hsl2 + lt_hsl-hsl5 .
<fs_itab>-hsl10 = lt_hsl-hsl6 + lt_hsl-hsl7 .
ENDLOOP.
ENDIF.

<fs_itab>-hsl6 = <fs_itab>-hsl1 + <fs_itab>-hsl4 .
<fs_itab>-hsl7 = <fs_itab>-hsl2 + <fs_itab>-hsl5 .
<fs_itab>-hsl10 = <fs_itab>-hsl6 + <fs_itab>-hsl7 .

ENDLOOP.
*
ENDIF.

SORT gt_itab BY saknr kunnr lifnr kostl.
DELETE ADJACENT DUPLICATES FROM gt_itab COMPARING saknr kunnr lifnr kostl.

ENDFORM.
*&———————————————————————*
*& Form frm_auth_check
*&———————————————————————*
*& text
*&———————————————————————*
*& –> p1 text
*& <– p2 text
*&———————————————————————*
FORM frm_auth_check .
LOOP AT s_bukrs ASSIGNING FIELD-SYMBOL(<fs_bukrs>).
AUTHORITY-CHECK OBJECT ‘F_BKPF_BUK’
ID ‘BUKRS’ FIELD <fs_bukrs>-low
* ID ‘ACTVT’ FIELD ‘xxxxxxxx’
.
IF sy-subrc = 0.
r_bukrs = VALUE #( sign = ‘I’ option = ‘EQ’ low = <fs_bukrs>-low ).
APPEND r_bukrs TO r_bukrs[].
ENDIF.
ENDLOOP.

IF r_bukrs[] IS INITIAL.
MESSAGE ‘没有该公司代码权限!’ TYPE ‘S’ DISPLAY LIKE ‘E’.
LEAVE LIST-PROCESSING.
ENDIF.
ENDFORM.
*@@@@@@@textelement
@ID@I@KEY@001@ENTRY@公司代码@LENGTH@
@ID@I@KEY@002@ENTRY@公司名称@LENGTH@
@ID@I@KEY@003@ENTRY@会计科目编码@LENGTH@
@ID@I@KEY@004@ENTRY@会计科目名称@LENGTH@
@ID@I@KEY@005@ENTRY@客户编码@LENGTH@
@ID@I@KEY@006@ENTRY@客户名称@LENGTH@
@ID@I@KEY@007@ENTRY@供应商编码@LENGTH@
@ID@I@KEY@008@ENTRY@供应商名称@LENGTH@
@ID@I@KEY@009@ENTRY@成本中心费用属性@LENGTH@
@ID@I@KEY@010@ENTRY@成本中心编码@LENGTH@
@ID@I@KEY@011@ENTRY@成本中心名称@LENGTH@
@ID@I@KEY@012@ENTRY@期初借方余额@LENGTH@
@ID@I@KEY@013@ENTRY@期初贷方余额@LENGTH@
@ID@I@KEY@014@ENTRY@期初累计余额@LENGTH@
@ID@I@KEY@015@ENTRY@本期借方金额@LENGTH@
@ID@I@KEY@016@ENTRY@本期贷方金额@LENGTH@
@ID@I@KEY@017@ENTRY@本年累计借方金额@LENGTH@
@ID@I@KEY@018@ENTRY@本年累计贷方金额@LENGTH@
@ID@I@KEY@019@ENTRY@期末借方余额@LENGTH@
@ID@I@KEY@020@ENTRY@期末贷方余额@LENGTH@
@ID@I@KEY@021@ENTRY@期末累计余额@LENGTH@
@ID@I@KEY@S01@ENTRY@选择条件@LENGTH@
@ID@R@KEY@@ENTRY@科目余额表@LENGTH@
@ID@S@KEY@P_ERDAT@ENTRY@ 申请日期@LENGTH@
@ID@S@KEY@P_GJAHR@ENTRY@ 会计年度@LENGTH@
@ID@S@KEY@P_ZDCL@ENTRY@ 自动处理@LENGTH@
@ID@S@KEY@S_BANFN@ENTRY@ 采购申请编号@LENGTH@
@ID@S@KEY@S_BUDAT@ENTRY@ 记账日期@LENGTH@
@ID@S@KEY@S_BUKRS@ENTRY@ 公司代码@LENGTH@
@ID@S@KEY@S_ERNAM@ENTRY@ 申请人@LENGTH@
@ID@S@KEY@S_GJAHR@ENTRY@ 年度期间@LENGTH@
@ID@S@KEY@S_KUNNR@ENTRY@ 客户@LENGTH@
@ID@S@KEY@S_RACCT@ENTRY@ 总账科目@LENGTH@
@ID@S@KEY@S_SRMNO@ENTRY@ 付款申请单号@LENGTH@
@ID@S@KEY@S_VKORG@ENTRY@ 销售组织@LENGTH@