日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

一个ABAP程序,能够下载指定的note到本地

發布時間:2023/12/19 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 一个ABAP程序,能够下载指定的note到本地 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

關于這個程序的更詳細用法,請參考Jerry的博客:Some more technical details about SAP note

源代碼:

*&---------------------------------------------------------------------* *& Report ZNOTE *&---------------------------------------------------------------------* *& *&---------------------------------------------------------------------* 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'IMPORTINGlicense_number = lv_insta.CALL FUNCTION 'BHREM_SAPNOTE_RFC_GET_CHUNKED' DESTINATION 'SAPSNOTE'EXPORTINGis_note_key_lg = ls_note_keyiv_check_status = 'X'iv_insta_cust = lv_instaiv_na_fmt_id = 3IMPORTINGev_full_length = lv_full_lengthev_chunk_data = lv_chunk_dataCHANGINGcv_key = lv_keycv_chunk_offset = lv_offsetcv_chunk_max_length = lv_max_lengthEXCEPTIONSsystem_failure = 1 MESSAGE lv_rfcmsgcommunication_failure = 2 MESSAGE lv_rfcmsgnote_not_exist = 3note_not_released = 4note_langu_not_exist = 5pack_error = 6note_incomplete = 7note_format_error = 8protocol_error = 9OTHERS = 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_dataIMPORTING raw_out = lv_data ).CALL TRANSFORMATION id SOURCE XML lv_dataRESULT xml_data_bin = lv_data_binxml_code_delta_bint = lv_code_delta_binxml_object_data_bin = lt_object_data_bin.CALL FUNCTION 'SCWN_NOTE_UNPACK_XML'EXPORTINGiv_data_bin = lv_data_biniv_code_delta_bin = lv_code_delta_binit_object_data_bin = lt_object_data_binIMPORTINGet_cwbnthead = lt_cwbntheadet_cwbntstxt = lt_cwbntstxtet_htmltext = lt_cwbntdata_htmlet_cwbntdata = lt_cwbntdataet_cwbntvalid = lt_cwbntvalidet_cwbntci = lt_cwbntciet_cwbntfixed = lt_cwbntfixedet_cwbntgattr = lt_cwbntgattret_cwbcihead = lt_cwbciheadet_cwbcidata = lt_cwbcidataet_cwbcidata_ref = lt_cwbcidata_refet_cwbcivalid = lt_cwbcivalidet_cwbciinvld = lt_cwbciinvldet_cwbcifixed = lt_cwbcifixedet_cwbcidpndc = lt_cwbcidpndcet_cwbciobj = lt_cwbciobjet_cwbcmpnt = lt_cwbcmpntet_cwbcmtext = lt_cwbcmtextet_cwbcmlast = lt_cwbcmlastet_cwbdehead = lt_cwbdeheadet_cwbdeprdc = lt_cwbdeprdcet_cwbdetrack = lt_cwbdetracket_cwbdeequiv = lt_cwbdeequivet_cwbcinstattr = lt_cwbcinstattrEXCEPTIONScorrupt_data_file = 1incompatible_versions = 2OTHERS = 3.PERFORM cal_obj_data_bin_size USING lt_object_data_bin CHANGING lv_unzipped_size.WRITE: / 'uncompressed size: (byte): ' , lv_unzipped_size.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(<obj_data_bin>).PERFORM calculate_line_size USING <obj_data_bin> 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(<data>).IF sy-subrc <> 0.EXIT.ENDIF.READ TABLE lt_comp ASSIGNING FIELD-SYMBOL(<line_type>) INDEX sy-index.CASE <line_type>-type_kind.WHEN cl_abap_typedescr=>typekind_char OR cl_abap_typedescr=>typekind_num.iv_total_size = iv_total_size + strlen( <data> ) * 2.WHEN cl_abap_typedescr=>typekind_xstring.iv_total_size = iv_total_size + xstrlen( <data> ).WHEN OTHERS.ASSERT 1 = 0.ENDCASE.ENDDO. ENDFORM.

總結

以上是生活随笔為你收集整理的一个ABAP程序,能够下载指定的note到本地的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。