1.最通常的用法是通过SE11中建立STRUCTURE,在REPORT中申明此结构的数据类型,在SMARTFORMS中的FORM接口申明同样的结构后就可以传值了
2.第二种是不用建立STRUCTURE,省了一个建表的麻烦,不过还是挺麻烦的!
1).程序中申明一个TYPE
2).SMARTFORMS中在全局定义中要在三处地方进行相应的操作
***全局定义的类型中进行和REPORT中相同的类型申明
程序中:
DATA:begin OF it_head,
FKDAT TYPE VBRK-FKDAT,
VBELN TYPE VBRK-VBELN,
we_kunnr type vbpa-kunnr,
we_name1 type kna1-name1,
we_name2 type kna1-name2,
we_STR_SUPPL1 type ADRC-STR_SUPPL1, "街道2
WE_STR_SUPPL2 TYPE ADRC-STR_SUPPL2, "街道3
we_STREET type ADRC-STREET, "街道
we_HOUSE_NUM1 type ADRC-HOUSE_NUM1, "门牌号
we_POST_CODE1 TYPE ADRC-POST_CODE1, "邮政编码
we_CITY1 type ADRC-CITY1, "城市
we_COUNTRY type ADRC-COUNTRY,"国家
we_REGION type ADRC-REGION, "地区
END OF It_head.
SMARTFORMS全局定义的类型中:
TYPES:begin OF WY_head,
FKDAT TYPE VBRK-FKDAT,
VBELN TYPE VBRK-VBELN,
we_kunnr type vbpa-kunnr,
we_name1 type kna1-name1,
we_name2 type kna1-name2,
we_STR_SUPPL1 type ADRC-STR_SUPPL1, "街道2
WE_STR_SUPPL2 TYPE ADRC-STR_SUPPL2, "街道3
we_STREET type ADRC-STREET, "街道
we_HOUSE_NUM1 type ADRC-HOUSE_NUM1, "门牌号
we_POST_CODE1 TYPE ADRC-POST_CODE1, "邮政编码
we_CITY1 type ADRC-CITY1, "城市
we_COUNTRY type ADRC-COUNTRY,"国家
we_REGION type ADRC-REGION, "地区
END OF WY_head.
这两个结构是要一样的,因为在传值时会把相同字段的进行传递。
***全局定义的全局数据中申明变量,申明的类型是在全局定义中定义的类型,若是申明一个内表,把TYPE改成TYPE TABLE OF 就OK了。
WA_HEAD TYPE WY_HEAD
***全局定义的初始化中进行数据的传递操作,也就是把REPORT中的值传到SMARTFORMS中
DATA: FIELD(70) type c.
FIELD-SYMBOLS: <dbcnt> type any table ,
<wa> type any.
FIELD = '(ZSDST0009)IT_HEAD'. "要加程序名哦,不然哪里来,在调用SMART中和全局数据啥关系都没有
ASSIGN (field) TO <WA>.
IF SY-SUBRC = 0.
WA_HEAD = <WA>.
endif.
IF <WA> is ASSIGNED.
UNASSIGN <WA>.
ENDIF.
这是值的初始化也就是值传递的过程。
3.若是传递一两个很单一的变量,比较简单的做法是在REPORT中 EXPORT这个变量,在SMARTFORMS中IMPORT这个变量,两句话搞定.
说来说去,这个SMARTFORMS还是挺难用的,麻烦!不在麻烦中解决麻烦,就在麻烦中纠结吧!