以用户默认格式下载Excel

2020-08-18 19:51发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


专家您好,

我正在尝试基于选择屏幕中的复选框,实现将Excel下载到桌面和应用程序服务器的功能。 目前工作正常。 但有以下几点需要研究。

  1. 金额结尾处带有负号,该值将被修改到值的前面。
    在报告SAP屏幕和csv下载中,负号位于字符串的末尾。 Excel无法将金额值识别为数字,而无需重新格式化字段。
  2. 日期值显示为YYYYMMDD并以CSV格式下载。 更改此设置,以便将日期转换为用户默认值。
  3. 十进制表示法,当前输出带有小数点""。 应该使用用户默认设置。

我通过使用字符字段来解决这个问题,但这不起作用。 您能否提出您的建议。

问候,

A

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


专家您好,

我正在尝试基于选择屏幕中的复选框,实现将Excel下载到桌面和应用程序服务器的功能。 目前工作正常。 但有以下几点需要研究。

  1. 金额结尾处带有负号,该值将被修改到值的前面。
    在报告SAP屏幕和csv下载中,负号位于字符串的末尾。 Excel无法将金额值识别为数字,而无需重新格式化字段。
  2. 日期值显示为YYYYMMDD并以CSV格式下载。 更改此设置,以便将日期转换为用户默认值。
  3. 十进制表示法,当前输出带有小数点""。 应该使用用户默认设置。

我通过使用字符字段来解决这个问题,但这不起作用。 您能否提出您的建议。

问候,

A

付费偷看设置
发送
6条回答
渐行渐远_HoldOn
1楼-- · 2020-08-18 20:15

您需要通过代码或屏幕截图显示您定义为下载数据的内容,以及如何创建" excel"文件以帮助我们。 是xlsx,xls还是csv。 到目前为止,我只能猜测。


日期和小数点
第一个问题似乎与您使用的数据类型有关,因为您没有显示编码,所以我假设您 正在使用内部ABAP类型(例如i,p,c等)或没有转换出口的数据类型,这些数据类型缺少从内部显示到外部显示的规则(例如char8)。

对于日期,您可以使用" TYPE 基准",对于整数和小数,您可以使用int4,dec31_14,wbtrg,mengv13。

您还可以为自己的数据类型创建自己的转换出口。 甚至可以使用WRITE ... USING EDIT MASK ...语句,但这取决于您如何创建excel文件。


ZERO作为后缀

SAP几乎总是 在右边显示带负号的符号。

如果需要在SAP的左侧显示标志,例如,在财务报告等可能需要的地方,您可以选择布局以解决其他格式选项。 在选择屏幕或ALV上,或者根据您的导出逻辑,您需要建立自己的转换出口或使用write ...使用编辑掩码...

但是取决于用于创建excel的工具 ,那应该为您解决这个问题。


创建Excel文件

您如何创建和下载excel文件? 是xlsx,xls还是csv。 您是使用工具还是自己创建工具? 还是先使用ALV预览它并从那里下载?

例如,您可以将github的abap2xlsx用于xlsx。 或针对xls使用OLE/ABAP。 如果您自己创建一个csv,则在创建行时,至少需要使用write语句,并且可能要考虑SAP用户默认设置(最坏的情况下还要考虑Excel设置)来进行"自己"转换。
在ALV中显示数据并使用ALV工具栏以xlsx,xls,csv的格式从那里下载数据也是获取"正确"数据的不错选择。

打个大熊猫
2楼-- · 2020-08-18 20:12

Ab ABAP ,请继续回答您的公开问题。

  • 评论答案或您的问题是否还有未解决的问题。
  • 否则将答案标记为接受,如果它可以帮助您解决问题
  • 或发布您自己的答案并接受 如果您自己找到了另一个有用的解决方案
  • ,或者将您的问题重定向到另一个相关且对解决您的问题有用的问题
  • 最后,请关闭您的问题
葫芦娃快救爷爷
3楼-- · 2020-08-18 20:22

你好,

如下解决。

下面我提到了2种不同的情况。

对于桌面的GUI_DOWNLOAD选项,代码没有重大更改。 通过使SU01中的用户格式与Windows中的用户格式相同,可以确定生成的excel将具有用户所需的格式。

从下载到AL11的文件中下载Excel时,生成的Excel文件(使用CG3Y到桌面)将不具有带有值字段的列所需的格式。 由于我们在下载到AL11时使用了数据集文件生成选项,因此该文件始终为字符串/字符格式。 因此,在使用值字段的情况下,输出将不会具有数字格式,因此很难转换为数字格式。 标识在将文件串联形成数据集时,所有字段均为字符格式。 无论哪种语言,这都是CSV或制表符分隔值的已知问题。 那只是文本,没有信息是数字。 Excel不能再将它们解释为数字,而是将其打开为文本。 因此,我怀疑核心问题是分隔符与用户的本地首选项不匹配。 我添加了代码以识别并删除分隔符; 这可行。 使用CG3Y将文件从AL11下载到桌面时,在桌面中下载到excel时没有问题。 唯一的问题是关于分隔符的问题,因为我们在代码中将其删除了,所以这些分隔符不可用。

何必丶何苦呢
4楼-- · 2020-08-18 20:29

完全同意-需要查看代码以及如何创建excel文件...。

葫芦娃快救爷爷
5楼-- · 2020-08-18 20:19

HI Ab ,

尝试使用日期转换代码。

配置lv_date + 4(4)lv_date + 2(2)lv_date + 0(2)INTO lv_date。

和负号

尝试。
       lo_column?= lo_columns-> get_column(
                   columnname ='MENGE')。
       lo_column-> set_sign(abap_true).CATCH cx_salv_not_found。

 ENDTRY。
哎,真难
6楼-- · 2020-08-18 20:16

转到SU01,选择用户ID

转到默认值

设置数字和日期格式

保存并退出会话

重新登录,然后执行程序并下载-excel文件将具有正确的格式

一周热门 更多>