我制作了一个程序,使用WRITE
输出设备编号列表。事务IE03
允许用户输入设备号,执行,然后在该设备上显示一大堆信息。我想要做的是能够双击我的程序输出的其中一个数字,然后显示IE03
将提供的数据。如何将自定义程序与标准显示功能集成?
答案 0 :(得分:3)
首先,不要使用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
。
答案 1 :(得分:1)
使用提供 vwegert 的建议,或:
REPORT ztest. CONSTANTS: gc_equpment_view_tcode TYPE sytcode VALUE 'IE03'. DATA: gt_eqkt TYPE TABLE OF eqkt, gs_eqkt TYPE eqkt. START-OF-SELECTION. SELECT * INTO CORRESPONDING FIELDS OF TABLE gt_eqkt FROM eqkt JOIN equi ON ( equi~equnr EQ eqkt~equnr ) UP TO 10 ROWS WHERE eqkt~spras EQ sy-langu. END-OF-SELECTION. LOOP AT gt_eqkt INTO gs_eqkt. WRITE: / gs_eqkt-equnr, gs_eqkt-eqktx. HIDE: gs_eqkt-equnr. ENDLOOP. AT LINE-SELECTION. CALL FUNCTION 'AUTHORITY_CHECK_TCODE' " check S_TCODE auth. object EXPORTING tcode = gc_equpment_view_tcode EXCEPTIONS ok = 1 not_ok = 2 OTHERS = 3. IF sy-subrc EQ 1. SET PARAMETER ID 'EQN' FIELD gs_eqkt-equnr. "check I_TCODE auth. object (see IE03 definition) CALL TRANSACTION gc_equpment_view_tcode AND SKIP FIRST SCREEN. ENDIF.