REPORT传值到SMARTFORMS的四种方式
来源:互联网 发布:hp网络打印机安装 编辑:程序博客网 时间:2024/05/22 17:18
- 方法1.
最通常的用法是通过SE11中建立STRUCTURE XXX(表则没用),在REPORT中申明此结构的数据类型,在SMARTFORMS中的FORM接口申明同样的结构后就可以传值了(itabTYPE XXX)
- 方法2
第二种是不用建立STRUCTURE,省了一个建表的麻烦,不过还是挺麻烦的!
1).程序中申明一个TYPE
2).SMARTFORMS中在全局定义中要在三处地方进行相应的操作
- 全局定义的类型中进行和REPORT中相同的类型申明
程序中:
DATA:BEGIN OF it_head,
fkdat TYPE vbrk-fkdat,
vbeln TYPE vbrk-vbeln,
END OF it_head.
SMARTFORMS全局定义的类型中:
TYPES:BEGIN OF wy_head,
fkdat TYPE vbrk-fkdat,
vbeln TYPE vbrk-vbeln,
END OF wy_head.
这两个结构是要一样的,因为在传值时会把相同字段的进行传递。
- 全局定义的全局数据中申明变量,申明的类型是在全局定义中定义的类型,若是申明一个内表,把TYPE改成TYPE TABLE OF 就OK了。
WA_HEAD TYPE WY_HEAD
- 全局定义的初始化中进行数据的传递操作,也就是把REPORT中的值传到SMARTFORMS中
传递STRUCTURE
DATA: field(70) TYPE c.
FIELD-SYMBOLS: <dbcnt> TYPE ANY TABLE ,
<wa> TYPE ANY.
field = '(ZSDST0009)IT_HEAD'. "要加程序名,不然程序无法知道该表从哪里取得
ASSIGN (field) TO <wa>.
IF sy-subrc = 0.
wa_head = <wa>.
ENDIF.
IF <wa> IS ASSIGNED.
UNASSIGN <wa>.
ENDIF.
这是值的初始化也就是值传递的过程。
传递内表
最后在 全局定义->初始化 这个TAB页下写下面的代码:
DATA: field(50).
FIELD-SYMBOLS: <f> TYPE ANY.
field = '(zxxxxx)output[]'. "zxxxxx为程序名,output为内表名
assign (field) to <f>.
gt_table = <f>.
这样,SMARTFORM就取得了ZXXXXX这个程序,OUTPUT这个内表的值,并将之赋给了GT_TABLE.
特别注意 程序中的表定义和smartform类型里表定义必须一致,否则 GT_TABLE[] =<f>.错误。
- 方法3.
若是传递一两个很单一的变量,比较简单的做法是在REPORT中 EXPORT这个变量,在SMARTFORMS中IMPORT这个变量,两句话搞定.
- 方法4.
还有一种方法,这种写法个人也是第一次看到,暂时还不知道优缺点点
程序中这样写:
TYPES buffer_id(80) TYPE c.
DATA wa_indx TYPE indx.
DATA: l_detail_name(80).
*----------------------------------------------------------------------------------*
FORM save_to_buffer USING t TYPE table typeid TYPE c .
wa_indx-aedat = sy-datum.
wa_indx-usera = sy-uname.
wa_indx-pgmid = sy-repid.
* PERFORM get_unique_id USING buff_id CHANGING buff_id.
EXPORT t TO DATABASE indx(hk) ID typeid FROM wa_indx.
ENDFORM.
*----------------------------------------------------------------------------------*
FORM clear_buffer USING buffid TYPE c.
DELETE FROM DATABASE indx(hk) ID buffid.
ENDFORM. "Clear_Buffer
*----------------------------------------------------------------------------------*
FORM restor_buffer USING typeid TYPE c CHANGING t TYPE table.
IMPORT t FROM DATABASE indx(hk) ID typeid.
ENDFORM. "Restor_buffer\
*----------------------------------------------------------------------------------*
CONCATENATE sy-repid 'DETAILS' sy-uname sy-uzeit INTO l_detail_name. ”id号,用来区分DATABASE,唯一化
savebuffer it_detail[] l_detail_name.
CALL FUNCTION lf_fm_name
EXPORTING
.
.
.
l_detail_name = l_detail_name.
clearbuffer l_detail_name.
SMARTFORMS中 TYPES与方法2相同要定义与程序中内表相同;但在INITIALIZATION中不同
INITIALIZATION中执行RESTORE_BUFFER。
FROM ROUTINES中要定义RESTORE_BUFFER
- REPORT传值到SMARTFORMS的四种方式
- REPORT传值到SMARTFORMS的四种方式
- REPORT传值到SMARTFORMS的四种方式
- REPORT传值到SMARTFORMS的三种方式
- REPORT传值到SMARTFORMS的三种方式
- [abap] smartforms句柄与以簇的方式存储数据
- smartforms句柄与以簇的方式存储数据。
- Crystal Report去除登陆框的三种方式
- Smartforms的使用示例
- Smartforms常见的问题
- SmartForms
- Smartforms
- nocache的四种方式
- 栈的四种方式
- 缓存的四种方式
- 四种引流的方式
- Smartforms 中更改默认编辑器的两种方法
- Smartforms 中更改默认编辑器的两种方法
- linux 中 利用命令行全局搜索变量
- 好的程序员做不出好的软件设计
- 详细介绍Makefile的用法
- 扩展commons dbutils的JavaBean转换方式
- Quotes about programming languages
- REPORT传值到SMARTFORMS的四种方式
- 设置广告快停留在浏览器的右下方
- 给明年依然年轻的我们
- SqlServer自定义函数学习
- shell 脚本包含另一个 shell 脚本
- 使用联合(UNION)来代替手动创建的临时表
- 数据库设计5步骤
- 三级联动
- Windows下Debug模式的检测和OutputDebugString