这两天研究了一下联动search help技术,这里说“联动”是我自定义的一种称谓,它是这样一种效果:当屏幕上的某个字段填充的时候,能把相关的数据带到屏幕的其他field里面去。
实现这个有两种方式(当然还有其他方式,我这里指出以下两种相对简单的方式,如果有更多更好的方法,请读者不吝赐教!!!)
1.通过field search help,我们都知道只要我们在屏幕上定义数据的时候,只要屏幕引用同一个search help里面的字段,那么只要其中一个填充了,那么其他的也都会带出来,这里不多说了。
2.通过search help exit实现,通过search help exit我们同样可以实现这个功能,以下是一段有意义的代码(实现了将任意数据填充到屏幕上的其他field,当然在主程序里面call DYNP_UPDATE_FIELDS也可以达到同样的目的,但要去获取相关数据就显得多此一举了):
IF callcontrol-step = 'RETURN'.
DATA: lt_dynp TYPE STANDARD TABLE OF dynpread.
DATA: ls_dynp TYPE dynpread.
DATA: l_stnum TYPE zz100sno.
DATA: ls_record TYPE seahlpres.
READ TABLE record_tab INTO ls_record INDEX 1.
ls_dynp-fieldname = 'P_STNUM'.
ls_dynp-fieldvalue = ls_record-string+3(3).
APPEND ls_dynp TO lt_dynp.
CLEAR ls_dynp.
CALL FUNCTION 'DYNP_UPDATE_FIELDS'
EXPORTING
dyname = 'ZTEST_PILLAR'
dynumb = '1000'
request = 'A'
TABLES
dynpfields = lt_dynp.
ENDIF.