现在的位置: 首页 > 综合 > 正文

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

2012年08月31日 ⁄ 综合 ⁄ 共 825字 ⁄ 字号 评论关闭

在某个创建的自建表中,某个字段的数据元素为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
            .
一般来说,需要进行补齐处理的有:科目,物料编码等各种编码,各种凭证编号,如物料凭证等。

抱歉!评论已关闭.