ABAP 在选择屏幕中获取屏幕字段建立搜索帮助

常用的屏幕逻辑流有PBO和PAI,还有不常用的POV和POH,POV就是

PROCESS ON VALUE-REQUEST.  

 FIELD FIELD_NAME MODULE F4_MODULE.             "当用户按下查询帮助按键时(或按下F4)被触发,事件结束后将继续处理当前屏幕。

我们要根据屏幕字段的输入值来判断加入的搜索帮助的值,所以要先获取屏幕字段

CLEAR: dynpfields, dynpfields[].
  dynpfields-fieldname = 'name'. "填入需要读值的字段名
  APPEND dynpfields.

  CALL FUNCTION 'DYNP_VALUES_READ'
    EXPORTING
      dyname             = sy-repid
      dynumb             = sy-dynnr
      translate_to_upper = 'X'
    TABLES
      dynpfields         = dynpfields
    EXCEPTIONS
     OTHERS             = 9.
  IF sy-subrc = 0.
    READ TABLE dynpfields WITH KEY fieldname = 'name'.
    name = dynpfields-fieldvalue. "备注
  ENDIF.

根据上述函数获取到需要的屏幕字段的值name

 CLEAR: lt_tescdy[].  搜索帮助值的内表
  IF name = '1'.
    SELECT * FROM z10tescdy
    INTO CORRESPONDING FIELDS OF TABLE lt_tescdy
    WHERE zscbh LIKE '%B'
    AND zstat EQ '1'.
  ELSE.
    SELECT * FROM z10tescdy
    INTO CORRESPONDING FIELDS OF TABLE lt_tescdy
    WHERE zscbh LIKE '%N'
    AND zstat EQ '1'.
  ENDIF.

  CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
    EXPORTING
*     DDIC_STRUCTURE         = ' '
      retfield               = 'ZSCBH'
*     PVALKEY                = ' '
     DYNPPROG               = sy-repid
     DYNPNR                 = sy-dynnr
     DYNPROFIELD            = 'ZBANH'
*     STEPL                  = 0
*     WINDOW_TITLE           =
*     VALUE                  = ' '
     VALUE_ORG              = 'S'
*     MULTIPLE_CHOICE        = ' '
*     DISPLAY                = ' '
*     CALLBACK_PROGRAM       = ' '
*     CALLBACK_FORM          = ' '
*     MARK_TAB               =
*   IMPORTING
*     USER_RESET             =
    tables
      value_tab              = lt_tescdy[]
*     FIELD_TAB              =
*     RETURN_TAB             =
*     DYNPFLD_MAPPING        =
   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.

通过上述函数建立自定义搜索帮助。

猜你喜欢

转载自blog.csdn.net/yiyuzz/article/details/84184675