ABAP中的F4幫助怎麼用?

ABAP中的F4幫助怎麼用?

SAP學習 2010-10-07 16:35:22 閱讀0 評論0   字號: 訂閱ide

ABAP中的F4幫助怎麼用?  當咱們在sap的界面上,焦點放到一個字段上的時候,按F4,會出現選擇或者搜索的界面,這就是abap中的f4幫助。    有多種實現f4幫助的方法,如今就把我指導的一點點說出來:    1 , 固定值。 咱們在Domain 中能夠定義 value range ,在 value range 中定義的值,就能夠出如今f4幫助中。這是最簡單的實現f4幫助的方法。    2 ,數據類型關聯。 加入咱們在選擇屏幕上定義一個 dats 類型的 參數,她就自動調用了日期類型的f4幫助。    3, se11 建立 f4幫助。  (  將se11建立的搜索幫助掛到表上的時候,又能夠分爲如下三種類型:    用檢查表實現輸入幫助  字段的外部搜索幫助附件  數據元素的明確搜索幫助附件    她們之間有啥區別,我也不知道。等我知道了再補充。  )    用 se11 建立 的 f4 幫助 能夠分爲兩類:    基本搜索幫助  集中搜索幫助    基本搜索幫助是搜索幫助的最小單元,集中搜索幫助還能夠包括集中搜索幫助,也能夠包括基本搜索幫助。    在基本搜索幫助中 能夠定義 數據來源,可是集中搜索幫助不能夠定義數據來源。    不管是基本搜素偶幫助仍是集中搜索幫助都包含輸出輸出字段定義,並能夠定義搜索幫助exit,用於調用一個遠程的 function module 來對數據進行 過濾和處理。      若是將這些搜索幫助與表掛上以後,咱們在使用的時候就會自動出現該搜索幫助。    在 synpro 程序中。也能夠經過屬性(屬性名叫 搜索幫助)爲字段 從新指定自定義的搜索幫助      也能夠在 選擇屏幕或者 screen 中從新指定搜索幫助,下面舉幾個例子來講明使用的方法    一, 根據搜索幫助的名字 來指定搜索幫助  1 選擇屏幕    REPORT z_ljc_078 LINE-SIZE 200.  parameters: mama(18) type c.  INITIALIZATION.  AT SELECTION-SCREEN on value-request for mama.  DATA:v_mama LIKE help_info-dynprofld.  v_mama = 'MAMA'.  CALL FUNCTION 'F4IF_FIELD_VALUE_REQUEST'  EXPORTING  tabname = ''  fieldname = ''  SEARCHHELP = 'ZFI_CRC_001'  DYNPPROG = SY-REPID  DYNPNR = SY-DYNNR  DYNPROFIELD = v_mama  .  start-OF-SELECTION.  write mama.    2 dynpro screen    流邏輯:    PROCESS BEFORE OUTPUT.  MODULE INIT.  PROCESS AFTER INPUT.  PROCESS ON VALUE-REQUEST.  FIELD matnr MODULE VALUE_matnr.    report :  MODULE init OUTPUT.  progname = sy-repid.  dynnum = sy-dynnr.  ENDMODULE.      MODULE value_matnr INPUT.  CALL FUNCTION 'F4IF_FIELD_VALUE_REQUEST'  EXPORTING  tabname = ''  fieldname = ''  SEARCHHELP = 'MAT1'  DYNPPROG = SY-REPID  DYNPNR = SY-DYNNR  DYNPROFIELD = 'MATNR'  ENDMODULE.      不管是在選擇屏幕或者是dynpro中,若是指定了searchhelp 屬性,則 tabname 和 fieldname 屬性就不起做用了。  當不指定 searchhelp 屬性,而制定 了 tabname 和 fieldname 屬性,則會調用 tabname-fieldname 掛接的搜素偶幫助。    CALL FUNCTION 'F4IF_FIELD_VALUE_REQUEST'  EXPORTING  tabname = 'mara'  fieldname = 'matnr'  * SEARCHHELP = ''  DYNPPROG = SY-REPID  DYNPNR = SY-DYNNR  DYNPROFIELD = 'MATNR'        二, 用內表生成f4幫助    1 選擇屏幕  TYPES: BEGIN OF ty_aenr,  aennr type aenr-aennr,  datuv type aenr-datuv,  aenam type aenr-aenam,  aegru type aenr-aegru,  ccart type aenr-ccart,  aetxt type aenr-aetxt,  END OF ty_aenr.    DATA: gt_aenr TYPE TABLE OF ty_aenr,  gs_aenr TYPE ty_aenr.    INITIALIZATION.  PERFORM frm_read_aenr.      * 得到圖幅的f4幫助  AT SELECTION-SCREEN ON VALUE-REQUEST FOR so_aennr-low.  PERFORM frm_search_help_file.          FORM frm_read_aenr .  DATA l_objnr TYPE jest-objnr.  DATA l_line TYPE bsvx-sttxt. " 訂單狀態  SELECT a~aennr a~datuv a~aenam a~aegru a~ccart a~aetxt  INTO TABLE gt_aenr  FROM aenr as a  inner join USGRP_USER as c  on a~annam = c~bname  where c~usergroup = 'CCCAR'.  loop at gt_aenr into gs_aenr.  CLEAR:l_objnr,l_line.  ***組建更改編號對象號  CONCATENATE 'CD' gs_aenr-aennr INTO l_objnr.  ***得到系統狀態,調用函數  CALL FUNCTION 'STATUS_TEXT_EDIT'  EXPORTING  objnr = l_objnr  spras = sy-langu  IMPORTING  line = l_line  EXCEPTIONS  object_not_found = 1  OTHERS = 2.  ***判斷該更改單是否批准  IF sy-subrc = 0.  SEARCH l_line FOR 'ECOR'.  IF sy-subrc <> 0.  DELETE gt_aenr. "沒有下達的就刪掉  ENDIF.  ENDIF.  endloop.  .  ENDFORM. " frm_read_proj      FORM frm_search_help_file .  DATA:v_aennr LIKE help_info-dynprofld.  v_aennr = 'SO_aennr'.  CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'  EXPORTING  retfield = 'AENNR'  value_org = 'S'  dynprofield = v_aennr  dynpprog = sy-repid  dynpnr = sy-dynnr  TABLES  value_tab = gt_aenr  EXCEPTIONS  parameter_error = 1  no_values_found = 2  OTHERS = 3.  * IF sy-subrc <> 0.  * WRITE: 'error'.  * ENDIF.  ENDFORM. " frm_search_help_file    2 dynpro screen:    流邏輯:    PROCESS BEFORE OUTPUT.  MODULE INIT.  PROCESS AFTER INPUT.  PROCESS ON VALUE-REQUEST.  FIELD aenam MODULE VALUE_aenam.      report :    TYPES: BEGIN OF values,  aenam TYPE mara-aenam,  matnr TYPE mara-matnr,  END OF values.  DATA: matnr(18) TYPE c,  aenam(12) TYPE c.  DATA: progname TYPE sy-repid,  dynnum TYPE sy-dynnr  .  CALL SCREEN 100.  MODULE init OUTPUT.  progname = sy-repid.  dynnum = sy-dynnr.  ENDMODULE.  MODULE value_aenam INPUT.  select aenam matnr into table values_tab from mara where matnr BETWEEN '000000000000001199' and '000000000000001250'.  CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'  EXPORTING  retfield = 'AENAM'  dynpprog = progname  dynpnr = dynnum  dynprofield = 'AENAM'  value_org = 'S'  TABLES  value_tab = values_tab.  ENDMODULE.    固然,也能夠根據一個 字段的選擇 過濾另外一個字段的f4幫助的 數據。下面給出一個在 dynpro screen 中的例子。  在選擇屏幕上就不給出例子了。實現的方法都差很少。甚至更簡單。      流邏輯:    PROCESS BEFORE OUTPUT.  * MODULE STATUS_0100.  *  MODULE INIT.  PROCESS AFTER INPUT.  * MODULE USER_COMMAND_0100.  MODULE CANCEL AT EXIT-COMMAND.  PROCESS ON VALUE-REQUEST.  FIELD matnr MODULE VALUE_matnr.  FIELD aenam MODULE VALUE_aenam.      report :    *&  TYPES: BEGIN OF values,  aenam TYPE mara-aenam,  matnr TYPE mara-matnr,  END OF values.  DATA: matnr(18) TYPE c,  aenam(12) TYPE c.  DATA: progname TYPE sy-repid,  dynnum TYPE sy-dynnr,  dynpro_values TYPE TABLE OF dynpread,  field_value LIKE LINE OF dynpro_values,  values_tab TYPE TABLE OF values.  CALL SCREEN 100.  MODULE init OUTPUT.  progname = sy-repid.  dynnum = sy-dynnr.  CLEAR: field_value, dynpro_values.  field_value-fieldname = 'AENAM'.  APPEND field_value TO dynpro_values.  ENDMODULE.  MODULE cancel INPUT.  LEAVE PROGRAM.  ENDMODULE.  MODULE value_aenam INPUT.  select aenam matnr into table values_tab from mara where matnr BETWEEN '000000000000001199' and '000000000000001250'.  CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'  EXPORTING  retfield = 'AENAM'  dynpprog = progname  dynpnr = dynnum  dynprofield = 'AENAM'  value_org = 'S'  TABLES  value_tab = values_tab.  ENDMODULE.  MODULE value_matnr INPUT.  CALL FUNCTION 'DYNP_VALUES_READ'  EXPORTING  dyname = progname  dynumb = dynnum  translate_to_upper = 'X'  TABLES  dynpfields = dynpro_values.  READ TABLE dynpro_values INDEX 1 INTO field_value.  SELECT AENAM MATNR  FROM MARA  INTO CORRESPONDING FIELDS OF TABLE values_tab  WHERE AENAM = field_value-fieldvalue.  CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'  EXPORTING  retfield = 'AENAM'  dynpprog = progname  dynpnr = dynnum  dynprofield = 'MATNR'  value_org = 'S'  TABLES  value_tab = values_tab.  ENDMODULE.   
相關文章
相關標籤/搜索