全局表实现了Start Rountine和Rule Detail之间数据通信。全局表中的数据是在Start Rountine中进行填充的,在Rule Detail中可以使用这些数据。
比如:
第一步:在Start Rountine中我们定义了一个全局表gt_product。
data gt_product type table of /bic/pzd_prod.
第二步:在Start Routine中,根据处理的Package中的Product ID ,获得Product的主数据,保存到全局表gt_product中。
select * into table gt_product from /bic/pzd_prod
for all entries in SOURCE_PACKAGE where
/bic/zd_prod = SOURCE_PACKAGE-/bic/zd_prod.
sort gt_product by /bic/zd_prod.
注:for all entries 的使用,使在第二个package运行的时候,第一个package选进去的全局表的数据就不存在了,而是替换为当前执行的package数据所对应的内容了。
第三步:在ZD_REV revenue 的Rule Details中使用全局表中的Price数据。
data pri type /BIC/PZD_PROD-/BIC/ZD_PRICE.
data gt_product_wa like line of gt_product .
loop at gt_product into gt_product_wa where /BIC/ZD_PROD =
SOURCE_FIELDS-/BIC/ZD_PROD and OBJVERS = 'A' .
pri = gt_product_wa-/BIC/ZD_PRICE .
endloop .
RESULT = SOURCE_FIELDS-/BIC/ZD_QTY * pri .