AMDP程序的怪异行为

2020-09-08 08:25发布

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

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


大家好,您今天好吗? 我认为AMDP程序存在一个非常奇怪的问题。 该过程不太复杂,只是我执行联接和计算时执行的一系列选择,然后保留在表变量中,最后将所有这些表变量联接到我的结果变量中。 在我的职业生涯中,我看到了许多奇怪的错误,但这是最高的胜利者。 我的过程没有任何语法错误,当我调用报告中的调用AMDP方法时,这向我显示了DUMP,我知道这不是真正的问题,对吗?

我不确定是否是DUMP的相关部分,如果不能告诉我请问那是什么。

在最后一个选择语句中引发异常,该选择语句返回我的最终结果。 但是很奇怪的是,当我在执行select以获得最终结果的位置之前放置一个断点,并在调试模式下执行该步骤时,出乎我的意料,没有DUMP并显示了结果。

有人遇到这种错误吗?

这是代码中引发异常的部分。

 e_result =选择bs.VKGRP作为punto_venta,
                           bs.kunnr作为客户,
                           cli.name1 ||  char(32)||  cli.name2为nombre_cliente,
                           bs.vbeln作为pedido,
                           vsc.valor为valor_sin_conf,
                           bs.waerk作为waers,
                           vds.valor作为valor_despacho,
                           vmr.netwr为valor_mcia_rep,
                           vad.valor作为valor_aduana,
                           bs.matnr作为材料,
                           bs.kwmeng为cant_pedido,
                           ctc.cant_confirmada,
                           censantidad为cant_entrega,
                           ctr.cantidad为cant_transp,
                           cts.cantidad为cant_transp_sal,
                           bs.meins
                    来自:lt_base_info为bs
                    内部连接:lt_v_sin_conf作为vsc在vsc.vbeln = bs.vbeln和
                                                        vsc.matnr = bs.matnr和
                                                        vsc.row_number = bs.row_number
                    内部连接:lt_v_despacho作为vds.vbeln = bs.vbeln上的vds
                                                        vds.matnr = bs.matnr和
                                                        vds.row_number = bs.row_number
                    左外部连接:lt_v_mcia_rep作为vmr.vbeln = bs.vbeln上的vmr
                    左外部连接:lt_valor_aduana作为vad.vbelv_e = bs.vbeln上的vad和
                                                               vad.matnr_l = bs.matnr和
                                                               vad.row_number = bs.row_number
                    内部连接:lt_cant_conf作为ctc.vbeln = bs.vbeln上的ctc
                                                       ctc.matnr = bs.matnr和
                                                       ctc.row_number = bs.row_number
                    内部联接:lt_cant_entr作为cen.vbelv_e = bs.vbeln上的cen
                                                       cen.matnr_l = bs.matnr和
                                                       cen.row_number = bs.row_number
                    左外部连接:lt_cant_tran作为ctr.vbelv_e = bs.vbeln上的ctr
                                                            ctr.matnr_l = bs.matnr和
                                                            ctr.row_number = bs.row_number
                    左外部连接:lt_cant_tran_s作为cts.vbelv_e = bs.vbeln上的cts
                                                              cts.matnr_l = bs.matnr和
                                                              cts.row_number = bs.row_number
                    内部连接:lt_cli_data作为cli.clinnr = bs.kunnr上的cli;
 

非常感谢您的帮助。

最好的问候罗纳尔多·维埃拉

(79.1 kB)

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

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


大家好,您今天好吗? 我认为AMDP程序存在一个非常奇怪的问题。 该过程不太复杂,只是我执行联接和计算时执行的一系列选择,然后保留在表变量中,最后将所有这些表变量联接到我的结果变量中。 在我的职业生涯中,我看到了许多奇怪的错误,但这是最高的胜利者。 我的过程没有任何语法错误,当我调用报告中的调用AMDP方法时,这向我显示了DUMP,我知道这不是真正的问题,对吗?

我不确定是否是DUMP的相关部分,如果不能告诉我请问那是什么。

在最后一个选择语句中引发异常,该选择语句返回我的最终结果。 但是很奇怪的是,当我在执行select以获得最终结果的位置之前放置一个断点,并在调试模式下执行该步骤时,出乎我的意料,没有DUMP并显示了结果。

有人遇到这种错误吗?

这是代码中引发异常的部分。

 e_result =选择bs.VKGRP作为punto_venta,
                           bs.kunnr作为客户,
                           cli.name1 ||  char(32)||  cli.name2为nombre_cliente,
                           bs.vbeln作为pedido,
                           vsc.valor为valor_sin_conf,
                           bs.waerk作为waers,
                           vds.valor作为valor_despacho,
                           vmr.netwr为valor_mcia_rep,
                           vad.valor作为valor_aduana,
                           bs.matnr作为材料,
                           bs.kwmeng为cant_pedido,
                           ctc.cant_confirmada,
                           censantidad为cant_entrega,
                           ctr.cantidad为cant_transp,
                           cts.cantidad为cant_transp_sal,
                           bs.meins
                    来自:lt_base_info为bs
                    内部连接:lt_v_sin_conf作为vsc在vsc.vbeln = bs.vbeln和
                                                        vsc.matnr = bs.matnr和
                                                        vsc.row_number = bs.row_number
                    内部连接:lt_v_despacho作为vds.vbeln = bs.vbeln上的vds
                                                        vds.matnr = bs.matnr和
                                                        vds.row_number = bs.row_number
                    左外部连接:lt_v_mcia_rep作为vmr.vbeln = bs.vbeln上的vmr
                    左外部连接:lt_valor_aduana作为vad.vbelv_e = bs.vbeln上的vad和
                                                               vad.matnr_l = bs.matnr和
                                                               vad.row_number = bs.row_number
                    内部连接:lt_cant_conf作为ctc.vbeln = bs.vbeln上的ctc
                                                       ctc.matnr = bs.matnr和
                                                       ctc.row_number = bs.row_number
                    内部联接:lt_cant_entr作为cen.vbelv_e = bs.vbeln上的cen
                                                       cen.matnr_l = bs.matnr和
                                                       cen.row_number = bs.row_number
                    左外部连接:lt_cant_tran作为ctr.vbelv_e = bs.vbeln上的ctr
                                                            ctr.matnr_l = bs.matnr和
                                                            ctr.row_number = bs.row_number
                    左外部连接:lt_cant_tran_s作为cts.vbelv_e = bs.vbeln上的cts
                                                              cts.matnr_l = bs.matnr和
                                                              cts.row_number = bs.row_number
                    内部连接:lt_cli_data作为cli.clinnr = bs.kunnr上的cli;
 

非常感谢您的帮助。

最好的问候罗纳尔多·维埃拉

(79.1 kB)
付费偷看设置
发送
8条回答
nice_wp
1楼 · 2020-09-08 08:39.采纳回答

伙计们,在寻求SAP支持后,给了我这个答案。

我认为,我是发现此错误的人,因为此注释于20.05.2019发行。

尊敬的客户,

此事件已到达SAP HANA产品支持。

此问题是HANA中的一个已知编码问题,已在SAP HANA <2.0> SPS 03数据库修订版中修复。 037.

分析:
ABAP短时转储:

数据库的SQL代码:3 <致命>致命错误:" SAPABAP1"。" ZCL_SD_CUB_RES_DIARIO_AMDP => GET_DATA_DETAIL
ColDicVal( 找不到SUBSTR((1000040,0),0,10))。请参见错误跟踪以了解详细信息

解决方案:
SAP Note 2746759-SAP HANA 2.0 SPS 03数据库修订版037
修复了导致查询失败并显示以下错误的错误:"致命错误:找不到ColDicVal。 有关详细信息,请参见错误跟踪。"

最诚挚的问候,

罗纳尔多·维埃拉(Ronaldo S. Vieira)

SKY徐
2楼-- · 2020-09-08 08:54

为什么不联系SAP支持人员?

软件心理学工程师
3楼-- · 2020-09-08 08:45

大家好,你好吗?

好吧,我找到了解决问题的方法,尽管我将这个答案标记为正确答案,但我认为这不是一个好答案,我将尝试解释原因。

尝试了许多方法之后,我发现如果我从最终的select语句中删除了一个特定的表变量,它可以正常工作,因此,我将通过将此表变量作为导出参数返回来进行处理,例如,执行 加入我的ABAP程序,但是我不知道为什么,我有一个主意,用这些参数替换在AMDP方法主体中声明的表变量,现在可以正常使用了。

所以我的方法签名看起来像这样

 CLASS-METHODS GET_DATA_DETAIL IMPORTING值(i_mandt)TYPE要求
                                    值(i_erdat_ini)TYPE ERDAT
                                    值(i_erdat_fin)TYPE ERDAT
                                    值(i_lang)TYPE spras
                                    值(i_filter)TYPE字符串
                                   出口
                                    值(e_result)TYPE ZTT_SD_RES_DIARIO_ASIG
                                    值(e_desp)TYPE ltty_desp。

我必须在AMDP类的公共部分声明新的导出参数的类型

类型:lty_desp的开头,
                 vbeln类型vbeln_va,
                 matnr类型matnr,
                 勇气类型ze_despacho,
                 row_number类型i,
            lty_desp的结尾。


     类型ltty_desp类型lty_desp的标准表。
 

现在select语句如下:

 e_result =选择bs.VKGRP作为punto_venta,
                           bs.kunnr作为客户,
                           cli.name1 ||  char(32)||  cli.name2为nombre_cliente,
                           bs.vbeln作为pedido,
                           vsc.valor为valor_sin_conf,
                           bs.waerk作为waers,
                           vds.valor作为valor_despacho,
                           vmr.netwr为valor_mcia_rep,
                           vad.valor作为valor_aduana,
                           bs.matnr作为材料,
                           bs.kwmeng为cant_pedido,
                           ctc.cant_confirmada,
                           censantidad为cant_entrega,
                           ctr.cantidad为cant_transp,
                           cts.cantidad为cant_transp_sal,
                           bs.meins
                    来自:lt_base_info为bs
                    内部连接:lt_v_sin_conf作为vsc在vsc.vbeln = bs.vbeln和
                                                        vsc.matnr = bs.matnr和
                                                      vsc.row_number = bs.row_number
                    内部连接:e_desp作为vds.vbeln = bs.vbeln上的vds
                                                 vds.matnr = bs.matnr和
                                                 vds.row_number = bs.row_number
                    左外部连接:lt_v_mcia_rep作为vmr.vbeln = bs.vbeln上的vmr
                左外部连接:lt_valor_aduana作为vad.vbelv_e = bs.vbeln上的vad和
                                                          vad.matnr_l = bs.matnr和
                                                      vad.row_number = bs.row_number
                    内部连接:lt_cant_conf作为ctc.vbeln = bs.vbeln上的ctc
                                                       ctc.matnr = bs.matnr和
                                                       ctc.row_number = bs.row_number
                    内部联接:lt_cant_entr作为cen.vbelv_e = bs.vbeln上的cen
                                                          cen.matnr_l = bs.matnr和
                                                       cen.row_number = bs.row_number
                   左外部连接:lt_cant_tran作为ctr.vbelv_e = bs.vbeln上的ctr
                                                          ctr.matnr_l = bs.matnr和
                                                      ctr.row_number = bs.row_number
                 左外部连接:lt_cant_tran_s作为cts.vbelv_e = bs.vbeln上的cts
                                                    cts.matnr_l = bs.matnr和
                                                     cts.row_number = bs.row_number
                    内部连接:lt_cli_data作为cli.clinnr = bs.kunnr上的cli;
 

并且您可以看到,如果将此select与原始文章的语句进行比较,唯一改变的是现在的联接是通过exporting参数而不是table变量完成的。

通过这种方式声明表变量,与导出参数相同

声明lt_v_despacho表(vbeln" $ ABAP.type(vbeln_va)",
                                       matnr" $ ABAP.type(matnr)",
                                       勇气" $ ABAP.type(ze_despacho)",
                                       row_number smallint);
 

因此,现在我的程序可以工作了,但是我仍然不知道只对表变量执行联接的select语句出了什么问题。

因为现在我必须返回一个无用的参数,所以我认为此解决方案不是一个好方法。

如果有人知道为什么,我想知道。

啊,在我忘记之前,我尝试向SAP寻求支持,因为Sandra Rosi感到很惊讶,但是他们告诉我说,仅当标准事务中存在Z事务时,他们才不支持Z事务。 如果客户为此支付了额外的钱,它们只会对Z交易有所帮助。

最诚挚的问候,

罗纳尔多·维埃拉(Ronaldo S. Vieira)

您好,桑德拉,谢谢您的回答。

在寻求SAP支持之前,我更喜欢先尝试SCN。

最诚挚的问候,

罗纳尔多·维埃拉(Ronaldo S. Vieira)

大简至美
5楼-- · 2020-09-08 08:53

避免在HR中进行奇怪的转储,有助于在LOAD-OF-PROGRAM上执行do_nothing(SAPFP50P)。

三十六小时_GS
6楼-- · 2020-09-08 08:52

错误 您收到的消息来自HANA索引服务器进程,因此如果我在您的位置,那就是我开始寻找原因和解决方案的地方。

检查索引服务器跟踪文件,查看是否存在任何已知错误。 您的与此错误相匹配的HANA版本。

SKY徐
7楼-- · 2020-09-08 08:40

您以"未答复"(或如今的等价形式,多年来一直没有收到此消息)的形式返回消息, 说明您不是在寻求有关Z程序的帮助,而是您认为自己发现了该语言中的错误。 如果他们可以解释为什么它按设计工作,那么很好。

我遇到了一个问题,如果您错过了功能模块的结束引号并进行了漂亮的打印,则编辑器将挂起。 第一次报告时,得到的回复与您相同。 我将票发回了-不,这是编辑器的问题。 然后他们回来说:"您需要添加结束语"。 那时我有点讽刺。 我把票发回去,说如果他们想再次阅读我的原始信息,他们会发现这很重要。 缺少引号时,精美的打印不应导致编辑器挂起。 几天后,我有点不高兴了。

你只是一直往后退。 我想我在这里的咖啡角也提到过,这可能有所帮助。 发生这种情况的原因是,最初没有一级支持人员来解决问题。 它们的存在是为了防止有害问题进入第二级及以后。 初级人员不太可能对技术知识有很好的了解,最有可能根据他们关闭自己的几个问题来衡量他们。 即

一周热门 更多>