*&---------------------------------------------------------------------*
*& Report ZTEST_INTER
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT zfi_sw_data.
DATA : itab TYPE STANDARD TABLE OF sdokcntasc .
DATA:data TYPE ztfi002.
DATA:xml TYPE string.
DATA:xmlx TYPE xstring.
DATA: http_client TYPE REF TO if_http_client,
service_str TYPE string,
l_str TYPE string,
l_file_lenth TYPE i,
l_file_path TYPE string,
lv_error_msg TYPE string,
errortext TYPE string.
DATA: lv_bindata TYPE xstring.
DATA: lv_content TYPE xstring.
DATA: lt_xml_rawtable TYPE dcxmllines.
DATA: BEGIN OF sign_ret,
code TYPE string,
message TYPE string,
data TYPE string,
END OF sign_ret.
DATA:BEGIN OF display OCCURS 0,
line TYPE string,
END OF display.
DEFINE add_header_field.
CALL METHOD http_client->request->set_header_field
EXPORTING
name = &1
value = &2.
END-OF-DEFINITION.
DATA:first TYPE datum,
last TYPE datum.
DATA:repid TYPE string.
DATA:fieldname TYPE string.
SELECTION-SCREEN BEGIN OF BLOCK b1.
PARAMETERS:p_bukrs TYPE t001-bukrs,
p_gjahr TYPE bkpf-gjahr,
p_monat TYPE bkpf-monat.
SELECTION-SCREEN END OF BLOCK b1.
INITIALIZATION.
START-OF-SELECTION.
repid = p_gjahr && p_monat && p_bukrs && 'WB'.
DATA(txt) = 'C:\Users\86176\Desktop\' && p_gjahr && p_monat.
first = p_gjahr && p_monat && '01'.
CALL FUNCTION 'FKK_LAST_DAY_OF_MONTH'
EXPORTING
day_in = first
IMPORTING
last_day_of_month = last
EXCEPTIONS
day_in_no_date = 1
OTHERS = 2.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
"获取科目主数据
fieldname = txt && 'master.zip'.
PERFORM get_master.
PERFORM send.
APPEND VALUE #( line = l_str ) TO display.
CLEAR l_str.
"获取科目余额表
fieldname = txt && 'balance.zip'.
PERFORM get_balance.
PERFORM send.
APPEND VALUE #( line = l_str ) TO display.
CLEAR l_str.
"获取财务报表信息
fieldname = txt && 'report.zip'.
PERFORM get_fin_report.
PERFORM send.
APPEND VALUE #( line = l_str ) TO display.
CLEAR l_str.
cl_demo_output=>display( display[] ).
END-OF-SELECTION.
*&---------------------------------------------------------------------*
*& Form CREATE_ZIP
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM create_zip ."TABLES itab STRUCTURE sdokcntasc.
DATA : izip TYPE REF TO cl_abap_zip,
cont TYPE xstring,
xzip_file TYPE xstring,
binary_tab TYPE STANDARD TABLE OF x255.
* CALL FUNCTION 'SCMS_STRING_TO_XSTRING'
* EXPORTING
* "mimetype = 'text/html;charset=gb2312'
* mimetype = 'text/html;charset=gb2312'
* IMPORTING
* buffer = cont
* TABLES
* text_tab = itab
* EXCEPTIONS
* failed = 1
* OTHERS = 2.l
REPLACE 'utf-16' INTO xml WITH 'GB18030'.
CALL FUNCTION 'SCMS_STRING_TO_XSTRING'
EXPORTING
text = xml
mimetype = 'application/xml;charset=gb18030'
IMPORTING
buffer = xmlx
EXCEPTIONS
failed = 1.
IF xmlx+0(4) EQ '84319533'.
xmlx = xmlx+4.
ENDIF.
CREATE OBJECT izip .
CALL METHOD izip->add
EXPORTING
name = 'data.xml'
content = xmlx.
CALL METHOD izip->save
RECEIVING
zip = xzip_file.
CALL FUNCTION 'SCMS_XSTRING_TO_BINARY'
EXPORTING
buffer = xzip_file
TABLES
binary_tab = binary_tab.
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
filename = fieldname
filetype = 'BIN'
TABLES
data_tab = binary_tab.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form READ_FILE
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM read_file .
"读取文件
l_file_path = fieldname.
CALL METHOD cl_gui_frontend_services=>gui_upload
EXPORTING
filename = l_file_path
filetype = 'BIN'
IMPORTING
filelength = l_file_lenth
CHANGING
data_tab = lt_xml_rawtable
EXCEPTIONS
OTHERS = 1.
LOOP AT lt_xml_rawtable INTO DATA(ls_raw).
CONCATENATE lv_content ls_raw INTO lv_content IN BYTE MODE.
ENDLOOP.
l_file_lenth = xstrlen( lv_content ).
CALL FUNCTION 'SCMS_BINARY_TO_XSTRING'
EXPORTING
input_length = l_file_lenth
* FIRST_LINE = 0
* LAST_LINE = 0
IMPORTING
buffer = lv_bindata
TABLES
binary_tab = lt_xml_rawtable
EXCEPTIONS
failed = 1
OTHERS = 2.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form GET_SIGN
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM get_sign .
CALL METHOD cl_http_client=>create_by_url
EXPORTING
url = 'http://172.18.67.128:8000/GAMC/interface/GetTaxSign_LV0'
IMPORTING
client = http_client
EXCEPTIONS
argument_not_found = 1
plugin_not_active = 2
internal_error = 3
OTHERS = 4.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
add_header_field: '~request_method' 'POST',
'Content-Type' 'application/xml'"; charset=utf-8'
.
CALL METHOD http_client->request->set_cdata
EXPORTING
data = service_str.
DATA:content TYPE string.
content = http_client->request->get_cdata( ).
CALL METHOD http_client->send
EXCEPTIONS
http_communication_failure = 1
http_invalid_state = 2.
CALL METHOD http_client->receive
EXCEPTIONS
http_communication_failure = 1
http_invalid_state = 2
http_processing_failed = 3.
CLEAR service_str .
service_str = http_client->response->get_cdata( ).
/ui2/cl_json=>deserialize(
EXPORTING
json = service_str
CHANGING
data = sign_ret
).
ENDFORM.
*&---------------------------------------------------------------------*
*& Form SEND_FILE
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM send_file .
DATA:string TYPE string,
xstring TYPE xstring,
lo_part TYPE REF TO if_http_entity.
CALL METHOD cl_http_client=>create_by_url
EXPORTING
url = 'http://172.18.67.128:8000/GAMC/filework/FINDateGath_QZF0?appid=commontesterCA'
IMPORTING
client = http_client
EXCEPTIONS
argument_not_found = 1
plugin_not_active = 2
internal_error = 3
OTHERS = 4.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
add_header_field: '~request_method' 'POST',
'sign' sign_ret-data."; charset=utf-8'.
CALL METHOD http_client->request->set_content_type
EXPORTING
content_type = 'multipart/form-data'.
CALL METHOD http_client->request->if_http_entity~set_formfield_encoding
EXPORTING
formfield_encoding = cl_http_request=>if_http_entity~co_encoding_raw.
lo_part = http_client->request->if_http_entity~add_multipart( ).
CALL METHOD lo_part->set_header_field
EXPORTING
name = 'content-disposition'
value = 'form-data;name="file";filename="test.zip'.
CALL METHOD lo_part->set_content_type
EXPORTING
content_type = 'application/x-www-form-urlencoded'.
DATA:lv_nsrsbh TYPE string,
lv_orgcode TYPE string.
SELECT SINGLE nsrsbh,orgcode FROM ztfi014 WHERE bukrs = @p_bukrs INTO ( @lv_nsrsbh,@lv_orgcode ).
CALL METHOD http_client->request->set_form_field
EXPORTING
name = 'nsrsbh'
value = lv_nsrsbh.
CALL METHOD http_client->request->set_form_field
EXPORTING
name = 'orgcode'
value = lv_orgcode.
CLEAR:lv_nsrsbh,lv_orgcode.
l_file_lenth = xstrlen( lv_bindata ).
CALL METHOD lo_part->set_data
EXPORTING
data = lv_bindata
offset = 0
length = l_file_lenth.
* CALL FUNCTION 'SCMS_STRING_TO_XSTRING'
* EXPORTING
* text = string
* IMPORTING
* buffer = xstring
* EXCEPTIONS
* failed = 1.
* xstring = xstring && lv_bindata .
* l_file_lenth = xstrlen( xstring ).
*
* CALL METHOD http_client->request->set_data(
* EXPORTING
* data = xstring
* offset = 0
* length = l_file_lenth ).
CALL METHOD http_client->send
EXPORTING
timeout = 200
EXCEPTIONS
http_communication_failure = 1
http_invalid_state = 2
http_processing_failed = 3
OTHERS = 4.
IF sy-subrc NE 0.
http_client->get_last_error( IMPORTING message = lv_error_msg ).
ENDIF.
CALL METHOD http_client->receive
EXCEPTIONS
http_communication_failure = 1
http_invalid_state = 2
http_processing_failed = 3
OTHERS = 4.
IF sy-subrc NE 0.
http_client->get_last_error( IMPORTING message = lv_error_msg ).
ENDIF.
CLEAR:l_str.
l_str = http_client->response->get_cdata( ).
ENDFORM.
*&---------------------------------------------------------------------*
*& Form GET_FIN_REPORT
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM get_fin_report .
"BEGIN-----financial report
DATA:lt_head TYPE ztfi002_report,
ls_head TYPE zsfi002_report,
lt_item TYPE ztfi002_report_it,
ls_item TYPE zsfi002_report_it.
TYPES: BEGIN OF ty_alv.
INCLUDE TYPE zqsficor001.
TYPES: cellcolor TYPE lvc_t_scol, "单元格颜色
END OF ty_alv.
DATA:lt_alv_zc TYPE TABLE OF ty_alv.
DATA: lo_data TYPE REF TO data.
FIELD-SYMBOLS <lfs_alv> LIKE lt_alv_zc.
RANGES:lr_monat FOR bseg-h_monat,
lr_bukrs FOR bseg-bukrs.
"资产负债
cl_salv_bs_runtime_info=>set(
display = ''
metadata = ''
data = 'X' ) .
SUBMIT zfir001 WITH p_ryear = p_gjahr
WITH p_bukrs = p_bukrs
WITH p_rpmax = p_monat
AND RETURN .
cl_salv_bs_runtime_info=>get_data_ref(
IMPORTING
r_data = lo_data ) .
ASSIGN lo_data->* TO <lfs_alv>.
lt_alv_zc = <lfs_alv>.
SELECT SINGLE butxt FROM t001 WHERE bukrs = @p_bukrs INTO @DATA(lv_butxt).
DATA(ndqj) = p_gjahr && p_monat.
repid = repid && '011'.
DATA(repnam) = '报税资产负债表'.
APPEND VALUE #( repid = repid repnam = repnam repdat = last repmon = ndqj bzdw = lv_butxt
hbdw = '元' ) TO lt_head.
LOOP AT lt_alv_zc INTO DATA(wa).
CLEAR ls_item.
ls_item-repid = repid.
ls_item-repit = 'C' && wa-zitem.
ls_item-repnam = wa-zitemt && '年初余额'.
ls_item-repdata = wa-bnhsl.
APPEND ls_item TO lt_item.
CLEAR ls_item.
ls_item-repid = repid.
ls_item-repit = 'D' && wa-zitem.
ls_item-repnam = wa-zitemt && '期末余额'.
ls_item-repdata = wa-snhsl.
APPEND ls_item TO lt_item.
ENDLOOP.
"利润表
DATA:lt_alv_lr TYPE STANDARD TABLE OF zqsficor002.
FIELD-SYMBOLS <lfs_alv1> LIKE lt_alv_lr.
SUBMIT zfir002 WITH p_ryear = p_gjahr
WITH p_bukrs = p_bukrs
WITH p_rpmax = p_monat
AND RETURN .
cl_salv_bs_runtime_info=>get_data_ref(
IMPORTING
r_data = lo_data ) .
ASSIGN lo_data->* TO <lfs_alv1>.
lt_alv_lr = <lfs_alv1>.
repid = repid+0(12) && '021'.
repnam = '报税利润表'.
APPEND VALUE #( repid = repid repnam = repnam repdat = last repmon = ndqj bzdw = lv_butxt
hbdw = '元' ) TO lt_head.
LOOP AT lt_alv_lr INTO DATA(wa1).
CLEAR ls_item.
ls_item-repid = repid.
ls_item-repit = 'C' && wa1-zitem.
ls_item-repnam = wa1-zitemt && '本期金额'.
ls_item-repdata = wa1-zbysjs.
APPEND ls_item TO lt_item.
ENDLOOP.
"现金流量
TYPES: BEGIN OF ty_alv_xj ,
znotxt TYPE zel_notxt,
bq TYPE acdoca-hsl,
bn TYPE acdoca-hsl,
zno TYPE zel_no,
END OF ty_alv_xj .
DATA:lt_alv_xj TYPE TABLE OF ty_alv_xj.
FIELD-SYMBOLS <lfs_alv2> LIKE lt_alv_xj.
cl_salv_bs_runtime_info=>clear_all( ).
cl_salv_bs_runtime_info=>set(
display = ''
metadata = ''
data = 'X' ) .
SUBMIT zfir003 WITH p_gjahr = p_gjahr
WITH p_bukrs = p_bukrs
WITH p_monat = p_monat
AND RETURN .
cl_salv_bs_runtime_info=>get_data_ref(
IMPORTING
r_data = lo_data ) .
ASSIGN lo_data->* TO <lfs_alv2>.
lt_alv_xj = <lfs_alv2>.
repid = repid+0(12) && '031'.
repnam = '报税现金流量表'.
APPEND VALUE #( repid = repid repnam = repnam repdat = last repmon = ndqj bzdw = lv_butxt
hbdw = '元' ) TO lt_head.
LOOP AT lt_alv_xj INTO DATA(wa2).
CLEAR ls_item.
ls_item-repid = repid.
ls_item-repit = 'C' && wa2-zno.
ls_item-repnam = wa2-znotxt && '累计金额'.
ls_item-repdata = wa2-bn.
APPEND ls_item TO lt_item.
CLEAR ls_item.
ls_item-repid = repid.
ls_item-repit = 'D' && wa2-zno.
ls_item-repnam = wa2-znotxt && '本期金额'.
ls_item-repdata = wa2-bq.
APPEND ls_item TO lt_item.
ENDLOOP.
"所有者权益
TYPES:BEGIN OF ty_alv_qy,
ztext TYPE zel_zitemt , "项目
zitem TYPE zel_zitem , "行次
sszb TYPE string , "实收资本(活股本)
qtqy TYPE string , "其他权益工具
zbgj TYPE string , "资本公积
kcg TYPE string, "减:库存股
qtsy TYPE string , "其他综合收益
zxcb TYPE string , "专项储备
yygj TYPE string , "盈余公积
fxzb TYPE string , "一般风险准备
wfpl TYPE string , "未分配利润
qita TYPE string , "其他
xj TYPE string , "小计
gdqy TYPE string , "少数股东权益
qyhj TYPE string , "所有者权益合计
sszb_sn TYPE string , "实收资本(活股本)
qtqy_sn TYPE string , "其他权益工具
zbgj_sn TYPE string , "资本公积
kcg_sn TYPE string, "减:库存股
qtsy_sn TYPE string , "其他综合收益
zxcb_sn TYPE string , "专项储备
yygj_sn TYPE string , "盈余公积
fxzb_sn TYPE string , "一般风险准备
wfpl_sn TYPE string , "未分配利润
qita_sn TYPE string , "其他
xj_sn TYPE string , "小计
gdqy_sn TYPE string , "少数股东权益
qyhj_sn TYPE string , "所有者权益合计
END OF ty_alv_qy .
DATA:lt_alv_qy TYPE TABLE OF ty_alv_qy.
FIELD-SYMBOLS <lfs_alv3> LIKE lt_alv_qy.
cl_salv_bs_runtime_info=>clear_all( ).
cl_salv_bs_runtime_info=>set(
display = ''
metadata = ''
data = 'X' ) .
CLEAR : lr_bukrs[].
APPEND VALUE #( sign = 'I' option = 'EQ' low = p_bukrs ) TO lr_bukrs.
SUBMIT zfir008_2 WITH p_gjahr = p_gjahr
WITH s_bukrs IN lr_bukrs
WITH p_monat = p_monat
AND RETURN .
cl_salv_bs_runtime_info=>get_data_ref(
IMPORTING
r_data = lo_data ) .
ASSIGN lo_data->* TO <lfs_alv3>.
lt_alv_qy = <lfs_alv3>.
repid = repid+0(12) && '041'.
repnam = '所有者权益变动表'.
APPEND VALUE #( repid = repid repnam = repnam repdat = last repmon = ndqj bzdw = lv_butxt
hbdw = '元' ) TO lt_head.
LOOP AT lt_alv_qy INTO DATA(wa3).
CLEAR ls_item.
ls_item-repid = repid.
ls_item-repit = 'A' && wa3-zitem.
ls_item-repnam = wa3-ztext && '1'.
ls_item-repdata = wa3-sszb.
APPEND ls_item TO lt_item.
CLEAR ls_item.
ls_item-repid = repid.
ls_item-repit = 'B' && wa3-zitem.
ls_item-repnam = wa3-ztext && '2'.
ls_item-repdata = wa3-qtqy.
APPEND ls_item TO lt_item.
CLEAR ls_item.
ls_item-repid = repid.
ls_item-repit = 'C' && wa3-zitem.
ls_item-repnam = wa3-ztext && '3'.
ls_item-repdata = wa3-zbgj.
APPEND ls_item TO lt_item.
CLEAR ls_item.
ls_item-repid = repid.
ls_item-repit = 'D' && wa3-zitem.
ls_item-repnam = wa3-ztext && '4'.
ls_item-repdata = wa3-kcg.
APPEND ls_item TO lt_item.
CLEAR ls_item.
ls_item-repid = repid.
ls_item-repit = 'E' && wa3-zitem.
ls_item-repnam = wa3-ztext && '5'.
ls_item-repdata = wa3-qtsy.
APPEND ls_item TO lt_item.
CLEAR ls_item.
ls_item-repid = repid.
ls_item-repit = 'F' && wa3-zitem.
ls_item-repnam = wa3-ztext && '6'.
ls_item-repdata = wa3-zxcb.
APPEND ls_item TO lt_item. CLEAR ls_item.
ls_item-repid = repid.
ls_item-repit = 'G' && wa3-zitem.
ls_item-repnam = wa3-ztext && '7'.
ls_item-repdata = wa3-yygj.
APPEND ls_item TO lt_item.
CLEAR ls_item.
ls_item-repid = repid.
ls_item-repit = 'H' && wa3-zitem.
ls_item-repnam = wa3-ztext && '8'.
ls_item-repdata = wa3-fxzb.
APPEND ls_item TO lt_item.
CLEAR ls_item.
ls_item-repid = repid.
ls_item-repit = 'I' && wa3-zitem.
ls_item-repnam = wa3-ztext && '9'.
ls_item-repdata = wa3-wfpl.
APPEND ls_item TO lt_item.
CLEAR ls_item.
ls_item-repid = repid.
ls_item-repit = 'J' && wa3-zitem.
ls_item-repnam = wa3-ztext && '10'.
ls_item-repdata = wa3-qita.
APPEND ls_item TO lt_item.
CLEAR ls_item.
ls_item-repid = repid.
ls_item-repit = 'K' && wa3-zitem.
ls_item-repnam = wa3-ztext && '11'.
ls_item-repdata = wa3-xj.
APPEND ls_item TO lt_item.
CLEAR ls_item.
ls_item-repid = repid.
ls_item-repit = 'L' && wa3-zitem.
ls_item-repnam = wa3-ztext && '12'.
ls_item-repdata = wa3-gdqy.
APPEND ls_item TO lt_item.
CLEAR ls_item.
ls_item-repid = repid.
ls_item-repit = 'M' && wa3-zitem.
ls_item-repnam = wa3-ztext && '13'.
ls_item-repdata = wa3-qyhj.
APPEND ls_item TO lt_item.
"上年
CLEAR ls_item.
ls_item-repid = repid.
ls_item-repit = 'SA' && wa3-zitem.
ls_item-repnam = wa3-ztext && '1-上年'.
ls_item-repdata = wa3-sszb_sn.
APPEND ls_item TO lt_item.
CLEAR ls_item.
ls_item-repid = repid.
ls_item-repit = 'SB' && wa3-zitem.
ls_item-repnam = wa3-ztext && '2-上年'.
ls_item-repdata = wa3-qtqy_sn.
APPEND ls_item TO lt_item.
CLEAR ls_item.
ls_item-repid = repid.
ls_item-repit = 'SC' && wa3-zitem.
ls_item-repnam = wa3-ztext && '3-上年'.
ls_item-repdata = wa3-zbgj_sn.
APPEND ls_item TO lt_item.
CLEAR ls_item.
ls_item-repid = repid.
ls_item-repit = 'SD' && wa3-zitem.
ls_item-repnam = wa3-ztext && '4-上年'.
ls_item-repdata = wa3-kcg_sn.
APPEND ls_item TO lt_item.
CLEAR ls_item.
ls_item-repid = repid.
ls_item-repit = 'SE' && wa3-zitem.
ls_item-repnam = wa3-ztext && '5-上年'.
ls_item-repdata = wa3-qtsy_sn.
APPEND ls_item TO lt_item.
CLEAR ls_item.
ls_item-repid = repid.
ls_item-repit = 'SF' && wa3-zitem.
ls_item-repnam = wa3-ztext && '6-上年'.
ls_item-repdata = wa3-zxcb_sn.
APPEND ls_item TO lt_item. CLEAR ls_item.
ls_item-repid = repid.
ls_item-repit = 'SG' && wa3-zitem.
ls_item-repnam = wa3-ztext && '7-上年'.
ls_item-repdata = wa3-yygj_sn.
APPEND ls_item TO lt_item.
CLEAR ls_item.
ls_item-repid = repid.
ls_item-repit = 'SH' && wa3-zitem.
ls_item-repnam = wa3-ztext && '8-上年'.
ls_item-repdata = wa3-fxzb_sn.
APPEND ls_item TO lt_item.
CLEAR ls_item.
ls_item-repid = repid.
ls_item-repit = 'SI' && wa3-zitem.
ls_item-repnam = wa3-ztext && '9-上年'.
ls_item-repdata = wa3-wfpl_sn.
APPEND ls_item TO lt_item.
CLEAR ls_item.
ls_item-repid = repid.
ls_item-repit = 'SJ' && wa3-zitem.
ls_item-repnam = wa3-ztext && '10-上年'.
ls_item-repdata = wa3-qita_sn.
APPEND ls_item TO lt_item.
CLEAR ls_item.
ls_item-repid = repid.
ls_item-repit = 'SK' && wa3-zitem.
ls_item-repnam = wa3-ztext && '11-上年'.
ls_item-repdata = wa3-xj_sn.
APPEND ls_item TO lt_item.
CLEAR ls_item.
ls_item-repid = repid.
ls_item-repit = 'SL' && wa3-zitem.
ls_item-repnam = wa3-ztext && '12-上年'.
ls_item-repdata = wa3-gdqy_sn.
APPEND ls_item TO lt_item.
CLEAR ls_item.
ls_item-repid = repid.
ls_item-repit = 'SM' && wa3-zitem.
ls_item-repnam = wa3-ztext && '13-上年'.
ls_item-repdata = wa3-qyhj_sn.
APPEND ls_item TO lt_item.
ENDLOOP.
CALL TRANSFORMATION zst_strxml_hkont_report
SOURCE head = lt_head item = lt_item
RESULT XML xml.
"END-----financial report
ENDFORM.
*&---------------------------------------------------------------------*
*& Form GET_BALANCE
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM get_balance .
"begin----hkont_balance
DATA:lt_data TYPE zsfi002_balance_t.
DATA:ls_data TYPE zsfi002_balance.
DATA: BEGIN OF ty_list,
saknr TYPE acdoca-racct,
racct TYPE acdoca-racct,
txt50 TYPE skat-txt50,
fiscyearper TYPE acdoca-fiscyearper,
shkzg TYPE acdoca-drcrk,
rfarea TYPE acdoca-rfarea,
hsl TYPE acdoca-hsl,
wsl TYPE acdoca-wsl,
tsl TYPE acdoca-tsl,
hsl2 TYPE acdoca-hsl,
flag_yz TYPE c,
blart TYPE acdoca-blart,
inytr TYPE acdoca-hsl,
initr TYPE acdoca-hsl,
dmbts TYPE acdoca-hsl,
dmbth TYPE acdoca-hsl,
dmsts TYPE acdoca-hsl,
dmsth TYPE acdoca-hsl,
endtr TYPE acdoca-hsl,
inytr_f TYPE acdoca-wsl,
initr_f TYPE acdoca-wsl,
dmbts_f TYPE acdoca-wsl,
dmbth_f TYPE acdoca-wsl,
dmsts_f TYPE acdoca-wsl,
dmsth_f TYPE acdoca-wsl,
endtr_f TYPE acdoca-wsl,
add_flag TYPE boolean,
flag,
inytrh TYPE acdoca-hsl,
inytrs TYPE acdoca-hsl,
initrh TYPE acdoca-hsl,
initrs TYPE acdoca-hsl,
endtrh TYPE acdoca-wsl,
endtrs TYPE acdoca-wsl,
color(4),
index TYPE i,
END OF ty_list.
DATA:gt_list LIKE TABLE OF ty_list.
DATA: lo_data TYPE REF TO data.
FIELD-SYMBOLS <lfs_alv> LIKE gt_list.
RANGES:lr_monat FOR bseg-h_monat,
lr_bukrs FOR bseg-bukrs.
cl_salv_bs_runtime_info=>set(
display = ''
metadata = ''
data = 'X' ) .
APPEND VALUE #( sign = 'I' option = 'EQ' low = p_bukrs ) TO lr_bukrs.
APPEND VALUE #( sign = 'I' option = 'EQ' low = p_monat ) TO lr_monat.
SUBMIT zfir004 WITH p_gjahr = p_gjahr
WITH s_monat IN lr_monat
WITH s_bukrs IN lr_bukrs
AND RETURN .
cl_salv_bs_runtime_info=>get_data_ref(
IMPORTING
r_data = lo_data ) .
ASSIGN lo_data->* TO <lfs_alv>.
gt_list = <lfs_alv>.
LOOP AT gt_list INTO DATA(ls_list).
CLEAR ls_data.
ls_data = VALUE #( hkont = ls_list-racct hktxt = ls_list-txt50 gjahr = p_gjahr monat = p_monat ).
IF ls_list-initrs - ls_list-initrh > 0.
ls_data-qcpos = '借'.
ELSE.
ls_data-qcpos = '贷'.
ENDIF.
ls_data-qcbbye = abs( ls_list-initrs - ls_list-initrh ).
IF ls_list-dmbts - ls_list-dmbth > 0.
ls_data-hkpos = '借'.
ELSE.
ls_data-hkpos = '贷'.
ENDIF.
ls_data-jfbbye = ls_list-dmbts.
ls_data-dfbbye = ls_list-dmbth.
IF ls_list-endtrs - ls_list-endtrh > 0.
ls_data-qmpos = '借'.
ELSE.
ls_data-qmpos = '贷'.
ENDIF.
ls_data-qmbbye = abs( ls_list-endtrs - ls_list-endtrh ).
APPEND ls_data TO lt_data.
ENDLOOP.
CALL TRANSFORMATION zst_strxml_hkont_balance
SOURCE data = lt_data
RESULT XML xml.
" OPTIONS xml_header = 'NO'.
"end----hkont_balance
ENDFORM.
*&---------------------------------------------------------------------*
*& Form GET_MASTER
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM get_master .
"BEGIN---HKONT_MASTERDATA
SELECT
ska1~saknr AS hkont,
skat~txt50 AS hktxt,
CASE WHEN ska1~xbilk = 'X' THEN '资产负债类'
WHEN ska1~gvtyp = 'X'THEN '损益类'
ELSE @space END AS hktyp,
CASE WHEN ska1~glaccount_type = 'X' THEN '借'
WHEN ska1~glaccount_type = 'N' THEN '贷'
ELSE @space END AS hkpos
FROM skat
INNER JOIN ska1 ON skat~ktopl = ska1~ktopl AND skat~saknr = ska1~saknr
WHERE ska1~ktopl = 'GAMC'
INTO CORRESPONDING FIELDS OF TABLE @data.
CALL TRANSFORMATION zst_strxml_hkont
SOURCE data = data
RESULT XML xml.
" OPTIONS xml_header = 'NO'.
"END---HKONT_MASTERDATA
ENDFORM.
*&---------------------------------------------------------------------*
*& Form SEND
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM send .
"获取签名
PERFORM get_sign.
IF sign_ret-code EQ '200'.
"获取数据生成ZIP
PERFORM create_zip ."TABLES itab.
"读取ZIP文件
PERFORM read_file.
"发送ZIP文件
PERFORM send_file.
ENDIF.
ENDFORM.