ABAP search help (搜索帮助) 几种种方法

ABAP search help (搜索帮助) 几种种方法

 

 ABAP 的搜索帮助有很多种方法,掌握下面的几种基本差不多了

*&---------------------------------------------------------------------*
*& Report  ZTEST1
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT  ZTEST1.

tables: mara.

 DATA:ok_code TYPE sy-ucomm,
       save_ok TYPE sy-ucomm.

parameters: l_matnr type matnr matchcode object zmara. " 第1种-简单的弹出对话框

PARAMETERS:l_ebeln type ebeln matchcode object ZEKKO. " 第2种-selectio-method 是 view。


* 第3种,上下两个是关联在一块的。工厂和库存地点。
PARAMETERS:l_werks type zwerks_logrt-werks.
PARAMETERS:l_logrt type zwerks_logrt-logrt.


* 第4种,selection screen 中的 :日期类型的search help。这种方法要注意在dialogue screen 中,要在元素清单中reference中 l_data添加DATS,
*按钮才会出来,否则要按F4,才能出来帮助按钮。
PARAMETERS:l_data type dats.


* 第5种:dialogue screen 中的 屏幕下拉框。

 data l_date type dats." dialogue screen 中的日期类型的search help 创建。
 call screen '0100'.

 data l_ver type char10.

Module drop_down_list output.

  TYPE-POOLS vrm.
  DATA :name TYPE vrm_id,
        List TYPE vrm_values,
        Value LIKE LINE OF list.
  Name = 'L_VER'. "屏幕上绑定的下拉框也是这个名字。
  REFRESH list.
  Value-key = 'A'.
  Value-text = '西海岸'.
  APPEND value TO list.

  Value-key = 'B'.
  Value-text = '东海岸'.
  APPEND value TO list.

  CALL FUNCTION 'VRM_SET_VALUES'
    EXPORTING
      id     = name
      values = list.

ENDMODULE.                    "drop_down_list OUTPUT
*&---------------------------------------------------------------------*
*&      Module  STATUS_0100  OUTPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE STATUS_0100 OUTPUT.
SET PF-STATUS '0100'.
 SET TITLEBAR '0100'.

ENDMODULE.                 " STATUS_0100  OUTPUT
*&---------------------------------------------------------------------*
*&      Module  USER_COMMAND_0100  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE USER_COMMAND_0100 INPUT.
SAVE_OK =  OK_CODE .
  clear:OK_CODE.
  case:SAVE_OK.
    when 'BACK' or 'EXIT' or 'CACEL'.
      leave to screen 0.
  endcase.
ENDMODULE.                 " USER_COMMAND_0100  INPUT

*****************************************************

 

module value_z005 input.
  datafields  like table of help_value with header line,
        select_value type string
        .
  databegin of valuetab occurs 0,
    value(40),
  end of valuetab.
  data: ls_vbak like vbak.
  clear: valuetab, valuetab[], fields[]fields.
*填写显示的列
  fields-tabname 'VBAK'.
  fields-fieldname 'VBELN'.
  fields-selectflag 'X'.
  append fields.

  fields-tabname 'VBAK'.
  fields-fieldname 'ERDAT'.
  fields-selectflag ''.
  append fields.

  fields-tabname 'VBAK'.
  fields-fieldname 'VKORG'.
  fields-selectflag ''.
  append fields.

  fields-tabname 'VBAK'.
  fields-fieldname 'Z006'.
  fields-selectflag ''.
  append fields.

*按照上面的顺序填写数据
  select * from vbak into ls_vbak where kunnr = vbak-kunnr
                                     and auart in ('Z002','Z025','Z026')
                                     and z001 > 0.
    valuetab = ls_vbak-vbeln.
    append valuetab.
    valuetab = ls_vbak-erdat.
    append valuetab.
    valuetab = ls_vbak-vkorg.
    append valuetab.
    valuetab = ls_vbak-z001.
    condense valuetab.
    append valuetab.
  endselect.

  call function 'HELP_VALUES_GET_WITH_TABLE'
    importing
      select_value                        = select_value "选中的值
    tables
      fields                              fields "显示的列
      valuetab                            = valuetab "每列的数据
    exceptions
      field_not_in_ddic                   1
      more_then_one_selectfield           2
      no_selectfield                      3
      others                              4
            .
  if sy-subrc <> 0.
    message id sy-msgid type sy-msgty number sy-msgno
            with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  else.
    vbak-z005 = select_value.
  endif.



endmodule.                 " VALUE_Z005  INPUT

 

posted @ 2018-03-23 16:08  以成Ronny  阅读(11016)  评论(0编辑  收藏  举报