2

我制作了一个程序,它使用 . 输出设备编号列表WRITE。交易IE03让用户输入设备编号,执行,然后显示关于该设备的一大堆信息。

我想做的是能够双击我的程序输出的数字之一,然后显示IE03将提供的数据。

如何将我的自定义程序与标准显示功能集成?

4

2 回答 2

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关键字文档指定的功能模块。

于 2012-11-14T19:02:31.873 回答
1

使用给出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 并跳过第一个屏幕。
  万一。
于 2012-11-14T19:33:57.863 回答