ABAP 发送ZIP文件
*&---------------------------------------------------------------------* *& 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.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本