[SAP ABAP开发技术总结]几个小问题

摘要:
粘贴前几个9。问题…799.1。当ALV与导出文件一起时,字段数据的结尾被截断…799.2。Smartform中的模板无法显示负号后的内容…809.3。Smartform的金额或数量字段无法显示…809.4。更新数据库表时。

以前做项目中遇到的,很多没来得急记下来,先贴几个吧

9.      问题... 79

9.1.           ALV自带导出文件时字段数据末尾被截断问题... 79

9.2.           Smartform Template无法显示减号后面内容... 80

9.3.           Smartform金额或者数量字段显示不出来... 80

9.4.           更新数据库表时,工作区或内表的结构需参考数据库表来定义... 80

9.5.           DELETE ADJACENT DUPLICATES…去重复... 80

9.6.           Text使用Excel打开乱码问题... 80

9.7.           VBFAEKPO联合查询问题... 81

9.   问题

9.1.  ALV自带导出文件时字段数据末尾被截断问题

发现有前导0时,导出会被截断:现发现VBAK-VBELN MARA-MFRNR都有这个问题,可能原因是他们带有转换输出与输入规则所导致

image085

image086

另一种解决办法:

image087 image088

9.2.  Smartform Template无法显示减号后面内容

Smartform中的Template里,如果输入的变量内容含有减号,则减号后面的内容会被丢掉

image089

问题原因:输出的内容超出了Template单元格的长度

解决办法:更改TEMPLATE的长度,或者换成 TABLE

9.3.  Smartform金额或者数量字段显示不出来

image090

9.4.  更新数据库表时,工作区或内表的结构需参考数据库表来定义

使用使用MODIFY更新数据库表时,工作区或内表的行结构与数据库表结构中各字段声明顺序要相同,否则更新会错位,该内表最好参照数据库词典结构类型来声明,这样就不会有问题。

9.5.  DELETE ADJACENT DUPLICATES…去重复

DELETE ADJACENT DUPLICATES FROM <itab> [COMPARING<f1><f2> ... | ALL FIELDS]

注,在未使用COMPARING 选项时,要删除重复数据之前,一定要按照内表关键字声明的顺序来进行排序,才能删除重复数据,否则不会删除掉;如果指定了COMPARING 选项,则需要根据指定的比较字段顺序进行排序(如COMPARING <F1><F2>时,则需要sort by <F1><F2>,而不能是sort by <F2><F1>),才能删除所有重复数据

9.6.  Text使用Excel打开乱码问题

如果使用GUI_DOWNLOAD函数下载文本文件,或者是发送邮件的附件,在英文XP操作系统中使用英文Excel软件打开时,请使用 UTF-16LE 编码,否则可能出现乱码情况。

data:  l_codepage(4) type n .
data:  l_encoding(20).
"
根据编码名获取对应的CodePage
callfunction'SCP_CODEPAGE_BY_EXTERNAL_NAME'
EXPORTING
    external_name = 'UTF-16LE'
IMPORTING
    sap_codepage  = l_codepage.
l_encoding = l_codepage.

data: convout type ref to cl_abap_conv_out_ce.
convout = cl_abap_conv_out_ce=>create( encoding = l_encoding ).
convout->write( data = lv_content )."
将字符按照l_encoding编码格式转换为X类型(二进制)
xstr =  convout->get_buffer( ).
"
在码流最前面加上编码信息,该编码由文本编辑软件在打开文件时使用

concatenate cl_abap_char_utilities=>byte_order_mark_little
                 xstr into  xstr in byte mode.

9.7.  VBFAEKPO联合查询问题

由于VBFA-POSNN EKPO-EBELP字段的类型相同,但长度不一样(VBFA-POSNN6位的数字类型,而EKPO-EBELP5位数字类型,但VBAP-POSNR行项目号是6位数字类型,不会出现此类问题),所以它们不能进行关联查询,相似的还有VBFA- POSNV也是6位的。下面这个关联查询是查不出数据的,只能分两次查询:

SELECT SINGLE vbeln posnn txz01 menge
 
INTO (it_result-ebeln, it_result-ebelp, it_result-txz01 , it_result-menge_2)

 
FROM vbfa AS
v INNER JOIN ekpo AS e ON v~vbeln = e~ebeln AND v~posnn = e~ebelp AND e~knttp = 'E'"Where条件是根据销售单查找前置单据——采购单,V为采购单凭证类型
 
WHERE  vbelv = it_result-vbeln AND posnv = it_result-posnr  AND vbtyp_n = 'V'.

HNTTP:采购凭证中的帐户设置类型,E——生产/销售所需物料的采购

分成两个可以正常查询:

SELECT SINGLE vbeln posnn
 
INTO (it_result-ebeln, it_result-ebelp)

 
FROM vbfa AS v"Where条件是:先根据销售单查找到前置采购单的单号与行项目号
  WHERE  vbelv = it_result-vbeln AND posnv = it_result-posnr  AND vbtyp_n = 'V'.

SELECT SINGLE  txz01 menge
 
INTO (it_result-txz01, it_result-menge_2)

 
FROM ekpo"Where条件是:再根据前面查出来的采购单号与行项目号,查出EKPO其他详细信息
 
WHERE  ebeln = it_result-ebeln AND ebelp = it_result-ebelp AND knttp
= 'E'.

免责声明:文章转载自《[SAP ABAP开发技术总结]几个小问题》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇jQuery Mobile 列表视图(带有自动检索)vue2 设置网页title的问题下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Elasticsearch查询

Elasticsearch支持两种类型的查询:基本查询和复合查询。 基本查询,如词条查询用于查询实际数据。 复合查询,如布尔查询,可以合并多个查询, 然而,这不是全部。除了这两种类型的查询,你还可以用过滤查询,根据一定的条件缩小查询结果。不像其他查询,筛选查询不会影响得分,而且通常非常高效。 更加复杂的情况,查询可以包含其他查询。此外,一些查询可以包含过滤...

C#中的枚举(Enum)你知道多少呢?

默认情况下,枚举第一个值是0, 可显式为枚举赋值。 可以定义枚举的基础类型,如enum E : short {}, sizeof(E) == 2;默认情况下是int。 枚举的继承链:ValueType->Enum->enum 枚举类型和基础类型之间的转换都是显式的,0除外,因为存在从0代任何枚举类型的隐式转换。 枚举的ToString()会输...

IndexedDB:不仅仅是客户端持久化缓存技术ThingJS

本地缓存技术提升用户访问体验 IndexedDB(客户端缓存持久化)技术优势 大型3D项目本地缓存技术实测 简介:为提升用户访问体验,缩短项目加载时间,ThingJS平台推出3D场景本地缓存技术:IndexedDB,也称客户端缓存持久化技术。通俗来说,IndexedDB就是浏览器提供的本地数据库,它可以被网页脚本创建和操作,使用JSON数据格式。下面详...

NetworkX系列教程(10)-算法之四:拓扑排序与最大流问题

小书匠Graph图论 重头戏部分来了,写到这里我感觉得仔细认真点了,可能在NetworkX中,实现某些算法就一句话的事,但是这个算法是做什么的,用在什么地方,原理是怎么样的,不清除,所以,我决定先把图论中常用算法弄个明白在写这部分. 图论常用算法看我的博客: 下面我将使用NetworkX实现上面的算法,建议不清楚的部分打开两篇博客对照理解. 我将图论...

游戏服务器端开发的基本大纲

一 专业基础 1.1 网络 1.1.1 理解TCP/IP协议 网络传输模型 滑动窗口技术 建立连接的三次握手与断开连接的四次握手 连接建立与断开过程中的各种状态 TCP/IP协议的传输效率 思考 1)请解释DOS攻击与DRDOS攻击的基本原理 2)一个100Byte数据包,精简到50Byte, 其传输效率提高了50% 3)TIMEWAIT状态怎么解释? 1...

『GoLang』反射

方法和类型的反射 反射是应用程序检查其所拥有的结构,尤其是类型的一种能。每种语言的反射模型都不同,并且有些语言根本不支持反射。Go语言实现了反射,反射机制就是在运行时动态调用对象的方法和属性,即可从运行时态的示例对象反求其编码阶段的定义,标准库中reflect包提供了相关的功能。在reflect包中,通过reflect.TypeOf(),reflect.V...