report zfi_r_16_ap.
include zfi_r_16_init .
include zfi_r_16_form .
include zfi_r_16_alv .
*公司代码的权限控制
at selection-screen on p_bukrs.
authority-check object 'F_BKPF_BUK' id 'BUKRS' field p_bukrs
id 'ACTVT' field '03'.
if sy-subrc ne 0.
message e007(zfi) with '你没有权限查看' p_bukrs '公司代码的数据!'.
exit.
endif.
initialization.
perform layout_init using g_layout_s. "ALV GRID LAYOUT
perform eventtab_build using g_events_t[]. "ALV GRID EVENT
start-of-selection.
perform get_list .
perform displaycatalog_merge using g_fieldcat_t[] .
perform alv_display tables itab_list[].
***********************************************************************************************
*&---------------------------------------------------------------------*
*& 包括 ZFI_R_16_INIT
*&---------------------------------------------------------------------*
*供应商付款发票明细表
tables: bsis,lfa1 .
types: begin of s_list,
lifnr like lfa1-lifnr , "供应商编号
name1 like lfa1-name1 , "供应商名称
dmbtr like bsis-dmbtr , "本位币金额
zfbdt like bsis-zfbdt , "基准日期(到期日)
bldat like bsis-bldat , "凭证日期
month like vtbbewe-atage , "月份数
sgtxt like bsis-sgtxt , "付款银行
zuonr like bsis-zuonr , "分配(票号)
gjahr like bsis-gjahr , "会计年度
belnr like bsis-belnr , "会计凭证
buzei like bsis-buzei , "行项目号
bukrs like bsis-bukrs , "公司代码
shkzg like bsis-shkzg , "借贷标志
end of s_list .
data: itab_list type standard table of s_list with non-unique default key ,
wa_list like line of itab_list .
*会计凭证明细
types: begin of s_belnr ,
gjahr like bsis-gjahr , "会计年度
belnr like bsis-belnr , "会计凭证
buzei like bsis-buzei , "行项目号
bukrs like bsis-bukrs , "公司代码
end of s_belnr .
data: itab_belnr type standard table of s_belnr with non-unique default key ,
wa_belnr like line of itab_belnr .
*供应商明细
types: begin of s_vendor ,
gjahr like bsis-gjahr , "会计年度
belnr like bsis-belnr , "会计凭证
buzei like bsis-buzei , "行项目号
bukrs like bsis-bukrs , "公司代码
lifnr like lfa1-lifnr , "供应商编号
name1 like lfa1-name1 , "供应商名称
end of s_vendor .
data: itab_vendor type standard table of s_vendor with non-unique default key ,
wa_vendor like line of itab_vendor .
selection-screen begin of block bl1 with frame title text-001.
select-options:
s_budat for bsis-budat no intervals no-extension obligatory ."凭证记帐截止日期
selection-screen end of block bl1.
parameters: p_bukrs like bsad-bukrs obligatory default '1000'. "Company Code
selection-screen begin of block bl2 with frame title text-002.
select-options:
s_gjahr for bsis-gjahr no intervals,"会计年度
s_belnr for bsis-belnr ,"凭证号码
s_hkont for bsis-hkont no intervals," DEFAULT '21110000' OBLIGATORY,
s_blart for bsis-blart no intervals." DEFAULT 'Z6'."凭证类型
"S_LIFNR FOR LFA1-LIFNR ."供应商编号
selection-screen end of block bl2.
*{ INSERT Customizing 091228 CHEN.JR
initialization.
perform set_so_value.
*} INSERT
**********************************************************************************************
*&---------------------------------------------------------------------*
*& 包括 ZFI_R_16_FORM
*&---------------------------------------------------------------------*
*得到供应商应付票据明细
form get_list .
"得到供应商应付票据明细
select dmbtr zfbdt bldat sgtxt zuonr gjahr belnr buzei bukrs shkzg
into corresponding fields of table itab_list
from bsis
where budat <= s_budat-low "记帐日期
and bukrs = p_bukrs "公司代码
and gjahr in s_gjahr "会计年度
and belnr in s_belnr "凭证号码
and hkont in s_hkont "总帐科目
and blart in s_blart "凭证类型
.
"得到凭证明细表
refresh itab_belnr .
clear itab_belnr .
loop at itab_list into wa_list .
clear wa_belnr .
move-corresponding wa_list to wa_belnr .
collect wa_belnr into itab_belnr .
"得到开票日期到到期日的月份数
call function 'FIMA_DAYS_AND_MONTHS_AND_YEARS'
exporting
i_date_from = wa_list-bldat
i_date_to = wa_list-zfbdt
importing
e_months = wa_list-month.
modify itab_list from wa_list .
endloop.
"得到供应商编号
if not itab_belnr[] is initial .
"得到供应商的明细
select lifnr gjahr belnr buzei bukrs
into corresponding fields of table itab_vendor
from bseg
for all entries in itab_belnr
where bukrs = itab_belnr-bukrs
and belnr = itab_belnr-belnr
and gjahr = itab_belnr-gjahr
and buzei = itab_belnr-buzei
.
data name1 like lfa1-name1 .
loop at itab_vendor into wa_vendor .
clear name1 .
"得到供应商名称
select single name1
into name1
from lfa1
where lifnr = wa_vendor-lifnr
.
wa_vendor-name1 = name1 .
modify itab_vendor from wa_vendor .
endloop .
endif .
loop at itab_list into wa_list .
clear wa_vendor .
read table itab_vendor with key
bukrs = wa_list-bukrs belnr = wa_list-belnr gjahr = wa_list-gjahr buzei = wa_list-buzei
into wa_vendor .
if wa_list-shkzg = 'S'."借方
wa_list-dmbtr = wa_list-dmbtr * -1 .
modify itab_list from wa_list .
endif .
if sy-subrc eq 0 .
wa_list-lifnr = wa_vendor-lifnr .
wa_list-name1 = wa_vendor-name1 .
modify itab_list from wa_list .
endif .
endloop .
endform . "GET_LIST
*&---------------------------------------------------------------------*
*& Form set_so_value
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
form set_so_value.
move 'I' to s_hkont-sign.
move 'EQ' to s_hkont-option.
move '22010000' to s_hkont-low. append s_hkont.
move '22010001' to s_hkont-low. append s_hkont.
clear s_hkont.
endform. "set_so_value
**********************************************************************************************
*&---------------------------------------------------------------------*
*& 包括 ZFI_R_16_ALV
*&---------------------------------------------------------------------*
type-pools: slis.
types: slis_t_fieldcat_alv type slis_fieldcat_alv occurs 1.
data: g_events_t type slis_t_event,
g_fieldcat_t type slis_t_fieldcat_alv.
data: g_layout_s type slis_layout_alv.
data: l_fieldcat_s type slis_fieldcat_alv.
define __field_tab.
l_fieldcat_s-seltext_l = &1.
l_fieldcat_s-seltext_m = &1.
l_fieldcat_s-seltext_s = &1.
l_fieldcat_s-ddictxt = ' '.
end-of-definition.
*&--------------------------------------------------------------------*
*& Form LAYOUT_INIT
*&--------------------------------------------------------------------*
* text
*---------------------------------------------------------------------*
* -->P_G_LAYOUT_text
*---------------------------------------------------------------------*
form layout_init using p_g_layout_s type slis_layout_alv.
** Build layout for list display
p_g_layout_s-detail_popup = 'X'.
p_g_layout_s-colwidth_optimize = 'X'.
endform. " LAYOUT_INIT
*--------------------------------------------------------------------
* FORM EVENTTAB_BUILD
*--------------------------------------------------------------------
form eventtab_build using p_g_events_t type slis_t_event.
** Registration of events to happen during list display
data: l_event type slis_alv_event.
call function 'REUSE_ALV_EVENTS_GET'
exporting
i_list_type = 0
importing
et_events = p_g_events_t.
* GUI STATUS
read table p_g_events_t with key name = slis_ev_pf_status_set
into l_event.
if sy-subrc eq 0.
move 'PF_STATUS_SET' to l_event-form.
append l_event to p_g_events_t.
endif.
endform. " EVENTTAB_BUILD
*--------------------------------------------------------------------
* FORM ALV_DISPLAY
*--------------------------------------------------------------------
form alv_display tables p_int_t.
call function 'REUSE_ALV_GRID_DISPLAY'
exporting
i_callback_program = 'ZFI_R_16_ALV' "G_REPID
is_layout = g_layout_s
it_fieldcat = g_fieldcat_t[]
i_save = 'A'
tables
t_outtab = p_int_t
exceptions
program_error = 1
others = 2.
endform. " ALV_DISPLAY
*&--------------------------------------------------------------------*
*& Form DISPLAYCATALOG_MERGE
*&--------------------------------------------------------------------*
* text
*---------------------------------------------------------------------*
* -->ALV显示
* -->P_TABNAME text
*---------------------------------------------------------------------*
form displaycatalog_merge using p_g_fieldcat_t
type slis_t_fieldcat_alv .
clear l_fieldcat_s.
l_fieldcat_s-fieldname = 'NAME1'.
l_fieldcat_s-seltext_m = '名称'.
l_fieldcat_s-fix_column = 'X' .
l_fieldcat_s-emphasize = 'X'.
append l_fieldcat_s to p_g_fieldcat_t.
l_fieldcat_s-fieldname = 'LIFNR'.
l_fieldcat_s-seltext_m = '供应商'.
l_fieldcat_s-ref_fieldname = 'LIFNR'.
l_fieldcat_s-ref_tabname = 'LFA1'.
"L_FIELDCAT_S-lzero = 'X' .
append l_fieldcat_s to p_g_fieldcat_t.
clear l_fieldcat_s.
l_fieldcat_s-fieldname = 'DMBTR'.
l_fieldcat_s-seltext_m = '本位币金额'.
l_fieldcat_s-do_sum = 'X'.
append l_fieldcat_s to p_g_fieldcat_t.
clear l_fieldcat_s .
l_fieldcat_s-fieldname = 'BLDAT'.
l_fieldcat_s-seltext_m = '开票日期'.
append l_fieldcat_s to p_g_fieldcat_t.
l_fieldcat_s-fieldname = 'ZFBDT'.
l_fieldcat_s-seltext_m = '到期日'.
append l_fieldcat_s to p_g_fieldcat_t.
l_fieldcat_s-fieldname = 'SGTXT'.
l_fieldcat_s-seltext_m = '付款银行'.
append l_fieldcat_s to p_g_fieldcat_t.
l_fieldcat_s-fieldname = 'ZUONR'.
l_fieldcat_s-seltext_m = '票号'.
append l_fieldcat_s to p_g_fieldcat_t.
l_fieldcat_s-fieldname = 'MONTH'.
l_fieldcat_s-seltext_m = '月份数'.
append l_fieldcat_s to p_g_fieldcat_t.
l_fieldcat_s-fieldname = 'SHKZG'.
l_fieldcat_s-seltext_m = '借贷标志'.
append l_fieldcat_s to p_g_fieldcat_t.
endform. " FIELDCATALOG_MERGE
**************************************************************************************************
P_BUKRS 公司代码
S_BELNR 会计凭证号
S_BLART 凭证类型
S_BUDAT 记帐截止日期
S_GJAHR 会计年度
S_HKONT 总帐科目
001 日期选择
002 详细选择