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

ABAP札记

发布时间:2010-06-06 17:04:07 文章来源:www.iduyao.cn 采编人员:星星草
ABAP笔记

  ABAP程序开发,经常会遇到报表开发需求。使用ABAP的Report类型程序开发报表十分便利,用很少的代码就可以快速开发出一个报表。这种报表需求,抛开各种细枝末节,都可以归结为“三步走”:1、选择屏幕;2、OPEN SQL;3、结果呈现。一般情况下,在编写报表之前,都是知道取数的表是哪个表的,但是,如果想要让用户输入取数的表,然后再从这个表里把所有数据都取出来,呈现在屏幕上,这样的需求,涉及到动态编程。因为报表运行前,并不知道会从哪个数据表里取数据,也就无法参照声明出用来存放数据的结构和内表,只有用户输入表名,点击报表运行以后,才会知道所需要的内表的结构信息,这些信息,需要动态的获取,并动态的声明出所需的内表,然后动态的取出数据存放在这个内表中,最后呈现在屏幕上。

 1 REPORT zm_test01.
 2 "选择屏幕提取一个用户输入的字符串
 3 PARAMETERS p_name TYPE c LENGTH 20 DEFAULT 'sflight'.
 4 "r_dataob是一个数据引用,data类型。
 5 "<f_tb>为字段符号。可以指向任何内表。
 6 DATA r_dataob TYPE REF TO data.
 7 FIELD-SYMBOLS <f_tb> TYPE ANY TABLE.
 8 "错误处理用来处理用户输入的字符串不是数据字典里的内表的情况
 9 TRY .
10     "定义错误类型
11     DATA r_err TYPE REF TO cx_sy_create_data_error.
12     "这里是关键,指向名称为用户输入的p_name的内表指针
13     CREATE DATA r_dataob TYPE TABLE OF (p_name).
14   CATCH cx_sy_create_data_error INTO r_err. "捕捉定义的错误类型
15     DATA err_txt TYPE string.
16     err_txt = r_err->get_text( ).
17     WRITE: '不存在的表', err_txt.
18     "使用EXIT关键字结束程序,从而下面的代码就不会继续执行了,
19     "否则虽然捕捉到了错误,但是程序还会继续向下运行
20     EXIT.
21 ENDTRY.
22 "将指针解引用,解引用后为其指向的内表,然后将字段符号<f_tb>指向这个内表
23 "此时字段符号才会有值
24 "之后需要用这个内表,只需要使用字段符号即可
25 ASSIGN r_dataob->* TO <f_tb>.
26 "在这个select语句中,p_name为用户输入的取数据的表,而<f_tb>字段符号为根据用户输入的字符串动态生成的内表。
27 "注意在select语句中可以使用字段符号,但是不能直接把解引用放进来。也就是说,字段符号是很有必要的。
28 SELECT * FROM (p_name) INTO TABLE <f_tb>.
29 "使用savl快速构建报表简单呈现
30 DATA r_alv_tb TYPE REF TO cl_salv_table.
31 DATA r_alv_funclist TYPE REF TO cl_salv_functions_list.
32 TRY.
33     CALL METHOD cl_salv_table=>factory
34       IMPORTING
35         r_salv_table = r_alv_tb
36       CHANGING
37         t_table      = <f_tb>.
38   CATCH cx_salv_msg .
39 ENDTRY.
40 r_alv_funclist = r_alv_tb->get_functions( ).
41 r_alv_funclist->set_all( ).
42 r_alv_tb->display( ).

 

1楼氢氦
我看到你在14行捕捉了cx_sy_create_data_error异常。请问编程的时候要怎样知道自己该捕捉哪些异常呢?虽然知道try catch语句,不过我几乎只有在程序实际运行时因为异常dump的时候才知道该捕捉的异常是什么...
Re: 以读攻毒
@氢氦,您说的这个问题很对,14行那里我也是dump掉以后才去处理的,按照字符串去创建数据引用有可能创不出来,所以就处理了一下。
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

  • :安装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. 我要取...

热门推荐: