report zfi_r_29_gln.
type-pools:slis.
tables:bkpf,bseg,cskt,csks,csku,setheadert,skat.
include zfi_r_29_glntop.
include zfi_r_29_glnsel.
include zfi_r_29_glnf01.
start-of-selection.
if s_kostl[] is initial and s_khinr[] is initial.
message i000(zfi001) with '请输入成本中心或成本中心组!'.
stop.
elseif s_kostl[] is not initial and s_khinr[] is not initial.
message i000(zfi001) with '成本中心或成本中心组只能输入其一!'.
stop.
endif.
perform get_data.
perform e01_fieldcat_init using gt_fieldcat[].
perform f_show_grid.
***********************************************************************************
*&---------------------------------------------------------------------*
*& 包括 ZFI_R_29_GLTOP
*&---------------------------------------------------------------------*
data: begin of lt_tab occurs 0,
* butxt LIKE t001-butxt,
* ltext LIKE t003t-ltext,
bukrs like bkpf-bukrs,
* BLART LIKE BKPF-BLART,
gjahr like bkpf-gjahr,
* MONAT LIKE bkpf-MONAT,
bldat like bkpf-bldat,
budat like bkpf-budat,
xref3 like bseg-xref3,
kstar like bseg-kstar,
ktext like csku-ktext, " 成本要素
kostl like bseg-kostl,
ktextc like cskt-ktext,
khinr like csks-khinr,
bktxt like bkpf-bktxt,
* belnr LIKE bkpf-belnr,
sgtxt like bseg-sgtxt,
shkzg like bseg-shkzg, "借贷标志
* lokkt LIKE bseg-lokkt,
hkont like bseg-hkont,
* KUNNR LIKE BSEG-KUNNR,
* LIFNR LIKE BSEG-LIFNR,
txt20 like skat-txt20,
* waers LIKE bkpf-waers,
* kursf LIKE bkpf-kursf,
* wrbtr like bseg-wrbtr,
dmbtr like bseg-dmbtr,
aufnr like bseg-aufnr, "内部订单号
auart like aufk-auart, "订单类型
txt like aufk-ktext, "订单类型描述
matnr like bseg-matnr,
maktx like makt-maktx,
fkber like bseg-fkber, "功能范围
belnr like bkpf-belnr,
xblnr like bkpf-xblnr,
usnam like bkpf-usnam,
* GSBER like bseg-GSBER,
* PRCTR LIKE BSEG-PRCTR,
* KTEXTF LIKE CEPCT-KTEXT,
* BUZEI LIKE BSEG-BUZEI,
* BSTAT LIKE BKPF-BSTAT,
* vname like LFA1-name1,
* cname like kna1-name1,
end of lt_tab.
types: begin of ls_tab,
* butxt LIKE t001-butxt,
* ltext LIKE t003t-ltext,
bukrs like bkpf-bukrs,
* BLART LIKE BKPF-BLART,
gjahr like bkpf-gjahr,
* MONAT LIKE bkpf-MONAT,
bldat like bkpf-bldat,
budat like bkpf-budat,
xref3 like bseg-xref3,
kstar like bseg-kstar,
ktext like csku-ktext, " 成本要素
kostl like bseg-kostl,
ktextc like cskt-ktext,
khinr like csks-khinr,
bktxt like bkpf-bktxt,
* belnr LIKE bkpf-belnr,
sgtxt like bseg-sgtxt,
shkzg like bseg-shkzg, "借贷标志
* lokkt LIKE bseg-lokkt,
hkont like bseg-hkont,
* KUNNR LIKE BSEG-KUNNR,
* LIFNR LIKE BSEG-LIFNR,
txt20 like skat-txt20,
* waers LIKE bkpf-waers,
* kursf LIKE bkpf-kursf,
* wrbtr like bseg-wrbtr,
dmbtr like bseg-dmbtr,
aufnr like bseg-aufnr, "内部订单号
matnr like bseg-matnr,
maktx like makt-maktx,
fkber like bseg-fkber, "功能范围
belnr like bkpf-belnr,
xblnr like bkpf-xblnr,
usnam like bkpf-usnam,
* GSBER like bseg-GSBER,
* PRCTR LIKE BSEG-PRCTR,
* KTEXTF LIKE CEPCT-KTEXT,
* BUZEI LIKE BSEG-BUZEI,
* BSTAT LIKE BKPF-BSTAT,
* vname like LFA1-name1,
* cname like kna1-name1,
end of ls_tab.
data:begin of lt_bkpf occurs 0,
bukrs like bkpf-bukrs,
gjahr like bkpf-gjahr,
bldat like bkpf-bldat,
budat like bkpf-budat,
belnr like bkpf-belnr,
bstat like bkpf-bstat,
bktxt like bkpf-bktxt,
xblnr like bkpf-xblnr,
usnam like bkpf-usnam,
end of lt_bkpf.
data:begin of lt_csks occurs 0,
kokrs like csks-kokrs,
kostl like csks-kostl,
datbi like csks-datbi,
bkzkp like csks-bkzkp,
khinr like csks-khinr,
end of lt_csks.
data: gs_layout type slis_layout_alv,
gt_fieldcat type slis_t_fieldcat_alv,
gt_sp_group type slis_t_sp_group_alv,
gt_sort type slis_t_sortinfo_alv,
gt_events type slis_t_event,
gs_print type slis_print_alv,
g_variant type disvariant.
data: g_repid like sy-repid,
g_datum like sy-datum.
data: gt_list_top_of_page type slis_t_listheader,
i_events type slis_t_event ,
it_lines like tline occurs 0 with header line.
*******************************************************************************************************
*&---------------------------------------------------------------------*
*& 包括 ZFI_R_29_GLF01
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Form GET_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
form get_data .
select bkpf~bukrs bkpf~gjahr bkpf~belnr bkpf~bstat bkpf~bldat
bkpf~budat bkpf~bktxt bkpf~xblnr bkpf~usnam
into corresponding fields of table lt_bkpf
from bkpf
where bukrs in s_bukrs
and gjahr in s_gjahr
and budat in s_budat.
* AND bstat IN (' ', 'A', 'B', 'D', 'M', 'S', 'V', 'W', 'Z').
if lt_bkpf[] is initial.
message i000(zfi001) with 'No data ,Please enter agein!'.
stop.
else.
sort lt_bkpf.
endif.
if s_kostl[] is not initial. " 选择条件成本中心不为空
" 凭证表体信息 VBSEGS~lokkt VBSEGS~hkont
select bseg~xref3 bseg~kstar bseg~kostl bseg~sgtxt
bseg~shkzg bseg~hkont bseg~dmbtr bseg~aufnr
bseg~matnr bseg~fkber "功能范围
bukrs gjahr belnr
into corresponding fields of table lt_tab
from bseg
for all entries in lt_bkpf
where bukrs = lt_bkpf-bukrs
and belnr = lt_bkpf-belnr
and gjahr = lt_bkpf-gjahr
and hkont in s_hkont
and kostl in s_kostl
and kstar in s_kstar
and aufnr in s_aufnr
and xref3 in s_xref3.
loop at lt_tab.
* LOOP AT LT_BKPF WHERE BUKRS = LT_TAB-BUKRS
* AND GJAHR = LT_TAB-GJAHR
* AND belnr = LT_TAB-belnr.
* LT_TAB-BLDAT = LT_BKPF-BLDAT .
* LT_TAB-BUDAT = LT_BKPF-BUDAT .
* LT_TAB-BKTXT = LT_BKPF-BKTXT .
* LT_TAB-XBLNR = LT_BKPF-XBLNR .
* LT_TAB-USNAM = LT_BKPF-USNAM.
*
* ENDLOOP.
select single bldat budat bktxt xblnr usnam
into (lt_tab-bldat,lt_tab-budat,lt_tab-bktxt,lt_tab-xblnr,lt_tab-usnam)
from bkpf
where bukrs = lt_tab-bukrs
and gjahr = lt_tab-gjahr
and belnr = lt_tab-belnr.
select single ktext into lt_tab-ktext "成本要素
from csku
where kstar = lt_tab-kstar
and ktopl = '1000'
and spras = '1'.
select single ktext into lt_tab-ktextc "成本中心
from cskt
where kostl = lt_tab-kostl
and kokrs = '1000'
and spras = '1'.
select single txt20 into lt_tab-txt20 "科目
from skat
where saknr = lt_tab-hkont
and ktopl = '1000'
and spras = '1'.
if lt_tab-shkzg = 'H'.
lt_tab-dmbtr = -1 * lt_tab-dmbtr.
endif.
if lt_tab-aufnr is not initial.
select single autyp ktext into (lt_tab-auart,lt_tab-txt) "订单类别、名次
from aufk
where aufnr = lt_tab-aufnr.
endif.
if lt_tab-matnr is not initial.
select single maktx into lt_tab-maktx "物料
from makt
where matnr = lt_tab-matnr
and spras = '1'.
endif.
call function 'CONVERSION_EXIT_ALPHA_OUTPUT'
exporting
input = lt_tab-kstar
importing
output = lt_tab-kstar.
call function 'CONVERSION_EXIT_ALPHA_OUTPUT'
exporting
input = lt_tab-hkont
importing
output = lt_tab-hkont.
call function 'CONVERSION_EXIT_ALPHA_OUTPUT'
exporting
input = lt_tab-aufnr
importing
output = lt_tab-aufnr.
call function 'CONVERSION_EXIT_ALPHA_OUTPUT'
exporting
input = lt_tab-matnr
importing
output = lt_tab-matnr.
modify lt_tab.
endloop.
endif.
if s_khinr[] is not initial.
select kostl kokrs datbi bkzkp khinr
from csks
into corresponding fields of table lt_csks
where khinr in s_khinr
and datbi >= sy-datum
and bkzkp <> 'X'.
if lt_csks[] is initial.
message i000(zfi001) with 'No data ,Please enter agein!'.
stop.
else.
sort lt_csks.
endif.
* LOOP AT LT_CSKS INTO
* S_KOSTL.
* ENDLOOP.
" 凭证表体信息 VBSEGS~lokkt VBSEGS~hkont
select bseg~xref3 bseg~kstar bseg~kostl bseg~sgtxt
bseg~shkzg bseg~hkont bseg~dmbtr bseg~aufnr
bseg~matnr bseg~fkber "功能范围
bukrs gjahr belnr
into corresponding fields of table lt_tab
from bseg
for all entries in lt_bkpf
where bukrs = lt_bkpf-bukrs
and belnr = lt_bkpf-belnr
and gjahr = lt_bkpf-gjahr
and hkont in s_hkont
* AND KOSTL IN LT_CSKS-KOSTL
and kstar in s_kstar
and aufnr in s_aufnr
and xref3 in s_xref3.
loop at lt_tab.
loop at lt_csks where kostl = lt_tab-kostl.
lt_tab-khinr = lt_csks-khinr.
endloop.
if lt_tab-khinr is initial.
delete lt_tab.
continue.
endif.
*
* LOOP AT LT_BKPF WHERE BUKRS = LT_TAB-BUKRS
* AND GJAHR = LT_TAB-GJAHR
* AND belnr = LT_TAB-belnr.
* LT_TAB-BLDAT = LT_BKPF-BLDAT .
* LT_TAB-BUDAT = LT_BKPF-BUDAT .
* LT_TAB-BKTXT = LT_BKPF-BKTXT .
* LT_TAB-XBLNR = LT_BKPF-XBLNR .
* LT_TAB-USNAM = LT_BKPF-USNAM.
*
* ENDLOOP.
select single bldat budat bktxt xblnr usnam
into (lt_tab-bldat,lt_tab-budat,lt_tab-bktxt,lt_tab-xblnr,lt_tab-usnam)
from bkpf
where bukrs = lt_tab-bukrs
and gjahr = lt_tab-gjahr
and belnr = lt_tab-belnr.
select single ktext into lt_tab-ktext "成本要素
from csku
where kstar = lt_tab-kstar
and ktopl = '1000'
and spras = '1'.
select single ktext into lt_tab-ktextc "成本中心
from cskt
where kostl = lt_tab-kostl
and kokrs = '1000'
and spras = '1'.
select single txt20 into lt_tab-txt20 "科目
from skat
where saknr = lt_tab-hkont
and ktopl = '1000'
and spras = '1'.
if lt_tab-shkzg = 'H'.
lt_tab-dmbtr = -1 * lt_tab-dmbtr.
endif.
if lt_tab-aufnr is not initial.
select single autyp ktext into (lt_tab-auart,lt_tab-txt) "订单类别、名次
from aufk
where aufnr = lt_tab-aufnr.
endif.
if lt_tab-matnr is not initial.
select single maktx into lt_tab-maktx "物料
from makt
where matnr = lt_tab-matnr
and spras = '1'.
endif.
call function 'CONVERSION_EXIT_ALPHA_OUTPUT'
exporting
input = lt_tab-kstar
importing
output = lt_tab-kstar.
call function 'CONVERSION_EXIT_ALPHA_OUTPUT'
exporting
input = lt_tab-hkont
importing
output = lt_tab-hkont.
call function 'CONVERSION_EXIT_ALPHA_OUTPUT'
exporting
input = lt_tab-aufnr
importing
output = lt_tab-aufnr.
call function 'CONVERSION_EXIT_ALPHA_OUTPUT'
exporting
input = lt_tab-matnr
importing
output = lt_tab-matnr.
modify lt_tab.
endloop.
endif.
endform. " GET_DATA
*&---------------------------------------------------------------------*
*& Form E01_FIELDCAT_INIT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_GT_FIELDCAT[] text
*----------------------------------------------------------------------*
form e01_fieldcat_init using e01_lt_fieldcat type slis_t_fieldcat_alv.
data: ls_fieldcat type slis_fieldcat_alv,
l_fname type lvc_fname,
s_field type string.
clear ls_fieldcat.
ls_fieldcat-fieldname = 'BLDAT'.
ls_fieldcat-seltext_s = '凭证日期'.
ls_fieldcat-seltext_m = '凭证日期'.
ls_fieldcat-seltext_l = '凭证日期'.
ls_fieldcat-outputlen = '10'.
append ls_fieldcat to e01_lt_fieldcat.
clear ls_fieldcat.
ls_fieldcat-fieldname = 'BUDAT'.
ls_fieldcat-seltext_s = '过帐日期'.
ls_fieldcat-seltext_m = '过帐日期'.
ls_fieldcat-seltext_l = '过帐日期'.
ls_fieldcat-outputlen = '10'.
append ls_fieldcat to e01_lt_fieldcat.
clear ls_fieldcat.
ls_fieldcat-fieldname = 'XREF3'.
ls_fieldcat-seltext_s = '参考码3'.
ls_fieldcat-seltext_m = '参考码3'.
ls_fieldcat-seltext_l = '参考码3'.
ls_fieldcat-outputlen = '10'.
append ls_fieldcat to e01_lt_fieldcat.
clear ls_fieldcat.
ls_fieldcat-fieldname = 'KSTAR'.
ls_fieldcat-seltext_s = '成本要素'.
ls_fieldcat-seltext_m = '成本要素'.
ls_fieldcat-seltext_l = '成本要素'.
ls_fieldcat-outputlen = '10'.
append ls_fieldcat to e01_lt_fieldcat.
clear ls_fieldcat.
ls_fieldcat-fieldname = 'KTEXT'.
ls_fieldcat-seltext_s = '成本要素描述'.
ls_fieldcat-seltext_m = '成本要素描述'.
ls_fieldcat-seltext_l = '成本要素描述'.
ls_fieldcat-outputlen = '20'.
append ls_fieldcat to e01_lt_fieldcat.
clear ls_fieldcat.
ls_fieldcat-fieldname = 'KOSTL'.
ls_fieldcat-seltext_s = '成本中心'.
ls_fieldcat-seltext_m = '成本中心'.
ls_fieldcat-seltext_l = '成本中心'.
ls_fieldcat-outputlen = '10'.
append ls_fieldcat to e01_lt_fieldcat.
clear ls_fieldcat.
ls_fieldcat-fieldname = 'KTEXTC'.
ls_fieldcat-seltext_s = '成本中心描述'.
ls_fieldcat-seltext_m = '成本中心描述'.
ls_fieldcat-seltext_l = '成本中心描述'.
ls_fieldcat-outputlen = '20'.
append ls_fieldcat to e01_lt_fieldcat.
clear ls_fieldcat.
ls_fieldcat-fieldname = 'BKTXT'.
ls_fieldcat-seltext_s = '凭证抬头文本'.
ls_fieldcat-seltext_m = '凭证抬头文本'.
ls_fieldcat-seltext_l = '凭证抬头文本'.
ls_fieldcat-outputlen = '25'.
append ls_fieldcat to e01_lt_fieldcat.
clear ls_fieldcat.
ls_fieldcat-fieldname = 'SGTXT'.
ls_fieldcat-seltext_s = '项目文本'.
ls_fieldcat-seltext_m = '项目文本'.
ls_fieldcat-seltext_l = '项目文本'.
ls_fieldcat-outputlen = '30'.
append ls_fieldcat to e01_lt_fieldcat.
clear ls_fieldcat.
ls_fieldcat-fieldname = 'SHKZG'.
ls_fieldcat-seltext_s = 'D/C'.
ls_fieldcat-seltext_m = 'D/C'.
ls_fieldcat-seltext_l = 'D/C'.
ls_fieldcat-outputlen = '1'.
append ls_fieldcat to e01_lt_fieldcat.
clear ls_fieldcat.
ls_fieldcat-fieldname = 'HKONT'.
ls_fieldcat-seltext_s = '总分类帐帐目'.
ls_fieldcat-seltext_m = '总分类帐帐目'.
ls_fieldcat-seltext_l = '总分类帐帐目'.
ls_fieldcat-outputlen = '10'.
append ls_fieldcat to e01_lt_fieldcat.
clear ls_fieldcat.
ls_fieldcat-fieldname = 'TXT20'.
ls_fieldcat-seltext_s = '总帐科目名称'.
ls_fieldcat-seltext_m = '总帐科目名称'.
ls_fieldcat-seltext_l = '总帐科目名称'.
ls_fieldcat-outputlen = '20'.
append ls_fieldcat to e01_lt_fieldcat.
clear ls_fieldcat.
ls_fieldcat-fieldname = 'DMBTR'.
ls_fieldcat-seltext_s = '本位币金额'.
ls_fieldcat-seltext_m = '本位币的金额'.
ls_fieldcat-seltext_l = '本位币计的金额'.
ls_fieldcat-do_sum = 'X'.
ls_fieldcat-outputlen = '13'.
append ls_fieldcat to e01_lt_fieldcat.
clear ls_fieldcat.
ls_fieldcat-fieldname = 'AUFNR'.
ls_fieldcat-seltext_s = '订单号'.
ls_fieldcat-seltext_m = '内部订单号'.
ls_fieldcat-seltext_l = '内部订单号'.
ls_fieldcat-outputlen = '12'.
append ls_fieldcat to e01_lt_fieldcat.
clear ls_fieldcat.
ls_fieldcat-fieldname = 'AUART'.
ls_fieldcat-seltext_s = '订单类型'.
ls_fieldcat-seltext_m = '订单类型'.
ls_fieldcat-seltext_l = '订单类型'.
ls_fieldcat-outputlen = '7'.
append ls_fieldcat to e01_lt_fieldcat.
clear ls_fieldcat.
ls_fieldcat-fieldname = 'TXT'.
ls_fieldcat-seltext_s = '内部订单名称'.
ls_fieldcat-seltext_m = '内部订单名称'.
ls_fieldcat-seltext_l = '内部订单名称'.
ls_fieldcat-outputlen = '20'.
append ls_fieldcat to e01_lt_fieldcat.
clear ls_fieldcat.
ls_fieldcat-fieldname = 'MATNR'.
ls_fieldcat-seltext_s = '物料号'.
ls_fieldcat-seltext_m = '物料号'.
ls_fieldcat-seltext_l = '物料号'.
ls_fieldcat-outputlen = '13'.
append ls_fieldcat to e01_lt_fieldcat.
clear ls_fieldcat.
ls_fieldcat-fieldname = 'MAKTX'.
ls_fieldcat-seltext_s = '物料描述'.
ls_fieldcat-seltext_m = '物料描述'.
ls_fieldcat-seltext_l = '物料描述'.
ls_fieldcat-outputlen = '40'.
append ls_fieldcat to e01_lt_fieldcat.
clear ls_fieldcat.
ls_fieldcat-fieldname = 'FKBER'.
ls_fieldcat-seltext_s = '功能范围'.
ls_fieldcat-seltext_m = '功能范围'.
ls_fieldcat-seltext_l = '功能范围'.
ls_fieldcat-outputlen = '7'.
append ls_fieldcat to e01_lt_fieldcat.
clear ls_fieldcat.
ls_fieldcat-fieldname = 'BELNR'.
ls_fieldcat-seltext_s = '会计凭证编号'.
ls_fieldcat-seltext_m = '会计凭证编号'.
ls_fieldcat-seltext_l = '会计凭证编号'.
ls_fieldcat-outputlen = '10'.
append ls_fieldcat to e01_lt_fieldcat.
clear ls_fieldcat.
ls_fieldcat-fieldname = 'XBLNR'.
ls_fieldcat-seltext_s = '参考凭证号'.
ls_fieldcat-seltext_m = '参考凭证号'.
ls_fieldcat-seltext_l = '参考凭证号'.
ls_fieldcat-outputlen = '12'.
append ls_fieldcat to e01_lt_fieldcat.
clear ls_fieldcat.
ls_fieldcat-fieldname = 'USNAM'.
ls_fieldcat-seltext_s = '用户名'.
ls_fieldcat-seltext_m = '用户名'.
ls_fieldcat-seltext_l = '用户名'.
ls_fieldcat-outputlen = '8'.
append ls_fieldcat to e01_lt_fieldcat.
endform. " E01_FIELDCAT_INIT
*&---------------------------------------------------------------------*
*& Form F_SHOW_GRID
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
form f_show_grid .
call function 'REUSE_ALV_GRID_DISPLAY'
exporting
* I_BACKGROUND_ID = 'ALV_WALLPAPER2'
i_callback_program = sy-repid
* I_CALLBACK_TOP_OF_PAGE = 'TOP_OF_PAGE '
i_structure_name = 'LS_TAB'
* IS_LAYOUT = GS_LAYOUT
* I_CALLBACK_PF_STATUS_SET = 'SET_PF_STATUS'
i_callback_user_command = 'USER_CALLBACK'
it_fieldcat = gt_fieldcat[]
it_special_groups = gt_sp_group[]
it_sort = gt_sort[]
i_save = 'A'
is_variant = g_variant
it_events = gt_events[]
is_print = gs_print
tables
t_outtab = lt_tab.
endform. " F_SHOW_GRID
*&---------------------------------------------------------------------*
*& Form USER_CALLBACK
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->RF_UCOMM text
* -->RS_SELFIELD text
*----------------------------------------------------------------------*
form user_callback using rf_ucomm type sy-ucomm
rs_selfield type slis_selfield.
case rf_ucomm.
when '&IC1'.
data msg type string.
field-symbols like line of lt_tab.
read table lt_tab index rs_selfield-tabindex assigning .
if sy-subrc = 0.
set parameter id: 'BLN' field -belnr,
'BUK' field -bukrs,
'GJR' field -gjahr.
call transaction 'FB03' and skip first screen.
endif.
endcase.
endform. "USER_CALLBACK
**********************************************************************************************************
*&---------------------------------------------------------------------*
*& 包括 ZFI_R_29_GLF01
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Form GET_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
form get_data .
select bkpf~bukrs bkpf~gjahr bkpf~belnr bkpf~bstat bkpf~bldat
bkpf~budat bkpf~bktxt bkpf~xblnr bkpf~usnam
into corresponding fields of table lt_bkpf
from bkpf
where bukrs in s_bukrs
and gjahr in s_gjahr
and budat in s_budat.
* AND bstat IN (' ', 'A', 'B', 'D', 'M', 'S', 'V', 'W', 'Z').
if lt_bkpf[] is initial.
message i000(zfi001) with 'No data ,Please enter agein!'.
stop.
else.
sort lt_bkpf.
endif.
if s_kostl[] is not initial. " 选择条件成本中心不为空
" 凭证表体信息 VBSEGS~lokkt VBSEGS~hkont
select bseg~xref3 bseg~kstar bseg~kostl bseg~sgtxt
bseg~shkzg bseg~hkont bseg~dmbtr bseg~aufnr
bseg~matnr bseg~fkber "功能范围
bukrs gjahr belnr
into corresponding fields of table lt_tab
from bseg
for all entries in lt_bkpf
where bukrs = lt_bkpf-bukrs
and belnr = lt_bkpf-belnr
and gjahr = lt_bkpf-gjahr
and hkont in s_hkont
and kostl in s_kostl
and kstar in s_kstar
and aufnr in s_aufnr
and xref3 in s_xref3.
loop at lt_tab.
* LOOP AT LT_BKPF WHERE BUKRS = LT_TAB-BUKRS
* AND GJAHR = LT_TAB-GJAHR
* AND belnr = LT_TAB-belnr.
* LT_TAB-BLDAT = LT_BKPF-BLDAT .
* LT_TAB-BUDAT = LT_BKPF-BUDAT .
* LT_TAB-BKTXT = LT_BKPF-BKTXT .
* LT_TAB-XBLNR = LT_BKPF-XBLNR .
* LT_TAB-USNAM = LT_BKPF-USNAM.
*
* ENDLOOP.
select single bldat budat bktxt xblnr usnam
into (lt_tab-bldat,lt_tab-budat,lt_tab-bktxt,lt_tab-xblnr,lt_tab-usnam)
from bkpf
where bukrs = lt_tab-bukrs
and gjahr = lt_tab-gjahr
and belnr = lt_tab-belnr.
select single ktext into lt_tab-ktext "成本要素
from csku
where kstar = lt_tab-kstar
and ktopl = '1000'
and spras = '1'.
select single ktext into lt_tab-ktextc "成本中心
from cskt
where kostl = lt_tab-kostl
and kokrs = '1000'
and spras = '1'.
select single txt20 into lt_tab-txt20 "科目
from skat
where saknr = lt_tab-hkont
and ktopl = '1000'
and spras = '1'.
if lt_tab-shkzg = 'H'.
lt_tab-dmbtr = -1 * lt_tab-dmbtr.
endif.
if lt_tab-aufnr is not initial.
select single autyp ktext into (lt_tab-auart,lt_tab-txt) "订单类别、名次
from aufk
where aufnr = lt_tab-aufnr.
endif.
if lt_tab-matnr is not initial.
select single maktx into lt_tab-maktx "物料
from makt
where matnr = lt_tab-matnr
and spras = '1'.
endif.
call function 'CONVERSION_EXIT_ALPHA_OUTPUT'
exporting
input = lt_tab-kstar
importing
output = lt_tab-kstar.
call function 'CONVERSION_EXIT_ALPHA_OUTPUT'
exporting
input = lt_tab-hkont
importing
output = lt_tab-hkont.
call function 'CONVERSION_EXIT_ALPHA_OUTPUT'
exporting
input = lt_tab-aufnr
importing
output = lt_tab-aufnr.
call function 'CONVERSION_EXIT_ALPHA_OUTPUT'
exporting
input = lt_tab-matnr
importing
output = lt_tab-matnr.
modify lt_tab.
endloop.
endif.
if s_khinr[] is not initial.
select kostl kokrs datbi bkzkp khinr
from csks
into corresponding fields of table lt_csks
where khinr in s_khinr
and datbi >= sy-datum
and bkzkp <> 'X'.
if lt_csks[] is initial.
message i000(zfi001) with 'No data ,Please enter agein!'.
stop.
else.
sort lt_csks.
endif.
* LOOP AT LT_CSKS INTO
* S_KOSTL.
* ENDLOOP.
" 凭证表体信息 VBSEGS~lokkt VBSEGS~hkont
select bseg~xref3 bseg~kstar bseg~kostl bseg~sgtxt
bseg~shkzg bseg~hkont bseg~dmbtr bseg~aufnr
bseg~matnr bseg~fkber "功能范围
bukrs gjahr belnr
into corresponding fields of table lt_tab
from bseg
for all entries in lt_bkpf
where bukrs = lt_bkpf-bukrs
and belnr = lt_bkpf-belnr
and gjahr = lt_bkpf-gjahr
and hkont in s_hkont
* AND KOSTL IN LT_CSKS-KOSTL
and kstar in s_kstar
and aufnr in s_aufnr
and xref3 in s_xref3.
loop at lt_tab.
loop at lt_csks where kostl = lt_tab-kostl.
lt_tab-khinr = lt_csks-khinr.
endloop.
if lt_tab-khinr is initial.
delete lt_tab.
continue.
endif.
*
* LOOP AT LT_BKPF WHERE BUKRS = LT_TAB-BUKRS
* AND GJAHR = LT_TAB-GJAHR
* AND belnr = LT_TAB-belnr.
* LT_TAB-BLDAT = LT_BKPF-BLDAT .
* LT_TAB-BUDAT = LT_BKPF-BUDAT .
* LT_TAB-BKTXT = LT_BKPF-BKTXT .
* LT_TAB-XBLNR = LT_BKPF-XBLNR .
* LT_TAB-USNAM = LT_BKPF-USNAM.
*
* ENDLOOP.
select single bldat budat bktxt xblnr usnam
into (lt_tab-bldat,lt_tab-budat,lt_tab-bktxt,lt_tab-xblnr,lt_tab-usnam)
from bkpf
where bukrs = lt_tab-bukrs
and gjahr = lt_tab-gjahr
and belnr = lt_tab-belnr.
select single ktext into lt_tab-ktext "成本要素
from csku
where kstar = lt_tab-kstar
and ktopl = '1000'
and spras = '1'.
select single ktext into lt_tab-ktextc "成本中心
from cskt
where kostl = lt_tab-kostl
and kokrs = '1000'
and spras = '1'.
select single txt20 into lt_tab-txt20 "科目
from skat
where saknr = lt_tab-hkont
and ktopl = '1000'
and spras = '1'.
if lt_tab-shkzg = 'H'.
lt_tab-dmbtr = -1 * lt_tab-dmbtr.
endif.
if lt_tab-aufnr is not initial.
select single autyp ktext into (lt_tab-auart,lt_tab-txt) "订单类别、名次
from aufk
where aufnr = lt_tab-aufnr.
endif.
if lt_tab-matnr is not initial.
select single maktx into lt_tab-maktx "物料
from makt
where matnr = lt_tab-matnr
and spras = '1'.
endif.
call function 'CONVERSION_EXIT_ALPHA_OUTPUT'
exporting
input = lt_tab-kstar
importing
output = lt_tab-kstar.
call function 'CONVERSION_EXIT_ALPHA_OUTPUT'
exporting
input = lt_tab-hkont
importing
output = lt_tab-hkont.
call function 'CONVERSION_EXIT_ALPHA_OUTPUT'
exporting
input = lt_tab-aufnr
importing
output = lt_tab-aufnr.
call function 'CONVERSION_EXIT_ALPHA_OUTPUT'
exporting
input = lt_tab-matnr
importing
output = lt_tab-matnr.
modify lt_tab.
endloop.
endif.
endform. " GET_DATA
*&---------------------------------------------------------------------*
*& Form E01_FIELDCAT_INIT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_GT_FIELDCAT[] text
*----------------------------------------------------------------------*
form e01_fieldcat_init using e01_lt_fieldcat type slis_t_fieldcat_alv.
data: ls_fieldcat type slis_fieldcat_alv,
l_fname type lvc_fname,
s_field type string.
clear ls_fieldcat.
ls_fieldcat-fieldname = 'BLDAT'.
ls_fieldcat-seltext_s = '凭证日期'.
ls_fieldcat-seltext_m = '凭证日期'.
ls_fieldcat-seltext_l = '凭证日期'.
ls_fieldcat-outputlen = '10'.
append ls_fieldcat to e01_lt_fieldcat.
clear ls_fieldcat.
ls_fieldcat-fieldname = 'BUDAT'.
ls_fieldcat-seltext_s = '过帐日期'.
ls_fieldcat-seltext_m = '过帐日期'.
ls_fieldcat-seltext_l = '过帐日期'.
ls_fieldcat-outputlen = '10'.
append ls_fieldcat to e01_lt_fieldcat.
clear ls_fieldcat.
ls_fieldcat-fieldname = 'XREF3'.
ls_fieldcat-seltext_s = '参考码3'.
ls_fieldcat-seltext_m = '参考码3'.
ls_fieldcat-seltext_l = '参考码3'.
ls_fieldcat-outputlen = '10'.
append ls_fieldcat to e01_lt_fieldcat.
clear ls_fieldcat.
ls_fieldcat-fieldname = 'KSTAR'.
ls_fieldcat-seltext_s = '成本要素'.
ls_fieldcat-seltext_m = '成本要素'.
ls_fieldcat-seltext_l = '成本要素'.
ls_fieldcat-outputlen = '10'.
append ls_fieldcat to e01_lt_fieldcat.
clear ls_fieldcat.
ls_fieldcat-fieldname = 'KTEXT'.
ls_fieldcat-seltext_s = '成本要素描述'.
ls_fieldcat-seltext_m = '成本要素描述'.
ls_fieldcat-seltext_l = '成本要素描述'.
ls_fieldcat-outputlen = '20'.
append ls_fieldcat to e01_lt_fieldcat.
clear ls_fieldcat.
ls_fieldcat-fieldname = 'KOSTL'.
ls_fieldcat-seltext_s = '成本中心'.
ls_fieldcat-seltext_m = '成本中心'.
ls_fieldcat-seltext_l = '成本中心'.
ls_fieldcat-outputlen = '10'.
append ls_fieldcat to e01_lt_fieldcat.
clear ls_fieldcat.
ls_fieldcat-fieldname = 'KTEXTC'.
ls_fieldcat-seltext_s = '成本中心描述'.
ls_fieldcat-seltext_m = '成本中心描述'.
ls_fieldcat-seltext_l = '成本中心描述'.
ls_fieldcat-outputlen = '20'.
append ls_fieldcat to e01_lt_fieldcat.
clear ls_fieldcat.
ls_fieldcat-fieldname = 'BKTXT'.
ls_fieldcat-seltext_s = '凭证抬头文本'.
ls_fieldcat-seltext_m = '凭证抬头文本'.
ls_fieldcat-seltext_l = '凭证抬头文本'.
ls_fieldcat-outputlen = '25'.
append ls_fieldcat to e01_lt_fieldcat.
clear ls_fieldcat.
ls_fieldcat-fieldname = 'SGTXT'.
ls_fieldcat-seltext_s = '项目文本'.
ls_fieldcat-seltext_m = '项目文本'.
ls_fieldcat-seltext_l = '项目文本'.
ls_fieldcat-outputlen = '30'.
append ls_fieldcat to e01_lt_fieldcat.
clear ls_fieldcat.
ls_fieldcat-fieldname = 'SHKZG'.
ls_fieldcat-seltext_s = 'D/C'.
ls_fieldcat-seltext_m = 'D/C'.
ls_fieldcat-seltext_l = 'D/C'.
ls_fieldcat-outputlen = '1'.
append ls_fieldcat to e01_lt_fieldcat.
clear ls_fieldcat.
ls_fieldcat-fieldname = 'HKONT'.
ls_fieldcat-seltext_s = '总分类帐帐目'.
ls_fieldcat-seltext_m = '总分类帐帐目'.
ls_fieldcat-seltext_l = '总分类帐帐目'.
ls_fieldcat-outputlen = '10'.
append ls_fieldcat to e01_lt_fieldcat.
clear ls_fieldcat.
ls_fieldcat-fieldname = 'TXT20'.
ls_fieldcat-seltext_s = '总帐科目名称'.
ls_fieldcat-seltext_m = '总帐科目名称'.
ls_fieldcat-seltext_l = '总帐科目名称'.
ls_fieldcat-outputlen = '20'.
append ls_fieldcat to e01_lt_fieldcat.
clear ls_fieldcat.
ls_fieldcat-fieldname = 'DMBTR'.
ls_fieldcat-seltext_s = '本位币金额'.
ls_fieldcat-seltext_m = '本位币的金额'.
ls_fieldcat-seltext_l = '本位币计的金额'.
ls_fieldcat-do_sum = 'X'.
ls_fieldcat-outputlen = '13'.
append ls_fieldcat to e01_lt_fieldcat.
clear ls_fieldcat.
ls_fieldcat-fieldname = 'AUFNR'.
ls_fieldcat-seltext_s = '订单号'.
ls_fieldcat-seltext_m = '内部订单号'.
ls_fieldcat-seltext_l = '内部订单号'.
ls_fieldcat-outputlen = '12'.
append ls_fieldcat to e01_lt_fieldcat.
clear ls_fieldcat.
ls_fieldcat-fieldname = 'AUART'.
ls_fieldcat-seltext_s = '订单类型'.
ls_fieldcat-seltext_m = '订单类型'.
ls_fieldcat-seltext_l = '订单类型'.
ls_fieldcat-outputlen = '7'.
append ls_fieldcat to e01_lt_fieldcat.
clear ls_fieldcat.
ls_fieldcat-fieldname = 'TXT'.
ls_fieldcat-seltext_s = '内部订单名称'.
ls_fieldcat-seltext_m = '内部订单名称'.
ls_fieldcat-seltext_l = '内部订单名称'.
ls_fieldcat-outputlen = '20'.
append ls_fieldcat to e01_lt_fieldcat.
clear ls_fieldcat.
ls_fieldcat-fieldname = 'MATNR'.
ls_fieldcat-seltext_s = '物料号'.
ls_fieldcat-seltext_m = '物料号'.
ls_fieldcat-seltext_l = '物料号'.
ls_fieldcat-outputlen = '13'.
append ls_fieldcat to e01_lt_fieldcat.
clear ls_fieldcat.
ls_fieldcat-fieldname = 'MAKTX'.
ls_fieldcat-seltext_s = '物料描述'.
ls_fieldcat-seltext_m = '物料描述'.
ls_fieldcat-seltext_l = '物料描述'.
ls_fieldcat-outputlen = '40'.
append ls_fieldcat to e01_lt_fieldcat.
clear ls_fieldcat.
ls_fieldcat-fieldname = 'FKBER'.
ls_fieldcat-seltext_s = '功能范围'.
ls_fieldcat-seltext_m = '功能范围'.
ls_fieldcat-seltext_l = '功能范围'.
ls_fieldcat-outputlen = '7'.
append ls_fieldcat to e01_lt_fieldcat.
clear ls_fieldcat.
ls_fieldcat-fieldname = 'BELNR'.
ls_fieldcat-seltext_s = '会计凭证编号'.
ls_fieldcat-seltext_m = '会计凭证编号'.
ls_fieldcat-seltext_l = '会计凭证编号'.
ls_fieldcat-outputlen = '10'.
append ls_fieldcat to e01_lt_fieldcat.
clear ls_fieldcat.
ls_fieldcat-fieldname = 'XBLNR'.
ls_fieldcat-seltext_s = '参考凭证号'.
ls_fieldcat-seltext_m = '参考凭证号'.
ls_fieldcat-seltext_l = '参考凭证号'.
ls_fieldcat-outputlen = '12'.
append ls_fieldcat to e01_lt_fieldcat.
clear ls_fieldcat.
ls_fieldcat-fieldname = 'USNAM'.
ls_fieldcat-seltext_s = '用户名'.
ls_fieldcat-seltext_m = '用户名'.
ls_fieldcat-seltext_l = '用户名'.
ls_fieldcat-outputlen = '8'.
append ls_fieldcat to e01_lt_fieldcat.
endform. " E01_FIELDCAT_INIT
*&---------------------------------------------------------------------*
*& Form F_SHOW_GRID
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
form f_show_grid .
call function 'REUSE_ALV_GRID_DISPLAY'
exporting
* I_BACKGROUND_ID = 'ALV_WALLPAPER2'
i_callback_program = sy-repid
* I_CALLBACK_TOP_OF_PAGE = 'TOP_OF_PAGE '
i_structure_name = 'LS_TAB'
* IS_LAYOUT = GS_LAYOUT
* I_CALLBACK_PF_STATUS_SET = 'SET_PF_STATUS'
i_callback_user_command = 'USER_CALLBACK'
it_fieldcat = gt_fieldcat[]
it_special_groups = gt_sp_group[]
it_sort = gt_sort[]
i_save = 'A'
is_variant = g_variant
it_events = gt_events[]
is_print = gs_print
tables
t_outtab = lt_tab.
endform. " F_SHOW_GRID
*&---------------------------------------------------------------------*
*& Form USER_CALLBACK
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->RF_UCOMM text
* -->RS_SELFIELD text
*----------------------------------------------------------------------*
form user_callback using rf_ucomm type sy-ucomm
rs_selfield type slis_selfield.
case rf_ucomm.
when '&IC1'.
data msg type string.
field-symbols like line of lt_tab.
read table lt_tab index rs_selfield-tabindex assigning .
if sy-subrc = 0.
set parameter id: 'BLN' field -belnr,
'BUK' field -bukrs,
'GJR' field -gjahr
call transaction 'FB03' and skip first screen.
endif.
endcase.
endform. "USER_CALLBACK
*****************************************************************************************************
S_AUFNR 内部订单号
S_BUDAT 过账日期
S_BUKRS 公司
S_GJAHR 会计年度
S_HKONT 科目
S_KHINR 成本中心组
S_KOSTL 成本中心
S_KSTAR 成本要素
S_XREF3 参考凭证3