点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
BW/ABAP专家,
在我们的项目的BW系统中,以下代码是用Expert例程编写的。 但是,在执行数据加载时,Expert例程花费了更多时间。 似乎必须对例程进行微调以改善数据负载。
当我检查下面的代码时,我感觉由于删除相邻语句中使用的"或条件"而导致数据加载花费了很多时间。 您能否建议我如何优化以下代码。 目前,此流中正在加载3300万数据。
$ * $例程的开始-仅在此行下方插入代码*-*
数据:LV_DATE TYPE DATUM。
数据:LV_MAXDATE TYPE DATUM。
数据:LV_FLAG TYPE C长度1。 br> DATA:LV_COUNT TYPE I VALUE 1。 br>字段符号:
在以下位置删除源包(/BIC/TABLE1初始或
/BIC/TABLE2初始)或
/BIC/TABLE3是
不能检查源代码包。
从/BIC/TABLE4
*从临时历史加载日期
SELECT CALDAY/中选择MAX(CALDAY)到LV_MAXDATE。 BIC/G_TIC9038/BIC/G_MCC2037 INTO(LV_ADHOC_DATE,
LV_DATE_TYPE,LV_FLAG)
从/BIC/TABLE5,其中对象='A'。 '。
LV_DATEFROM = LV_ADHOC_DATE。
ELSEIF LV_DATE_TYPE ='TO'和LV_FLAG ='X'。
LV_DATETO = LV_ADHOC_DATE。
ENDI F.
ENDSELECT。
*如果未保留临时日期
************************** ************************************************
如果LV_DATETO IS INITIAL。
LV_DATETO = SY-DATUM。 "-1.
ENDIF。
如果LV_DATEFROM是INITIAL。
LV_DATEFROM = LV_MAXDATE。
ENDIF。
************ ****************************************************** ********
在源包分配中循环
清除:LV_DATE。
*如果源数据晚于目标DSO max,则仅对源数据使用有效
*日期或临时日期来自
如果LV_DATEFROM是INITIAL或
LV_DATEFROM。
LV_DATE =
ELSE。
LV_DATE = LV_DATEFROM。
ENDIF。
DO。
*仅创建并转换成当前日期之前的每日格式
*或有效至日期的临时格式
如果LV_DATE>
LV_DATETO。
退出。
ENDIF。
*基于有效日期和有效日期
* duration
的附录格式以每日格式创建条目 到RESULT_PACKAGE分配的行
* ****************************************************** *******************
** ****************************************************** ******************
LV_DATE = LV_DATE +1。
LV_COUNT = LV_COUNT + 1.
ENDDO。
ENDLOOP。
< br>从RESULT_PACKAGE中删除相邻重复项
比较/BIC/CARC0200
/BIC/CSTC0100 CALDAY。
谢谢。
1。 在例程开始时,条件=>从source_package中删除的数据=>我认为您可以将其移至DTP的过滤条件。
2。 如果您的数据库是HANA,请尝试将逻辑移至过程或创建HANA视图。
3。 将/BIC/TABLE5上的选择移到/BIC/TABLE4的选择之外,因为那里没有关系(条件仅是活动版本)。 我还认为您可以用TVARVC替换TABLE4,TABLE5。
还有更多...我尝试如下所示,您可以考虑:
如果您使用了编辑器上的"代码"按钮并对其进行了格式设置,那么阅读起来会容易得多。
然后,我可能会帮助您。
一周热门 更多>