设为首页 收藏本站
查看: 625|回复: 0

[经验分享] 金税接口Sap下传文档

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-9-18 12:17:47 | 显示全部楼层 |阅读模式
摘自BOB,以后备查,有问题别问我!
* Program ID/Name: ZSDE1001              Date written: 20080516
* Author's name:   xh                    Last update:
* Program title:   金税接口Sap下传文档
* Project Name:    JSZY
* Version: 1.0
*----------------------------------------------------------------------*
* Description: (Incl. Related Function Area and System)
*----------------------------------------------------------------------*
* Change History
*----------------------------------------------------------------------*
*     Date   |   Programmer   |   Corr. #   |   Description
* 20080516   |       xh       |             |    New create
*            |                |             |
*            |                |             |
************************************************************************
report    ZSDI002_01 no standard page heading
message-id z001.
************************************************************************
*        TABLES
************************************************************************
tables:vbrk,
vbrp,
kna1,
makt,
knbk,
konv,
t006a,
vbkd,
stxl,
vbak,
VBAP,
adrc,knvv,t001,vbfa,
BSEG ,zfi031,mara,stxh.
************************************************************************
*        INCLUDES
***********************************************************************
include z_alv_define.
************************************************************************
*        PARAMETERS
************************************************************************
data:g_lin like sy-tabix,
p_lin like sy-tabix,
g_num like sy-tabix,
g_bs(1),
g_flag(1),
g_tabix like sy-tabix,
c_tmp(255),
g_text(60),
g_dmbtr(16) type p decimals 2,
g_pr(13),
G_shuilv TYPE P decimals 4,
g_vbeln like vbrk-vbeln,
g_subrc like sy-subrc,
g_zzfsn like zfi031-zzfsn,
g_mod   like sy-tabix,
G_SUM LIKE LIPS-NETWR,
g_netwr like lips-netwr,
g_kzwi5 like vbrp-kzwi5,
P_FILE like RLGRAP-FILENAME,
g_file TYPE STRING,
g_name like THEAD-TDNAME,
g_path like RLGRAP-FILENAME,
G_FKART LIKE VBRK-FKART,
G_INTYP(1),
g_answer.
*constants:
constants:C_SEP(2) VALUE '~~',
C_SPLT(1) VALUE ' ',
C_SPLT2(1) VALUE ' '.
************************************************************************
*        INTERNAL TABLES
************************************************************************
data: begin of it_konv occurs 0,
kschl like konv-kschl,
kwert like konv-kwert,
kbetr like konv-kbetr,
end of it_konv.
data:begin of it_vbrk occurs 0 ,
vbeln  like vbrk-vbeln,                              "单据号10
FKART  LIKE VBRK-FKART,
KUNRG  like vbrk-KUNRG,   "售达方
name1  like kna1-name1,   "100
stceg like  kna1-stceg,   "15
STRAS  like kna1-STRAS,
ORT01  like kna1-ORT01,
telf1  like kna1-telf1,
bankn  like knbk-bankn,
banka  like bnka-banka,
bankl  like knbk-bankl,
bkref  like knbk-bkref,
koinh  like knbk-koinh,
zzflag like vbrk-zzflag,
knumv  like vbrk-knumv,
flag   like vbrk-zzflag,
vkorg  like vbrk-vkorg,
spart  like vbrk-spart,
vtweg  like vbrk-vtweg,
SFAKN  like vbrk-sfakn,
FKDAT  LIKE VBRK-FKDAT,
FKDAR  LIKE VBRK-FKDAT,
FKARR  LIKE VBRK-FKART,
INTYP(1),                "发票类型
netwr  like vbrk-netwr,
tax    like vbrk-netwr,
mwsbk  like vbrk-mwsbk,
BSTKD  LIKE VBKD-BSTKD,
zuonr  like vbrk-zuonr,
ZZBNO  LIKE VBRK-ZZBNO,
ZZVER  LIKE VBRK-ZZVER,
check(08),
payer(08),
**************
****B   蓝票
****H   红票
**************
end of it_vbrk.
data:begin of i_vbrk occurs 0 ,
vbeln  like vbrk-vbeln,                              "单据号10
FKART  LIKE VBRK-FKART,
KUNRG  like vbrk-KUNRG,   "售达方
name1  like kna1-name1,   "100
stceg like  kna1-stceg,   "15
STRAS  like kna1-STRAS,
ORT01  like kna1-ORT01,
telf1  like kna1-telf1,
bankn  like knbk-bankn,
koinh  like knbk-koinh,
zzflag like vbrk-zzflag,
knumv  like vbrk-knumv,
flag   like vbrk-zzflag,
zzfsn  like zfi031-zzfsn,
check(08),  "复核人
payer(08),  "收款人
end of i_vbrk.
data :begin of out_vbrk occurs 0,
vbeln(10),
c1(02),
num(04),
c2(02),
name1(100), "购货单位名称
c3(02),
stceg(15),  "购方税号
c4(02),
text1(80),  "购方地址电话
c5(02),
text2(80),  "购方银行帐号
c6(02),
text3(160), "备注?位数
c7(02),
check(08),  "复核人
C8(02),
payer(08),  "收款人
end of out_vbrk.
DATA :BEGIN OF IT_VBRP OCCURS 0,
WERKS LIKE VBRP-WERKS,
matnr like vbrp-matnr,
maktx like makt-maktx,
vrkme LIKE vbap-vrkme ,"计量单位*
mseh3 LIKE t006a-mseht,"计量单位描述?
fkimg type p decimals 6," like vbrp-fkimg, "数量
netpr type p decimals 6, "单价
NETWR LIKE vbrp-netwr, "金额
tax(4) type p decimals 2 ,"税率
MWSBP like vbrp-MWSBP, "税额
kzwi1 like vbrp-kzwi1, "
kzwi5 like vbrp-kzwi5, "折扣金额
zks   like vbrp-MWSBP,
zkl(09) type p decimals 3,
groes like mara-groes,
vbeln like vbrp-vbeln,
posnr like vbrp-posnr,
UEPOS like vbrp-UEPOS,
VGBEL LIKE VBRP-VGBEL,
VGPOS LIKE VBRP-VGPOS,
pr    like vbrp-netwr,  "包装费
bstkd like VBKD-BSTKD,
END OF IT_vbrp.
data:begin of out_vbrp occurs 0,
maktx(60),   "货物名称
c1(02),
vrkme(16),   "计量单位
c2(02),
gui(30),     "规格
c3(02),
fkimg(16),   "数量
c4(02),
netwr(14),   "不含税金额
c5(02),
tax(6),      "税率
c6(02),
text1(04),   "商品税目
c7(02),
text2(16),   "折扣金额
c8(02),
mwsbp(14),   "税额
c9(02),
text3(14),   "折扣税额
c10(02),
text4(06),   "折扣率
c11(02),
netpr(14),   "单价
c12(02),
pr(01),      "单价方式
end of out_vbrp.
data:begin of i_text occurs 0,
text(80),
end of i_text.
data:begin of i_stceg occurs 0,
stceg like  kna1-stceg,
KUNRG like  vbrk-KUNRG,
zzbno like  vbrk-zzbno,
intyp(1),
end of i_stceg.
data:begin of t_text occurs 0,
text(2000),
end of t_text.
data:begin of i_vbeln occurs 0,
vbeln(20),
end of i_vbeln.
data:begin of i_zfi031  occurs 0.
include structure zfi031.
data:end of i_zfi031.
DATA : begin of LT_LINE  occurs 0.
include structure TLINE.
DATA:END OF LT_LINE.
data:begin of i_FKART occurs 0,
intyp(1),
end of i_FKART.
data:begin of i_typ occurs 0,
fkart like vbrk-fkart,
end of i_typ.
data:begin of t_vbeln occurs 0,
vbeln like vbrk-vbeln,
BSTKD like vbkd-bstkd,
end of t_vbeln.
data:er_fieldcatd type slis_t_fieldcat_alv,
er_layoutd   type slis_layout_alv,
er_list_top_of_paged type slis_t_listheader,
er_eventsd   type slis_t_event.
RANGES:R_FKARTS FOR VBRK-FKART,
R_FKARTC FOR VBRK-FKART,
R_FKARTR FOR VBRK-FKART,
R_KVGR1  FOR TVV1-KVGR1,
R_FKART  FOR VBRK-FKART.
* Selection screen
* Selection screen
selection-screen begin of block vbrk with frame title text-001.
select-options: s_vkorg FOR vbrk-vkorg no-display,
s_bukrs for vbrk-bukrs default '8000' NO-EXTENSION NO INTERVALS .
select-options:s_werks  for vbrp-werks ,
s_VBELN  FOR VBRp-VBELN,
s_KUNrg FOR vbrk-KUNrg,
s_FKDAT FOR vbrK-FKDAT default sy-datum,
s_FKART FOR vbrK-FKART no-display,
s_ERNAM for vbrk-ERNAM default sy-uname.
select-options s_posnr  FOR VBRp-posnr no-display.
select-options s_matnr for vbrp-matnr  no-display.
select-options s_matkl  FOR VBRp-matkl no-display.
selection-screen end of block VBRK.
*selection-screen : begin of block b2 with frame title text-002.
*selection-screen begin of line.
*selection-screen position 1.
*selection-screen comment 1(20)   text-003.
*selection-screen position 25.
*parameters: p_v radiobutton group rad1 default 'X'.
*selection-screen end of line.
*selection-screen begin of line.
*selection-screen position 1.
*selection-screen comment 1(20)   text-004.
*selection-screen position 25.
*parameters: p_n radiobutton group rad1 .
*selection-screen end of line.
*selection-screen : end of block b2.
selection-screen : begin of block b3 with frame title text-014.
selection-screen begin of line.
selection-screen position 1.
selection-screen comment 1(20)   text-005.
selection-screen position 25.
parameters: p_ck_1 radiobutton group rad2 default 'X'.
selection-screen end of line.
selection-screen begin of line.
selection-screen position 1.
selection-screen comment 1(20)   text-006.
selection-screen position 25.
parameters: p_ck_2 radiobutton group rad2.
selection-screen end of line.
*selection-screen begin of line.
*selection-screen position 1.
*selection-screen comment 1(20)   text-007.
*selection-screen position 25.
*parameters: p_ck_3 radiobutton group rad2.
*selection-screen end of line.
selection-screen : end of block b3.
initialization.
e_repid = sy-repid.
perform fieldcat_init  using er_fieldcat[].
perform eventtab_build using er_events[].
perform comment_build  using er_list_top_of_page[].
AT SELECTION-SCREEN.
*  PERFORM FRM_SC.
*&-------------------------------------------------------------------*
*& Start-of-selection
*&-------------------------------------------------------------------*
start-of-selection.
*== step two ==
perform fmr_get_data.
describe table it_vbrk lines g_lin.
if g_lin < 1.
message s006.
else.
perform frm_fill_out.
endif.
*---------------------------------------------------------------------*
*       FORM fieldcat_init                                            *
*---------------------------------------------------------------------*
form fieldcat_init using u_er_fieldcat type slis_t_fieldcat_alv.
data: ls_fieldcat type slis_fieldcat_alv,
nn type i.
clear:nn.
nn = nn + 1.
clear ls_fieldcat.
ls_fieldcat-col_pos  = nn.
ls_fieldcat-fieldname  = 'KUNRG'.
ls_fieldcat-tabname ='IT_VBRK'.
ls_fieldcat-seltext_l = '付款方'.
ls_fieldcat-key         = 'X'.
ls_fieldcat-outputlen = 10.
append ls_fieldcat to u_er_fieldcat.
nn = nn + 1.
clear ls_fieldcat.
ls_fieldcat-col_pos  = nn.
ls_fieldcat-fieldname  = 'NAME1'.
ls_fieldcat-tabname ='IT_VBRK'.
ls_fieldcat-seltext_l = '购方名称'.
ls_fieldcat-key         = 'X'.
ls_fieldcat-outputlen = 35.
append ls_fieldcat to u_er_fieldcat.
nn = nn + 1.
clear ls_fieldcat.
ls_fieldcat-col_pos  = nn.
ls_fieldcat-fieldname  = 'FKART'.
ls_fieldcat-tabname ='IT-VBRK'.
ls_fieldcat-seltext_l = '发票类型'.
ls_fieldcat-key         = 'X'.
ls_fieldcat-outputlen = 10.
append ls_fieldcat to u_er_fieldcat.
nn = nn + 1.
clear ls_fieldcat.
ls_fieldcat-col_pos  = nn.
ls_fieldcat-fieldname  = 'VBELN'.
ls_fieldcat-tabname ='IT-VBRK'.
ls_fieldcat-seltext_l = '单据号'.
ls_fieldcat-key         = 'X'.
ls_fieldcat-outputlen = 10.
append ls_fieldcat to u_er_fieldcat.
nn = nn + 1.
clear ls_fieldcat.
ls_fieldcat-col_pos  = nn.
ls_fieldcat-fieldname  = 'FKDAT'.
ls_fieldcat-tabname ='IT-VBRK'.
ls_fieldcat-seltext_l = '日期'.
ls_fieldcat-key         = 'X'.
ls_fieldcat-outputlen = 10.
append ls_fieldcat to u_er_fieldcat.
nn = nn + 1.
clear ls_fieldcat.
ls_fieldcat-col_pos  = nn.
ls_fieldcat-fieldname  = 'NETWR'.
ls_fieldcat-tabname ='IT-VBRK'.
ls_fieldcat-seltext_l = '金额'.
ls_fieldcat-key         = 'X'.
ls_fieldcat-outputlen = 16.
append ls_fieldcat to u_er_fieldcat.
nn = nn + 1.
clear ls_fieldcat.
ls_fieldcat-col_pos  = nn.
ls_fieldcat-fieldname  = 'TAX'.
ls_fieldcat-tabname ='IT-VBRK'.
ls_fieldcat-seltext_l = '税'.
ls_fieldcat-key         = 'X'.
ls_fieldcat-outputlen = 16.
append ls_fieldcat to u_er_fieldcat.
nn = nn + 1.
clear ls_fieldcat.
ls_fieldcat-col_pos  = nn.
ls_fieldcat-fieldname  = 'BSTKD'.
ls_fieldcat-tabname ='IT-VBRK'.
ls_fieldcat-seltext_l = '采购单'.
ls_fieldcat-key         = 'X'.
ls_fieldcat-outputlen = 16.
append ls_fieldcat to u_er_fieldcat.
endform.                               " FIELDCAT_INIT
*---------------------------------------------------------------------*
*       FORM eventtab_build                                           *
*---------------------------------------------------------------------*
form eventtab_build using u_er_events type slis_t_event.
data: ls_event type slis_alv_event.
call function 'REUSE_ALV_EVENTS_GET'
EXPORTING
i_list_type = 0
IMPORTING
et_events   = u_er_events.
read table u_er_events with key name = slis_ev_top_of_page
into ls_event.
if sy-subrc = 0.
move er_formname_top_of_page to ls_event-form.
append ls_event to u_er_events.
endif.
read table u_er_events with key name = slis_ev_user_command
into ls_event.
if sy-subrc = 0.
move e_user_command to ls_event-form.
append ls_event to u_er_events.
endif.
read table u_er_events with key name =  slis_ev_pf_status_set
into ls_event.
if sy-subrc = 0.
move e_status to ls_event-form.
append ls_event to u_er_events.
endif.
endform.                               " EVENTTAB_BUILD
*
form comment_build using u_er_list_top_of_page type
slis_t_listheader.
data: ls_line type slis_listheader.
* Listen黚erschrift: Typ H
clear ls_line.
ls_line-typ  = 'H'.
ls_line-info = text-s07.
append ls_line to u_er_list_top_of_page.
* Kopfinfo: Typ S
clear ls_line.
ls_line-typ  = 'S'.
ls_line-key  = text-s08.
append ls_line to u_er_list_top_of_page.
endform.                               " COMMENT_BUILD
*
form sp_group_build using u_er_sp_group type slis_t_sp_group_alv.
data: ls_sp_group type slis_sp_group_alv.
clear  ls_sp_group.
ls_sp_group-sp_group = 'A'.
ls_sp_group-text     = text-s06.
append ls_sp_group to u_er_sp_group.
endform.                               " SP_GROUP_BUILD
*
form layout_build using u_er_layout type slis_layout_alv.
u_er_layout-box_fieldname       = 'FLAG'.  " Checkbox
u_er_layout-get_selinfos        = 'X'.
*  U_ER_LAYOUT-F2CODE              =  'FEHL' .
* u_er_layout-confirmation_prompt = 'X'.     "Sicherheitsabfrage
* u_er_layout-key_hotspot         = 'X'.    "Schl黶sel alsHotspot
* u_er_layout-info_fieldname      = 'COL'.    "Zeilenfarbe
* u_er_layout-get_selinfos      = 'X'.
*  u_er_layout-colwidth_optimize = 'X'.
u_er_layout-detail_popup      = 'X'.
*  u_er_layout-no_keyfix         = 'X'.
*  u_er_layout-numc_sum         = 'X'.
* u_er_layout-box_fieldname     = 'FLAG'.
u_er_layout-zebra             = 'X'.
endform.                               " LAYOUT_BUILD
*---------------------------------------------------------------------*
*       FORM top_of_page                                              *
*---------------------------------------------------------------------*
form top_of_page.
*
call function 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
i_logo             = 'ENJOYSAP_LOGO'
it_list_commentary = er_list_top_of_page.
endform.                    "TOP_OF_PAGE
*&---------------------------------------------------------------------*
*&      Form  fmr_get_data
*&---------------------------------------------------------------------*
FORM fmr_get_data .
PERFORM FRM_INIT.
refresh : it_vbrk . clear : it_vbrk.
select vbrk~zzflag vbrk~vbeln vbrk~fkart vbrk~vsbed vbrk~vkorg
vbrk~vtweg  vbrk~spart vbrk~fkdat vbrk~netwr vbrk~KUNRG
vbrk~sfakn   VBRK~KNUMV VBRK~BUKRS vbrk~mwsbk VBRK~BSTNK_VF AS BSTKD VBRK~zuonr
from vbrk
into CORRESPONDING fields of  table it_vbrk
where vbrk~vkorg in s_vkorg
and   vbrk~KUNRG in s_KUNRG
and   vbrk~VBELN in s_VBELN
and  vbrk~FKDAT  in s_FKDAT
* and  vbrk~FKART in s_FKART
and  vbrk~FKART in R_FKART
* and   vbrk~RFBSK in s_RFBSK
and   vbrk~ERNAM in s_ERNAM
and   vbrk~zzflag ne 'X'  "下传金税标识
and   vbrk~fksto ne 'X'   "凭证取消标识
* AND  VBRK~RFBSK = 'C'
* and  VBRK~taxk1 = '1'
* and VBRK~land1 = 'CN'
and VBRK~netwr ne 0
and  vbrk~bukrs in s_bukrs.
loop at it_vbrk.
g_tabix = sy-tabix.
AUTHORITY-CHECK OBJECT 'V_VBRK_FKA'
ID 'FKART' FIELD IT_VBRK-FKART
ID 'ACTVT' FIELD '03'.
IF SY-SUBRC <> 0.
delete it_vbrk index g_tabix.
continue.
ENDIF.
AUTHORITY-CHECK OBJECT 'V_VBRK_VKO'
ID 'VKORG' FIELD IT_VBRK-VKORG
ID 'ACTVT' FIELD '03'.
IF SY-SUBRC <> 0.
delete it_vbrk index g_tabix.
continue.
ENDIF.
select single * from knvv where kunnr = it_vbrk-KUNRG
and VKORG = it_vbrk-vkorg
and VTWEG = it_vbrk-vtweg
and spart = it_vbrk-spart
and kvgr1 in r_kvgr1.
*    if sy-subrc = 0.
**********************
select single * from kna1 where kunnr = it_vbrk-KUNRG.
if sy-subrc = 0.
it_vbrk-name1 = kna1-name1.
it_vbrk-stceg = kna1-stceg.
it_vbrk-STRAS = kna1-STRAS.
it_vbrk-ORT01 = kna1-ORT01.
it_vbrk-telf1 = kna1-telf1.
endif.
select single * from kna1 where kunnr = 'ZZZZ'.
IF SY-SUBRC = 0.
IT_VBRK-CHECK = KNA1-NAME1.
IT_VBRK-PAYER = KNA1-NAME2.
ENDIF.
clear knbk.
select single * from knbk where kunnr = it_vbrk-KUNRG.
if sy-subrc = 0.
it_vbrk-bankn = knbk-bankn.
it_vbrk-koinh = knbk-koinh.
it_vbrk-bankl = knbk-bankl.
it_vbrk-bkref = knbk-bkref.
select single banka into it_vbrk-banka from bnka where BANKS = knbk-BANKS
and BANKL = knbk-BANKL.
endif.
it_vbrk-tax = it_vbrk-mwsbk.
CLEAR:IT_VBRK-SFAKN.
SELECT SINGLE * FROM VBFA WHERE VBELN   = IT_VBRK-VBELN
AND VBTYP_N = 'O'
AND VBTYP_V = 'M'.
IF SY-SUBRC = 0.
IT_VBRK-SFAKN = VBFA-VBELV.
ENDIF.
*    if not r_fkarts[] is initial.
*      clear vbrk.
*      SELECT SINGLE * FROM VBRK WHERE SFAKN = IT_VBRK-VBELN.
*      IF SY-SUBRC = 0 AND VBRK-FKDAT+0(6) = IT_VBRK-FKDAT+0(6).
*        delete it_vbrk index g_tabix.
*        continue.
*      ENDIF.
*    endif.
*    if not r_fkartc[] is initial.
*      clear vbrk.
*      IF it_vbrk-sfakn ne space.
*        select single * from vbrk where vbeln  = it_vbrk-SFAKN
*                                    and zzflag = 'X'.
*        IF SY-SUBRC NE  0.
*          delete it_vbrk index g_tabix.
*          continue.
*        ENDIF.
*      endif.
*    endif.
*    if not r_fkartr[] is initial.
*      clear vbrk.
*      IF IT_VBRK-FKART = 'ZSE' OR IT_VBRK-FKART = 'ZSE2'.
*        select single * from vbrk where vbeln  = it_vbrk-SFAKN
*                                    and zzflag = 'X'.
*        IF SY-SUBRC NE  0.
*          delete it_vbrk index g_tabix.
*        ENDIF.
*      ELSEIF IT_VBRK-FKART = 'ZRE'.
*        SELECT SINGLE * FROM VBRK WHERE SFAKN = IT_VBRK-VBELN.
*        IF SY-SUBRC = 0 AND VBRK-FKDAT+0(6) = IT_VBRK-FKDAT+0(6).
*          delete it_vbrk index g_tabix.
*        ENDIF.
*      ENDIF.
*    endif.
it_vbrk-intyp = 'B'.
if it_vbrk-fkart = 'ZG1' or it_vbrk-fkart = 'ZG3' or it_vbrk-fkart = 'ZRE'
or it_vbrk-fkart = 'ZRE2'.
select single * from vbrk where vbeln = it_vbrk-SFAKN.
IT_VBRK-INTYP = 'H'.
IT_VBRK-ZZBNO = vbrk-zzbno.
IT_VBRK-ZZVER = VBRK-ZZVER.
endif.
modify it_vbrk index g_tabix.
endloop.
refresh:it_vbrp.  clear:it_vbrp,g_lin.
describe table it_vbrk lines g_lin.
if g_lin > 0.
select * into corresponding fields of table it_vbrp
from vbrp for all entries in it_vbrk
where vbeln = it_vbrk-vbeln
and werks in s_werks.
endif.
CLEAR G_TABIX.
loop at it_vbrp.
g_tabix = sy-tabix.
AUTHORITY-CHECK OBJECT 'Z_ABAP'
ID 'WERKS' FIELD IT_VBRP-WERKS
ID 'ACTVT' FIELD '03'.
IF SY-SUBRC <> 0.
delete it_vbrP index g_tabix.
continue.
ENDIF.
clear: g_sum,makt,mara,t006a,mara.
select single * from  makt where matnr = it_vbrp-matnr
and SPRAS = '1'.
if sy-subrc = 0.
it_vbrp-maktx = makt-maktx.
else.
select single * from  makt where matnr = it_vbrp-matnr
and SPRAS = 'E'.
it_vbrp-maktx = makt-maktx.
endif .
select single * from mara where matnr = it_vbrp-matnr.
if sy-subrc = 0.
it_vbrp-groes = mara-WRKST.
endif.
select single * from t006a where MSEHI = it_vbrp-vrkme
and   SPRAS = '1'.
if sy-subrc = 0 .
it_vbrp-mseh3 = t006a-mseht.
endif.
REFRESH: it_konv . CLEAR : it_konv.
read table it_vbrk with key vbeln = it_vbrp-vbeln.
SELECT kschl  kwert  kbetr
INTO CORRESPONDING FIELDS OF TABLE it_konv
FROM konv
WHERE knumv = it_vbrk-knumv
AND   kposn = it_vbrp-posnr.
READ TABLE it_konv WITH KEY  kschl = 'MWSI'.
IF sy-subrc = 0.
it_vbrp-tax = it_konv-kbetr / 1000 .
ENDIF .
READ TABLE it_konv WITH KEY  kschl = 'MWST'.
IF sy-subrc = 0.
it_vbrp-tax = it_konv-kbetr / 1000 .
ENDIF .
if it_vbrp-fkimg ne 0.
it_vbrp-netpr = it_vbrp-netwr / it_vbrp-fkimg.
endif.
t_vbeln-vbeln = it_vbrp-vbeln. collect t_vbeln.
SELECT SINGLE * FROM VBKD WHERE VBELN = IT_VBRP-VGBEL.
IF SY-SUBRC = 0.
IT_VBRP-BSTKD = VBKD-BSTKD.
ENDIF.
modify it_vbrp index g_tabix.
endloop.
loop at it_vbrk.
g_tabix = sy-tabix.
read table t_vbeln with key vbeln = it_vbrk-vbeln.
if sy-subrc ne 0.
delete it_vbrk index g_tabix.
else.
endif.
READ TABLE IT_VBRP WITH KEY VBELN = IT_VBRK-VBELN.
IF SY-SUBRC = 0.
IT_VBRK-BSTKD = IT_VBRP-BSTKD.
MODIFY IT_VBRK INDEX G_TABIX.
ENDIF.
endloop.
ENDFORM.                    " fmr_get_data
*&---------------------------------------------------------------------*
*&      Form  frm_fill_out
*&---------------------------------------------------------------------*
FORM frm_fill_out .
perform layout_build using er_layout.
call function 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program       = e_repid
i_callback_pf_status_set = e_status
i_callback_user_command  = e_user_command
is_layout                = er_layout
it_fieldcat              = er_fieldcat[]
it_events                = er_events[]
TABLES
t_outtab                 = it_vbrk.
ENDFORM.                    " frm_fill_out
*---------------------------------------------------------------------*
*       FORM user_command                                             *
*---------------------------------------------------------------------*
form user_command using p_ucomm like sy-ucomm
p_selfield type slis_selfield.
case p_ucomm.
when 'DOWN'. "单个发票下传
p_selfield-refresh = 'X'.
PERFORM FRM_EXCU.
when 'CDOW'. "汇总开票(合并明细开票)
p_selfield-refresh = 'X'.
perform frm_save.
when 'CDF2'. ""汇总开票(合并明细开票)ZF2+ZF2
p_selfield-refresh = 'X'.
perform frm_save_zf2.
when '&IC1'.
read table it_vbrk index p_selfield-tabindex.
check sy-subrc = 0.
SET PARAMETER ID: 'VF' FIELD IT_VBRK-VBELN.
CALL TRANSACTION 'VF03' AND SKIP FIRST SCREEN.
when others.
endcase.
endform.                    "user_command
*---------------------------------------------------------------------*
*       FORM standard_er01                                            *
*---------------------------------------------------------------------*
form standard_er01 using  extab type slis_t_extab.
data:  wa_tab type slis_extab.
delete extab where fcode = '&RNT_PREV'.
delete extab where fcode = '&LFO'.
delete extab where fcode = '&NFO'.
move '&IC1' to wa_tab-fcode.
append wa_tab to extab.
set pf-status 'ALVLIST1' excluding extab.
endform.                    "STANDARD_ER01
*&---------------------------------------------------------------------*
*&      Form  FRM_EXCU
*&---------------------------------------------------------------------*
FORM FRM_EXCU .
CLEAR:G_LIN,g_flag, i_fkart[].
read table it_vbrk with key flag = 'X'.
IF SY-SUBRC = 0.
LOOP AT IT_VBRK WHERE FLAG  = 'X'
AND ( INTYP = 'B' OR INTYP = 'H' ).
EXIT.
ENDLOOP.
IF SY-SUBRC = 0.
PERFORM FRM_N.
ENDIF.
*    LOOP AT IT_VBRK WHERE FLAG  = 'X'
*                      AND INTYP = 'R'.
*        EXIT.
*    ENDLOOP.
*    IF SY-SUBRC = 0.
*    PERFORM FRM_R.
*    ENDIF.
ELSE.
message s007.
ENDIF.
ENDFORM.                    " FRM_EXCU
*&---------------------------------------------------------------------*
*&      Form  frm_down_h
*&---------------------------------------------------------------------*
FORM frm_down_h .
refresh:out_vbrk. clear:out_vbrk,g_lin,g_flag.
loop at it_vbrp where vbeln = it_vbrk-vbeln
and netwr ne 0.
if it_vbrp-netwr ne 0.
g_lin = g_lin + 1.
endif.
endloop.
out_vbrk-vbeln = it_vbrk-vbeln.
out_vbrk-c1 = c_sep.
if g_bs = '1'.
out_vbrk-num = g_num.
clear g_bs.
clear out_vbrk-text3.
sort t_vbeln by vbeln descending.
describe table t_vbeln lines p_lin.
loop at t_vbeln.
if sy-tabix = '1'.
concatenate t_vbeln-vbeln  out_vbrk-text3 into out_vbrk-text3.
else.
concatenate t_vbeln-vbeln ',' out_vbrk-text3 into out_vbrk-text3.
endif.
endloop.
concatenate '流水号:' out_vbrk-text3 into out_vbrk-text3.
loop at t_vbeln.
if sy-tabix = '1'.
concatenate t_vbeln-bstkd  out_vbrk-text3 into out_vbrk-text3.
else.
concatenate t_vbeln-bstkd ',' out_vbrk-text3 into out_vbrk-text3.
endif.
endloop.
concatenate '合同号:' out_vbrk-text3 into out_vbrk-text3.
else.
out_vbrk-num = g_lin.
concatenate '流水号:' it_vbrp-vgbel into out_vbrk-text3.
concatenate '合同号:' it_vbrp-bstkd out_vbrk-text3 into out_vbrk-text3.
endif.
condense out_vbrk-num.
out_vbrk-c2 = c_sep.
out_vbrk-name1 = it_vbrk-name1.
out_vbrk-c3 = c_sep.
out_vbrk-stceg = it_vbrk-stceg.
out_vbrk-c4 = c_sep.
SPLIT it_vbrk-STRAS AT c_splt  INTO:it_vbrk-STRAS  g_text.
if sy-subrc ne 0.
SPLIT it_vbrk-STRAS AT c_splt2  INTO:it_vbrk-STRAS  g_text.
endif.
SPLIT it_vbrk-ORT01 AT c_splt  INTO:it_vbrk-ORT01  g_text.
if sy-subrc ne 0.
SPLIT it_vbrk-ORT01 AT c_splt2  INTO:it_vbrk-ORT01  g_text.
endif.
* concatenate it_vbrk-STRAS it_vbrk-ORT01 it_vbrk-telf1 into   out_vbrk-text1.
concatenate it_vbrk-STRAS  it_vbrk-telf1 into   out_vbrk-text1.
out_vbrk-c5 = c_sep.
SPLIT it_vbrk-banka AT c_splt  INTO:it_vbrk-banka  g_text.
if sy-subrc ne 0.
SPLIT it_vbrk-banka AT c_splt2  INTO:it_vbrk-banka  g_text.
endif.
concatenate it_vbrk-banka it_vbrk-bankn it_vbrk-bkref into out_vbrk-text2.
* out_vbrk-text2 = it_vbrk-banka.
out_vbrk-c6 = c_sep.
********************?
if it_vbrk-intyp = 'H'.
g_flag = '1'.
*    IF IT_VBRK-FKART = 'ZS' OR IT_VBRK-FKART = 'ZS2'.
*   concatenate  into .
out_vbrk-text3 = '开具红字增值税专用发票通知单号'.
*    ENDIF.
endif.
out_vbrk-c7 = c_sep.
OUT_VBRK-CHECK = IT_VBRK-CHECK.
out_vbrk-c8 = c_sep.
OUT_VBRK-PAYER = IT_VBRK-PAYER.
append out_vbrk.
*  CLEAR OUT_VBRK.
ENDFORM.                    " frm_down_h
*&---------------------------------------------------------------------*
*&      Form  frm_down_i
*&---------------------------------------------------------------------*
FORM frm_down_i .
refresh:out_vbrp,t_text. clear:out_vbrp,G_FLAG,t_text.
loop at it_vbrp where vbeln = it_vbrk-vbeln
and netwr ne 0
and fkimg ne 0.
CLEAR G_shuilv.
out_vbrp-maktx = it_vbrp-maktx.
out_vbrp-c1 = c_sep.
*   out_vbrp-vrkme = it_vbrp-vrkme.mseh3
out_vbrp-vrkme = it_vbrp-mseh3.
out_vbrp-c2 = c_sep.
out_vbrp-gui = IT_VBRP-GROES.
out_vbrp-c3 = c_sep.
out_vbrp-fkimg = it_vbrp-fkimg.
condense out_vbrp-fkimg.
out_vbrp-c4 = c_sep.
G_shuilv = IT_VBRP-TAX + 1.
*    if it_vbrk-fkart = 'ZRE'.
*      IT_VBRP-NETWR = IT_VBRP-NETWR + IT_VBRP-KZWI5.
*      out_vbrp-netwr = it_vbrp-netwr.
*      it_vbrp-netpr  = it_vbrp-netwr / it_vbrp-fkimg.
*    ENDIF.
out_vbrp-netwr = it_vbrp-netwr.
condense out_vbrp-netwr.
out_vbrp-c5 = c_sep.
out_vbrp-tax = it_vbrp-tax.
condense out_vbrp-tax.
out_vbrp-c6 = c_sep.
out_vbrp-text1 = '1209'.
out_vbrp-c7 = c_sep.
*    if g_sum ne 0 and g_kzwi5 ne 0.
*    it_vbrp-zkl = g_kzwi5 / g_sum.
*    out_vbrp-text4 = it_vbrp-zkl.
*    condense out_vbrp-text4.
*    endif.
*  it_vbrp-kzwi5 = it_vbrp-netwr * it_vbrp-zkl.
*    it_vbrp-kzwi5 = 0 - it_vbrp-kzwi5.
*    IF G_BS = '1'.
*      IT_VBRP-KZWI5 = IT_VBRP-KZWI5 + G_KZWI5 * IT_VBRP-NETWR / G_SUM.
*    ENDIF.
*    if it_vbrk-fkart ne 'ZRE'.
*      out_vbrp-text2 = it_vbrp-kzwi5.
*      condense out_vbrp-text2.
*      out_vbrp-text3 = it_vbrp-kzwi5 * it_vbrp-tax.
*      condense out_vbrp-text3.
*    ENDIF.
*    clear it_vbrp-mwsbp.
*    it_vbrp-mwsbp = it_vbrp-netwr." - IT_VBRP-KZWI5.
*    it_vbrp-mwsbp = it_vbrp-mwsbp * it_vbrp-tax.
out_vbrp-mwsbp = it_vbrp-mwsbp.
condense out_vbrp-mwsbp.
out_vbrp-c9 = c_sep.
out_vbrp-c10 = c_sep.
out_vbrp-c11 = c_sep.
out_vbrp-c8 = c_sep.
*    out_vbrp-netpr = it_vbrp-netpr.
*    condense out_vbrp-netpr.
out_vbrp-c12 = c_sep.
out_vbrp-pr  = '0'.
if it_vbrk-intyp = 'H' ." it_vbrk-fkart ne 'ZRE'.
condense out_vbrp-fkimg.
concatenate '-' out_vbrp-fkimg into out_vbrp-fkimg.
condense out_vbrp-netwr.
concatenate '-' out_vbrp-netwr into out_vbrp-netwr.
condense out_vbrp-mwsbp.
concatenate '-' out_vbrp-mwsbp into out_vbrp-mwsbp.
*      IF IT_VBRK-FKART NE 'ZRE'.
*        concatenate '-' out_vbrp-text2 into out_vbrp-text2.
*        concatenate '-' out_vbrp-text3 into out_vbrp-text3.
*      ENDIF.
ENDIF.
append out_vbrp.
concatenate out_vbrp-maktx out_vbrp-c1  out_vbrp-vrkme out_vbrp-c2
out_vbrp-gui   out_vbrp-c3  out_vbrp-fkimg out_vbrp-c4
out_vbrp-netwr out_vbrp-c5  out_vbrp-tax   out_vbrp-c6
out_vbrp-text1 out_vbrp-c7  out_vbrp-text2 out_vbrp-c8 out_vbrp-mwsbp
out_vbrp-c9  out_vbrp-text3 out_vbrp-c10
out_vbrp-c11 out_vbrp-netpr out_vbrp-c12
out_vbrp-pr into t_text-text.
append t_text.
clear:out_vbrp,t_text.
endloop.
ENDFORM.                    " frm_down_i
*&---------------------------------------------------------------------*
*&      Form  frm_save
*&---------------------------------------------------------------------*
FORM frm_save .
refresh:i_stceg. clear:i_stceg,g_lin,g_num,g_bs,G_KZWI5,
G_FKART,G_INTYP,i_typ,i_typ[],t_vbeln[],t_vbeln.
loop at it_vbrk where flag = 'X'.
i_typ-fkart = it_vbrk-fkart. collect i_typ. clear i_typ.
g_lin = g_lin + 1.
IF it_vbrk-fkart IN R_FKART.
i_stceg-stceg = it_vbrk-stceg.
i_stceg-KUNRG = it_vbrk-KUNRG.
i_stceg-intyp = it_vbrk-intyp.
collect i_stceg. clear i_stceg.
loop at it_vbrp where vbeln = it_vbrk-vbeln
and netwr ne 0.
g_num = g_num + 1.
*      if it_vbrp-pr ne 0.
*        g_num = g_num + 1.
*      endif.
t_vbeln-vbeln = it_vbrp-vgbel.
t_vbeln-bstkd = it_vbrp-bstkd.
collect t_vbeln. clear t_vbeln.
endloop.
ENDIF.
endloop.
if g_lin < 2.
message e000 with '不能合并下载!'.
endif.
************
clear g_lin.
describe table i_stceg lines g_lin.
if g_lin = 1.
perform frm_nc.
else.
message s000 with '不能合并下载!'.
endif.
ENDFORM.                    " frm_save
*&---------------------------------------------------------------------*
*&      Form  FRM_N
*&---------------------------------------------------------------------*
FORM FRM_N .
refresh:i_text. clear:i_text.
concatenate 'SJJK0101' c_sep '销售单据传入' into i_text-text.
append i_text.
concatenate 'C:\销售发票传入文件\' sy-datum '.txt' into g_path.
CALL FUNCTION 'DOWNLOAD'
EXPORTING
filename                = g_path
codepage                = '8400'
filetype                = 'ASC'
item                    = 'Export Invoice'
mode                    = 'A'
IMPORTING
ACT_FILENAME            = P_FILE
TABLES
DATA_TAB                = i_text
EXCEPTIONS
INVALID_FILESIZE        = 1
INVALID_TABLE_WIDTH     = 2
INVALID_TYPE            = 3
NO_BATCH                = 4
UNKNOWN_ERROR           = 5
GUI_REFUSE_FILETRANSFER = 6
CUSTOMER_ERROR          = 7
OTHERS                  = 8.
G_FILE = P_FILE.
IF g_file IS INITIAL. EXIT. ENDIF.
clear:g_tabix.
loop at it_vbrk where flag = 'X' AND
( INTYP = 'B' OR INTYP = 'H' ).
refresh:i_text,t_text. clear:i_text,t_text.
g_tabix = g_tabix + 1.
clear:g_text.
CALL FUNCTION 'Z_GET_CHINESE_CHAR'
EXPORTING
NUM  = g_tabix
IMPORTING
CHAR = g_text.
concatenate '//' '单据'  g_text ':' into i_text-text.
append i_text.
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
filename = g_file
codepage = '8400'
*TRUNC_TRAILING_BLANKS_EOL = ' '
*        filetype                = 'ASC'
APPEND   = 'X'
TABLES
data_tab = i_text.
perform frm_down_h.
SPLIT OUT_VBRK-NAME1 AT c_splt  INTO:out_vbrk-name1  g_text.
if sy-subrc ne 0.
SPLIT OUT_VBRK-NAME1 AT c_splt2  INTO:out_vbrk-name1  g_text.
endif.
concatenate out_vbrk-vbeln out_vbrk-c1 out_vbrk-num   out_vbrk-c2
out_vbrk-name1 out_vbrk-c3 out_vbrk-stceg out_vbrk-c4
out_vbrk-text1 out_vbrk-c5 out_vbrk-text2 out_vbrk-c6
out_vbrk-text3 out_vbrk-c7 out_vbrk-check out_vbrk-c8
out_vbrk-payer into t_text-text.
append t_text.
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
filename = g_file
CODEPAGE = '8400'
*TRUNC_TRAILING_BLANKS_EOL = ' '
APPEND   = 'X'
*        filetype                = 'ASC'
TABLES
data_tab = t_text.
perform frm_down_i.
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
filename = g_file
codepage = '8400'
*TRUNC_TRAILING_BLANKS_EOL = ' '
APPEND   = 'X'
*       filetype                = 'ASC'
TABLES
data_tab = t_text.
if sy-subrc  = 0.
perform frm_updates.
delete it_vbrk.
endif.
endloop.
ENDFORM.                    " FRM_N
*&---------------------------------------------------------------------*
*&      Form  FRM_R
*&---------------------------------------------------------------------*
FORM FRM_R .
refresh:i_text. clear:i_text,g_file.
concatenate 'SJJK0102' c_sep '作废销售单据传入' into i_text-text.
append i_text.
concatenate 'C:\销售发票传入文件\' sy-datum '.txt' into g_path.
CALL FUNCTION 'DOWNLOAD'
EXPORTING
filename     = g_path
filetype     = 'ASC'
item         = 'Export Invoice'
mode         = 'A'
IMPORTING
ACT_FILENAME = g_file
TABLES
DATA_TAB     = i_text.
clear:g_tabix.
loop at it_vbrk where flag = 'X'
AND INTYP = 'R'.
refresh:i_text. clear:i_text.
g_tabix = g_tabix + 1.
clear:g_text.
CALL FUNCTION 'Z_GET_CHINESE_CHAR'
EXPORTING
NUM  = g_tabix
IMPORTING
CHAR = g_text.
concatenate '//' g_text ':' into i_text-text.
append i_text.
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
filename = g_file
filetype = 'ASC'
APPEND   = 'X'
TABLES
data_tab = i_text.
refresh:i_vbeln.clear:i_vbeln.
select single SFAKN into i_vbeln-vbeln from vbrk where vbeln = it_vbrk-vbeln.
*    i_vbeln-vbeln = it_vbrk-vbeln.
append i_vbeln.
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
filename = g_file
filetype = 'ASC'
APPEND   = 'X'
TABLES
data_tab = i_vbeln.
if sy-subrc  = 0.
perform frm_updates.
delete it_vbrk.
endif.
endloop.
ENDFORM.                    " FRM_R
*&---------------------------------------------------------------------*
*&      Form  FRM_SC
*&---------------------------------------------------------------------*
FORM FRM_SC .
IF S_BUKRS-LOW IS INITIAL.
message e001.
ENDIF.
IF  NOT S_BUKRS-LOW IS INITIAL.
SELECT SINGLE * FROM T001 WHERE BUKRS = S_BUKRS-LOW.
IF SY-SUBRC NE 0.
message e002.
ENDIF.
ENDIF.
IF S_KUNRG[] IS INITIAL AND S_VBELN[] IS INITIAL AND S_FKDAT[] IS INITIAL.
MESSAGE E003.
ENDIF.
ENDFORM.                    " FRM_SC
*&---------------------------------------------------------------------*
*&      Form  frm_nc
*&---------------------------------------------------------------------*
FORM frm_nc .
refresh:i_text,i_zfi031.clear:i_text,i_zfi031,g_file.
concatenate 'SJJK0101' c_sep '销售单据传入' into i_text-text.
append i_text.
concatenate 'C:\销售发票传入文件\' sy-datum '.txt' into g_path.
CALL FUNCTION 'DOWNLOAD'
EXPORTING
filename     = g_path
CODEPAGE     = '8400'
filetype     = 'ASC'
item         = 'Export Invoice'
mode         = 'A'
IMPORTING
ACT_FILENAME = P_file
TABLES
DATA_TAB     = i_text.
G_FILE = P_FILE.
IF g_file IS INITIAL. EXIT. ENDIF.
clear:g_tabix,g_vbeln.
loop at it_vbrk where flag = 'X'.
refresh:i_text. clear:i_text.
g_tabix = g_tabix + 1.
clear:g_text.
if g_tabix = 1.
g_vbeln = it_vbrk-vbeln.
CALL FUNCTION 'Z_GET_CHINESE_CHAR'
EXPORTING
NUM  = g_tabix
IMPORTING
CHAR = g_text.
concatenate '//' '单据' g_text ':' into i_text-text.
append i_text.
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
filename = g_file
CODEPAGE = '8400'
*          TRUNC_TRAILING_BLANKS_EOL = ' '
*         filetype = 'ASC'
APPEND   = 'X'
TABLES
data_tab = i_text.
g_bs = '1'.
perform frm_down_h.
clear t_text[].
concatenate out_vbrk-vbeln out_vbrk-c1 out_vbrk-num   out_vbrk-c2
out_vbrk-name1 out_vbrk-c3 out_vbrk-stceg out_vbrk-c4
out_vbrk-text1 out_vbrk-c5 out_vbrk-text2 out_vbrk-c6
out_vbrk-text3 out_vbrk-c7 out_vbrk-check out_vbrk-c8
out_vbrk-payer into t_text-text.
append t_text.
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
filename = g_file
CODEPAGE = '8400'
*          TRUNC_TRAILING_BLANKS_EOL = ' '
*          filetype                = 'ASC'
APPEND   = 'X'
TABLES
data_tab = t_text.
endif.
perform frm_down_i.
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
filename = g_file
CODEPAGE = '8400'
*TRUNC_TRAILING_BLANKS_EOL = ' '
APPEND   = 'X'
*        filetype                = 'ASC'
TABLES
data_tab = t_text.
if sy-subrc  = 0.
perform frm_upm.
delete it_vbrk.
endif.
endloop.
loop at i_zfi031.
move-corresponding i_zfi031 to zfi031.
modify zfi031 .
clear zfi031.
endloop.
ENDFORM.                    " frm_nc
*&---------------------------------------------------------------------*
*&      Form  frm_updates
*&---------------------------------------------------------------------*
FORM frm_updates .
ZFI031-vbeln  = it_vbrk-vbeln.
zfi031-vbeln1 = it_vbrk-vbeln.
zfi031-intyp  = it_vbrk-intyp.
ZFI031-UNAME = sy-uname.
ZFI031-datum = sy-datum.
modify zfi031.
ENDFORM.                    " frm_updates
*&---------------------------------------------------------------------*
*&      Form  frm_upm
*&---------------------------------------------------------------------*
FORM frm_upm .
loop at it_vbrk where flag = 'X'.
i_ZFI031-vbeln1 = g_vbeln.
*    if it_vbrk-vbeln = g_vbeln.
*      I_ZFI031-POSNR = '01'.
*    ELSE.
*      I_ZFI031-POSNR = '02'.
*    endif.
i_zfi031-vbeln = it_vbrk-vbeln.
i_zfi031-intyp = it_vbrk-intyp.
i_ZFI031-UNAME = sy-uname.
i_ZFI031-datum = sy-datum.
append i_zfi031.
*    delete it_vbrk.
endloop.
ENDFORM.                    " frm_upm
*&---------------------------------------------------------------------*
*&      Form  frm_save_zf2
*&---------------------------------------------------------------------*
FORM frm_save_zf2 .
refresh:i_stceg. clear:i_stceg,g_lin,g_num,g_bs,G_KZWI5,
G_FKART,G_INTYP,i_typ,i_typ[],g_SUM,i_zfi031[].
data:l_tabix like sy-tabix.
loop at it_vbrk where flag = 'X' and FKART = 'ZF2'.
g_lin = g_lin + 1.
i_typ-fkart = it_vbrk-fkart. collect i_typ. clear i_typ.
i_stceg-stceg = it_vbrk-stceg.
i_stceg-KUNRG = it_vbrk-KUNRG.
i_stceg-intyp = it_vbrk-intyp.
collect i_stceg. clear i_stceg.
loop at it_vbrp where vbeln = it_vbrk-vbeln.
if it_vbrp-netwr ne '0.00'.
G_SUM   = G_SUM + IT_VBRP-NETWR.
l_tabix = l_tabix + 1.
ENDIF.
endloop.
endloop.
if g_lin = 0.
message e000 with '请选择数据合并下载!'.
elseif g_lin = 1.
message e000 with '不能选择一条数据合并下载!'.
endif.
if g_sum >= '100000.00'.
message e000 with '不能合并下载!(金额大于10万)'.
ENDIF.
describe table i_stceg lines g_lin.
if g_lin >= 2.
message e000 with '不能合并下载!'.
endif.
clear g_lin.
describe table i_typ lines g_lin.
if g_lin NE 1.
message e000 with '不能合并下载!(只能ZF2+ZF2)'.
endif.
refresh:i_text,i_zfi031.clear:i_text,i_zfi031,g_file,g_path.
concatenate 'C:\销售发票传入文件\' sy-datum '.txt' into g_path.
concatenate 'SJJK0101' c_sep '销售单据传入' into i_text-text.
append i_text.
CALL FUNCTION 'DOWNLOAD'
EXPORTING
filename     = g_path
filetype     = 'ASC'
item         = 'Export Invoice'
mode         = 'A'
IMPORTING
ACT_FILENAME = g_file
TABLES
DATA_TAB     = i_text.
IF g_file IS INITIAL. EXIT. ENDIF.
clear:g_tabix,g_vbeln.
loop at it_vbrk where flag = 'X'.
refresh:i_text. clear:i_text.
g_tabix = g_tabix + 1.
clear:g_text.
if g_tabix = 1.
g_vbeln = it_vbrk-vbeln.
CALL FUNCTION 'Z_GET_CHINESE_CHAR'
EXPORTING
NUM  = g_tabix
IMPORTING
CHAR = g_text.
concatenate '//' '单据' g_text ':' into i_text-text.
append i_text.
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
filename = g_file
filetype = 'ASC'
APPEND   = 'X'
TABLES
data_tab = i_text.
g_bs = '1'.
perform frm_down_h.
out_vbrk-num = l_tabix.
condense out_vbrk-num.
concatenate out_vbrk-vbeln out_vbrk-c1 out_vbrk-num   out_vbrk-c2
out_vbrk-name1 out_vbrk-c3 out_vbrk-stceg out_vbrk-c4
out_vbrk-text1 out_vbrk-c5 out_vbrk-text2 out_vbrk-c6
out_vbrk-text3 out_vbrk-c7 out_vbrk-check out_vbrk-c8
out_vbrk-payer into t_text-text.
append t_text.
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
filename = g_file
filetype = 'ASC'
APPEND   = 'X'
TABLES
data_tab = t_text.
endif.
perform frm_down_i.
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
filename = g_file
filetype = 'ASC'
APPEND   = 'X'
TABLES
data_tab = t_text.
if sy-subrc  = 0.
i_ZFI031-vbeln1 = g_vbeln.
i_zfi031-vbeln = it_vbrk-vbeln.
i_zfi031-intyp = it_vbrk-intyp.
i_ZFI031-UNAME = sy-uname.
i_ZFI031-datum = sy-datum.
append i_zfi031.
delete it_vbrk.
endif.
endloop.
loop at i_zfi031.
move-corresponding i_zfi031 to zfi031.
modify zfi031 .
clear zfi031.
endloop.
ENDFORM.                    " frm_save_zf2
*&---------------------------------------------------------------------*
*&      Form  FRM_INIT
*&---------------------------------------------------------------------*
FORM FRM_INIT .
clear:r_fkarts[],r_fkartc[],r_fkartr[],r_kvgr1,R_FKART."s_fkart[].
R_FKART-sign = 'I'.
R_FKART-option = 'EQ'.
R_FKART-LOW = 'ZF2'. append R_FKART.
* R_FKART-LOW = 'ZF1'.  append R_FKART.
R_FKART-LOW = 'ZF'.  append R_FKART.
*  R_FKART-LOW = 'ZRE'.  append R_FKART.
*  R_FKART-LOW = 'ZRE1'. append r_fkart.
*  R_FKART-LOW = 'ZRE2'. append r_fkart.
if p_ck_1 = 'X'.
r_fkarts-sign = 'I'.
r_fkarts-option = 'EQ'.
r_fkarts-LOW = 'ZF'.  append r_fkarts.
r_fkarts-LOW = 'ZF2'. append r_fkarts.
r_fkarts-LOW = 'ZL1'. append r_fkarts.
r_fkarts-LOW = 'ZL3'.append r_fkarts.
R_fkart[] = r_fkarts[].
endif.
if p_ck_2 = 'X'.
r_fkartc-sign = 'I'.
r_fkartc-option = 'EQ'.
r_fkartc-LOW = 'ZG1'.   append r_fkartc.
r_fkartc-LOW = 'ZG3'.  append r_fkartc.
r_fkartc-LOW = 'ZRE'.  append r_fkartc.
r_fkartc-LOW = 'ZRE2'. append r_fkartc.
R_fkart[] = r_fkartc[].
endif.
*  if p_ck_3 = 'X'.
*    r_fkartr-sign = 'I'.
*    r_fkartr-option = 'EQ'.
*
*
*    R_fkart[] = r_fkartr[].
*  endif.
ENDFORM.                    " FRM_INIT

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-115373-1-1.html 上篇帖子: SAP系统 下篇帖子: [转] 曝光SAP在华真相:天价收费与用户之灾
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表