news 2026/4/23 15:02:56

SAP ABAP代码实现常规数据批导(剪切板方式)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
SAP ABAP代码实现常规数据批导(剪切板方式)

SAP中经常会需要开发很多批导的程序,一般会用Excel上传数据的方式,这种经常会出现excel的各种问题,处理起来也麻烦。所以本文介绍另外一种方式,全程不使用Excel下载或者上传,使用剪切板获取模板和上传数据。

一、导出模板到剪切板

以下代码使用了AI帮我加上了注释。这里是点击选择屏幕上方的自定义按钮导出目录字段到剪切板,前提是需要在这段代码之前维护好目录。

* 变量定义(补充原代码隐含的变量定义,确保可独立运行) DATA: gt_clipboard_data TYPE TABLE OF char2048 WITH HEADER LINE, " 剪贴板输出数据内表 gt_field_catalog TYPE lvc_t_fcat WITH HEADER LINE, " ALV字段目录内表 gv_return_code TYPE sy-subrc, " 剪贴板导出返回码 gs_dfies TYPE dfies. " 数据元素信息结构(存储字段文本) CASE sscrfields-ucomm. WHEN 'FCO1'. CLEAR: gt_clipboard_data, gt_clipboard_data[]. * 遍历字段目录,筛选排除指定字段(RTYPE/RTMSG),拼接表头文本 LOOP AT gt_field_catalog WHERE fieldname <> 'RTYPE' AND fieldname <> 'RTMSG'. * 判断字段目录的列文本是否为空,为空则读取数据元素文本,否则直接使用列文本 IF gt_field_catalog-coltext = ''. * 调用系统函数读取数据元素的字段文本 CALL 'C_DD_READ_FIELD' ID 'TYPE' FIELD 'T' ID 'TABNAME' FIELD gt_field_catalog-ref_table ID 'FIELDNAME' FIELD gt_field_catalog-ref_field ID 'LANGUAGE' FIELD sy-langu. ELSE. * 字段目录有列文本,直接赋值到数据元素文本字段 gs_dfies-fieldtext = gt_field_catalog-coltext. ENDIF. * 拼接剪贴板数据:水平制表符分隔,拼接字段文本(Excel粘贴后自动分列) CONCATENATE gt_clipboard_data cl_abap_char_utilities=>horizontal_tab gs_dfies-fieldtext INTO gt_clipboard_data. ENDLOOP. * 移除拼接后字符串开头的水平制表符(避免Excel粘贴后首列空值) SHIFT gt_clipboard_data. * 将处理后的表头文本追加到剪贴板数据内表 APPEND gt_clipboard_data. * 调用GUI服务,将表头数据导出到操作系统剪贴板 CALL METHOD cl_gui_frontend_services=>clipboard_export IMPORTING data = gt_clipboard_data[] CHANGING rc = gv_return_code EXCEPTIONS cntl_error = 1 " 控件错误 error_no_gui = 2 " 无GUI环境(如后台执行) not_supported_by_gui = 3 " GUI不支持该操作 OTHERS = 4. " 其他错误 * 根据剪贴板导出结果,给出对应的消息提示 IF sy-subrc = 0. MESSAGE s000(oo) WITH '已经把表头复制到剪贴板,可以打开一个Excel文件然后粘贴'. ELSE. MESSAGE e000(oo) WITH '复制到剪贴板失败'. ENDIF. * 其他操作码:无处理逻辑 WHEN OTHERS. ENDCASE.

二、剪切板数据上传

以下代码是将剪切板数据导入到指定内表的form。

FORM frm_cliptoitab TABLES itab. * 常量:分割符(水平制表符) CONSTANTS: gc_tab_separator TYPE c VALUE cl_abap_char_utilities=>horizontal_tab. " 根据水平制表符分割数据 * 内表定义:剪贴板数据、分割后字段、需替换为空的符号 DATA: lt_clipboard_data TYPE TABLE OF char2048 WITH HEADER LINE, " 剪贴板导入的原始数据 lt_split_fields TYPE TABLE OF char2048 WITH HEADER LINE. " 按分隔符分割后的字段内表 * 异常相关变量 DATA: lo_exception TYPE REF TO cx_root, lv_exception_msg TYPE string. * 索引 DATA: lv_field_index TYPE sy-tabix. FIELD-SYMBOLS: <fs_target_field> , <fs_target_table> . * 赋值目标内表到字段符号 ASSIGN itab TO <fs_target_table>. * 从剪贴板导入数据 CALL METHOD cl_gui_frontend_services=>clipboard_import IMPORTING data = lt_clipboard_data[] EXCEPTIONS cntl_error = 1 error_no_gui = 2 not_supported_by_gui = 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. * 刷新GUI控件 CALL METHOD cl_gui_cfw=>flush. * 遍历剪贴板每行数据 LOOP AT lt_clipboard_data. CLEAR: lv_field_index, lt_split_fields[]. * 按分隔符分割当前行数据到字段内表 SPLIT lt_clipboard_data AT gc_tab_separator INTO TABLE lt_split_fields. * 遍历分割后的字段,赋值到目标内表 LOOP AT lt_split_fields. lv_field_index = lv_field_index + 1. * 分配目标内表的对应字段到字段符号 ASSIGN COMPONENT lv_field_index OF STRUCTURE <fs_target_table> TO <fs_target_field>. CHECK sy-subrc = 0. * 字段赋值 TRY . <fs_target_field> = lt_split_fields. CATCH cx_root INTO lo_exception. lv_exception_msg = lo_exception->get_text( ). ENDTRY. ENDLOOP. * 将处理后的行追加到目标内表 APPEND itab. CLEAR itab. ENDLOOP. ENDFORM.
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/22 18:46:25

现代数据架构的AI驱动转型:AI应用架构师的角色与挑战

现代数据架构的AI驱动转型&#xff1a;AI应用架构师的角色与挑战 一、引言&#xff1a;为什么AI驱动的数据架构转型是必然&#xff1f; 1.1 传统数据架构的“失效”困境 在数字化浪潮下&#xff0c;企业的数据环境正在发生根本性变化&#xff1a; 数据量爆炸&#xff1a;IDC预测…

作者头像 李华
网站建设 2026/4/23 8:42:53

使用GD32F103C8T6开发板的标准库实现硬件I2C协议通信(附源码下载地址)

代码说明&#xff1a; 该I2C驱动实现了完整的硬件I2C配置&#xff0c;包括GPIO引脚设置、时钟配置和模式配置包含全面的异常处理机制&#xff0c;能够检测和处理超时、NACK、总线忙、仲裁丢失等异常情况提供了多种I2C操作函数&#xff0c;包括单字节读写和多字节读写操作实现了…

作者头像 李华
网站建设 2026/4/23 8:41:00

短剧收稿编辑的福音:2026年AI 评剧本让优质剧本脱颖而出

做短剧剧本收稿编辑五年&#xff0c;我见证了短剧行业从野蛮生长到规范化发展的全过程。但随之而来的&#xff0c;是越来越繁重的审稿压力 ——短剧投稿量翻倍增长&#xff0c;优质剧本却依旧稀缺&#xff0c;每天在海量同质化剧本中 “大海捞针”&#xff0c;还要和编剧反复沟…

作者头像 李华
网站建设 2026/4/23 8:41:04

软件库APP开源Flutter SoftLib源码 带后端源码

本项目为开源学习项目。 &#x1f393; 学习用途&#xff1a;本项目旨在展示Flutter开发技术和最佳实践&#x1f6ab; 禁止非法使用&#xff1a;严禁将本项目用于任何非法活动&#x1f4dd; 免责声明&#xff1a;开发者不对使用本项目造成的任何后果承担责任&#x1f512; 合规…

作者头像 李华
网站建设 2026/4/23 8:42:53

金蝶云星空与Clover POS系统数据互通对接

金蝶云星空与Clover POS系统的对接&#xff0c;核心是通过小懿互联集成平台实现双方核心数据的无缝互通&#xff0c;打通基础资料&#xff08;物料、仓库、客户&#xff09;、业务单据&#xff08;销售出库单与收银订单&#xff09;及库存数据的精准同步&#xff0c;依托小懿互…

作者头像 李华
网站建设 2026/4/23 8:41:55

云知声进行配售:募资3亿港元 主要用于山海大模型研发

雷递网 乐天 2月3日云知声智能科技股份有限公司&#xff08;简称&#xff1a;“云知声”&#xff0c;股份代号&#xff1a;9678&#xff09;今日宣布进行配售&#xff0c;尽力促使不少于六名独立承配人认购1,008,000股新H股&#xff0c;配售价为每股H股310港元。假设所有配售股…

作者头像 李华