在4.5B版本之后,可通过FM:LDB_PROCESS来调用逻辑数据库,这样不仅在executable program中可以使用LDB,在interactive program和module pool中也可以使用逻辑数据库。而且多个LDBS可以在一个程序中使用,同一个LDB可以在一个程序中调用多次。
CALL FUNCTION ‘LDB_PROCESS’
EXPORTING
Ldbname = ‘F1S’
TABLES
Callback = call_back_tab
Selections = sel_tab.
Logical database与function module LDB_PROCESS的交互原理与get event相似,必需根据data dictionary structure ldbcb创建一个internal table和work area。这个内表收集了要处理的nodes和call back subroutines。这个internal table的各个字段的意义如下:
l LDBNODE Name of the node to process
l GET X Process the GET event of the above node
l GET_LATE X process the GET_LATE event of the above node
l CB_PROG name of the program containing the callback subroutine
l CB_FORM name of the callback subroutine
当你调用logical database时,你必须保证selection screen上输入了正确的值,必须通过dictionary structure RSPARAMS,为了使logical database可以被multiple processing,你必须在database program中添加subroutine LDB_PROCESS_INIT。如果你通过LDB_PROCESS指定了一个logical database,并且定义了额外的筛选条件,这些条件对应的该node的字段没有在dynamic selection中定义,那么必须在程序中去check当前的记录是否符合这些条件。如果check失败,你必须把subroutine的selected参数置为space。
FORM call_back_sflight.
USING name LIKE ldbn-ldbnode
Workarea TYPE sflight
Node TYPE c
Selected TYPE c.
IF NOT workarea-price IN s_price.
Selected = space.
EXIT.
ENDIF.
ENDFORM.