0

当用户单击 ALV 网格(reuse_alv_grid_display)中的热点时,我试图调用自定义屏幕。我希望用户选择的行中的特定值显示在自定义屏幕的字段中。

form handle_user_command using r_ucomm     like sy-ucomm
                               rs_selfield type slis_selfield.

  CASE r_ucomm.
    when '&IC1'.

      if rs_selfield-fieldname = 'SEL'.

        READ TABLE it_zcnclog into wa_zcnclog INDEX rs_selfield-tabindex.
        SET PARAMETER ID 'MAT' FIELD wa_zcnclog-material.
        Call SCREEN '1001'.

如果我用标准 SAP 事务替换自定义事务,则值会显示在标准事务的屏幕上,否则不会。我检查了 SET/GET 参数复选框,还检查了 TPRA 表中的条目,但没有运气。

谢谢您的帮助。

4

2 回答 2

2

您调用的自定义事务需要在参数声明中设置 MEMORY ID 值。

PARAMETER: matnr type mara-matnr MEMORY ID MAT.

如果您调用的事务是经典的 dynpro 事务,则需要编辑字段的元素属性并添加 MEMORY ID 和 SET & GET 参数框。

屏幕元素属性

于 2018-12-14T16:11:40.977 回答
0

只有在以下情况下,屏幕字段才能采用 `SET PARAMETER ID 'ZZZ' FIELD 'VALUE' 设置的值:

  • 字段的类型为“输入/输出”(在设计时和运行时)
  • 字段属性“参数 ID”是相同的 SAP 内存 ID (ZZZ)
  • 字段属性“GET 参数”被选中
  • 在程序中,屏幕字段名对应的全局变量为initial(至少在Process Before Output阶段结束时)

摘自ABAP 文档:“定义输入字段时,可以通过从数据库表 TPARA 输入 SPA/GPA 参数的名称作为属性 PARAMETER ID 将 dynpro 字段与 SPA/GPA 参数相关联。如果相应的参数 GET PARAMETER 是设置并且没有为输入字段分配其他值,输入字段在发送屏幕时填充SPA/GPA参数的值。"

演示,在第一个屏幕输入的值出现在第二个屏幕,反之亦然:

REPORT z.

TABLES sscrfields.

" Selection screen 1000 (implicit first one)
SELECTION-SCREEN COMMENT /1(40) text1000.
PARAMETERS p_start TYPE c LENGTH 10 LOWER CASE MEMORY ID zzzz.

" Selection screen 1001
SELECTION-SCREEN BEGIN OF SCREEN 1001.
SELECTION-SCREEN COMMENT /1(40) text1001.
PARAMETERS p_b1ab1a TYPE c LENGTH 10.
PARAMETERS p_end TYPE c LENGTH 10 LOWER CASE MEMORY ID zzzz.
PARAMETERS p_b2ab2a TYPE c LENGTH 10.
SELECTION-SCREEN END OF SCREEN 1001.

INITIALIZATION.
  text1000 = 'Press Enter to go to next screen'(000).
  text1001 = 'Press Enter to go to previous screen'(001).

AT SELECTION-SCREEN.
  IF sscrfields-ucomm IS INITIAL.
    CASE sy-dynnr.
      WHEN 1000.
        CLEAR p_end. " <== very important !
        CALL SELECTION-SCREEN 1001.
      WHEN 1001.
        CLEAR p_start. " <== very important !
        LEAVE TO SCREEN 0. " go to previous screen (don't use CALL 
          " SELECTION-SCREEN to avoid a stack of more than 50 dynpros)
    ENDCASE.
  ENDIF.
于 2018-12-15T06:34:23.243 回答