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.
复制代码

 

posted @   ABAP-武汉  阅读(21)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
点击右上角即可分享
微信分享提示