Chinaunix首页 | 论坛 | 博客
  • 博客访问: 7189505
  • 博文数量: 655
  • 博客积分: 10264
  • 博客等级: 上将
  • 技术积分: 8278
  • 用 户 组: 普通用户
  • 注册时间: 2007-06-04 17:47
个人简介

ABAP顾问

文章分类

全部博文(655)

文章存档

2017年(2)

2014年(8)

2013年(3)

2012年(2)

2011年(18)

2010年(102)

2009年(137)

2008年(274)

2007年(134)

分类:

2008-01-15 17:41:53

这是SAP的一个Bug,FM方式ALV Grid和Class ALV Grid都会出现,但是ALV List好像没有这个BUG。
 
在以下几个条件满足的时候就会出现这个问题:
1.字段对应的域Convers. routine = ALPHA,也就是有前导零的字段,比如供应商号、商品号、客户号等。
2.做ALV Fieldcat的时候,没有指定参考表和参考字段。
3.列的表头文本(seltext_s等)比实际显示的数据短。
 
所以解决问题的时候从2、3两点下手即可。
 
 
REPORT z_barry_field_loss .
TYPE-POOLS: slis.
DATA: gd_fieldcat TYPE slis_t_fieldcat_alv.
DATA: sla TYPE slis_layout_alv ,
      i_repid LIKE sy-repid ,
      ls_fieldcat TYPE slis_fieldcat_alv.
DATA: BEGIN OF itab OCCURS 0,
        lifnr LIKE lfa1-lifnr ,
        kunnr LIKE kna1-kunnr ,
        matnr LIKE mara-matnr ,
        bukrs LIKE bsik-bukrs ,
      END OF itab.
 
START-OF-SELECTION.
  itab-lifnr = '0000100047'.
  itab-kunnr = '0000001006'.
  itab-bukrs = 'ZB01'.
  itab-matnr = '000000000001100198'.
  APPEND itab.
 
  CLEAR ls_fieldcat .
  ls_fieldcat-fieldname     =  'LIFNR'.
  ls_fieldcat-seltext_s     =  'LI'.
  ls_fieldcat-ref_fieldname = 'LIFNR'.  "|注释
  ls_fieldcat-ref_tabname   = 'LFA1'.   "|
  ls_fieldcat-ddictxt       = 'S'.
  APPEND ls_fieldcat TO gd_fieldcat .
 
  CLEAR ls_fieldcat .
  ls_fieldcat-fieldname     =  'KUNNR'.
  ls_fieldcat-seltext_s     =  'KU'.
  ls_fieldcat-ref_fieldname = 'KUNNR'.  "|注释
  ls_fieldcat-ref_tabname   = 'KNA1'.   "|
  APPEND ls_fieldcat TO gd_fieldcat .
 
  CLEAR ls_fieldcat .
  ls_fieldcat-fieldname     =  'BUKRS'.
  ls_fieldcat-seltext_s     =  'BU'.
  APPEND ls_fieldcat TO gd_fieldcat .
 
  CLEAR ls_fieldcat .
  ls_fieldcat-fieldname     =  'MATNR'.
  ls_fieldcat-seltext_s     =  'MAT'.
  ls_fieldcat-ref_fieldname = 'MATNR'.  "|注释
  ls_fieldcat-ref_tabname   = 'MAKT'.   "|
  APPEND ls_fieldcat TO gd_fieldcat .
 
  i_repid = sy-repid.
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      i_callback_program      = i_repid
      it_fieldcat             = gd_fieldcat[]
      i_save                  = 'A'
      is_layout               = sla
      i_callback_user_command = 'USER_COMMAND'
    TABLES
      t_outtab                = itab
    EXCEPTIONS
      program_error           = 1
      OTHERS                  = 2.
阅读(8322) | 评论(8) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2010-03-11 17:41:35

你导出的文件用Excel打开看的? 用记事本打开看看

chinaunix网友2010-03-11 16:58:31

老白,这个问题我测试过了,有个奇怪的问题,你上述代码没问题,但是我用生产订单编号的做映射,导出把前导零都删除了,我查订单编号,数据库定义 是char (12) 类型,导出的时候不是12位,前导零都被删除了.

chinaunix网友2009-09-25 11:26:00

good for you

chinaunix网友2008-04-08 13:20:38

谢谢回复. 真牛!

chinaunix网友2008-01-17 02:22:06

我也碰到过这个问题啊,我的解决办法是在FieldCat里给DATATYPE字段赋值,不过用Reference好像更好。