不需要建结构在SMARTFORM中传值

原贴地址:http://scnblogs.techweb.com.cn/songxianl/archives/11.html

以前写 SMARTFORMS, 传内表数据的时候总要 先到 SE11 建立一个结构 , 很是麻烦 .

 

下面主要描述一下 SMARTFORM 是怎么从调用它的程序取相应内表的值 .

首先在 SMARTFORM 全局定义 -> 类型 这个 TAB 页下定义个 TYPES, 结构跟要取的内表的结构一致 .

:types:BEGIN OF MY_TYPE,
          lgnum type ltak-lgnum,
          TANUM TYPE LTAK-TANUM,
          LGTOR TYPE LTAK-LGTOR,
          BNAME TYPE LTAK-BNAME,

          …

        end of my_type.

 

然后在 全局 定义 -> 全局数据 这 个 TAB 页下定义一个内表和工作区 ,:

GT_TABLE TYPE TABLE OF   MY_TYPE
WA       TYPE           MY_TYPE

内表的 TYPE ASSIGNMENT 这一列 , 手动输入 TYPE TABLE OF  , 这个很关 键 .

 

最后在 全局 定义 -> 初始化 这 个 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.

ZXXXXX 程 序那边不用传参数了 .

  DATA:SMARTFORM(30) TYPE C,
       FM_NAME  TYPE   RS38L_FNAM.
 

  SMARTFORM = ‘ZXXXXX’. 
  CALL FUNCTION ‘SSF_FUNCTION_MODULE_NAME’
    EXPORTING
      FORMNAME           = SMARTFORM
    IMPORTING
      FM_NAME            = FM_NAME
    EXCEPTIONS
      NO_FORM            = 1
      NO_FUNCTION_MODULE = 2
      OTHERS             = 3.

  WAIT UP TO 1 SECONDS.
  CALL FUNCTION FM_NAME
    EXCEPTIONS
      FORMATTING_ERROR = 1
      INTERNAL_ERROR   = 2
      SEND_ERROR       = 3
      USER_CANCELED    = 4
      OTHERS           = 5.

 

 

example:

1.

 

2.

 

3.


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值