用户在SAP ABAP中输入后,如何从ALV显示报告的弹出窗口中检索数据?

问题描述 投票:0回答:1

我正在开发一个 SAP ABAP 程序,其中有一个带有两个自定义按钮的 ALV 报告。当用户单击其中一个按钮时,会出现一个弹出窗口,其中包含两个字段,用户需要在其中输入数据。

用户单击“确定”提交后,我需要检索输入到这些字段中的数据以进行进一步处理。

以下是该场景的摘要:

  1. 显示 ALV 报告后,我有两个按钮。
  2. 单击任一按钮时,将显示一个弹出窗口(使用“呼叫屏幕”)。
  3. 弹出窗口包含两个字段,用户可以在其中输入数据。

enter image description here

  1. 用户单击“确定”提交后,我需要检索在弹出字段中输入的数据(ls_quantity 和 PRPSS-POSID),但我很难在屏幕外访问这些字段。

这些字段是在弹出屏幕布局(屏幕 100 和屏幕 200)中定义的,但我不知道如何在用户提交弹出窗口后检索用户输入的值。

任何人都可以帮助我了解如何在用户提交后从弹出窗口中的这些输入字段中检索值吗?

popup abap alv sap
1个回答
0
投票

您需要对屏幕字段使用全局变量。例如,您可以在屏幕 PAU 的代码中访问 PRPSS-POSID。

另一方面,您可以使用现有的FM来请求数据。

FORM popup_get_values CHANGING cv_posid    TYPE prpss-posid
                               cv_quantity TYPE prpss-usr04.

  DATA: lt_field TYPE TABLE OF sval,
        ls_field TYPE sval.

  ls_field-tabname = 'PRPSS'.
  ls_field-fieldname = 'POSID'.
  APPEND ls_field TO lt_field.

  CLEAR ls_field.
  ls_field-tabname = 'PRPSS'.
  ls_field-fieldname = 'USR04'.
  APPEND ls_field TO lt_field.

  "Call the popup function module
  CALL FUNCTION 'POPUP_GET_VALUES'
    EXPORTING
      popup_title     = 'Enter POS ID and Quantity'
    TABLES
      fields          = lt_field
    EXCEPTIONS
      error_in_fields = 1
      OTHERS          = 2.

  IF sy-subrc = 0.
    READ TABLE lt_field INTO ls_field WITH KEY fieldname = 'POSID'.
    IF sy-subrc = 0.
      cv_posid = ls_field-value.
    ENDIF.

    READ TABLE lt_field INTO ls_field WITH KEY fieldname = 'QUANTITY'.
    IF sy-subrc = 0.
      cv_quantity = ls_field-value.
    ENDIF.
  ELSE.
    MESSAGE 'Popup canceled' TYPE 'I'.
  ENDIF.

ENDFORM.
© www.soinside.com 2019 - 2024. All rights reserved.