ABAP程序开发,经常会遇到报表开发需求。使用ABAP的Report类型程序开发报表十分便利,用很少的代码就可以快速开发出一个报表。这种报表需求,抛开各种细枝末节,都可以归结为“三步走”:1、选择屏幕;2、OPEN SQL;3、结果呈现。一般情况下,在编写报表之前,都是知道取数的表是哪个表的,但是,如果想要让用户输入取数的表,然后再从这个表里把所有数据都取出来,呈现在屏幕上,这样的需求,涉及到动态编程。因为报表运行前,并不知道会从哪个数据表里取数据,也就无法参照声明出用来存放数据的结构和内表,只有用户输入表名,点击报表运行以后,才会知道所需要的内表的结构信息,这些信息,需要动态的获取,并动态的声明出所需的内表,然后动态的取出数据存放在这个内表中,最后呈现在屏幕上。
REPORT zm_test01. "选择屏幕提取一个用户输入的字符串 DEFAULT 'sflight'. "r_dataob是一个数据引用,data类型。 "<f_tb>为字段符号。可以指向任何内表。 DATA r_dataob TYPE REF TO data. FIELD-SYMBOLS <f_tb> TYPE ANY TABLE. "错误处理用来处理用户输入的字符串不是数据字典里的内表的情况 TRY . "定义错误类型 DATA r_err TYPE REF TO cx_sy_create_data_error. "这里是关键,指向名称为用户输入的p_name的内表指针 CREATE DATA r_dataob TYPE TABLE OF (p_name). CATCH cx_sy_create_data_error INTO r_err. "捕捉定义的错误类型 DATA err_txt TYPE string. err_txt = r_err->get_text( ). WRITE: '不存在的表', err_txt. "使用EXIT关键字结束程序,从而下面的代码就不会继续执行了, "否则虽然捕捉到了错误,但是程序还会继续向下运行 EXIT. ENDTRY. "将指针解引用,解引用后为其指向的内表,然后将字段符号<f_tb>指向这个内表 "此时字段符号才会有值 "之后需要用这个内表,只需要使用字段符号即可 ASSIGN r_dataob->* TO <f_tb>. "在这个select语句中,p_name为用户输入的取数据的表,而<f_tb>字段符号为根据用户输入的字符串动态生成的内表。 "注意在select语句中可以使用字段符号,但是不能直接把解引用放进来。也就是说,字段符号是很有必要的。 SELECT * FROM (p_name) INTO TABLE <f_tb>. "使用savl快速构建报表简单呈现 DATA r_alv_tb TYPE REF TO cl_salv_table. DATA r_alv_funclist TYPE REF TO cl_salv_functions_list. TRY. CALL METHOD cl_salv_table=>factory IMPORTING r_salv_table = r_alv_tb CHANGING t_table = <f_tb>. CATCH cx_salv_msg . ENDTRY. r_alv_funclist = r_alv_tb->get_functions( ). r_alv_funclist->set_all( ). r_alv_tb->display( ).
ABAP笔记的更多相关文章
-
ABAP(笔记)
1.excel表格上传 *&---------------------------------------------------------------------* ** 程序名称:ZSD ...
-
ABAP知识点笔记
1,获取光标所在行 READ TABLE TD_ALV_DATA INTO TH_ALV_DATA INDEX RS_SELFIELD-TABINDEX. 2,获取alv可编辑单元格内容 DATA: ...
-
SAP CRM 项目笔记(一) SOW(工作说明书)讨论
前记 前两天在搜索资料时,看到一个网友在博客里面记录下了自己参于项目中的所有笔记.我觉得这个想法很不错,所以决定开笔记录下SAP CRM整个项目的实施和开发过程. 之前参加集团的SAP ERP(FI/ ...
-
Jerry的ABAP原创技术文章合集
我之前发过三篇和ABAP相关的文章: 1. Jerry的ABAP, Java和JavaScript乱炖 这篇文章包含我多年来在SAP成都研究院使用ABAP, Java和JavaScript工作过程中的 ...
-
使用ABAP批量下载有道云笔记中的图片
Jerry喜欢用有道云笔记这款软件做自己的知识管理和知识体系的构建. 当您看到一篇好的有道云笔记分享时,可能会想将其精美的图片下载到本地.作为程序猿,我们不会去手动一张张下载.写个程序帮我们自动下载吧 ...
-
N个小时学SAP ABAP
接触SAP已将近3年了,期间ABAP资料也看了不少,都是东看一点.西看一点的,也没做个笔记之类的,很明显效果不是很好.今天突然间领悟到了一点:不能再这样漫无目的的学习了,应该一本书一本书的看,否则就太 ...
-
git-简单流程(学习笔记)
这是阅读廖雪峰的官方网站的笔记,用于自己以后回看 1.进入项目文件夹 初始化一个Git仓库,使用git init命令. 添加文件到Git仓库,分两步: 第一步,使用命令git add <file ...
-
js学习笔记:webpack基础入门(一)
之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...
-
SQL Server技术内幕笔记合集
SQL Server技术内幕笔记合集 发这一篇文章主要是方便大家找到我的笔记入口,方便大家o(∩_∩)o Microsoft SQL Server 6.5 技术内幕 笔记http://www.cnbl ...
随机推荐
-
【19】设计class犹如设计type
设计class 的时候,需要好好考虑下面的问题: 1.新type的对象应该如何被创建和销毁? 2.对象的初始化和对象的赋值该有什么样的差别? 3.新type的对象如果pass by value,意味着 ...
-
Oracle SQL ANY和ALL语句
Oracle的嵌套子查询可以使用Some,Any和All对子查询中返回的多行结果进行处理. Some表示满足其中一个的含义,是用or串起来的比较从句. 例如:SELECT * FROM emp WHE ...
-
spring.resources
@EnableWebMvcNormally you would add @EnableWebMvc for a Spring MVC app, but Spring Boot adds it auto ...
-
OPC协议解析-OPC UA OPC统一架构
1 什么是OPC UA 为了应对标准化和跨平台的趋势,为了更好的推广OPC,OPC基金会近些年在之前OPC成功应用的基础上推出了一个新的OPC标准-OPC UA.OPC UA接口协议包含了之前的 ...
-
poj 1611 求0号结点所在集合的元素个数
求0号结点所在集合的元素个数 Sample Input 100 42 1 25 10 13 11 12 142 0 12 99 2200 21 55 1 2 3 4 51 00 0Sample Out ...
-
EF Core数据迁移操作
摘要 在开发中,使用EF code first方式开发,那么如果涉及到数据表的变更,该如何做呢?当然如果是新项目,删除数据库,然后重新生成就行了,那么如果是线上的项目,数据库中已经有数据了,那么删除数 ...
-
hdu 5211 Mutiple 数学
Mutiple Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=5211 ...
-
如何自定义FileZilla编辑文件的默认打开方式
看一下设置: 原来是人家默默认不给我们提示 改一下: 还是不行,还是跳到网页去了 还是不行 这样就好了...
-
POJ 2664 Prerequisites?(简单题)
[题意简述]:k:已经选择的科目数:m:选择的科目类别:c:能够选择的科目数.r:要求最少选择的科目数量 在输入的k和m以下的一行是选择的科目号. 比如: 3 2 //3是他选择了3科.2表示选择了两 ...
-
JavaScript 事件兼容性写法
1.以下是JavaScript事件兼容性写法,使用者可以随意使用,兼容所有浏览器.包括IE6(亲测) <!DOCTYPE html> <html> <head> & ...