Abap 带有动态匹配代码的选择屏幕参数

Abap 带有动态匹配代码的选择屏幕参数,abap,Abap,我有一系列的输入参数,其中有一个匹配代码,我需要这个字段(匹配代码)将依赖于一个文本参数。例如,类似这样的情况: SELECTION-SCREEN BEGIN OF BLOCK block02 WITH FRAME TITLE text-002. PARAMETERS: p_mona TYPE ZTIPOSOL GROUP rad1 MATCHCODE OBJECT ZFIMC002, p_fcomp TYPE SY-DATUM MODIF ID A OBLIGATO

我有一系列的输入参数,其中有一个匹配代码,我需要这个字段(匹配代码)将依赖于一个文本参数。例如,类似这样的情况:

SELECTION-SCREEN BEGIN OF BLOCK block02 WITH FRAME TITLE text-002.
  PARAMETERS:
    p_mona   TYPE ZTIPOSOL GROUP rad1 MATCHCODE OBJECT ZFIMC002, 
    p_fcomp  TYPE SY-DATUM MODIF ID A OBLIGATORY.
SELECTION-SCREEN END OF BLOCK block02
ABAP Development

不,你不能。但是,您可以在VALUE-REQUEST事件的选择屏幕上动态填充搜索帮助值:

DATA: LT_VBAK TYPE STANDARD TABLE OF VBAK.

PARAMETER P_VBELN TYPE VBELN.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_VBELN.

  CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
      EXPORTING
       RETFIELD       = 'VBELN'
       DYNPPROG       = SY-REPID
       DYNPNR         = SY-DYNNR
       DYNPROFIELD    = 'P_VBELN'
       VALUE_ORG      = 'S'
      TABLES
       VALUE_TAB      = LT_VBAK
      EXCEPTIONS
       PARAMETER_ERROR        = 1
       NO_VALUES_FOUND        = 2
       OTHERS                 = 3.

  IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.
数据:LT_VBAK类型VBAK的标准表。
参数P_VBELN类型VBELN。
在P_VBELN的值请求的选择屏幕上。
调用函数“F4IF\u INT\u TABLE\u VALUE\u REQUEST”
出口
RETFIELD='VBELN'
DYNPPROG=SY-REPID
DYNPNR=SY-DYNNR
dynprofeld='P_VBELN'
价值组织='S'
桌子
值选项卡=LT\u VBAK
例外情况
参数_错误=1
未找到\u值\u=2
其他=3。
如果SY-SUBRC为0。
消息ID SY-MSGID类型SY-MSGTY编号SY-MSGNO
使用SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4。
恩迪夫。
其中,
LT_VBAK
是一个需要填充值的内部表。 如果您的值依赖于另一个选择屏幕参数,请使用
DYNP\u values\u READ
FM从屏幕读取它们


另一种方法不是动态填充值,而是在DDIC中创建单个搜索帮助,该帮助将根据某些条件控制SHELP行为。

不,不能。但是,您可以在VALUE-REQUEST事件的选择屏幕上动态填充搜索帮助值:

DATA: LT_VBAK TYPE STANDARD TABLE OF VBAK.

PARAMETER P_VBELN TYPE VBELN.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_VBELN.

  CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
      EXPORTING
       RETFIELD       = 'VBELN'
       DYNPPROG       = SY-REPID
       DYNPNR         = SY-DYNNR
       DYNPROFIELD    = 'P_VBELN'
       VALUE_ORG      = 'S'
      TABLES
       VALUE_TAB      = LT_VBAK
      EXCEPTIONS
       PARAMETER_ERROR        = 1
       NO_VALUES_FOUND        = 2
       OTHERS                 = 3.

  IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.
数据:LT_VBAK类型VBAK的标准表。
参数P_VBELN类型VBELN。
在P_VBELN的值请求的选择屏幕上。
调用函数“F4IF\u INT\u TABLE\u VALUE\u REQUEST”
出口
RETFIELD='VBELN'
DYNPPROG=SY-REPID
DYNPNR=SY-DYNNR
dynprofeld='P_VBELN'
价值组织='S'
桌子
值选项卡=LT\u VBAK
例外情况
参数_错误=1
未找到\u值\u=2
其他=3。
如果SY-SUBRC为0。
消息ID SY-MSGID类型SY-MSGTY编号SY-MSGNO
使用SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4。
恩迪夫。
其中,
LT_VBAK
是一个需要填充值的内部表。 如果您的值依赖于另一个选择屏幕参数,请使用
DYNP\u values\u READ
FM从屏幕读取它们


另一种方法不是动态填充值,而是在DDIC中创建一个搜索帮助,该帮助将根据某些条件控制SHELP行为。

当您说“依赖于文本参数”时是什么意思?当您说“依赖于文本参数”时是什么意思?