这两天研究了一下联动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'.
    DATAlt_dynp TYPE STANDARD TABLE OF dynpread.
    DATAls_dynp TYPE dynpread.
    DATAl_stnum TYPE zz100sno.
    DATAls_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.