SAP ABAP 粘贴板负号前置

2023-10-30

场景:

用户一般Ctrl+C复制ALV数据到Excel处理,如果有负数的数值,负号在数值的后面,Excel不认识,要费劲巴拉的一个个改正,苦不堪言!

本程序功能:

在ALV复制数据后,直接更改剪贴板里面的数据,把负号提到前面,然后直接在Excel粘贴就可以了。如果有逗号作为千分位符,也一并去掉。

程序逻辑:

获取剪贴板数据后,根据制表符分割字段,如果字段包含

0123456789,.- 之外的字符,说明不是数值,跳过;否则,判断最后的一个字符是不是负号“-”,如果不是,跳过;如果是负号,则把这个负号挪到数值前面,同时把里面的千分位符去掉,例如:23,345.58- 变成 -23345.58。依次处理所有行,处理完毕把处理过的数据再粘贴到剪贴板,就可以直接在Excel粘贴了。

爱心提示:

把事务码放到收藏夹里面,用户只要双击一下就OK了。

比如复制了这样的数据: 

使用前: 

使用后: 

 源代码如下:


REPORT ZFRONT_SIGN NO STANDARD PAGE HEADING.
 
DATA : LT_CLIP TYPE TABLE OF CHAR4000 WITH HEADER LINE,
       LT_OUT  TYPE TABLE OF CHAR4000 WITH HEADER LINE,
       LT_FLDS TYPE TABLE OF STRING WITH HEADER LINE,
       LEN     TYPE I,
       FLAG.
 
START-OF-SELECTION.
  CALL METHOD CL_GUI_FRONTEND_SERVICES=>CLIPBOARD_IMPORT
    IMPORTING
      DATA                 = LT_CLIP[]
    EXCEPTIONS
      CNTL_ERROR           = 1
      ERROR_NO_GUI         = 2
      NOT_SUPPORTED_BY_GUI = 3
      OTHERS               = 4.
  IF LT_CLIP[] IS INITIAL.
    MESSAGE S000(OO) WITH 'No data' DISPLAY LIKE 'E'.
    RETURN.
  ENDIF.
 
  LOOP AT LT_CLIP.
    CLEAR : LT_FLDS[],LT_OUT.
    SPLIT LT_CLIP AT %_HORIZONTAL_TAB INTO TABLE LT_FLDS.
    LEN = STRLEN( LT_CLIP ) - 1.
    IF LEN > 0 AND LT_CLIP+LEN(1) =  %_HORIZONTAL_TAB.
      APPEND INITIAL LINE TO LT_FLDS.
    ENDIF.
 
    LOOP AT LT_FLDS.
      LEN = STRLEN( LT_FLDS ) - 1.
      IF LEN > 0  AND LT_FLDS CO ' 0123456789,.-' AND LT_FLDS+LEN(1) = '-'.
        TRANSLATE LT_FLDS USING '- '.
        TRANSLATE LT_FLDS USING ', '.
        CONCATENATE '-' LT_FLDS INTO LT_FLDS.
        CONDENSE LT_FLDS NO-GAPS.
        FLAG = 'X'.
      ENDIF.
 
      CONCATENATE LT_OUT %_HORIZONTAL_TAB LT_FLDS INTO LT_OUT.
    ENDLOOP.
 
    SHIFT LT_OUT.
    APPEND LT_OUT.
  ENDLOOP.
 
  IF FLAG = 'X'.
    CALL FUNCTION 'CLPB_EXPORT'
      TABLES
        DATA_TAB   = LT_OUT
      EXCEPTIONS
        CLPB_ERROR = 1
        OTHERS     = 2.
    IF SY-SUBRC = 0.
      MESSAGE S000(OO) WITH 'Success'.
    ELSE.
      MESSAGE S000(OO) WITH 'Error' DISPLAY LIKE 'E'.
    ENDIF.
  ELSE.
    MESSAGE S000(OO) WITH 'No Data'.
  ENDIF.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SAP ABAP 粘贴板负号前置 的相关文章

  • Flask-SocketIO redis 订阅

    我在用着https github com miguelgrinberg Flask SocketIO https github com miguelgrinberg Flask SocketIO实现 WebSocket 服务器 我需要从另一
  • 导入错误:无法导入名称“FFProbe”

    我无法获取ffprobe包 https github com simonh10 ffprobe在 Python 3 6 中工作 我使用 pip 安装它 但是当我输入import ffprobe it says Traceback most
  • 从内存地址创建python对象(使用gi.repository)

    有时我需要调用仅存在于 C 中的 gtk gobject 函数 但返回一个具有 python 包装器的对象 之前我使用过基于 ctypes 的解决方案 效果很好 现在我从 PyGtk import gtk 切换到 GObject intro
  • DynamodB:如何更新排序键?

    该表有两个键 filename 分区键 和eventTime 排序键 我要更新eventTime对于某些filename Tried put item and update item 发送相同的filename与新的eventTime但这些
  • Python,Google Places API - 给定一组纬度/经度查找附近的地点

    我有一个由商店 ID 及其纬度 经度组成的数据框 我想迭代该数据框 并使用 google api 为每个商店 ID 查找附近的关键地点 例如输入 Store ID LAT LON 1 1 222 2 222 2 2 334 4 555 3
  • 将整数系列转换为交替(双元)二进制系列

    我不知道如何最好地表达这个问题 因为在这里谷歌搜索和搜索总是让我找到更复杂的东西 我很确定这是基本的东西 但对于我的生活来说 我找不到一个好的方法来做到这一点下列 给定一个整数序列 比如说 for x in range 0 36 我想将这些
  • Python3将模块从文件夹导入到另一个文件夹

    我的结构字典是 mainFolder folder1 init py file1 py file2 py folder2 init py file3 py file4 py setup py init py 我需要将 file4 py 从f
  • 获取 Keras model.summary() 作为表

    我在 Keras 中创建了相当大的模型 我正在用 LaTeX 写一篇关于它的文章 为了很好地描述 LaTeX 中的 keras 模型 我想用它创建一个 LaTeX 表 我可以手动实现它 但我想知道是否有任何 更好 的方法来实现这一点 我四处
  • 如何从 python 脚本执行 7zip 命令

    我试图了解如何使用 os system 模块来执行 7zip 命令 现在我不想用 Popen 或 subprocess 让事情变得复杂 我已经安装了 7zip 并将 7zip exe 复制到我的用户文件夹中 我只想提取我的测试文件 inst
  • Python 在哪些系统上不使用 IEEE-754 双精度浮点数

    Python 对 IEEE 754 浮点运算进行了各种引用 但不保证1 https docs python org 3 tutorial floatingpoint html 2 https pythondev readthedocs io
  • 在 django 中导入设置时出现奇怪的错误

    我有很多项目在 ubuntu 中使用 python2 7 和 virtualenv virtualenvwrapper 工作 在我的工作中 一些开发人员使用 macosx 和 windows 通常我像往常一样创建项目 django admi
  • Python在没有pandas的情况下解码excel表

    我正在尝试在 python 中读取 excel 文件而不使用pandas or xlrd 我一直在尝试将结果转换为bytes to utf 8没有任何成功 xls 文件中的数据 colA colB colC spc 1D0 20190705
  • 使用 ElementTree 在 python 中解析 xml

    我对 python 很陌生 我需要解析一些脏的 xml 文件 这些文件需要先清理 我有以下 python 代码 import arff import xml etree ElementTree import re totstring wit
  • 如何通过selenium中弹出的身份验证?

    我正在尝试使用带有 Selenium 的 Python 脚本加载需要身份验证的网页 options webdriver ChromeOptions prefs download default directory r download de
  • Python脚本从字母和两个字母组合生成单词

    我正在编写一个简短的脚本 它允许我使用我设置的参数生成所有可能的字母组合 例如 b a 参数 单词 5 个字母 第三 第五个字母 b a 第一个字母 ph sd nn mm 或 gh 第二 第四个字母 任意元音 aeiouy 和 rc 换句
  • Office 365 中 Excel 中 Power Pivot 的计算列中正确的 DAX GROUPBY 语法是什么

    将以下语法输入到下面在 Excel Office 365 版本 的 powerpivot 中提供的表 Visits 的计算列公式中 GROUPBY Visits Patient Name First Visit Date MINX CURR
  • 从给定的项目列表创建子列表

    我首先要说的是以下问题不是为了家庭作业目的即使因为我几个月前就完成了软件工程师的工作 无论如何 今天我正在工作 一位朋友向我询问了这个奇怪的排序问题 我有一个包含 1000 行的列表 每行代表一个数字 我想创建 10 个子列表 每个子列表都
  • PyQt5按钮lambda变量变成布尔值[重复]

    这个问题在这里已经有答案了 当我运行下面的代码时 它显示如下 为什么 x 不是 x 而是变成布尔值 这种情况仅发生在传递到用 lambda 调用的函数中的第一个参数上 错误的 y home me model some file from P
  • 检查 IP 地址是否在给定范围内

    我想检查一下是否有IP180 179 77 11位于特定范围之间 例如180 179 0 0 180 179 255 255 我编写了一个函数 它将每个 IP 八位字节与其他八位字节进行比较 def match mask IP min ip
  • 从 Django 运行 shell 命令

    我正在 Django 中开发一个网页 使用 apache 服务器 需要调用 shell 命令来启用 禁用一些守护进程 我尝试这样做 os system service httpd restart 1 gt HOME out 2 gt HOM

随机推荐

  • 给label绘制下划线

    UIlabel本身没有下划线的属性 使用绘制的方法 添加下滑下 并且赋给该label一个action作为响应方法 实现DIY超链接的效果 调用 import UnderLineLabel h UnderLineLabel label Und
  • naive 路由使用 loadingBar 进度条

    环境 devDependencies vitejs plugin vue 4 2 3 axios 1 4 0 less 4 1 3 less loader 11 1 3 naive ui 2 34 4 pinia 2 1 4 typescr
  • PostMan使用技巧:“status“: 415 解决方案

    前言 该错误的出现 主要原因是Postmanf操作不当所致 下面代码为调用方法入口 一 错误提示信息 二 处理方案 如下图所示 调整传参方式为Body gt raw gt JSON application json 尾言 错误不大 侮辱性极
  • usb:认识usb传输(一)

    文章目录 一 usb发展背景 1 usb特点 2 usb发展 1 更名 2 发展 3 传输速度 4 usb编 解码方式 反向不归零 NRZI 位填充 5 信号传输状态 5 帧 6 通讯过程划分 二 usb的四种传输 1 控制传输 2 中断传
  • UE4鼠标滚轮控制镜头缩放

    蓝图 因为其实实现起来比较简单 所以直接上蓝图 主要是用到了UE4的鼠标滚轮操作映射 每当滑动鼠标滚轮的时候就会传出一个数值 有正有负有0 然后将角色的相机摇臂组件拖进蓝图 获取其中的Target Arm Length变量加上一个数值再重新
  • postman实战:2.参数化csv和json

    在上节课讲解了使用postman做接口测试时 如何设置环境变量和全局变量关联参数 关联环境变量和全局变量中参数时 他们的作用范围再来回顾一下 下面来看一下postman里面关于参数化的应用 首先分析下应用场景 1 某一个接口我们对入参设计了
  • 十二、支持向量机

    def svmm 支持向量机 完善 用超平面对高纬空间中的样本进行分类 为了解决线性不可分问题 引入了核函数 常用核函数有线性核函数 多项式核函数 高斯核函数和sigmoid核函数 API sklearn svm SVC C 1 0 ker
  • 机器学习综述论文笔记:Machine Learning: A Review of Learning Types

    机器学习review Paper Machine Learning A Review of Learning Types 这是一篇关于机器学习的综述 里面简述了各种现有的机器学习技术 1 主要的方法 监督 无监督 强化 1 1 监督学习 数
  • Redis原理篇(二)网络模型

    一 用户空间和内核空间 应用需要通过Linux内核与硬件交互 内核本质也是应用 运行的时候也需要CPU资源 内存资源 用户应用也在消耗这些资源 为了避免用户应用导致冲突甚至内核崩溃 用户应用与内核是分离的 进程的寻址空间会划分为两部分 内核
  • 公司前端vue是用vscode开发工具写的,个人喜欢用idea,但是idea在保存代码的时候会自动去除代码行最后的空格,造成不该修改的地方修改了,影响代码提交

    取消这个功能 File Settings Editor General On Save Remave trailing
  • springBoot 观察者模式

    观察者设计模式 jie神说用订阅和发布来理解更好 我想了一下是的 为什么呢 因为监听器这个名词听起来是一个主动的 可实际监听器是一个被动的玩意 比如我们事件源发布一个事件 然后监听器订阅了这个事件就能做出动作 里面涉及到三个对象 事件源 事
  • 【2023】JAVA和PLC实现通讯读取写入数据,以三菱PLC举例

    1 创建maven工程引入依赖
  • --- Error: User Command terminated, Exit-Code = 1解决办法

    使用keil MDK编译项目时 compiling编译通过 但是文件最后出现错误 Error User Command terminated Exit Code 1 经查阅资料 MDK需要fromelf exe文件生成 bin 那么在重新安
  • uboot编译报错解决

    uboot编译报错 root ubuntu home gjt uboot u boot 2015 01 make scripts kconfig conf silentoldconfig Kconfig scripts kconfig co
  • Protobuf 使用(c++)

    一 Protobuf 安装 安装protobuf tar xvf protobuf cd protobuf autogen sh生成configure configure prefix usr local protobuf make mak
  • 用P5.js实现一个动态的绘画系统

    摘要 通过一段时间的学习 我发现码绘的可能性比我想象的要更大 我们可以用码绘实现很多手绘很难达到的效果 比如创作一幅会动的 能进行交互的画作 如何通过类似画笔的东西在屏幕上创作出时刻在改变的 并且我们可以进行实时修改的像动画一样的作品 这就
  • AutoSchedule和AutoTVM

    简介 AutoTVM 用户自己手写一个模版 在模版里面自己定义一下tune的参数 例如tile size等 给定一个模版 在这个模版里面去搜索参数 使得可以达到一组最好的参数使得张量计算的结果最好 但是 它是一种基于模板的方法 因此仍然需要
  • 构建一个Flex程序

    构建一个Flex程序 Flex定义了一个基于组件的开发模型 从而我们可以用来构建我们的程序 为了高效的设计与构建我们的程序 我们应该熟悉这个模型 以及程序开发步骤与布署过程 在这一章描述了我们用来创建一个程序的开发过程 在这一章所包含的如下
  • Neo4j的安装和简单使用

    1 首先是Neo4j的下载和安装 下载地址 https neo4j com download 我下载的是Community Edition 下载完毕 因为是 exe文件 直接双击安装即可 没有什么需要注意的 2 安装完毕 在第一次使用Neo
  • SAP ABAP 粘贴板负号前置

    场景 用户一般Ctrl C复制ALV数据到Excel处理 如果有负数的数值 负号在数值的后面 Excel不认识 要费劲巴拉的一个个改正 苦不堪言 本程序功能 在ALV复制数据后 直接更改剪贴板里面的数据 把负号提到前面 然后直接在Excel