当前位置: 首页 > news >正文

SAP ABAP 读取事务码变式内容

需求描述根据事务码读取指定变式中指定屏幕字段名的全部内容。自己简单记录了一个可使用程序复制粘贴可用。*---------------------------------------------------------------------* * Report ZSD_RPT_262 *---------------------------------------------------------------------* * *---------------------------------------------------------------------* REPORT zsd_rpt_262. TYPES:BEGIN OF ty_output, sign TYPE tvarv_sign, option TYPE tvarv_opti, low TYPE rvari_val, high TYPE rvari_val, END OF ty_output. DATA:gt_output TYPE STANDARD TABLE OF ty_output. SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-001. PARAMETERS: p_tcode TYPE tstc-tcode OBLIGATORY, p_vari TYPE rsvar-variant OBLIGATORY, p_text TYPE sychar30 OBLIGATORY. SELECTION-SCREEN END OF BLOCK b1. INITIALIZATION. CLEAR:gt_output. START-OF-SELECTION. PERFORM frm_main. *---------------------------------------------------------------------* * Form frm_main *---------------------------------------------------------------------* * text *---------------------------------------------------------------------* * -- p1 text * -- p2 text *---------------------------------------------------------------------* FORM frm_main . DATA:lv_pgmna TYPE tstc-pgmna, lv_msg TYPE string, lt_params TYPE STANDARD TABLE OF vanz, lt_params_n TYPE STANDARD TABLE OF vanz, lt_selop TYPE STANDARD TABLE OF vanz, lt_selop_n TYPE STANDARD TABLE OF vanz, lt_valutab TYPE STANDARD TABLE OF rsparams, lt_valutab1 TYPE STANDARD TABLE OF rsparamsl, lt_objects TYPE STANDARD TABLE OF vanz, lt_desc TYPE STANDARD TABLE OF rsdynbrepi, lt_value TYPE STANDARD TABLE OF rsseldyn, lt_obj TYPE STANDARD TABLE OF rsvaridyn, lv_key TYPE string VALUE D_SREPOVARI-EXTDREPORT, 固定关键字 lv_pos TYPE i, lv_end TYPE i, lv_tcode TYPE tcode. 拉取事务码对应程序ID SELECT SINGLE pgmna FROM tstc WHERE tcode p_tcode INTO lv_pgmna. IF sy-subrc 0. MESSAGE 事务码无效请检查 TYPE S DISPLAY LIKE E. RETURN. ELSE. 若pgmna为空则去查 TSTCP参数事务 IF lv_pgmna IS INITIAL. SELECT SINGLE param FROM tstcp WHERE tcode p_tcode INTO DATA(lv_param). IF sy-subrc 0. 解析参数里的目标事务码 lv_pos strlen( lv_key ). FIND lv_key IN lv_param MATCH OFFSET lv_pos. IF sy-subrc 0. 3. 从 号后开始截取直到 ; 结束 lv_pos 23. lv_param lv_paramlv_pos. FIND ; IN lv_param MATCH OFFSET lv_end. IF sy-subrc 0. lv_tcode lv_param(lv_end). SELECT SINGLE pgmna FROM tstc WHERE tcode lv_tcode INTO lv_pgmna. ENDIF. ENDIF. ENDIF. ENDIF. ENDIF. IF lv_pgmna IS INITIAL. MESSAGE 未找到事务码对应的程序名 TYPE S DISPLAY LIKE E. RETURN. ENDIF. 读取事务码下变式的内容 CALL FUNCTION RS_VARIANT_CONTENTS EXPORTING report lv_pgmna variant p_vari * MOVE_OR_WRITE W * NO_IMPORT * EXECUTE_DIRECT * IMPORTING * SP TABLES l_params lt_params l_params_nonv lt_params_n l_selop lt_selop 选择项目 l_selop_nonv lt_selop_n valutab lt_valutab 变式全部内容 valutabl lt_valutab1 objects lt_objects free_selections_desc lt_desc free_selections_value lt_value free_selections_obj lt_obj EXCEPTIONS variant_non_existent 1 variant_obsolete 2 OTHERS 3. IF sy-subrc 0. MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno INTO lv_msg WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. MESSAGE lv_msg TYPE S DISPLAY LIKE E. RETURN. ENDIF. 根据选择项目描述读取对应SELNAME READ TABLE lt_selop ASSIGNING FIELD-SYMBOL(lfs_selop) WITH KEY text p_text. IF sy-subrc 0. 仅保留需要读取的内容 DELETE lt_valutab WHERE selname lfs_selop-name. IF lt_valutab IS NOT INITIAL. MOVE-CORRESPONDING lt_valutab TO gt_output. PERFORM frm_output. ELSE. MESSAGE 变式的选择项目下无内容输入 TYPE S DISPLAY LIKE E. ENDIF. ELSE. MESSAGE 事务码下选择项目不存在请检查 TYPE S DISPLAY LIKE E. ENDIF. ENDFORM. *---------------------------------------------------------------------* * Form frm_output *---------------------------------------------------------------------* * text *---------------------------------------------------------------------* * -- p1 text * -- p2 text *---------------------------------------------------------------------* FORM frm_output . DATA:lt_fieldcat TYPE lvc_t_fcat. DATA:lo_table TYPE REF TO data. DATA:lv_xstr TYPE xstring. DATA:lt_rawdata TYPE solix_tab. DATA:lo_result_data_table TYPE REF TO cl_salv_ex_result_data_table. DATA:lo_bs_ex_office2007 TYPE REF TO cl_salv_bs_ex_office2007. DATA:lv_version TYPE string. DATA:lv_flavour TYPE string. *获取数据 GET REFERENCE OF gt_output INTO lo_table. *构造列字段 PERFORM frm_create_fieldcat CHANGING lt_fieldcat. *获取cl_salv_ex_result_data_table类对象 lo_result_data_table cl_salv_ex_utilfactory_result_data_table( r_data lo_table t_fieldcatalog lt_fieldcat ). 获取xml版本信息 lv_version cl_salv_bs_a_xml_baseget_version( ). IF lv_version if_salv_bs_xmlversion_25. lv_version if_salv_bs_xmlversion_25. ELSEIF lv_version if_salv_bs_xmlversion_26. lv_version if_salv_bs_xmlversion_26. ENDIF. lv_flavour if_salv_bs_c_ttc_tt_xml_flavour_export. *转换xstring cl_salv_bs_tt_utilif_salv_bs_tt_util~transform( EXPORTING xml_version lv_version r_result_data lo_result_data_table xml_type if_salv_bs_xmlc_type_xlsx XML Type as SALV Constant xml_flavour lv_flavour gui_type if_salv_bs_xmlc_gui_type_gui Constant IMPORTING xml lv_xstr ). PERFORM frm_dialog_xml USING lv_xstr. ENDFORM. *---------------------------------------------------------------------* * Form frm_create_fieldcat *---------------------------------------------------------------------* * text *---------------------------------------------------------------------* * -- p1 text * -- p2 text *---------------------------------------------------------------------* FORM frm_create_fieldcat CHANGING it_fieldcat TYPE lvc_t_fcat. DATA:ls_fieldcat TYPE lvc_s_fcat. DEFINE def_field. CLEAR ls_fieldcat. ls_fieldcat-col_pos 1. column position ls_fieldcat-fieldname 2. ls_fieldcat-reptext 3. APPEND ls_fieldcat TO it_fieldcat. END-OF-DEFINITION. def_field 1 SIGN 标识. def_field 2 OPTION 选项. def_field 3 LOW 最小值. def_field 4 HIGH 最大值. ENDFORM. *---------------------------------------------------------------------* * Form frm_dialog_xml *---------------------------------------------------------------------* * 下载弹窗 *---------------------------------------------------------------------* * -- p1 text * -- p2 text *---------------------------------------------------------------------* FORM frm_dialog_xml USING iv_xml TYPE xstring. DATA:lv_extension TYPE string VALUE XLSX. DATA:lv_directory TYPE string VALUE D:/. DATA:lv_filename TYPE string. DATA:lv_mask TYPE string VALUE Excel (*.XLSX)|*.XLSX. lv_filename p_tcode _ p_vari _ p_text. CALL FUNCTION XML_EXPORT_DIALOG EXPORTING i_xml iv_xml i_default_extension lv_extension i_initial_directory lv_directory i_default_file_name lv_filename i_mask lv_mask * I_APPLICATION EXCEPTIONS application_not_executable 1 OTHERS 2. IF sy-subrc 0. * Implement suitable error handling here ENDIF. ENDFORM.最后看一下执行效果选择界面程序执行结束导出数据文件
http://www.zskr.cn/news/1392564.html

相关文章:

  • 利用taotoken构建内部知识库问答agent的架构思路
  • 应对Claude官方访问限制的替代方案与Taotoken接入实践
  • 免登录批量下载微博图片工具weiboPicDownloader
  • 基于局部线性嵌入的截断投影CT运动校正:原理、实现与调优
  • 终极Apex Legends压枪宏指南:告别后坐力,轻松提升射击精度
  • 基于扩散反演的人脸交换技术:InFS框架原理与工程实践
  • Node js 项目集成 Taotoken 实现统一大模型调用管理
  • GMT跨平台中文字体渲染实战
  • 有哪些AI论文工具是真的贴合学术规范,而不是胡乱堆砌?
  • 大润发购物卡回收专业指南 - 购物卡回收找京尔回收
  • 2026深圳标签印刷厂家:深圳说明书印刷工厂全览 - 栗子测评
  • 磁悬浮电磁铁协同优化设计:从FEM仿真到多目标优化的工程实践
  • CAL方法:利用一致性增强与测试时增强提升CLIP模型领域泛化能力
  • WinPython完整指南:5步打造你的Windows便携Python开发环境
  • 观点问答MRC实战:混合嵌入与联合训练解决数据稀缺与深度优化
  • 大白话讲解GPT底层原理
  • 2026年GEO优化哪家强?十大权威服务商深度盘点与选型指南
  • 【IEEE出版,IEEE Xplore, EI, Scopus】第七届能源电力与自动化工程国际学术会议(ICEPAE 2026) - 爱搞科研的小刘
  • Linux多线程信号延迟优化:从毫秒到微秒的内核级解决方案
  • 华为“τ”计划:打破算力墙,重新定义AI应用开发的“新基建”
  • 2026武汉性价比高的财税公司推荐 十大代理记账公司排名 - 品牌优企推荐
  • 如何让老旧Mac重获新生:OCLP-Mod终极升级指南
  • 户户清泉流淌街巷,漫步曲水亭感受泉城旧日风情
  • TongWeb7 JMX监控实战:从RMI到JMXMP的配置演进与网络穿透
  • 深圳奢侈品首饰回收实测:2026 最新行情,热门款报价表 - 奢侈品回收测评
  • Postman与JMeter选型指南:功能验证vs性能压测的决策逻辑
  • AI论文网站的合规秘籍:如何让AI生成内容通过严格学术审查
  • 全学科适用AI论文软件排名(2026 终极指南)
  • Win10服务管理避坑指南:用批处理安全禁用Windows Defender等12项服务
  • FreshRSS 自托管RSS聚合工具