ABAP双击将输出转发到事务

时间:2012-11-14 16:14:49

标签: sap abap

我制作了一个程序,使用WRITE输出设备编号列表。事务IE03允许用户输入设备号,执行,然后在该设备上显示一大堆信息。我想要做的是能够双击我的程序输出的其中一个数字,然后显示IE03将提供的数据。如何将自定义程序与标准显示功能集成?

2 个答案:

答案 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.