SAP 银企直连--FBPM生成付款文件增强

 需求描述:

  • SAP中通过运行事务码FBPM生成付款文件,触发传输将文件写入跳板机,写入跳板机之前,检查文件是否已存在,存在则给出提示无需执行

实现步骤 :

  •  文件校验

参照标准函数FI_PAYMEDIUM_SAMPLE_21 创建自定义函数ZFI_PAYMEDIUM_SAMPLE_21_COPY1添加自定义校验逻辑,代码如下

FUNCTION zfi_paymedium_sample_21_copy1 .
*"----------------------------------------------------------------------
*"*"本地接口:
*"  IMPORTING
*"     VALUE(I_FPAYH) LIKE  FPAYH STRUCTURE  FPAYH
*"     VALUE(I_FPAYHX) LIKE  FPAYHX STRUCTURE  FPAYHX
*"     VALUE(I_FORMAT_PARAMS) TYPE  FPM_SELPAR-PARAM
*"     VALUE(I_FORMAT_PARAMS_C) TYPE  FPM_SELPAR-PARAM
*"     VALUE(I_FILENAME) LIKE  REGUT-FSNAM
*"     VALUE(I_XFILESYSTEM) TYPE  DFILESYST
*"  TABLES
*"      T_FILE_OUTPUT STRUCTURE  FPM_FILE
*"  CHANGING
*"     REFERENCE(C_FILENAME) LIKE  REGUT-FSNAM
*"----------------------------------------------------------------------
  DATA lv_pwd TYPE text30 .
  DATA lv_account TYPE text30 .
  DATA lv_host TYPE string VALUE '文件路径'.
  DATA lv_port TYPE string.
  DATA lv_filename TYPE regut-fsnam VALUE 'MINTH_XMLv3'.
  CONSTANTS x_linesize TYPE i VALUE 128.
  TYPES x_linetype TYPE x LENGTH x_linesize.
  DATA tab_xfile TYPE STANDARD TABLE OF xstring.
  DATA lv_in_codepage TYPE regut-codepage.
  DATA out_codepage TYPE regut-codepage.
  DATA user_codepage TYPE regut-codepage.
  DATA lv_laufi TYPE regut-laufi.
  DATA lv_dttyp TYPE regut-dttyp.
  DATA lv_dtfor TYPE regut-dtfor.
  DATA g_function TYPE rs38l_fnam.
  DATA tab_x                 TYPE STANDARD TABLE OF x_linetype.
  DATA wa_x                  TYPE xstring.
  DATA wa_xfile              LIKE LINE OF tab_xfile.
  DATA filename_string       TYPE string.
  DATA linesize              TYPE i.
  DATA lines                 TYPE i.
  DATA length                TYPE i.
  DATA fill_length           TYPE i.
  DATA last_length           TYPE i.
  DATA filesize              TYPE i.
  DATA after_download_length TYPE i.
  DATA l_format_cp           TYPE cpcodepage.
  DATA  ls_tfpm042f      LIKE tfpm042f.
  DATA lv_command(200) TYPE c.
  DATA lv_fname TYPE char300.
  DATA lt_msg TYPE esp1_message_tab_type.
  SELECT SINGLE * FROM ztsd018 INTO @DATA(ls_ztsd018) WHERE ftp_name  = 'FBPM_UP'.
  lv_host = ls_ztsd018-ftp_ip.
  lv_pwd = ls_ztsd018-ftp_pwd.
  lv_account = ls_ztsd018-ftp_user.
  SELECT SINGLE land1 FROM t042z INTO @DATA(lv_land1) WHERE formi = @i_fpayhx-formi.
  lv_filename = |{ lv_filename }_{ lv_land1 }_{ i_fpayh-laufd }_{ i_fpayh-laufi }|.
  "加密
  lv_pwd = zcl_ftp_connect=>http_scramble( lv_pwd ).
  "ftp连接
  DATA(lo_ftp) = NEW zcl_ftp_connect( iv_account = lv_account
                                      iv_pass = lv_pwd
                                      iv_host = lv_host
                                      iv_port = lv_port ).
  DATA(lv_handle) = lo_ftp->get_handle( ).
  IF lv_handle IS INITIAL.
    DATA(ls_msg) = lo_ftp->connect( lo_ftp->gc-rfc_dest-sapftpa ).
  ENDIF.
  lv_handle = lo_ftp->get_handle( ).
  IF lv_handle IS INITIAL AND sy-batch IS INITIAL.
    MESSAGE TEXT-e01 TYPE 'I' DISPLAY LIKE 'E'.
    EXIT.
  ENDIF.

  "定位到目录
  lv_command = |cd { ls_ztsd018-file_path }|.
  DATA(lt_result) = lo_ftp->command( EXPORTING iv_cmd = lv_command IMPORTING es_msg = ls_msg ).
  IF ls_msg-type EQ 'E' .
    MESSAGE TEXT-e02 TYPE 'S' DISPLAY LIKE 'E'.
    lo_ftp->disconnect( ).
    EXIT.
  ENDIF.

  " 检查文件已存在,
  lv_fname = lv_filename.
  CALL FUNCTION 'FTP_SERVER_TO_R3'
    EXPORTING
      handle        = lv_handle
      fname         = lv_fname
    EXCEPTIONS
      tcpip_error   = 1
      command_error = 2
      data_error    = 3.
  IF sy-subrc = 0 .
    lo_ftp->disconnect( ). " 关闭ftp连接
    MESSAGE TEXT-001 TYPE 'I' DISPLAY LIKE 'E'.
    LEAVE LIST-PROCESSING.
  ENDIF.
  lo_ftp->disconnect( ). " 关闭ftp连接
  EXIT.
ENDFUNCTION.
  • 文件写入指定路径

 参照标准函数FI_PAYMEDIUM_SAMPLE_41创建自定义函数ZFI_PAYMEDIUM_SAMPLE_41_COPY1,自定义函数中添加文件写入逻辑

FUNCTION zfi_paymedium_sample_41_copy1 .
*"----------------------------------------------------------------------
*"*"本地接口:
*"  IMPORTING
*"     VALUE(I_FPAYH) LIKE  FPAYH STRUCTURE  FPAYH
*"     VALUE(I_FPAYHX) LIKE  FPAYHX STRUCTURE  FPAYHX
*"  TABLES
*"      T_FILE_OUTPUT STRUCTURE  FPM_FILE
*"  CHANGING
*"     REFERENCE(C_WAERS) LIKE  FPAYH-WAERS
*"     REFERENCE(C_SUM) LIKE  FPAYH-RWBTR
*"----------------------------------------------------------------------
  TYPES:
    BEGIN OF ftp_line,
      line(200) TYPE c,
    END OF ftp_line.
  DATA lv_pwd TYPE text30.
  DATA lv_account TYPE text30 .
  DATA lv_host TYPE string.
  DATA lv_host1 TYPE string .
  DATA lv_port TYPE string.
  DATA lv_filename TYPE regut-fsnam VALUE 'MINTH_XMLv3'.
  DATA lv_filename1 TYPE rlgrap-filename.
  DATA lv_in_codepage TYPE regut-codepage.
  DATA out_codepage TYPE regut-codepage.
  DATA user_codepage TYPE regut-codepage.
  DATA lv_laufi TYPE regut-laufi.
  DATA lv_dttyp TYPE regut-dttyp.
  DATA lv_dtfor TYPE regut-dtfor.
  DATA lv_command(200) TYPE c.
  DATA lv_encoding TYPE abap_encoding.
  DATA lr_conv    TYPE REF TO cl_abap_conv_out_ce.
  DATA lv_buffer   TYPE xstring.
  DATA lt_blob    TYPE STANDARD TABLE OF x255.
  DATA lt_text    TYPE STANDARD TABLE OF x255.
  DATA lv_length   TYPE i.
  DATA lv_message  TYPE string.
  DATA lv_fname TYPE char300.
  DATA ls_tfpm042f      LIKE tfpm042f.
  DATA g_function TYPE rs38l_fnam.
  DATA l_format_cp  TYPE cpcodepage.
  DATA lt_data TYPE STANDARD TABLE OF ftp_line.
  DATA lx_string          TYPE xstring.
  DATA ls_encoding_string TYPE string.
  DATA lv_answer TYPE c.
  DATA ls_msg TYPE bapiret2.
  SELECT SINGLE * FROM ztsd018 INTO @DATA(ls_ztsd018) WHERE ftp_name  = 'FBPM_UP'.
  lv_host = ls_ztsd018-ftp_ip.
  lv_pwd = ls_ztsd018-ftp_pwd.
  lv_account = ls_ztsd018-ftp_user.
  SELECT SINGLE land1 FROM t042z INTO @DATA(lv_land1) WHERE formi = @i_fpayhx-formi.
  lv_filename = |{ lv_filename }_{ lv_land1 }_{ i_fpayh-laufd }_{ i_fpayh-laufi }|.
  "加密
  lv_pwd = zcl_ftp_connect=>http_scramble( lv_pwd ).
  "ftp连接
  DATA(lo_ftp) = NEW zcl_ftp_connect( iv_account = lv_account
                                      iv_pass = lv_pwd
                                      iv_host = lv_host
                                      iv_port = lv_port ).
  DATA(lv_handle) = lo_ftp->get_handle( ).
  IF lv_handle IS INITIAL.
    ls_msg = lo_ftp->connect( lo_ftp->gc-rfc_dest-sapftpa ).
  ENDIF.
  lv_handle = lo_ftp->get_handle( ).
  IF lv_handle IS INITIAL AND sy-batch IS INITIAL.
    MESSAGE TEXT-e01 TYPE 'I' DISPLAY LIKE 'E'.
    EXIT.
  ENDIF.

  "定位到目录
  lv_command = |cd { ls_ztsd018-file_path }|.
  DATA(lt_result) = lo_ftp->command( EXPORTING iv_cmd = lv_command IMPORTING es_msg = ls_msg ).
  IF ls_msg-type EQ 'E' .
    MESSAGE TEXT-e02 TYPE 'S' DISPLAY LIKE 'E'.
    lo_ftp->disconnect( ).
    EXIT.
  ENDIF.

  " 检查文件已存在,
  lv_fname = lv_filename.
  CALL FUNCTION 'FTP_SERVER_TO_R3'
    EXPORTING
      handle        = lv_handle
      fname         = lv_fname
    EXCEPTIONS
      tcpip_error   = 1
      command_error = 2
      data_error    = 3.
  IF sy-subrc = 0 .
    lo_ftp->disconnect( ). " 关闭ftp连接
    MESSAGE TEXT-001 TYPE 'I' DISPLAY LIKE 'E'.
    LEAVE LIST-PROCESSING.
    EXIT.
  ENDIF.
* 将外部字符集名转换为内部编码
  lv_laufi = i_fpayh-laufi.
  lv_dtfor =  i_fpayhx-formi.
  "get dttyp
  CALL FUNCTION 'FI_PAYM_FORMAT_READ_FORMATYPE'
    EXPORTING
      i_formi    = i_fpayhx-formi
      i_zbukr    = i_fpayh-zbukr
      i_zlsch    = i_fpayh-rzawe
      i_hbkid    = i_fpayh-hbkid
    IMPORTING
      e_tfpm042f = ls_tfpm042f.
  lv_dttyp = ls_tfpm042f-dttyp.
*  "  get Codepage lesen
  CALL FUNCTION 'FI_PAYM_FORMAT_READ_CODEPAGE'
    EXPORTING
      i_formi    = i_fpayhx-formi
    IMPORTING
      e_codepage = lv_in_codepage
    EXCEPTIONS
      not_found  = 4.
  IF sy-subrc NE 0.
    CLEAR lv_in_codepage.
  ENDIF.

  IF lv_laufi+5(1) = 'M'.
    g_function = 'FKK_DME_FDTA_CODEPAGE_GET'.
    CALL FUNCTION 'FUNCTION_EXISTS'
      EXPORTING
        funcname           = g_function
      EXCEPTIONS
        function_not_exist = 1.
    IF sy-subrc = 0.
      CALL FUNCTION g_function
        EXPORTING
          i_formi    = lv_dtfor
        IMPORTING
          e_codepage = l_format_cp
        EXCEPTIONS
          OTHERS     = 1.
    ENDIF.
  ELSEIF lv_dttyp = '90'.
    READ TABLE t_file_output INDEX 1 INTO lx_string.
*   search for string encoding = ... in file
    PERFORM check_encoding_of_xml_file USING lx_string lv_in_codepage
                                       CHANGING ls_encoding_string.
    IF ls_encoding_string = 'utf-8' OR ls_encoding_string = 'UTF-8'.
      l_format_cp = '4110'.
    ELSEIF ls_encoding_string = 'utf-16' OR ls_encoding_string = 'UTF-16'.
*     keep in utf-16, no conversion, file stored in Temse
      l_format_cp = lv_in_codepage.
    ELSE.
      CALL FUNCTION 'FI_PAYM_FORMAT_READ_CODEPAGE'
        EXPORTING
          i_formi    = lv_dtfor
        IMPORTING
          e_codepage = l_format_cp
        EXCEPTIONS
          not_found  = 1
          OTHERS     = 2.
    ENDIF.
*  end 2832354
  ELSEIF lv_dttyp = '01' OR lv_dttyp = '04' OR lv_dttyp = '06'.
    CALL FUNCTION 'FI_PAYM_FORMAT_READ_CODEPAGE'
      EXPORTING
        i_formi    = lv_dtfor
      IMPORTING
        e_codepage = l_format_cp
      EXCEPTIONS
        not_found  = 1
        OTHERS     = 2.
    IF l_format_cp IS INITIAL AND cl_abap_char_utilities=>charsize > 1 AND
        lv_dttyp = '04'.
      l_format_cp = '4110'.
    ENDIF.
  ENDIF.
  IF NOT l_format_cp IS INITIAL.
    IF lv_in_codepage = l_format_cp.
* file aready converted to codepage assigned in the format configuration
      out_codepage = lv_in_codepage.
    ELSE.
* old file that was not converted yet: convert it now
      out_codepage = l_format_cp.
    ENDIF.
  ELSE.
*   no codepage in customizing specified
    GET PARAMETER ID 'DCP' FIELD user_codepage.
    IF cl_abap_char_utilities=>charsize > 1.
*     unicode system
      IF ( lv_in_codepage = '4102' OR lv_in_codepage = '4103' ).
*     unicode / system codepage
        IF user_codepage IS INITIAL.
          out_codepage = '1100'.
        ELSEIF user_codepage = 'NONE'.
          out_codepage = lv_in_codepage.
        ELSE.
          out_codepage = user_codepage.
        ENDIF.
      ELSE.
*       ignore DCP parameter, file is already in specific codepage (regut-codepage)
        out_codepage = lv_in_codepage.
      ENDIF.
    ELSE.
*     non unicode system
      IF user_codepage IS INITIAL.
        out_codepage = '1100'.
      ELSEIF user_codepage = 'NONE'.
        out_codepage = lv_in_codepage.
      ELSE.
        out_codepage = user_codepage.
      ENDIF.
    ENDIF.
  ENDIF.

  lv_encoding = out_codepage.
  TRY.
      CALL METHOD cl_abap_conv_out_ce=>create
        EXPORTING
          encoding    = lv_encoding
          ignore_cerr = abap_true
        RECEIVING
          conv        = lr_conv.
    CATCH cx_parameter_invalid_range.
    CATCH cx_sy_codepage_converter_init.
  ENDTRY.

*  DATA(lv_data) = REDUCE string(
*                    INIT x = ||
*                    FOR wa IN t_file_output[]
*                    NEXT x = |{ x }{  wa-line }| ).
  DATA lv_data TYPE string.
  LOOP AT t_file_output.
    CONCATENATE lv_data t_file_output-line(t_file_output-length) INTO lv_data  RESPECTING BLANKS.
  ENDLOOP.

  TRY.
      CALL METHOD lr_conv->convert
        EXPORTING
          data   = lv_data
        IMPORTING
          buffer = lv_buffer.
    CATCH cx_sy_codepage_converter_init .
    CATCH cx_sy_conversion_codepage .
    CATCH cx_parameter_invalid_type .
  ENDTRY.
  CALL FUNCTION 'SCMS_XSTRING_TO_BINARY'
    EXPORTING
      buffer     = lv_buffer
    TABLES
      binary_tab = lt_blob.
  lv_length = xstrlen( lv_buffer ).
  CALL FUNCTION 'FTP_R3_TO_SERVER'
    EXPORTING
      handle        = lv_handle
      fname         = lv_fname
      blob_length   = lv_length
    TABLES
      blob          = lt_blob
      text          = lt_text
    EXCEPTIONS
      tcpip_error   = 1
      command_error = 2
      data_error    = 3
      OTHERS        = 4.
  IF sy-subrc <> 0.
    lo_ftp->disconnect( ). " 关闭ftp连接
    MESSAGE '数据写入失败'(005) TYPE 'S' DISPLAY LIKE 'E'.
  ELSE.
    lo_ftp->disconnect( ). " 关闭ftp连接
    IF sy-batch IS INITIAL.
      MESSAGE '数据写入成功'(004) TYPE 'I' DISPLAY LIKE 'S'.
    ENDIF.
  ENDIF.

ENDFUNCTION.

 事务码OBPM3维护配置模版事件模块21和41

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/802913.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Vision Pro的增强视觉:企业级Unity插件包实现主摄像头访问

在AR和VR技术的快速发展中,Unity作为跨平台游戏和应用开发的首选引擎,其插件生态的丰富性一直是开发者们关注的焦点。最近,一个专为Vision Pro设计的Unity插件包——EnterpriseCameraAccessPlugin,因其能够通过企业API访问主摄像头的功能,引起了广泛关注。 一、插件背景与…

【学习笔记】无人机(UAV)在3GPP系统中的增强支持(二)-支持高分辨率视频直播应用

引言 本文是3GPP TR 22.829 V17.1.0技术报告&#xff0c;专注于无人机&#xff08;UAV&#xff09;在3GPP系统中的增强支持。文章提出了多个无人机应用场景&#xff0c;分析了相应的能力要求&#xff0c;并建议了新的服务级别要求和关键性能指标&#xff08;KPIs&#xff09;。…

[Linux] yum和vim

文章目录 yumyum是什么?linux系统&#xff08;Centos&#xff09;的生态 vimvim是什么&#xff1f;vim配置 yum yum是什么? yum是一个下载安装及卸载管理软件的客户端。类似如应用商店 linux系统&#xff08;Centos&#xff09;的生态 Centos下载方式3种&#xff1a;源代…

【雷丰阳-谷粒商城 】【分布式高级篇-微服务架构篇】【26】【内网穿透】cpolar

持续学习&持续更新中… 守破离 【雷丰阳-谷粒商城 】【分布式高级篇-微服务架构篇】【27】【内网穿透】cpolar 内网穿透cpolar内网穿透联调配置练习—使用公网地址访问gulimall.com参考 内网穿透 正常的外网需要访问我们项目的流程是&#xff1a; 买服务器并且有公网固定…

Why can‘t I access GPT-4 models via API, although GPT-3.5 models work?

题意&#xff1a;为什么我无法通过API访问GPT-4模型&#xff0c;尽管GPT-3.5模型可以工作&#xff1f; 问题背景&#xff1a; Im able to use the gpt-3.5-turbo-0301 model to access the ChatGPT API, but not any of the gpt-4 models. Here is the code I am using to tes…

PyCharm在线版,一周使用总结!!!

前言 过去一周&#xff0c;对pycharm在线版进行了使用&#xff0c;对云原生开发工具有了全新的认识&#xff0c;云原生开发是一种现代化的软件开发和部署方法&#xff0c;它充分利用了云计算的优势&#xff0c;特别是容器化、微服务、持续集成/持续部署&#xff08;CI/CD&…

数据结构之线性表表示集合详解与示例(C,C#,C++)

文章目录 基本特征线性表的特点&#xff1a;线性表的表示方法&#xff1a;C、C#和C语言如何实现一个线性表表示集合1. C实现2. C#实现3. C实现 总结 线性表是计算机数据结构中的一个基本概念&#xff0c;它是一种最简单的抽象数据类型。在线性表中&#xff0c;数据元素之间的关…

如何在SpringCloud中使用Kafka Streams实现实时数据处理

使用Kafka Streams在Spring Cloud中实现实时数据处理可以帮助我们构建可扩展、高性能的实时数据处理应用。Kafka Streams是一个基于Kafka的流处理库&#xff0c;它可以用来处理流式数据&#xff0c;进行流式计算和转换操作。 下面将介绍如何在Spring Cloud中使用Kafka Streams实…

【AI绘画教程】Stable Diffusion 1.5 vs 2

在本文中,我们将总结稳定扩散 1 与稳定扩散 2 辩论中的所有要点。我们将在第一部分中查看这些差异存在的实际原因,但如果您想直接了解实际差异,您可以跳下否定提示部分。让我们开始吧! Stable Diffusion 2.1 发布与1.5相比,2.1旨在解决2.0的许多相对缺点。本文的内容与理解…

LabVIEW机器学习实现外观检测

介绍如何利用LabVIEW平台结合机器学习技术实现对被测样品的外观检测。详细说明了硬件选择、算法使用、操作步骤以及注意事项。 硬件选择 工业相机&#xff1a;高分辨率工业相机&#xff08;如Basler、FLIR等&#xff09;用于采集样品的图像。 照明设备&#xff1a;均匀的LED照…

C++深度解析教程笔记9-静态成员变量,静态成员函数,二阶构造,友元,函数重载,操作符重载

C深度解析教程笔记9 第25课 - 类的静态成员变量实验-数对象个数&#xff08;失败&#xff09;实验-静态变量小结 第26课 - 类的静态成员函数实验-修改对象的静态变量数值实验-利用静态成员函数实验-静态变量静态函数实现统计对象个数小结 第27课 - 二阶构造模式实验-初始化是否…

高翔【自动驾驶与机器人中的SLAM技术】学习笔记(二)——带着问题的学习;一刷感受;环境搭建

按照作者在读者寄语中的说法&#xff1a;我们得榨干这本书的知识。 带着问题 为了更好的学习&#xff0c;我们最好带着问题去探索。 第一&#xff1a;核心问题与基础知识 如上图&#xff1a;这本书介绍了SLAM相关的核心问题和基础知识。王谷博士给我们做了梳理&#xff1a;…

redis登录缓存

1.pom.xml中引入redis依赖 <!-- Redis依赖--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency> 2.将登录成功的token存储到redis中 if(Md5…

Vue和Element UI 路由跳转

在Vue.js中&#xff0c;使用Vue Router可以方便地实现页面之间的路由跳转。Element UI是一个基于Vue 2.0的桌面端组件库&#xff0c;它本身并不直接提供路由跳转的功能&#xff0c;但你可以在使用Element UI的Vue项目中结合Vue Router来实现这一功能。 以下是一个基于Vue和Ele…

文心一言:如何备考软考架构师

提问&#xff1a;软考高级:架构师指导&#xff0c;有哪些考点、重点考点有哪些&#xff1f;需要如何备考&#xff1f;案例分析题如何做&#xff1f;论文如何写&#xff1f; 文心一言回答1700字如下&#xff1a; 针对软考高级架构师的考试&#xff0c;以下是对考点、重点考点、备…

vue3插件vue3-video-play报错

安装完插件vue3-video-play&#xff0c;运行时报错 Failed to resolve entry for package "vue3-video-play". The package may have incorrect main/module/exports specified in its package.json. 问题 解决方法&#xff1a; 修改node_modules\vue3-video-play\…

论文翻译 | Successive Prompting for Decomposing Complex Questions 分解复杂问题的连续提示

摘要 回答需要做出潜在决策的复杂问题是一项具有挑战性的任务&#xff0c;尤其是在监督有限的情况下。 最近的研究利用大型语言模型&#xff08;LMs&#xff09;的能力&#xff0c;在少量样本设置中通过展示如何在单次处理复杂问题的同时输出中间推理过程&#xff0c;来执行复杂…

系统架构设计师教程(清华第二版) 第3章 信息系统基础知识-3.2 业务处理系统-解读

教材中,一会儿“业务处理系统”,一会儿“事务处理系统”,语法毛病一堆。真是清华的水平!!! 系统架构设计师教程 第3章 信息系统基础知识-3.2 业务处理系统 3.2.1 业务处理系统的概念3.2.2 业务处理系统的功能3.2.2.1 数据输入3.2.2.2 数据处理3.2.2.2.1 批处理 (Batch …

【Leetcode】二十一、前缀树 + 词典中最长的单词

文章目录 1、背景2、前缀树Trie3、leetcode208&#xff1a;实现Trie4、leetcode720&#xff1a;词典中最长的单词 1、背景 如上&#xff0c;以浏览器搜索时的自动匹配为例&#xff1a; 如果把所有搜索关键字放一个数组里&#xff0c;则&#xff1a;插入、搜索一个词条时&#x…

2024 HNCTF PWN(close ezpwn idea what beauty)

文章目录 closeezpwn代码利用exp idea代码exp whatexp beauty libc 2.35IDA中文乱码解决代码思路exp close int __fastcall main(int argc, const char **argv, const char **envp) {puts("**********************************");puts("* Welcome to the H…