在标准表(VBFA:销售单据流)中传递Vbrp的输入以提供转储

2020-09-16 23:30发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中) vbfa-1.jpg ...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


vbfa-1.jpg vbfa-3.jpg vbfa-4.jpg

亲爱的所有人,

实际上我有一个与销售有关的ZReport。

在该特定报告中,我正在做一些优化,以使该报告可以执行1年。

在优化之前,如果对所有工厂,所有分销渠道和所有部门执行为期1年(2014年4月1日至2015年3月31日)的报告,则将给出转储。

因此,使用上述输入,报告将进行转储。

现在,我在此zreport中做了一些优化,以便可以改善运行时间。

我所做的是,我将循环内的select单个查询替换为循环外所有条目select。

因此,除了VBFA上的选择查询外,所有查询都工作正常。它正在执行很多时间,最后导致转储。

下面是我的选择查询:-

选择VBELN
FKART
WAERK
VKORG
VTWEG
KNUMV
FKDAT
NETWR VTWEG
XBLNR从VBRK到表IT_VBRK

VBELN IN S_VBELN "发票编号

AND FKART IN S_FKART "发票类型

不加入FKART('ZG2','ZL2','ZF5','ZRE','F8')

AND VKORG = P_VKORG "销售组织

和VTWEG IN P_VTWEG "分销渠道

AND FKDAT IN S_DATE "发票日期

与S_KUNAG中的KUNAG和

KUNRG IN S_KUNRG "运送至派对

AND SFAKN EQ SPACE "已取消的发票具有此处的参考单据
和FKSTO NE'X'"以排除已取消的发票

和S_BLAND和MRNKZ NE'X'的区域。


如果SY-SUBRC NE 0。

消息"未找到数据"类型" I"。请进行列表处理。

ENDIF。


选择VBELN
POSNR
FKIMG
VRKME
VGBEL
AUBEL
MATNR
ARKTX
充电
WERKS
KONDM VKAUS FROM 对于IT_VBRK中所有条目的VBRP到表IT_VBRP中,其中VBELN = S_MAT中的IT_VBRK-VBELN和MATNR和P_SPART中的SPART以及S_CHARG中的CHARG和P_WERKS中的WERKS和S_MATNR中的KONDM。

如果SY-SUBRC NE 0。

消息"未找到数据"类型" I"。请进行列表处理。

ENDIF。

选择

VBELN

PARVW

KUNNR

ADRNR

将VBPA放入表IT_VBPA中,用于IT_VBRK中的所有条目

VBELN = IT_VBRK-VBELN和Parvw输入('WE','RE','RG')。


SELECT

KUNNR

NAME1

NAME2

STCD3

区域

将KNA1从IT_VBPA中的所有条目插入表IT_KNA1_TEMP

KUNNR = IT_VBPA-KUNNR。



SELECT

ADDRNUMBER

STR_SUPPL1

STR_SUPPL2

街道

CITY1

从ADRC到表IT_ADRC的CITY2,用于IT_VBPA中的所有条目,其中ADDRNUMBER = IT_VBPA-ADRNR。

如果IT_VBRP []不初始。

选择

MATNR

WERKS

STEUC

从MARC到表IT_MARC中IT_VBRP的所有条目,其中MATNR = IT_VBRP-MATNR和WERKS = IT_VBRP-WERKS。

选择

RDOC

EXPIND

状态

从J_1IEXCHDR到表IT_J_1IEXCHDR中IT_VBRP中的所有条目,其中RDOC = IT_VBRP-VBELN且STATUS ='C'。

选择

VBELV

VBELN

POSNN

VBTYP_N

VBTYP_V

从VBFA到IT_VBRP中所有条目的表IT_VBFA,其中VBELN = IT_VBRP-AUBEL AND
POSNN = IT_VBRP-POSNR和

VBTYP_N ='C'。


删除IT_VBFA,其中VBTYP_V <>'G'。

ENDIF。

因此,我用。中的所有条目替换了所有选择单个查询。

我的问题是,只有该查询以粗体突出显示会占用大量时间,因此导致转储。 超过了时间限制。

请指导我如何解决此问题。

第二,如果我手动输入SE11 VBFA表的内部表IT_VBRP TO Standard表VBFA中获得的值,则手动检查对VBFA的选择查询为何给出转储。

然后,标准表也在提供转储。

所以我无法找到问题所在。

vbfa-1.jpg vbfa-3.jpg

标准表正在提供转储。 我已经附上了转储日志。 我不明白为什么标准表:VBFA会进行转储。

关于 zsales-report-1.jpg zsales-report-2.jpg

vbfa-1.jpg (97.6 kB)
5条回答
SAP浪
2020-09-17 00:03

与表相比,不要更改变量的类型。 在这里,一些可变长度应该小于图像末尾给出的值。 您也可以同时加入vbrk和vbrp表来获取数据。 示例代码如下。

您还可以在查询中添加一个断点,并检查错误消息是什么。

 TYPES:BEGIN OF ty_vbrp,
           "在此处添加所需的VBRK
           vbeln TYPE vbrp-vbeln,
           posnr TYPE vbrp-posnr,
           fkimg TYPE vbrp-fkimg,
           vrkme TYPE vbrp-vrkme,
           vgbel TYPE vbrp-vgbel,
           aubel TYPE vbrp-aubel,
           matnr TYPE vbrp-matnr,
           arktx TYPE vbrp-arktx,
           charg TYPE vbrp-charg,
           werks TYPE vbrp-werks,
           kondm TYPE vbrp-kondm,
           vkaus TYPE vbrp-vkaus,
         ty_vbrp结束。

   数据:ty_vbrp的lt_vbrp类型表。

   选择
   "在此处添加所需的vbrk
   vbrp〜vbeln
   vbrp〜posnr
   vbrp〜fkimg
   vbrp〜vrkme
   vbrp〜vgbel
   vbrp〜aubel
   vbrp〜matnr
   vbrp〜arktx
   vbrp〜charg
   vbrp〜werks
   vbrp〜kondm
   vbrp〜vkaus
   来自vbrp
   加入vbrk
   开启vbrp〜vbeln = vbrk〜vbeln
   进入表lt_vbrp
   vbrp〜matnr在s_mat中
   AND vbrp〜spart输入p_spart
   AND vbrp〜charg在s_charg中
   和p_werks中的vbrp〜werks
   和vbrp〜kondm IN s_matnr。
 

一周热门 更多>