input help第一课:input help in dialog modules

如有转载请注明出处:http://blog.csdn.net/donkey2004112103/archive/2009/03/26/4028006.aspx

平常按选择屏幕上的F4键跳出来的文档如何制作了?sap里有一个例子调用内表中的字段的文档,有三个函数可以介绍下,例子程序的名字是:demo_dynpro_f4_help_module

重点介绍三个函数。

1.F4IF_FIELD_VALUE_REQUEST

其中的众多参数我就不详细解释了,慢慢测试了。就用demo的例子来讲解,屏幕参数有两个carrid和connection,我们要用内表spfli里的两个字段的input help给他两用,字段carrier和connid。代码部分简化如下:

CALL FUNCTION 'F4IF_FIELD_VALUE_REQUEST'
EXPORTING
            tabname     = 'SPFLI'                   ‘要用的表的名字
            fieldname   = 'MANDT'                  ‘表字段的名字
            dynpprog    = sy-repid                  ‘程序名
            dynpnr      = sy-dynnr                   ‘屏幕标号
            dynprofield = 'CARRIER'.               ‘选择屏幕上字段的名字

写了这段代码了之后在选择屏幕上按f4就会出现如下场景:

image

2. DYNP_VALUES_READ

CALL FUNCTION 'DYNP_VALUES_READ'
EXPORTING
            dyname             = sy-repid
            dynumb             = sy-dynnr
            translate_to_upper = 'X'
TABLES
            dynpfields         = dynpro_values.

这段代码很明显是从屏幕上读取用户输入字段,前两字段不用解释了。第三个字段translate_to_upper也好解释,将用户输入转换为大写。例如我在屏幕上输入aa那么读取的值是AA。dynpfields也很容易,dynpro_values的一个内表定义如下:

dynpro_values TYPE TABLE OF dynpread

只要在里面有字段的名字,那么会自动读到字段的值。其实想想要独到一个字段的值参数就这些,要我也会这么设计。无非是屏幕号,程序名,字段名,但是字段名要是内表结构,因为可能读取多个字段的值。

3.F4IF_INT_TABLE_VALUE_REQUEST

CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
      EXPORTING
            retfield    = 'CONNID'
            dynpprog    = progname
            dynpnr      = dynnum
            dynprofield = 'CONNECTION'
            value_org   = 'S'
            WINDOW_TITLE = 'just a test'
      TABLES
            value_tab   = values_tab.

这个函数和上面的函数有所区别,它的功能是将自己的内表作为参数传进函数作为input help。参数和签名的都一样,有亮点要注意,一是value_org根据我的测试只能是’S’,c的话就失败!原因还不知道。还有一个就是values_tab内表字段定义的书序和屏幕上字段显示的顺序一样。什么意思了,看看内表的定义:

TYPES: BEGIN OF values,
         carrid TYPE spfli-carrid,
         CITYFROM type spfli-CITYFROM,
         connid TYPE spfli-connid,
END OF values.

再看看input help上字段出现的顺序:

image

和内表定义是一致的,而且选中一行的话屏幕上会出现的数值是最后一个字段即connid

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值