点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
您好,我认为AMDP无法处理选择选项。 在下面的代码中,我为select-option放置了标记,因此select-option如果有值就可以工作,因此所有数据都不会被提取,假设我们有10个表prps,mara,vbap等。然后从所有表中提取程序并 如果选择选项为空,则应用过滤器,那么它将从数据库表中获取所有数据,并且性能非常低。 这样的查询就像从mara中选择*,从vbap中选择*,从prps中选择*,这在静态上是可以避免的。
我们如何在性能调整中使用选择选项? 用户可以在S_MATNR-LOW中填写10个值,并且可以将范围S_MATNR-LOW设置为S_MATNR-HIGH,并将S_WERKS值保留为空白。 如果S_WERKS为空,我们不想获取所有值,如果s_werks为空,则不希望获取所有值,那么避免从marc获取所有数据是可以避免的,所以我添加了标志,但是在标志之后,我没有任何输出,但是如果我删除了标志条件,那么我就可以了 数据,意味着选择选项为空,它将获取整个数据库表,但是从明智的角度来看,如果我们有很多选择选项,那么有人会帮助我,那么如何避免从表中获取所有数据是错误的。
还可以像abap一样逐行调试查询吗? 假设我们有两个选择队列:it_mara =内部连接mara和makt和it_marc =内部连接marc和mard。 那么有可能像abap一样调试吗? 我在课堂上设置了断点,但是我做不到,只能检查决赛桌的数据。
选择选项:S_MATNR FOR MARA-MATNR。 选择选项:S_WERKS用于MARC-WERKS。 如果S_MATNR不是INITIAL。 数据(LV_WHERE)= CL_SHDB_SELTAB => COMBINE_SELTABS( IT_NAMED_SELTABS = VALUE#((NAME ='MATNR'DREF = REF#(S_MATNR []))))。 DATA(FLAG_MATNR)='X' 万一。 如果S_WERKS不是初始的。 DATA(FLAG_WERKS)='X'。 数据(LV_WHERE1)= CL_SHDB_SELTAB => COMBINE_SELTABS( IT_NAMED_SELTABS = VALUE#((NAME ='WERKS'DREF = REF#(S_WERKS []))))。 万一。 呼叫方法ZJAYAMDP2 => GET_MATERIAL_DETAILS 出口 LV_WHERE = LV_WHERE LV_WHERE1 = LV_WHERE1 FLAG_WERKS = FLAG_WERKS FLAG_MATNR = FLAG_MATNR 输入 ET_MAT = IT_FINAL。 _________________________________________________________________________________ 如果(FLAG_MATNR ='X')THEN RESULT_1 = APPLY_FILTER(MARA,:LV_WHERE); 万一; 如果(FLAG_WERKS ='X')THEN RESULT_2 = APPLY_FILTER(MARC,:LV_WHERE1); 万一; ET_MAT = SELECT DISTINCT A.matnr, ernam 阿斯达 b.maktx, c。维克斯 FROM:result_1作为 INNER JOIN makt as b 在a.matnr = b.matnr 内部连接:result_2 as c 在a.matnr = c.matnr;
在最终查询中使用当前的INNER JOIN实现,如果RESULT_1或RESULT_2为空,则不会获得任何结果,因为在这种情况下INNER JOIN查询无法获得结果。
您描述的行为。 如果由于未设置"标志"而不查询数据,则RESULT_1或RESULT_2为空-> INNER JOIN查询中无结果。 如果删除该标志并且您没有选择输入任何值,那么您就没有WHERE条件。 因此,所有内容都是从相应的表创建的-> INNER JOIN查询将得到一个结果(以防万一条目符合ON条件)。
总结:这不是AMDP问题,这只是您的行为 自己实现。
一周热门 更多>