我制作了一个程序,它使用 . 输出设备编号列表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 并跳过第一个屏幕。
万一。