INCLUDE zfir_0018top.
TYPE-POOLS:slis.
TABLES:bkpf,bseg,VBAK.
DATA: g_repid LIKE sy-repid,"程序名
gs_disvar TYPE disvariant, "ALV 显示格式
gs_print TYPE slis_print_alv, "ALV打印格式
gs_layout TYPE slis_layout_alv, "ALV输出样式
gt_events TYPE slis_t_event WITH HEADER LINE,"ALV事件
gt_sort TYPE slis_t_sortinfo_alv WITH HEADER LINE, "ALV 排序内表
gt_fieldcat TYPE slis_t_fieldcat_alv WITH HEADER LINE, "字段目录
gt_listheader TYPE slis_t_listheader WITH HEADER LINE."ALV表头
DATA: BEGIN OF gt_result OCCURS 0,
bukrs LIKE bseg-bukrs,
butxt LIKE t001-butxt,
gjahr LIKE bseg-gjahr,
budat LIKE bkpf-budat,
belnr LIKE bseg-belnr,
* buzei LIKE bseg-buzei,
shkzg LIKE bseg-shkzg,
awkey LIKE bkpf-awkey,"发票号
* vbeln LIKE vbap-vbeln,
* posnr LIKE vbap-posnr,
matnr LIKE bseg-matnr,
maktx LIKE makt-maktx,
hkont LIKE bseg-hkont,"总账科目
txt20 LIKE skat-txt20,
dmbtr LIKE bseg-dmbtr,"金额
fkimg LIKE vbrp-fkimg,"数量
VRKME LIKE vbrp-VRKME,"销售单位
netpr LIKE vbap-netpr,"单价
kunrg LIKE vbrk-kunrg,
name1 LIKE kna1-name1,
AUBEL LIKE VBRP-AUBEL,
dmbtr1 LIKE bseg-dmbtr,"折扣折让
netpr1 LIKE vbap-netpr,"单价
AUART LIKE VBAK-AUART,"订单类型
BEZEI LIKE TVAKT-BEZEI,"订单类型描述
END OF gt_result.
DATA: BEGIN OF gt_bkpf OCCURS 0,
bukrs LIKE bkpf-bukrs,
belnr LIKE bkpf-belnr,
gjahr LIKE bkpf-gjahr,
budat LIKE bkpf-budat,
awkey LIKE bkpf-awkey,"发票号
XBLNR LIKE BKPF-XBLNR,
BLART LIKE BKPF-BLART,
END OF gt_bkpf.
DATA: BEGIN OF gt_bseg OCCURS 0,
bukrs LIKE bseg-bukrs,
belnr LIKE bseg-belnr,
gjahr LIKE bseg-gjahr,
buzei LIKE bseg-buzei,
shkzg LIKE bseg-shkzg,
dmbtr LIKE bseg-dmbtr,
matnr LIKE bseg-matnr,
hkont LIKE bseg-hkont,
menge like bseg-menge,
MEINS like bseg-MEINS,
ERFMG like bseg-ERFMG,
ERFME like bseg-ERFME,
VBUND like bseg-VBUND,
END OF gt_bseg.
DATA:BEGIN OF lt_vbrp OCCURS 0,
vbeln LIKE vbrp-vbeln,"发票号
posnr LIKE vbrp-posnr,
matnr LIKE vbrp-matnr,
fkimg LIKE vbrp-fkimg,
VRKME LIKE vbrp-VRKME,
MEINS LIKE vbrp-MEINS,
FKLMG LIKE vbrp-FKLMG,
END OF lt_vbrp.
data gt_bseg1 like TABLE OF gt_bseg WITH HEADER LINE.
INCLUDE zfir_0018s01.
SELECTION-SCREEN BEGIN OF BLOCK blk1 WITH FRAME TITLE t1.
SELECT-OPTIONS:s_bukrs FOR bkpf-bukrs OBLIGATORY,
s_gjahr FOR bkpf-gjahr DEFAULT sy-datum+0(4),
s_budat FOR bkpf-budat,
s_hkont FOR bseg-hkont,
s_auart FOR VBAK-AUART,
s_matnr FOR bseg-matnr.
SELECTION-SCREEN END OF BLOCK blk1.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_hkont-low.
PERFORM frm_onf4_hkont USING 'S_HKONT-LOW'.
INCLUDE zfir_0018e01.
INITIALIZATION.
t1 = '数据库选择'.
AT SELECTION-SCREEN.
PERFORM frm_auth_check.
START-OF-SELECTION.
PERFORM frm_select_data.
PERFORM frm_comment_build.
PERFORM init_layout. "设置输出格式
PERFORM init_fieldcat. "设置输出字段
PERFORM frm_output. "输出
INCLUDE zfir_0018f01.
FORM frm_onf4_hkont USING p_field.
TYPES:BEGIN OF ty_skat,
saknr TYPE skat-saknr,
txt20 TYPE skat-txt20,
END OF ty_skat.
DATA:lt_skat TYPE TABLE OF ty_skat WITH HEADER LINE.
SELECT
saknr
txt20
FROM skat
INTO TABLE lt_skat
WHERE saknr IN ('6001010000','6001020000','6051010000','6051020000','6051980000',
'6401010000','6401020000','6402010000','6402020000','6402980000')
AND spras = sy-langu.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
* DDIC_STRUCTURE = ' '
retfield = 'SAKNR' "预选值要填入的字段名
* PVALKEY = ' '
dynpprog = sy-repid
dynpnr = sy-dynnr
dynprofield = p_field " 此屏幕字段参数
value_org = 'S'
* multiple_choice = 'X'
callback_program = sy-repid
TABLES
value_tab = lt_skat[] " 存放预选值清单的内表
* FIELD_TAB =
* DYNPFLD_MAPPING =
EXCEPTIONS
parameter_error = 1
no_values_found = 2
OTHERS = 3.
ENDFORM. " frm_onf4_bukrs
*&---------------------------------------------------------------------*
*& Form frm_auth_check
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM frm_auth_check.
DATA lt_t001 LIKE TABLE OF t001 WITH HEADER LINE.
SELECT
bukrs
INTO CORRESPONDING FIELDS OF TABLE lt_t001
FROM t001
WHERE bukrs IN s_bukrs.
LOOP AT lt_t001.
CALL FUNCTION'ZZ_CHECK_REPAUTH'
EXPORTING
i_module = 'FC'
i_bukrs = lt_t001-bukrs
* i_werks =
EXCEPTIONS
not_authorized = 1
no_module = 2
OTHERS = 3.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDLOOP.
ENDFORM." FRM_CHECK_INPUT
*&---------------------------------------------------------------------*
*& Form frm_select_data
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM frm_select_data.
PERFORM FRM_ADDED.
SELECT
bukrs
belnr
gjahr
budat
awkey
XBLNR
BLART
INTO CORRESPONDING FIELDS OF TABLE gt_bkpf
FROM bkpf
WHERE bukrs IN s_bukrs AND
gjahr IN s_gjahr AND
budat IN s_budat AND
xreversal EQ '' AND"冲销标识
blart = 'RV'.
SELECT
bukrs
belnr
gjahr
budat
awkey
XBLNR
BLART
APPENDING CORRESPONDING FIELDS OF TABLE gt_bkpf
FROM bkpf
WHERE bukrs IN s_bukrs AND
gjahr IN s_gjahr AND
budat IN s_budat AND
xreversal EQ '' AND"冲销标识
blart IN ('WL','ML','SA') AND
* BVORG EQ '' AND "公司往来记帐业务凭证号
BUKRS IN ('1000','1010','1020','1030').
*DELETE L_T_BKPF WHERE BLART = 'ML'.
IF gt_bkpf[] IS NOT INITIAL.
SELECT
bukrs
belnr
gjahr
buzei
shkzg
dmbtr
matnr
hkont
menge
MEINS
ERFMG
ERFME
VBUND
INTO CORRESPONDING FIELDS OF TABLE gt_bseg
FROM bseg
FOR ALL ENTRIES IN gt_bkpf
WHERE bukrs = gt_bkpf-bukrs AND
belnr = gt_bkpf-belnr AND
gjahr = gt_bkpf-gjahr AND
matnr IN s_matnr AND
hkont IN s_hkont AND
hkont IN ('6001010000','6001020000','6051010000','6051020000','6051980000',
'6401010000','6401020000','6402010000','6402020000','6402980000').
SELECT
bukrs
belnr
gjahr
buzei
shkzg
dmbtr
matnr
hkont
menge
MEINS
ERFMG
ERFME
VBUND
INTO CORRESPONDING FIELDS OF TABLE gt_bseg1
FROM bseg
FOR ALL ENTRIES IN gt_bkpf
WHERE bukrs = gt_bkpf-bukrs AND
belnr = gt_bkpf-belnr AND
gjahr = gt_bkpf-gjahr AND
matnr IN s_matnr AND
hkont IN ('1122030000').
IF gt_bseg[] IS NOT INITIAL.
LOOP AT gt_bseg.
READ TABLE gt_bkpf WITH KEY bukrs = gt_bseg-bukrs
belnr = gt_bseg-belnr
gjahr = gt_bseg-gjahr.
IF sy-subrc = 0.
gt_result-belnr = gt_bkpf-belnr.
gt_result-bukrs = gt_bkpf-bukrs.
gt_result-gjahr = gt_bkpf-gjahr.
gt_result-budat = gt_bkpf-budat.
if gt_result-bukrs = 1310.
gt_result-awkey = gt_bkpf-awkey.
else.
gt_result-awkey = gt_bkpf-XBLNR.
endif.
gt_result-belnr = gt_bseg-belnr.
* if gt_bseg-bukrs = '1000' OR gt_bseg-bukrs = '1010' OR gt_bseg-bukrs = '1020' OR gt_bseg-bukrs = '1030'.
* if gt_bseg-hkont = '6401010000' OR gt_bseg-hkont = '6401020000' OR gt_bseg-hkont = '6402010000' OR gt_bseg-hkont = '6402020000' OR gt_bseg-hkont = '6402980000'.
* gt_result-buzei = gt_bseg-buzei. "20120922
* endif.
* endif.
gt_result-shkzg = gt_bseg-shkzg.
gt_result-matnr = gt_bseg-matnr.
gt_result-hkont = gt_bseg-hkont.
gt_result-dmbtr = gt_bseg-dmbtr.
if gt_bseg-bukrs = '1000' OR gt_bseg-bukrs = '1010' OR gt_bseg-bukrs = '1020' OR gt_bseg-bukrs = '1030'.
IF gt_bseg-hkont = '6401010000' OR gt_bseg-hkont = '6401020000' OR gt_bseg-hkont = '6402010000' OR gt_bseg-hkont = '6402020000' OR gt_bseg-hkont = '6402980000'.
gt_result-fkimg = gt_bseg-menge.
gt_result-VRKME = gt_bseg-MEINS.
IF gt_bseg-ERFMG NE 0 AND gt_bseg-ERFME IS NOT INITIAL.
gt_result-fkimg = gt_bseg-ERFMG.
gt_result-VRKME = gt_bseg-ERFME.
ENDIF.
CONCATENATE '0090' gt_bseg-VBUND INTO gt_result-KUNRG.
ENDIF.
ENDIF.
*if gt_bseg-hkont = '6001010000'.
*READ TABLE gt_bseg1 WITH KEY bukrs = gt_bseg-bukrs belnr = gt_bseg-belnr gjahr = gt_bseg-gjahr matnr = gt_bseg-matnr.
*if sy-subrc = 0.
*if gt_result-shkzg = 'H'.
*gt_result-dmbtr1 = 0 - gt_bseg1-dmbtr.
*ELSE.
*gt_result-dmbtr1 = gt_bseg1-dmbtr.
*ENDIF.
*endif.
*endif.
COLLECT gt_result.
CLEAR gt_result.
ENDIF.
ENDLOOP.
loop at gt_bseg1.
if gt_bseg1-bukrs = '1330'.
READ TABLE gt_result WITH KEY bukrs = gt_bseg1-bukrs belnr = gt_bseg1-belnr gjahr = gt_bseg1-gjahr matnr = gt_bseg1-matnr
hkont = '6001020000'.
if sy-subrc = 0.
if gt_bseg1-shkzg = 'H'.
gt_result-dmbtr1 = gt_result-dmbtr1 - gt_bseg1-dmbtr.
ELSE.
gt_result-dmbtr1 = gt_result-dmbtr1 + gt_bseg1-dmbtr.
ENDIF.
MODIFY gt_result INDEX SY-TABIX TRANSPORTING dmbtr1.
endif.
else.
READ TABLE gt_result WITH KEY bukrs = gt_bseg1-bukrs belnr = gt_bseg1-belnr gjahr = gt_bseg1-gjahr matnr = gt_bseg1-matnr
hkont = '6001010000'.
if sy-subrc = 0.
if gt_bseg1-shkzg = 'H'.
gt_result-dmbtr1 = gt_result-dmbtr1 - gt_bseg1-dmbtr.
ELSE.
gt_result-dmbtr1 = gt_result-dmbtr1 + gt_bseg1-dmbtr.
ENDIF.
MODIFY gt_result INDEX SY-TABIX TRANSPORTING dmbtr1.
endif.
endif.
endloop.
LOOP AT gt_result.
REFRESH lt_vbrp.
SELECT
vbeln
posnr
matnr
fkimg
VRKME
MEINS
FKLMG
INTO CORRESPONDING FIELDS OF TABLE lt_vbrp
FROM vbrp
WHERE vbeln = gt_result-awkey AND
matnr = gt_result-matnr."开票数量
if sy-subrc = 0.
*LOOP AT l_t_vbrp.
* READ TABLE l_t_vbfa WITH KEY VBELV = gt_result-awkey VBELN = l_t_vbrp-VBELN POSNN = l_t_vbrp-POSNR.
* IF SY-SUBRC NE 0.
* DELETE l_t_vbrp.
* ENDIF.
*ENDLOOP.
DATA:l_fkimg LIKE vbrp-fkimg.
l_fkimg = 0.
LOOP AT lt_vbrp.
l_fkimg = l_fkimg + lt_vbrp-fkimg.
ENDLOOP.
gt_result-fkimg = l_fkimg."开票数量
endif.
SELECT SINGLE kunrg INTO gt_result-kunrg FROM vbrk WHERE vbeln = gt_result-awkey.
*addded by pym 20120920
DATA: BEGIN OF L_T_VBFA OCCURS 0,
VBELV LIKE VBFA-VBELV,
POSNV LIKE VBFA-POSNV,
VBELN LIKE VBFA-VBELN,
POSNN LIKE VBFA-POSNN,
VBTYP_N LIKE VBFA-VBTYP_N,"发票号
* XBLNR LIKE BKPF-XBLNR,
END OF L_T_VBFA.
DATA: BEGIN OF L_T_VBRK OCCURS 0,
VBELN LIKE VBRK-VBELN,
FKART LIKE VBRK-FKART,
FKTYP LIKE VBRK-FKTYP,
VBTYP LIKE VBRK-VBTYP,
FKSTO LIKE VBRK-FKSTO,
KUNRG LIKE VBRK-KUNRG,
END OF L_T_VBRK.
DATA:BEGIN OF l_t_vbrp OCCURS 0,
vbeln LIKE vbrp-vbeln,"发票号
posnr LIKE vbrp-posnr,
matnr LIKE vbrp-matnr,
fkimg LIKE vbrp-fkimg,
END OF l_t_vbrp.
REFRESH: L_T_VBRK,l_t_vbrp,L_T_VBFA.
IF gt_result-BUKRS = '1000' OR gt_result-BUKRS = '1010' OR gt_result-BUKRS = '1020' OR gt_result-BUKRS = '1030'.
IF gt_result-awkey IS INITIAL.
CLEAR gt_result-KUNRG.
ELSE.
select
VBELV
POSNV
VBELN
POSNN
VBTYP_N
INTO CORRESPONDING FIELDS OF TABLE l_t_vbfa
FROM VBFA
WHERE VBELV = gt_result-awkey
AND ( VBTYP_N = '5' OR VBTYP_N = '6'). "'M'.
* AND VBTYP_N = '5'. "'M'.
IF SY-SUBRC = 0.
SELECT
VBELN
FKART
FKTYP
VBTYP
FKSTO
KUNRG
INTO CORRESPONDING FIELDS OF TABLE L_T_VBRK
FROM VBRK
FOR ALL ENTRIES IN l_t_vbfa
WHERE VBELN = l_t_vbfa-VBELN
AND ( FKART = 'IV' OR FKART = 'IG' OR FKART = 'ZIV' OR FKART = 'ZIG' )
AND FKSTO NE 'X'.
IF SY-SUBRC = 0.
SELECT
VBELN
POSNR
MATNR
FKIMG
INTO CORRESPONDING FIELDS OF TABLE l_t_vbrp
FROM VBRP
FOR ALL ENTRIES IN L_T_VBRK
WHERE VBELN = L_T_VBRK-VBELN
AND MATNR = gt_result-matnr.
LOOP AT l_t_vbrp.
READ TABLE l_t_vbfa WITH KEY VBELV = gt_result-awkey VBELN = l_t_vbrp-VBELN POSNN = l_t_vbrp-POSNR.
IF SY-SUBRC NE 0.
DELETE l_t_vbrp.
ENDIF.
ENDLOOP.
l_fkimg = 0.
LOOP AT l_t_vbrp.
l_fkimg = l_fkimg + l_t_vbrp-fkimg.
ENDLOOP.
gt_result-fkimg = l_fkimg.
READ TABLE L_T_VBRK INDEX 1.
* READ TABLE L_T_VBRK.
IF SY-SUBRC = 0.
gt_result-awkey = L_T_VBRK-VBELN.
gt_result-KUNRG = L_T_VBRK-KUNRG.
ENDIF.
ENDIF.
else.
** IF SY-UNAME = 'ZBIT'.
* DELETE gt_result.
* CONTINUE.
** EXIT.
* gt_result-fkimg = gt_bseg.
** ENDIF.
ENDIF.
ENDIF.
ENDIF.
*end of inserted
* SELECT SINGLE kunrg INTO gt_result-kunrg FROM vbrk WHERE vbeln = gt_result-awkey.
SELECT SINGLE name1 INTO gt_result-name1 FROM kna1 WHERE kunnr = gt_result-kunrg.
SELECT SINGLE butxt INTO gt_result-butxt FROM t001 WHERE bukrs = gt_result-bukrs.
SELECT SINGLE maktx INTO gt_result-maktx FROM makt WHERE spras = sy-langu AND matnr = gt_result-matnr.
SELECT SINGLE txt20 INTO gt_result-txt20 FROM skat WHERE spras = sy-langu AND saknr = gt_result-hkont.
IF gt_result-shkzg = 'H'.
gt_result-dmbtr = 0 - gt_result-dmbtr.
gt_result-fkimg = 0 - gt_result-fkimg.
ENDIF.
IF gt_result-fkimg IS NOT INITIAL.
gt_result-netpr = gt_result-dmbtr / gt_result-fkimg.
ENDIF.
IF gt_result-dmbtr1 IS NOT INITIAL AND gt_result-fkimg IS NOT INITIAL.
gt_result-netpr1 = ( gt_result-dmbtr + gt_result-dmbtr1 ) / gt_result-fkimg.
ENDIF.
MODIFY gt_result.
CLEAR gt_result.
ENDLOOP.
SORT gt_result BY budat belnr.
ELSE.
MESSAGE '未找到相关数据' TYPE 'S' DISPLAY LIKE 'E'.
STOP.
ENDIF.
ELSE.
MESSAGE '未找到相关数据' TYPE 'S' DISPLAY LIKE 'E'.
STOP.
ENDIF.
PERFORM FRM_ADDED_ONE. "免费订单和免费项目
PERFORM FRM_ADDED_TWO. "订单类型 订单类型描述
ENDFORM. "frm_select_data
*&---------------------------------------------------------------------*
*& Form frm_comment_build
*&---------------------------------------------------------------------*
* 设置表头
*----------------------------------------------------------------------*
FORM frm_comment_build .
CLEAR:gt_listheader,gt_listheader[].
gt_listheader-typ = 'H'.
gt_listheader-info = '产品收入明细报表'.
APPEND gt_listheader.
ENDFORM. " FRM_COMMENT_BUILD
*&---------------------------------------------------------------------*
*& Form init_layout
*&---------------------------------------------------------------------*
* 设置输出格式
*----------------------------------------------------------------------*
FORM init_layout .
* gs_layout-zebra = 'X'.
gs_layout-colwidth_optimize = 'X'."列宽自动优化
gs_layout-totals_only = 'X'.
ENDFORM. " INIT_LAYOUT
*&---------------------------------------------------------------------*
*& Form init_fieldcat
*&---------------------------------------------------------------------*
* 设置输出字段
*----------------------------------------------------------------------*
FORM init_fieldcat.
CLEAR:gt_fieldcat[].
PERFORM frm_fill_fieldcat USING 'BELNR' '凭证编码' 'X'.
*IF SY-TCODE = 'ZFI0018'.
* PERFORM frm_fill_fieldcat USING 'BUZEI' '行项目' space. "
*endif.
PERFORM frm_fill_fieldcat USING 'AWKEY' '出具发票' 'X'.
PERFORM frm_fill_fieldcat USING 'AUBEL' '订单号' space.
PERFORM frm_fill_fieldcat USING 'BUKRS' '公司代码' space.
PERFORM frm_fill_fieldcat USING 'BUTXT' '公司描述' space.
PERFORM frm_fill_fieldcat USING 'AUART' '订单类型' space.
PERFORM frm_fill_fieldcat USING 'BEZEI' '订单类型描述' space.
PERFORM frm_fill_fieldcat USING 'KUNRG' '客户' space.
PERFORM frm_fill_fieldcat USING 'NAME1' '客户描述' space.
PERFORM frm_fill_fieldcat USING 'GJAHR' '会计年度' space.
PERFORM frm_fill_fieldcat USING 'BUDAT' '过账日期' space.
PERFORM frm_fill_fieldcat USING 'MATNR' '物料编码' space.
PERFORM frm_fill_fieldcat USING 'MAKTX' '物料描述' space.
PERFORM frm_fill_fieldcat USING 'HKONT' '总账科目' space.
PERFORM frm_fill_fieldcat USING 'TXT20' '总账科目描述' space.
PERFORM frm_fill_fieldcat USING 'DMBTR' '金额' space.
PERFORM frm_fill_fieldcat USING 'FKIMG' '数量' space.
PERFORM frm_fill_fieldcat USING 'NETPR' '不含税单价' space.
PERFORM frm_fill_fieldcat USING 'DMBTR1' '折扣折让' space.
PERFORM frm_fill_fieldcat USING 'NETPR1' '单价' space.
ENDFORM. " INIT_FIELDCAT
*&---------------------------------------------------------------------*
*& Form FRM_FILL_FIELDCAT
*&---------------------------------------------------------------------*
* 填充fieldcat
*----------------------------------------------------------------------*
FORM frm_fill_fieldcat USING p_fieldname p_text p_hotspot.
CLEAR gt_fieldcat.
gt_fieldcat-fieldname = p_fieldname.
gt_fieldcat-seltext_m = p_text.
gt_fieldcat-no_zero = 'X'.
IF p_fieldname = 'DMBTR' OR p_fieldname = 'FKIMG'.
gt_fieldcat-do_sum = 'X'.
ENDIF.
gt_fieldcat-hotspot = p_hotspot.
*IF SY-TCODE = 'ZFI0018'.
*if p_fieldname = 'BUZEI'.
* gt_fieldcat-no_out = 'X'.
*endif.
*endif.
APPEND gt_fieldcat.
ENDFORM. " FRM_FILL_FIELDCAT
*&---------------------------------------------------------------------*
*& Form frm_output
*&---------------------------------------------------------------------*
* 输出
*----------------------------------------------------------------------*
FORM frm_output .
*ALV输出
g_repid = sy-repid."作用于表头输出
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = g_repid
i_callback_user_command = 'FRM_USER_COMMAND'"处理用户双击事件
is_layout = gs_layout "布局设置
it_fieldcat = gt_fieldcat[]
i_save = 'A'
is_variant = gs_disvar
it_events = gt_events[] "ALV表头
* it_sort = gt_sort[] "小计
TABLES
t_outtab = gt_result[]
EXCEPTIONS
program_error = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDFORM. " FRM_OUTPUT
*&---------------------------------------------------------------------*
*& Form frm_top_of_page
*&---------------------------------------------------------------------*
* 表头
*----------------------------------------------------------------------*
FORM frm_top_of_page.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
it_list_commentary = gt_listheader[].
ENDFORM. "FRM_TOP_OF_PAGE
*&---------------------------------------------------------------------*
*& Form frm_user_command
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->R_UCOMM text
* -->RS_SELFIELD text
*----------------------------------------------------------------------*
FORM frm_user_command USING r_ucomm LIKE sy-ucomm
rs_selfield TYPE slis_selfield.
rs_selfield-refresh = 'X'.
CASE r_ucomm.
WHEN '&IC1'.
IF rs_selfield-fieldname = 'BELNR'.
READ TABLE gt_result INDEX rs_selfield-tabindex.
IF sy-subrc = 0.
SET PARAMETER ID 'BLN' FIELD gt_result-belnr.
SET PARAMETER ID 'BUK' FIELD gt_result-bukrs.
SET PARAMETER ID 'GJR' FIELD gt_result-gjahr.
CALL TRANSACTION 'FB03' AND SKIP FIRST SCREEN.
ENDIF.
ELSEIF rs_selfield-fieldname = 'AWKEY'.
READ TABLE gt_result INDEX rs_selfield-tabindex.
IF sy-subrc = 0.
SET PARAMETER ID 'VF' FIELD gt_result-awkey.
CALL TRANSACTION 'VF03' AND SKIP FIRST SCREEN.
ENDIF.
ENDIF.
ENDCASE.
ENDFORM. " frm_user_command
*&---------------------------------------------------------------------*
*& Form FRM_ADDED
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM FRM_ADDED .
DATA WT_TEMP LIKE ZZT_FI_005.
WT_TEMP-DATUM = SY-DATUM.
WT_TEMP-UZEIT = SY-UZEIT.
WT_TEMP-UNAME = SY-UNAME.
WT_TEMP-TCODE = SY-TCODE.
WT_TEMP-CPROG = SY-CPROG.
WT_TEMP-BATCH = SY-BATCH.
WT_TEMP-CALLD = SY-CALLD.
CONCATENATE 'bukrs:' s_bukrs-LOW ',' s_bukrs-HIGH ';gjahr:' s_gjahr-LOW ',' s_gjahr-HIGH
';budat:' s_budat-LOW ',' s_budat-HIGH ';hkont:' s_hkont-LOW ',' s_hkont-HIGH
';matnr:' s_matnr-LOW ',' s_matnr-HIGH INTO WT_TEMP-TITLE.
MODIFY ZZT_FI_005 FROM WT_TEMP.
IF SY-SUBRC = 0.
* IF sy-subrc <> 0.
* ROLLBACK WORK.
* ELSE.
COMMIT WORK.
ENDIF.
ENDFORM. " FRM_ADDED
*&---------------------------------------------------------------------*
*& Form FRM_ADDED_ONE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM FRM_ADDED_ONE .
DATA: BEGIN OF L_T_VBRK OCCURS 0,
VBELN LIKE VBRK-VBELN,
FKART LIKE VBRK-FKART,
FKTYP LIKE VBRK-FKTYP,
VBTYP LIKE VBRK-VBTYP,
FKDAT LIKE VBRK-FKDAT,
BUKRS LIKE VBRK-BUKRS,
XBLNR LIKE VBRK-XBLNR,
KUNRG LIKE VBRK-KUNRG,
END OF L_T_VBRK.
DATA: BEGIN OF L_T_VBRP OCCURS 0,
VBELN LIKE VBRP-VBELN,
POSNR LIKE VBRP-POSNR,
FKIMG LIKE VBRP-FKIMG,
VGTYP LIKE VBRP-VGTYP,
AUBEL LIKE VBRP-AUBEL,
AUPOS LIKE VBRP-AUPOS,
MATNR LIKE VBRP-MATNR,
NETWR LIKE VBRP-NETWR,
END OF L_T_VBRP.
DATA:L_V_AUART TYPE AUART.
DATA L_T_VBRP_1 LIKE TABLE OF L_T_VBRP WITH HEADER LINE.
DATA L_T_VBRP_2 LIKE TABLE OF L_T_VBRP WITH HEADER LINE.
DATA L_T_VBRP_3 LIKE TABLE OF L_T_VBRP WITH HEADER LINE.
select
VBELN
FKART
FKTYP
VBTYP
FKDAT
BUKRS
XBLNR
KUNRG
INTO CORRESPONDING FIELDS OF TABLE L_T_VBRK
FROM VBRK
WHERE ( FKART = 'ZBF2' OR FKART = 'RE' )
AND FKTYP = 'L'
* AND VBTYP = 'M'
AND FKDAT IN s_budat
AND BUKRS IN s_bukrs
AND BUKRS IN ('1300','1310','1320','1330','1340','1350')
AND fksto <> 'X'.
IF L_T_VBRK[] IS NOT INITIAL.
SELECT
VBELN
POSNR
FKIMG
VGTYP
AUBEL
AUPOS
MATNR
* ARKTX
NETWR
INTO CORRESPONDING FIELDS OF TABLE L_T_VBRP
FROM VBRP
FOR ALL ENTRIES IN L_T_VBRK
WHERE VBELN = L_T_VBRK-VBELN.
ENDIF.
LOOP AT L_T_VBRP.
SELECT SINGLE AUART INTO L_V_AUART FROM VBAK WHERE VBELN = L_T_VBRP-AUBEL.
if sy-subrc = 0.
IF L_V_AUART = 'ZBFR'.
APPEND L_T_VBRP TO L_T_VBRP_2.
ELSE."IF L_V_AUART = 'ZBOR' OR L_V_AUART = 'ZBCE' OR L_V_AUART = 'ZBCR' OR L_V_AUART = 'ZBRE' OR L_V_AUART = 'ZBRF'.
IF L_T_VBRP-NETWR NE 0.
* DELETE L_T_VBRP.
ELSE.
APPEND L_T_VBRP TO L_T_VBRP_1.
ENDIF.
* ELSE.
* DELETE L_T_VBRP.
ENDIF.
endif.
ENDLOOP.
DELETE L_T_VBRP WHERE MATNR NOT IN s_matnr.
DELETE L_T_VBRP_1 WHERE MATNR NOT IN s_matnr.
DELETE L_T_VBRP_2 WHERE MATNR NOT IN s_matnr.
LOOP AT L_T_VBRP.
LOOP AT L_T_VBRP_1 WHERE VBELN = L_T_VBRP-VBELN.
IF L_T_VBRP-MATNR = L_T_VBRP_1-MATNR AND L_T_VBRP-POSNR NE L_T_VBRP_1-POSNR.
IF L_T_VBRP-NETWR NE 0.
APPEND L_T_VBRP TO L_T_VBRP_3.
ENDIF.
ENDIF.
ENDLOOP.
ENDLOOP.
LOOP AT L_T_VBRP_1.
READ TABLE L_T_VBRP_3 WITH KEY VBELN = L_T_VBRP_1-VBELN.
IF SY-SUBRC = 0.
* DELETE L_T_VBRP_1.
ELSE.
APPEND L_T_VBRP_1 TO L_T_VBRP_2.
ENDIF.
ENDLOOP.
DATA L_V_TITLE TYPE C VALUE 0.
READ TABLE gt_bseg WITH KEY HKONT = '6001010000' BUKRS = '1300'.
IF SY-SUBRC = 0.
L_V_TITLE = 1.
ENDIF.
READ TABLE gt_bseg WITH KEY HKONT = '6001010000' BUKRS = '1310'.
IF SY-SUBRC = 0.
L_V_TITLE = 1.
ENDIF.
READ TABLE gt_bseg WITH KEY HKONT = '6001010000' BUKRS = '1320'.
IF SY-SUBRC = 0.
L_V_TITLE = 1.
ENDIF.
READ TABLE gt_bseg WITH KEY HKONT = '6001010000' BUKRS = '1330'.
IF SY-SUBRC = 0.
L_V_TITLE = 1.
ENDIF.
READ TABLE gt_bseg WITH KEY HKONT = '6001010000' BUKRS = '1340'.
IF SY-SUBRC = 0.
L_V_TITLE = 1.
ENDIF.
*IF L_V_TITLE = 1.
*LOOP AT L_T_VBRP.
* READ TABLE L_T_VBRK WITH KEY VBELN = L_T_VBRP-VBELN.
*IF SY-SUBRC = 0.
*gt_result-AUBEL = L_T_VBRP-AUBEL.
*gt_result-bukrs = L_T_VBRK-bukrs.
*gt_result-gjahr = L_T_VBRK-FKDAT+0(4).
*gt_result-budat = L_T_VBRK-FKDAT.
*gt_result-KUNRG = L_T_VBRK-KUNRG.
*gt_result-MATNR = L_T_VBRP-MATNR.
*gt_result-hkont = '6001010000'.
*gt_result-fkimg = 0 - L_T_VBRP-fkimg.
* SELECT SINGLE name1 INTO gt_result-name1 FROM kna1 WHERE kunnr = gt_result-kunrg.
* SELECT SINGLE butxt INTO gt_result-butxt FROM t001 WHERE bukrs = gt_result-bukrs.
* SELECT SINGLE maktx INTO gt_result-maktx FROM makt WHERE spras = sy-langu AND matnr = gt_result-matnr.
* SELECT SINGLE txt20 INTO gt_result-txt20 FROM skat WHERE spras = sy-langu AND saknr = gt_result-hkont.
*
*APPEND gt_result.
*CLEAR gt_result.
*ENDIF.
*ENDLOOP.
*ENDIF.
IF L_V_TITLE = 1.
LOOP AT L_T_VBRP_2.
READ TABLE L_T_VBRK WITH KEY VBELN = L_T_VBRP_2-VBELN.
IF SY-SUBRC = 0.
gt_result-AUBEL = L_T_VBRP_2-AUBEL.
gt_result-bukrs = L_T_VBRK-bukrs.
gt_result-gjahr = L_T_VBRK-FKDAT+0(4).
gt_result-budat = L_T_VBRK-FKDAT.
gt_result-KUNRG = L_T_VBRK-KUNRG.
gt_result-MATNR = L_T_VBRP_2-MATNR.
gt_result-hkont = '6001010000'.
IF L_T_VBRK-FKART = 'ZBF2'.
gt_result-fkimg = 0 - L_T_VBRP_2-fkimg.
ELSEIF L_T_VBRK-FKART = 'RE'.
gt_result-fkimg = L_T_VBRP_2-fkimg.
ENDIF.
SELECT SINGLE name1 INTO gt_result-name1 FROM kna1 WHERE kunnr = gt_result-kunrg.
SELECT SINGLE butxt INTO gt_result-butxt FROM t001 WHERE bukrs = gt_result-bukrs.
SELECT SINGLE maktx INTO gt_result-maktx FROM makt WHERE spras = sy-langu AND matnr = gt_result-matnr.
SELECT SINGLE txt20 INTO gt_result-txt20 FROM skat WHERE spras = sy-langu AND saknr = gt_result-hkont.
APPEND gt_result.
CLEAR gt_result.
ENDIF.
ENDLOOP.
ENDIF.
ENDFORM. " FRM_ADDED_ONE
*&---------------------------------------------------------------------*
*& Form FRM_ADDED_TWO
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM FRM_ADDED_TWO .
data l_v_AUBEL type VBELN_VA.
data l_v_FKART type FKART.
data l_v_VBELV type VBELN.
LOOP AT gt_result.
IF gt_result-AUBEL is NOT INITIAL.
SELECT SINGLE AUART into gt_result-AUART FROM VBAK WHERE VBELN = gt_result-AUBEL.
ELSEIF gt_result-AWKEY is NOT INITIAL.
SELECT SINGLE AUBEL INTO l_v_AUBEL FROM VBRP WHERE VBELN = gt_result-AWKEY.
if sy-subrc = 0.
gt_result-AUBEL = l_v_AUBEL.
SELECT SINGLE FKART INTO l_v_FKART FROM VBRK WHERE VBELN = gt_result-AWKEY.
IF SY-SUBRC = 0.
IF l_v_FKART EQ 'ZIV'.
SELECT SINGLE BSART INTO gt_result-AUART FROM EKKO WHERE EBELN = l_v_AUBEL.
ELSE.
SELECT SINGLE AUART into gt_result-AUART FROM VBAK WHERE VBELN = l_v_AUBEL.
ENDIF.
ENDIF.
else.
SELECT SINGLE VBELV INTO l_v_VBELV FROM vbfa WHERE VBELN = gt_result-AWKEY AND VBTYP_N = 'J'.
IF SY-SUBRC = 0.
gt_result-AUBEL = l_v_VBELV.
SELECT SINGLE AUART into gt_result-AUART FROM VBAK WHERE VBELN = l_v_VBELV.
ENDIF.
endif.
ELSE.
endif.
if gt_result-AUART is NOT INITIAL .
SELECT SINGLE BEZEI INTO gt_result-BEZEI FROM TVAKT WHERE SPRAS = '1' AND AUART = gt_result-AUART.
IF SY-SUBRC = 0.
ELSE.
SELECT SINGLE BATXT INTO gt_result-BEZEI FROM T161T WHERE SPRAS = '1' AND BSART = gt_result-AUART AND BSTYP = 'F' .
ENDIF.
endif.
MODIFY gt_result TRANSPORTING AUART BEZEI AUBEL.
ENDLOOP.
DELETE gt_result WHERE AUART NOT IN S_AUART.
ENDFORM. " FRM_ADDED_TWO