专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > SAP

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

发布时间:2010-06-06 17:05:26 文章来源:www.iduyao.cn 采编人员:星星草
[SAP ABAP开发技术总结]几个小问题

声明:原创作品转载时请注明文章来自SAP师太博客并以超链接形式标明文章原始出处否则将追究法律责任!
原文出自:
以前做项目中遇到的,很多没来得急记下来,先贴几个吧

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'.

友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

  • :安装MINI SAP失败

    求救:安装MINI SAP失败! 如题。 怎么办啊? 安装之前已经把SQL2000 2005 VS.NET05 08全都卸载了的。 安装CD1的时候就开始报错...

  • 哪位高手有abap eclipse editor

    谁有abap eclipse editor? 那位哥们有,可以进行资料交换。 ------解决方案-------------------- 这个现在只支持460,好像不支持640...

  • ,关于t-code:sgen的有关问题!

    求助,关于t-code:sgen的问题!急~~~ 昨天刚把sap ecc6装好了 。为了能够快速运行,事先准备用sgen编译一下 非常郁闷的是,在还没有开始...

  • sql查询语句中WHERE条件后面AND的个数解决方案

    sql查询语句中WHERE条件后面AND的个数 sql查询语句中WHERE条件后面AND的个数有没有限制啊! ------解决方案-------------------- ...

  • SAP模块,学哪个模块未来发展比较顺利

    【求助】SAP模块,学哪个模块未来发展比较顺利? 各位大侠,我是SAP新人。最近公司在培训,3周培训后要我们从PS,FI,CO,MM等中选择一个模...

  • 站在十字路口,该怎么处理

    站在十字路口 本人在一个快消公司做IT程序员,主要负责内部系统开发、报表开发、数据库维护等工作。现在公司要上SAP了,我也有幸参与...

  • alv field 是否可以进行日期选择解决方法

    alv field 是否可以进行日期选择 哪位达人知道怎么在ALV报表中实现 日期的选择,就像调整系统日期一样,不用手动收入 ------解决方...

  • 在sap中怎样获取字段所属的表解决思路

    在sap中怎样获取字段所属的表 小弟是SAP初学者,在这里遇到一个问题,由于对sap内部表结构不是很了解,现在要根据一些字段获取所属的表...

  • ABAP list report 输出有关问题

    ABAP list report 输出问题 小弟初学ABAP,苦难重重,望大侠门指点。两个问题: 第一,我做了一个list report,输出deliveray item 和invoi...

  • 在SAP中如何截取字符串

    在SAP中怎么截取字符串 在SAP中怎么截取字符串 比如 DATA:STR(10) LIKE C VALUE '1234567890', STR1(4) LIKE C. 我要取...

热门推荐: