我制作了一个程序,它使用 . 输出设备编号列表WRITE
。交易IE03
让用户输入设备编号,执行,然后显示关于该设备的一大堆信息。
我想做的是能够双击我的程序输出的数字之一,然后显示IE03
将提供的数据。
如何将我的自定义程序与标准显示功能集成?
首先,不要WRITE
用来创建列表——这是石器时代的技术。将数据存储在基于字典结构的内部表中,然后使用 SALV 库创建列表。查看示例程序SALV_DEMO_TABLE_EVENTS
,了解如何显示列表并对双击做出反应。请注意,您可以丢弃大部分演示程序,因为它显示了很多不同的功能。
然后,您不会将任何内容“转发”到交易中。您可以使用 ABAP 语句调用事务CALL TRANSACTION
(这应该很明显),您甚至可以使用 SPA/GPA 参数和附加的... AND SKIP FIRST SCREEN
. 请注意,这仅适用于某些类型的交易,并且只有在它们被编程为这样做时才有效。为此,您需要使用将设备编号存储在全局变量中
SET PARAMETER ID 'EQN' FIELD l_my_equipment_number.
然后调用事务
CALL TRANSACTION 'IE03' AND SKIP FIRST SCREEN.
请注意,此语句不执行默认授权检查 - 如果您需要这样做,请使用AUTHORITY_CHECK_TCODE
关键字文档指定的功能模块。
使用给出vwegert的建议,或者:
报告 ztest。 常数: gc_equpment_view_tcode TYPE sytcode VALUE 'IE03'。 数据: gt_eqkt eqkt 类型表, gs_eqkt 类型 eqkt。 开始选择。 从 eqkt 中选择 * 到表 gt_eqkt 的相应字段中 加入 equi ON ( equi~equnr EQ eqkt~equnr ) 最多 10 行 WHERE eqkt~spras EQ sy-langu。 选择结束。 在 gt_eqkt 处循环进入 gs_eqkt。 写:/gs_eqkt-equnr,gs_eqkt-eqktx。 隐藏:gs_eqkt-equnr。 ENDLOOP。 在线选择。 CALL FUNCTION 'AUTHORITY_CHECK_TCODE' " 检查 S_TCODE auth.object 出口 tcode = gc_equpment_view_tcode 例外情况 好的 = 1 not_ok = 2 其他 = 3。 IF sy-subrc EQ 1。 设置参数 ID 'EQN' 字段 gs_eqkt-equnr。 "检查 I_TCODE auth. 对象(参见 IE03 定义) 调用事务 gc_equpment_view_tcode 并跳过第一个屏幕。 万一。