十二
4

ALV中调用Excel, 丢掉前面的0问题解决

Author 774 views    Category ALV     Tags ,     打印该文章 打印该文章

在sdn中看到有人问这个问题, 于是做个简单的例子来说明如何避免, 或者说解决这个问题.

1. 写个小程序, 用alv来显示表vbak的内容.

*&———————————————————————*
*& Report  ZALV_INPLACE
*&
*&———————————————————————*
*&
*&
*&———————————————————————*
REPORT  zalv_inplace.
*&———————————————————————*
*     TABLES
*&———————————————————————*
TABLES:vbak.
*&———————————————————————*
*–>TYPE DEFINITION
*&———————————————————————*
TYPES: BEGIN OF ty_tab.
INCLUDE TYPE vbak.
TYPES:END OF ty_tab.
*&———————————————————————*
*     SELECTION-SCREEN
*&———————————————————————*
SELECTION-SCREEN: BEGIN OF BLOCK b01 WITH FRAME TITLE text-b02.
SELECT-OPTIONS s_vbeln for vbak-vbeln.
SELECTION-SCREEN: END OF BLOCK b01.
*&———————————————————————*
*–>CLASS DEFINITION DEFERRED
*&———————————————————————*
CLASS lcl_layout DEFINITION DEFERRED.
CLASS lcl_fieldcat    DEFINITION DEFERRED.
CLASS lcl_data        DEFINITION DEFERRED.
CLASS lcl_event       DEFINITION DEFERRED.
*&———————————————————————*
*–> Global data definitions for ALV
*&———————————————————————*
*— ALV Grid instance reference
DATA ref_alv TYPE REF TO cl_gui_alv_grid .
*— Custom container instance reference
DATA ref_con TYPE REF TO cl_gui_custom_container .
*–Data for screen command
DATA:
  save_ok LIKE sy-ucomm,
  ok_code LIKE sy-ucomm.
DATA: var TYPE disvariant.
*&———————————————————————*
*–>CLASS DATA DEFINITION
*&———————————————————————*
DATA  ref_layout TYPE REF TO lcl_layout.
DATA  ref_fieldcat TYPE REF TO lcl_fieldcat.
DATA  ref_data     TYPE REF TO lcl_data.
DATA  ref_event    TYPE REF TO lcl_event.
DATA: itab TYPE TABLE OF vbak.
*&———————————————————————*
*–>CLASS DEFINITION
*&———————————————————————*
CLASS lcl_layout DEFINITION.
PUBLIC SECTION.
DATA: s_layout TYPE lvc_s_layo .
METHODS: prepare_layout.
ENDCLASS.                    "lcl_layout DEFINITION
*———————————————————————-*
*       CLASS lcl_fieldcat DEFINITION
*———————————————————————-*
*
*———————————————————————-*
CLASS lcl_fieldcat DEFINITION.
PUBLIC SECTION.
DATA: it_fieldcat TYPE lvc_t_fcat.
METHODS: prepare_fieldcat.
PRIVATE SECTION.
DATA: s_fieldcat TYPE lvc_s_fcat.
ENDCLASS.                    "lcl_fieldcat DEFINITION
*———————————————————————-*
*       CLASS lcl_data DEFINITION
*———————————————————————-*
*
*———————————————————————-*
CLASS lcl_data DEFINITION.
PUBLIC SECTION.
DATA:itab TYPE TABLE OF ty_tab.
data:itab_del type TABLE OF ty_tab.
TYPES: ttab TYPE TABLE OF ty_tab.
METHODS: prepare_data.
*    METHODS: update_color CHANGING itab TYPE ttab.
PRIVATE SECTION.
DATA: rs_data TYPE REF TO ty_tab.
ENDCLASS.                    "lcl_data DEFINITION
*———————————————————————-*
*       CLASS lcl_event DEFINITION
*———————————————————————-*
*
*———————————————————————-*
CLASS lcl_event DEFINITION.
PUBLIC SECTION.
METHODS: handle_before_user_command FOR EVENT before_user_command
OF cl_gui_alv_grid IMPORTING e_ucomm.
METHODS:handle_user_command
FOR EVENT user_command OF cl_gui_alv_grid
IMPORTING e_ucomm sender.
ENDCLASS.                    "lcl_event DEFINITION
*———————————————————————-*
*       CLASS lcl_event IMPLEMENTATION
*———————————————————————-*
*
*———————————————————————-*
CLASS lcl_event IMPLEMENTATION.
METHOD handle_before_user_command.
CASE e_ucomm.
WHEN ‘&VEXCEL’.
BREAK-POINT.
ENDCASE.
ENDMETHOD.                    "handle_data_changed_finished
METHOD handle_user_command.
ENDMETHOD.                    "handle_data_changed_finished
ENDCLASS.                    "lcl_event IMPLEMENTATION
*&———————————————————————*
*–>CLASS IMPLEMENTATOIN
*&———————————————————————*
CLASS lcl_layout IMPLEMENTATION.
METHOD prepare_layout.
    s_layout-smalltitle =’X’ .
    s_layout-grid_title =’SIH Project Development List’(099).
    s_layout-sel_mode =’A’ .
ENDMETHOD.                    "prepare_layout
ENDCLASS.                    "lcl_layout IMPLEMENTATION
*———————————————————————-*
*       CLASS lcl_fieldcat IMPLEMENTATION
*———————————————————————-*
*
*———————————————————————-*
CLASS lcl_fieldcat IMPLEMENTATION.
METHOD prepare_fieldcat.
FIELD-SYMBOLS: <fcat> TYPE lvc_s_fcat.
CALL FUNCTION ‘LVC_FIELDCATALOG_MERGE’
EXPORTING
        i_structure_name       = ‘VBAK’
CHANGING
        ct_fieldcat            = it_fieldcat
EXCEPTIONS
        inconsistent_interface = 1
        program_error          = 2
OTHERS                 = 3.
loop at it_fieldcat ASSIGNING <fcat>.
case <fcat>-fieldname.
when ‘VBELN’.
*            <fcat>-
endcase.
endloop.
ENDMETHOD.                    "prepare_fieldcat
ENDCLASS.                    "lcl_fieldcat IMPLEMENTATION
*———————————————————————-*
*       CLASS lcl_data IMPLEMENTATION
*———————————————————————-*
*
*———————————————————————-*
CLASS lcl_data IMPLEMENTATION.
METHOD prepare_data.
*—>Get data
SELECT * FROM VBAK INTO CORRESPONDING FIELDS OF TABLE itab
WHERE VBELN IN S_VBELN.
ENDMETHOD.                    "prepare_data
"update_color
ENDCLASS.                    "lcl_data IMPLEMENTATION
START-OF-SELECTION.
* Call alv grid screen
CALL SCREEN 9000.
*&———————————————————————*
*&      Module  INIT_SCREEN  OUTPUT
*&———————————————————————*
MODULE init_screen OUTPUT.
SET PF-STATUS ‘STAT’.
PERFORM frm_display_alv.
ENDMODULE.                 " INIT_SCREEN  OUTPUT
*&———————————————————————*
*&      Module  USER_COMMAND  INPUT
*&———————————————————————*
MODULE user_command INPUT.
data: la type c.
  save_ok = ok_code.
CASE save_ok.
WHEN ‘BACK’ OR ‘EXIT’ OR ‘CANC’.
LEAVE to SCREEN 0.
ENDCASE.
ENDMODULE.                 " USER_COMMAND_9000  INPUT
*&———————————————————————*
*&      Form  frm_display_alv
*&———————————————————————*
FORM frm_display_alv .
*  Local data definition
DATA: var TYPE disvariant.  "Variant
IF ref_alv IS INITIAL.
*–>Create customer container
CREATE OBJECT ref_con
EXPORTING
        container_name = ‘ALV_CON’.
*–>Create alv grid
CREATE OBJECT ref_alv
EXPORTING
        i_parent = ref_con.
*–>Create fieldcatlog for alv
CREATE OBJECT ref_fieldcat.
CALL METHOD ref_fieldcat->prepare_fieldcat.
*–>Set layout property
CREATE OBJECT ref_layout.
CALL METHOD ref_layout->prepare_layout.
*–>Get data.
CREATE OBJECT ref_data.
CALL METHOD ref_data->prepare_data.
*–>Register event
CREATE OBJECT ref_event.
SET HANDLER ref_event->handle_before_user_command FOR ref_alv.
SET HANDLER ref_event->handle_user_command FOR ref_alv.
* Register edit events
CALL METHOD ref_alv->register_edit_event
EXPORTING
        i_event_id = cl_gui_alv_grid=>mc_evt_enter.
*–>Display data
    var-report      = sy-repid.
CALL METHOD ref_alv->set_table_for_first_display
EXPORTING
        is_variant                    = var
        i_save                        = ‘A’
        i_default                     = ‘X’
        is_layout                     = ref_layout->s_layout
CHANGING
        it_outtab                     = ref_data->itab
        it_fieldcatalog               = ref_fieldcat->it_fieldcat
EXCEPTIONS
        invalid_parameter_combination = 1
        program_error                 = 2
        too_many_lines                = 3
OTHERS                        = 4.
ELSE.
*–>Refresh display
CALL METHOD ref_alv->refresh_table_display.
ENDIF.
ENDFORM.                    " frm_display_alv

2. 问题现象重现

  执行上面的程序,效果如下:

clip_image002

clip_image004

3. fieldcat设定

when ‘VBELN’.
            <fcat>-NO_CONVEXT = ‘X’.

4. 问题解决效果

clip_image002[9]

然后我们在看excel inplace

clip_image004[5]

clip_image002[11]





目前有4 条留言

  • txfirst 五月 13, 2010于9:07 下午

    评论
    这不是个好办法,最好的办法是参考一个这个字段原来的table,就可以搞定了。

    • Bob 五月 13, 2010于9:13 下午

      恩, 确实,只是临时起意. 也不一定要这个字段原来的table, 完全可以自己定义一个, 也可以添加自己定义conversion rule.

  • 匿名 二月 1, 2010于12:34 上午

    如果以[本地文件]->[电子表格]这种方式导出,怎么输出前0啊
    谢谢1

  • 匿名 二月 1, 2010于12:32 上午

    FDGFDF

发表评论

留言没头像?这里教你设置头像!
注意: 评论者允许使用'@user空格'的方式将自己的评论通知另外评论者。例如, ABC是本文的评论者之一,则使用'@ABC '(不包括单引号)将会自动将您的评论发送给ABC。使用'@all ',将会将评论发送给之前所有其它评论者。请务必注意user必须和评论者名相匹配(大小写一致)。

Follow us on Twitter! Follow us on Twitter!

我的Twitter

  • 俺的身体快速回复中, 明天应该就可以结束医院之旅, 这两个星期耽误了很多的事情,郁闷那!!!!!! 11 hrs ago
  • 用IE6测试了一下博客的主题,唉,果然如我所料,太丑....大家赶快抛弃它吧, 千万别用IE6访问我的博客... 2 days ago
  • 新博客主题终于搞定了, 就是还不知道速度如何. 国内的用户可能会慢些, 谁让咱是国外的主机了. 如果您有空请帮忙测试一下速度并且给我留言,谢谢..... 3 days ago
  • 今天输液完毕,还算比较快.. 1 week ago
  • 要开始干活了, 估计今天要把一个程序结束掉,加油拉 1 week ago
  • More updates...

作者介绍

  • 姓名    : 徐春波
  • 所在地 : 上海
  • 爱好    : 斯诺克
  • 联系方式:

文章发表日历

2009年十二月
« 十   三 »
 123456
78910111213
14151617181920
21222324252627
28293031  

标签云

ABAP ADS ALE ALV BDC BI BSP Control FrameWork data migration Debug DSO EDI English Enhancement EP Excel Function Icon Idoc Interactive Form Object Oriented OO Query Script SD Search Help selection-screen SO SQL T-Code Tab Stip UNIX User-Exit VMS Web Dynpro web service Wordpress WorkFlow 学习笔记 宝宝 心情笔记 接口技术 翱翔云天 设计模式 项目管理

WP-Cumulus by Roy Tanck and Luke Morton requires Flash Player 9 or better.

最新评论

阅读最多文章

热评文章

友情链接

博客统计

  • 从2010年5月19日统计:
  • 总访问量: 29765
  • 当前页面访问: 80 次
  • 订阅量: 22
  • 总发布文章: 266
  • 总评论量: 155