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

2020-09-16 23:30发布

         点击此处--->   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)

         点击此处--->   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浪
1楼-- · 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。
 
大简至美
2楼-- · 2020-09-17 00:19

对不起,老实说,我无法从问题或简短的转储屏幕截图甚至与所提到的代码相关的内容中了解任何内容。

第一部分没有任何意义,因为没有VBRK就不可能有VBRP,因此只需使用JOIN代替FAE。 只要您能用通俗易懂的语言解释您要达到的目标,最有可能的VBFA也可以加入。

在SE11中,我们不会"传递"任何内容,也不会"手动输入值",您在这里完全失去了我,对不起!
请更新问题,使它更清楚。

95年老男孩
3楼-- · 2020-09-17 00:15

亲爱的 Jelena Perfiljeva

我已经更新了问题。还附加了转储日志。 请检查并指导。

致谢

深入

jovirus
4楼-- · 2020-09-17 00:19

我已删除您的新问题。 您可以改为更新此问题。 请不要再提出其他问题-我什至已经提出了我先前关闭的其他问题。

葫芦娃快救爷爷
5楼-- · 2020-09-17 00:18

HI,

我认为你误解了我。 我说过您可以加入vbrk和vbrp表以在单个表中获取数据。 为了获取大量数据,将其拆分为我上面提到的可管理的数据大小。 这样即使有延迟也不会放弃。

据我了解,您正在从表格中计算发票金额。 为此,您可以加入vbrk和vbrp以获取我上面提到的数据(提到了包大小),然后在其中进行konv选择。

对于KONV表,您需要根据定价条件KSCHL添加,否则如果更改定价条件(价格,税金,折扣,附加费,总金额和含税金额等所有内容都在KONV中)直接添加,则会有随机数据 。 因此,您可以将read用于定价条件。

或者,如果您想避免嵌套循环,可以尝试在konv循环并读取相关数据。 我会这样。

从vbrk中选择数据加入vbrp。
 如果找到数据{
             <或任何其他需要的数据>
              从konv中为vbrk-vbrp中的所有条目选择数据
 }
 在konv循环{
        读取主表中的相关vbrk-vbrp数据并分配给字段符号。
       如果找不到{
        追加新行并分配给字段符号。
       }
       <执行主数据所需的其他作业>
 }
 

这是与如何避免循环内循环

如上述问题中的 Thomas Zloch 所述,请加入表格。 我已经举了一个例子,请做一些研究。

一周热门 更多>