SAP note下载工具
发布日期:2021-06-30 14:06:22 浏览次数:2 分类:技术文章

本文共 6391 字,大约阅读时间需要 21 分钟。

REPORT znote.PARAMETERS: note TYPE cwbntkeylg-numm OBLIGATORY DEFAULT '2184333'.DATA: lv_insta           TYPE cwbntinsta,      ls_note_key        TYPE cwbntkeylg,      lv_full_length     TYPE i,      lt_comp            TYPE abap_compdescr_tab,      lv_data_bin        TYPE xstring,      lv_code_delta_bin  TYPE xstring,      lt_object_data_bin TYPE cwbci_t_objdelta,      lv_rfcmsg          LIKE scwbrfcmsg-text,      lv_key             TYPE hash160,      lv_check_key       TYPE hash160,      lv_offset          TYPE i,      lv_max_length      TYPE i,      lv_data            TYPE xstring,      lv_chunk_data      TYPE xstring,      lv_unzipped_size   TYPE i,      lt_cwbnthead       LIKE cwbnthead OCCURS 0,      lt_cwbntstxt       LIKE cwbntstxt OCCURS 0,      lt_cwbntdata       TYPE bcwbn_note_text OCCURS 0,      lt_cwbntdata_html  TYPE bcwbn_notehtml_text OCCURS 0,      lt_cwbntvalid      LIKE cwbntvalid OCCURS 0,      lt_cwbntci         LIKE cwbntci OCCURS 0,      lt_cwbntfixed      LIKE cwbntfixed OCCURS 0,      lt_cwbntgattr      LIKE cwbntgattr OCCURS 0,      lt_cwbcihead       LIKE cwbcihead OCCURS 0,      lt_cwbcidata       TYPE bcwbn_cinst_delta OCCURS 0,      lt_cwbcidata_ref   TYPE cwb_deltas,      lt_cwbcivalid      LIKE cwbcivalid OCCURS 0,      lt_cwbciinvld      LIKE cwbciinvld OCCURS 0,      lt_cwbcifixed      LIKE cwbcifixed OCCURS 0,      lt_cwbcidpndc      LIKE cwbcidpndc OCCURS 0,      lt_cwbciobj        LIKE cwbciobj OCCURS 0,      lt_cwbcmpnt        LIKE cwbcmpnt OCCURS 0,      lt_cwbcmtext       LIKE cwbcmtext OCCURS 0,      lt_cwbcmlast       LIKE cwbcmlast OCCURS 0,      lt_cwbdehead       LIKE cwbdehead OCCURS 0,      lt_cwbdeprdc       LIKE cwbdeprdc OCCURS 0,      lt_cwbdetrack      LIKE cwbdetrack OCCURS 0,      lt_cwbdeequiv      LIKE cwbdeequiv OCCURS 0,      lt_cwbcinstattr    TYPE cwbci_t_attr.START-OF-SELECTION.  PERFORM main.FORM main.  ls_note_key-langu = 'E'.  ls_note_key-numm = note.  CALL FUNCTION 'SLIC_GET_LICENCE_NUMBER'    IMPORTING      license_number = lv_insta.  CALL FUNCTION 'BHREM_SAPNOTE_RFC_GET_CHUNKED' DESTINATION 'SAPSNOTE'    EXPORTING      is_note_key_lg        = ls_note_key      iv_check_status       = 'X'      iv_insta_cust         = lv_insta      iv_na_fmt_id          = 3    IMPORTING      ev_full_length        = lv_full_length      ev_chunk_data         = lv_chunk_data    CHANGING      cv_key                = lv_key      cv_chunk_offset       = lv_offset      cv_chunk_max_length   = lv_max_length    EXCEPTIONS      system_failure        = 1 MESSAGE lv_rfcmsg      communication_failure = 2 MESSAGE lv_rfcmsg      note_not_exist        = 3      note_not_released     = 4      note_langu_not_exist  = 5      pack_error            = 6      note_incomplete       = 7      note_format_error     = 8      protocol_error        = 9      OTHERS                = 10.  IF sy-subrc <> 0.    WRITE: / 'note download failed: ', lv_rfcmsg.    RETURN.  ENDIF.  WRITE: / 'size ( compressed ):', lv_full_length.  lv_data = lv_chunk_data.  CALL FUNCTION 'CALCULATE_HASH_FOR_RAW'    EXPORTING      alg            = 'SHA1'      data           = lv_data    IMPORTING      hash           = lv_check_key    EXCEPTIONS      unknown_alg    = 1      param_error    = 2      internal_error = 3      OTHERS         = 4.  IF lv_check_key <> lv_key.    WRITE:/ 'note key verification failed.'.    RETURN.  ENDIF.  cl_abap_gzip=>decompress_binary( EXPORTING gzip_in   = lv_data                                   IMPORTING raw_out   = lv_data ).  CALL TRANSFORMATION id SOURCE XML lv_data                         RESULT xml_data_bin         = lv_data_bin                                xml_code_delta_bint  = lv_code_delta_bin                                xml_object_data_bin  = lt_object_data_bin.  CALL FUNCTION 'SCWN_NOTE_UNPACK_XML'    EXPORTING      iv_data_bin           = lv_data_bin      iv_code_delta_bin     = lv_code_delta_bin      it_object_data_bin    = lt_object_data_bin    IMPORTING      et_cwbnthead          = lt_cwbnthead      et_cwbntstxt          = lt_cwbntstxt      et_htmltext           = lt_cwbntdata_html      et_cwbntdata          = lt_cwbntdata      et_cwbntvalid         = lt_cwbntvalid      et_cwbntci            = lt_cwbntci      et_cwbntfixed         = lt_cwbntfixed      et_cwbntgattr         = lt_cwbntgattr      et_cwbcihead          = lt_cwbcihead      et_cwbcidata          = lt_cwbcidata      et_cwbcidata_ref      = lt_cwbcidata_ref      et_cwbcivalid         = lt_cwbcivalid      et_cwbciinvld         = lt_cwbciinvld      et_cwbcifixed         = lt_cwbcifixed      et_cwbcidpndc         = lt_cwbcidpndc      et_cwbciobj           = lt_cwbciobj      et_cwbcmpnt           = lt_cwbcmpnt      et_cwbcmtext          = lt_cwbcmtext      et_cwbcmlast          = lt_cwbcmlast      et_cwbdehead          = lt_cwbdehead      et_cwbdeprdc          = lt_cwbdeprdc      et_cwbdetrack         = lt_cwbdetrack      et_cwbdeequiv         = lt_cwbdeequiv      et_cwbcinstattr       = lt_cwbcinstattr    EXCEPTIONS      corrupt_data_file     = 1      incompatible_versions = 2      OTHERS                = 3.  PERFORM cal_obj_data_bin_size USING lt_object_data_bin CHANGING lv_unzipped_size.  WRITE: / 'uncompressed size: (byte): ' , lv_unzipped_size.  BREAK-POINT.ENDFORM.FORM cal_obj_data_bin_size USING it_obj_data TYPE cwbci_t_objdelta CHANGING iv_total_size TYPE i.  DATA(lo_tab_type) = CAST cl_abap_tabledescr( cl_abap_typedescr=>describe_by_name( 'CWBCI_T_OBJDELTA' ) ).  DATA(lo_line_type) = CAST cl_abap_structdescr( lo_tab_type->get_table_line_type( ) ).  lt_comp = lo_line_type->components.  LOOP AT it_obj_data ASSIGNING FIELD-SYMBOL(
). PERFORM calculate_line_size USING
CHANGING iv_total_size. ENDLOOP.ENDFORM.FORM calculate_line_size USING is_line_data TYPE cwbciobjdelta CHANGING iv_total_size TYPE i. DO. ASSIGN COMPONENT sy-index OF STRUCTURE is_line_data TO FIELD-SYMBOL(
). IF sy-subrc <> 0. EXIT. ENDIF. READ TABLE lt_comp ASSIGNING FIELD-SYMBOL(
) INDEX sy-index. CASE
-type_kind. WHEN cl_abap_typedescr=>typekind_char OR cl_abap_typedescr=>typekind_num. iv_total_size = iv_total_size + strlen(
) * 2. WHEN cl_abap_typedescr=>typekind_xstring. iv_total_size = iv_total_size + xstrlen( ). WHEN OTHERS. ASSERT 1 = 0. ENDCASE. ENDDO.ENDFORM.

要获取更多Jerry的原创文章,请关注公众号"汪子熙":

转载地址:https://jerry.blog.csdn.net/article/details/104009695 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:SAP CRM content management工具类
下一篇:The Smart Field Service Prototype powered by SAP FSM and Wechat

发表评论

最新留言

感谢大佬
[***.8.128.20]2024年04月07日 01时05分15秒