ABAP可以在报表中调用报表吗?
1个回答
展开全部
我刚好正在做这样的程序。说实在的,ABAP帮助文档里的例子并不是很好,我是看了很久都没弄 明白,现在总算摸索出来了。调用REPORT并取出需要的数据,流程大致如下: ***定义向被调用报表的选择屏幕传递参数的内表SELTAB DATA: REPID LIKE SY-REPID, SELTAB LIKE RSPARAMS OCCURS 5 WITH HEADER LINE. DATA LIN TYPE I. ***定义结束 ***定义临时存放被调用报表输出结果的内表 DATA BEGIN OF ITAB_LIST OCCURS 0. INCLUDE STRUCTURE ABAPLIST. DATA END OF ITAB_LIST. DATA: BEGIN OF VLIST OCCURS 5, LINE(300), END OF VLIST. ***定义结束 data zz type C. "存放取数结果 REPID = SY-REPID. "将当前REPORT的名字赋给REPID **下面将当前report的选择屏幕的内容传递给表SELTAB CALL FUNCTION 'RS_REFRESH_FROM_SELECTOPTIONS' EXPORTING CURR_REPORT = REPID TABLES SELECTION_TABLE = SELTAB EXCEPTIONS NOT_FOUND = 1 NO_REPORT = 2 OTHERS = 3. **后续可以用WRITE语句对内表SELTAB的内容进行修改,不需要的部分可以去掉,以符合被调用 REPORT的屏幕选择的需要 **下面调用XXX,结果放在内存中 SUBMIT XXX LIST TO MEMORY AND RETURN WITH SELECTION-TABLE SELTAB. ***从内存中读取XXX的执行结果,放入VLIST中进行后续处理 FORM READ_DATA_FROM_MEMORY. CALL FUNCTION 'LIST_FROM_MEMORY' TABLES LISTOBJECT = ITAB_LIST EXCEPTIONS NOT_FOUND = 1. CALL FUNCTION 'LIST_TO_ASCI' EXPORTING LIST_INDEX = -1 TABLES LISTASCI = VLIST LISTOBJECT = ITAB_LIST EXCEPTIONS EMPTY_LIST = 1 LIST_INDEX_INVALID = 2 OTHERS = 3. ENDFORM. "Read_Data_From_Memory 这时候,XXX的执行结果已放在内表VLIST中了,VLIST是1列*N行, READ TABLE VLIST INDEX x "n为你要取的结果位于VLIST的行数 zz = VLIST-LINE+y(z). "y为你要取的结果从该行第几个字符开始,z为取数的长度 **重要说明:x,y,z的值要经过多次调试才能确定。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询