EG:
举个例子,假如界面中的库存地点要根据已输入的工厂进行显示搜索帮助,往往自己做的搜索帮助只能查询出全部的库存地点,并不能根据已输入的工厂进行查询。
这时候,我们只需要调用下函数:
TYPES: BEGIN OF CURSORTYPE,
FNAME LIKE D021S-FNAM,
POS LIKE SY-STEPL,
VALUE LIKE D021S-FNAM,
END OF CURSORTYPE.
DATA: SETCURSOR TYPE CURSORTYPE.
DATA: DYNPFIELDS LIKE DYNPREAD OCCURS 0 WITH HEADER LINE.
DATA: DYNPRO_PROGRAM LIKE SY-REPID. "Programmpool und Nummer in dem
DATA: DYNPRO_NUMBER LIKE SY-DYNNR. "das aktuelle Dynpro liegt.
GET CURSOR FIELD SETCURSOR-FNAME
LINE SETCURSOR-POS
VALUE SETCURSOR-VALUE.
REFRESH DYNPFIELDS.
MOVE 'P_WERKS' TO DYNPFIELDS-FIELDNAME.
DYNPFIELDS-STEPL = SETCURSOR-POS.
APPEND DYNPFIELDS.
DYNPRO_PROGRAM = SY-REPID. "believe it or not - these
DYNPRO_NUMBER = SY-DYNNR. "assignments are necessary!
CALL FUNCTION 'DYNP_VALUES_READ'
EXPORTING
DYNAME = DYNPRO_PROGRAM
DYNUMB = DYNPRO_NUMBER
PERFORM_INPUT_CONVERSION = 'X'
TABLES
DYNPFIELDS = DYNPFIELDS
EXCEPTIONS
INVALID_ABAPWORKAREA = 1
INVALID_DYNPROFIELD = 2
INVALID_DYNPRONAME = 3
INVALID_DYNPRONUMMER = 4
INVALID_REQUEST = 5
NO_FIELDDESCRIPTION = 6
INVALID_PARAMETER = 7
UNDEFIND_ERROR = 8
OTHERS = 9.
* READ TABLE SCR_ITEM_M INDEX SETCURSOR-POS.
READ TABLE DYNPFIELDS WITH KEY FIELDNAME = 'P_WERKS'. "P_WERKS是屏幕控件名
*end 读取屏幕工厂
如此之后,我们再编写搜索帮助的时候,就能按照屏幕中工厂条件进行搜索,当然,该方法只针对代码实现的搜索帮助。