关于ALV双击 调用事务的一个例子
来源:互联网 发布:淘宝贴片图 编辑:程序博客网 时间:2024/05/16 10:39
源地址:http://www.itpub.net/thread-1483525-1-9.html
有经验的ABAPER都知道下面一个标准程序:
我以前开发一个财务报表,用ALV的形式表现。其中每个行项目的“公司代码、年度、凭证号”是唯一的,这样可以实现点击行项目查看凭证。我使用了这个:
CASE rf_ucomm.
WHEN '&IC1'.
READ TABLE IT_OUTPUT INDEX rs_selfield-tabindex ASSIGNING <FS_OUTPUT>.
IF SY-SUBRC = 0.
SET PARAMETER ID: 'BLN' FIELD <FS_OUTPUT>-BELNR.
SET PARAMETER ID: 'BUK' FIELD <FS_OUTPUT>-BUKRS.
SET PARAMETER ID: 'GJR' FIELD <FS_OUTPUT>-GJAHR.
CALL TRANSACTION 'zfxx03' AND SKIP FIRST SCREEN .
ENDIF.
ENDCASE.
"USER_CALLBACK
以上是调用了事务zfxx03。对参数的传递都是单值,现在我想传递一批参数,也就是bukrs(公司代码)的选项是多选的,是这样定义的,见下:
“SELECT-OPTIONS s_bukrs FOR t001-bukrs OBLIGATORY”
我将公司代码选项的内表传递到zfirxxxx,这样使用ID就无效了(GET PARAMETER ID 'BUK' field P_BUKRS 无效),我怎么传递为好呢,使用什么语句呢?尤其是一个变量下有多个参数的。
要开发综合查询程序,一定会多次调用ALV报表,报表之间的参数传递就显得异常重要。
目前公司自行开发的多次(层)调用报表(事务)的程序不多。调用的层次越多,使用的逻辑越复杂,参数值传递就越繁琐。这样的程序即使开发出来也需要长时间的测试才能保证数据的准确,往往忽略了一个微小的逻辑环节就导致整张报表数据的表现错误。
在准备开发公司的综合报表之前,列举2个非常重要的例子,它就是程序间的调用内表并通过设置ID传输。
举例1.(标准)
主程序:
REPORT ZTEST_LHA07.
DATA : BEGIN OF W_DATA,
FID1 TYPE STRING,
NUM1 TYPE I ,
NUM2 TYPE I ,
END OF W_DATA.
DATA : T_OUT LIKE W_DATA OCCURS 0 WITH HEADER LINE .
DO 10 TIMES .
IF SY-INDEX < 4 .
T_OUT-FID1 = 'A' .
T_OUT-NUM1 = SY-INDEX .
T_OUT-NUM2 = SY-INDEX + 1 .
ELSEIF SY-INDEX < 7 .
T_OUT-FID1 = 'B' .
T_OUT-NUM1 = SY-INDEX + 1 .
T_OUT-NUM2 = SY-INDEX + 2 .
ELSE .
T_OUT-FID1 = 'C' .
T_OUT-NUM1 = SY-INDEX .
T_OUT-NUM2 = SY-INDEX - 1 .
ENDIF .
APPEND T_OUT.
ENDDO .
EXPORT T_OUT TO MEMORY ID 'T_OUT' .
SUBMIT ZTEST_LHA08 AND RETURN .
被调用的程序:
REPORT ZTEST_LHA08.
data : begin of w_data, "这里定义一个跟调用程序一样的内表结构
fid1 type string,
num1 type i ,
num2 type i ,
end of w_data.
data : t_out like w_data occurs 0 with header line .
import t_out from memory id 'T_OUT' .
FREE MEMORY ID 'T_OUT' .
WRITE : '从调用程序取到的数据如下:' .
LOOP AT T_OUT.
write : / ' ' ,t_out-fid1, t_out-num1, t_out-num2.
ENDLOOP .
举例2.(结合我公司实际)
主程序:
REPORT ZTEST_LHA07.
tables: t001.
SELECT-OPTIONS s_bukrs FOR t001-bukrs memory ID T_OUT . "公司代码
EXPORT s_bukrs TO MEMORY ID 'T_OUT' .
SUBMIT ZTEST_LHA08 AND RETURN .
被调用的程序:
REPORT ZTEST_LHA08.
tables: t001.
SELECT-OPTIONS s_bukrs FOR t001-bukrs . "公司代码
import s_bukrs from memory id 'T_OUT' .
FREE MEMORY ID 'T_OUT' .
loop at s_bukrs.
write:/ s_bukrs-sign,s_bukrs-option,s_bukrs-low,s_bukrs-high.
endloop.
- 关于ALV双击 调用事务的一个例子
- abap 双击alv调用事务码
- 双击ALV调用事务代码并传入参数
- ALV双击调用屏幕
- 一个简单ALV的例子
- 一个简单ALV的例子
- 一个极好的ALV例子
- SAP ABAP/4学习---ALV的简单例子2-单击某行调用事务码
- SAP ABAP/4学习---ALV的简单例子3-单击某行调用事务码
- SAP ABAP/4学习---ALV的简单例子2-单击某行调用事务码
- ALV的双击使用
- 以一个极好alv的例子来说说alv开发
- ALV一个百度文库的例子
- 一个事务的例子
- 关于scanf()调用的一个例子
- ALV中双击调用Transaction VA22
- 有页头页脚的ALV例子
- 有页头页脚的ALV例子
- 三相电
- window7 Tomcat7+Solr 4.x(4.7.2)环境搭建
- [分布式文件系统] Sun's Network File System
- 给自己的写博客的理由
- 两种最基本的MOS管——N沟道与P沟道
- 关于ALV双击 调用事务的一个例子
- MFC中播放声音
- ibatis插入数据乱码问题
- Linux下Tomcat重新启动
- [LeetCode] Palindrome Partition [11]
- 计算机网络年会:手机安全状况面临巨大威胁
- opencv1.0 在 ubuntu 下的安装遇到的问题
- 反汇编学习之浮点数
- 什么是脏读,不可重复读,幻读