工作生活与爱好

工作中的记录; 生活中的记忆; 业余爱好的记载。

2007-01-15

 

ABAP:向自建表写入数据时,需要注意的问题

在某个创建的自建表中,某个字段的数据元素为SAKNR(总账科目号),类型为CHAR(10),但是导入的数据的长度只有CHAR(6),比数据库字段要短,如果直接导入,不进行任何处理,会出现什么潜在的问题呢?

首先导入数据肯定不会出现错误,但是在使用中,我需要从表SKAT中查找总账科目的描述,但是无论如何都不能通过程序查找到描述信息,直接从表SKAT中却能找到相应总账科目的描述,这是为什么呢?

通过分析,发现SKAT中保存的科目长度全部为10位,不足的长度,前面都用“0”补齐,而我导入到自建表中的科目中数据却只有6位长度,后面用空格补齐,那么原因就找到了,我们在导入数据时,有些字段不能直接写入数据库,需要进行一定的处理。

那么如何进行处理呢,不能简单的想当然,在任何不足的长度前都用0补齐,对于不同的数据元素和域,它们处理的方式不一致,需要使用SAP系统提供的系统函数来进行处理。

在检查表SKAT的SAKNR字段的数据元素SAKNR,到域SAKNR,在Definition标签,Output Characteristics属性中,有一个Convers.routine为ALPHA,继续察看,可以看到系统提供的几个Function,如下

CONVERSION_EXIT_ALPHA_INPUT 对话退出ALPHA,外部->内部
CONVERSION_EXIT_ALPHA_OUTPUT 对话退出ALPHA,内部->外部

函数调用非常简单,如下

CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = IG_UPLOAD-HKONT_NIS
IMPORTING
OUTPUT = WA_ZDFLNIS-HKONT_NIS
.
一般来说,需要进行补齐处理的有:科目,物料编码等各种编码,各种凭证编号,如物料凭证等。


Comments: 发表评论



<< Home

Archives

1990年1月15日   2007年1月14日   2007年1月15日   2007年1月16日   2007年1月17日   2007年1月18日   2007年1月19日   2007年1月20日   2007年1月22日   2007年1月23日   2007年1月24日   2007年1月25日   2007年1月26日   2007年1月27日   2007年1月29日   2007年1月30日   2007年1月31日   2007年2月1日   2007年2月2日   2007年2月3日   2007年3月13日   2007年5月15日   2007年5月16日   2007年6月2日  

This page is powered by Blogger. Isn't yours?