在HANA上的BW中从BW转换调用HANA过程

2020-09-15 19:41发布

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

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


尊敬的专家,

我想从BW转换中的Expert例程调用HANA过程(用BW Schema中的HANA编写)。 我找不到任何示例。

我尝试输入一个参数,但出现错误=>声明错误。

我的情况是这样

 HDB语言SQLSCRIPT选项的按数据库过程进行的方法过程为只读。
  -在此处插入您的代码
  呼叫" _SYS_AFL"。" AFLBFL_CUMULATE_DECUMULATE_PROC"(:lt_input,:lt_output,1)
      outTab =选择
    I.客户,
    I.SALESORG,
    I.CUST_GROUP,
    I.DISTR_CHAN,
    I.SALES_OFF,
    I.SALES_GRP,
    卡蒙
    I.STAT_CURR,
    I.RECORDMODE,
    I.CALMONTH2,
    I.CALYEAR,
    I.INVCD_VAL,-输入值
    :lt_output作为CUMVALUE,---输出值
    I.STAT_CURR,
    ""作为记录,
    I.SQL__PROCEDURE__SOURCE__RECORD

 来自:inTab和我一样;
  errorTab =
                   选择""作为error_Text,
                           ''作为SQL__PROCEDURE__SOURCE__RECORD
                          从假人
                          其中dummy <>'X';
 终结法。
 ENDCLASS。

 

版本BW 7.5 HANA 1.0 SP 12

有什么帮助吗?

谢谢

Sascha

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

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


尊敬的专家,

我想从BW转换中的Expert例程调用HANA过程(用BW Schema中的HANA编写)。 我找不到任何示例。

我尝试输入一个参数,但出现错误=>声明错误。

我的情况是这样

 HDB语言SQLSCRIPT选项的按数据库过程进行的方法过程为只读。
  -在此处插入您的代码
  呼叫" _SYS_AFL"。" AFLBFL_CUMULATE_DECUMULATE_PROC"(:lt_input,:lt_output,1)
      outTab =选择
    I.客户,
    I.SALESORG,
    I.CUST_GROUP,
    I.DISTR_CHAN,
    I.SALES_OFF,
    I.SALES_GRP,
    卡蒙
    I.STAT_CURR,
    I.RECORDMODE,
    I.CALMONTH2,
    I.CALYEAR,
    I.INVCD_VAL,-输入值
    :lt_output作为CUMVALUE,---输出值
    I.STAT_CURR,
    ""作为记录,
    I.SQL__PROCEDURE__SOURCE__RECORD

 来自:inTab和我一样;
  errorTab =
                   选择""作为error_Text,
                           ''作为SQL__PROCEDURE__SOURCE__RECORD
                          从假人
                          其中dummy <>'X';
 终结法。
 ENDCLASS。

 

版本BW 7.5 HANA 1.0 SP 12

有什么帮助吗?

谢谢

Sascha

付费偷看设置
发送
5条回答
风早神人
1楼-- · 2020-09-15 19:48

嗨,

首先。 调用该过程(调用本身在代码中肯定是正确的)后,必须使用点逗号(;)结束。

呼叫" _SYS_AFL"。" AFLBFL_CUMULATE_DECUMULATE_PROC"(:lt_input,:lt_output,1); 

接下来,我猜您在调用该过程之前先填写lt_input表。

接下来,lt_output是一个表吗?

如果它是一个表,则必须在inTab和lt_output之间进行联接,并从lt_output中获取所需的列,例如:

 outTab =选择
    I.客户,
    I.SALESORG,
    I.CUST_GROUP,
    I.DISTR_CHAN,
    I.SALES_OFF,
    I.SALES_GRP,
    卡蒙
    I.STAT_CURR,
    I.RECORDMODE,
    I.CALMONTH2,
    I.CALYEAR,
    I.INVCD_VAL,-输入值
    LT_PROCEDURE_OUT.DESIRED_FIELD作为CUMVALUE,---输出值
    I.STAT_CURR,
    ""作为记录,
    I.SQL__PROCEDURE__SOURCE__RECORD
 来自:inTab as I
 左外部连接(或任何所需的合适连接):lt_output作为LT_PROCEDURE_OUT
 在....加入条件...;
 
小灯塔
2楼-- · 2020-09-15 19:57

安德烈,谢谢您的帮助。 我的来源是aDSO,目标也是aDSO。

我的情况; 我只想将" INVCD_VAL"的值累加到" CUMVALUE"。 我想我不明白,SQL过程如何工作。

我认为将值" INVCD_VAL"(输入参数)转到"过程",将进行累加并填充我的输出参数" CUMVALUE"。 为什么我应该将Procedure-Output加入我的目标aDSO?

谢谢

Sascha

蓋茨
3楼-- · 2020-09-15 19:49

嗨,

我不知道应该怎么做。

您必须调查一下,看看什么是输入参数。 它们是表还是标量?

根据您的发现,您必须调整您的sql脚本...

如果该过程的输出是一个表,则必须加入才能获得正确的结果。

BR,

闻人可可
4楼-- · 2020-09-15 19:49

嗨,安德烈,

我正在使用BFL程序" AFLBFL_CUMULATE_DECUMULATE_PROC"(链接 SAP BFL累积),它具有一个输入,一个输出参数和一个标志。

我的BW专家转换看起来像;

 HDB语言SQLSCRIPT选项的按数据库过程进行的方法过程为只读。
  CALL" _SYS_AFL"。" AFLBFL_CUMULATE_DECUMULATE_PROC"(:lt_input,:lt_output,1);
      outTab =选择
    I.客户,
    卡蒙
    .....
    I.STAT_CURR,
    I.RECORDMODE,
    I.INVCD_VAL,
    r.INVCD_VAL作为CUMVALUE,---输出值
    I.STAT_CURR,
    ""作为记录,
    I.SQL__PROCEDURE__SOURCE__RECORD
 从:inTab作为我内部加入:lt_output作为r
 ON I.CUSTOMER = R.CUSTOMER;
 .....
 .... 

inTab = aDSO(源),outTab = aDSO(目标)

但是我仍然收到声明错误。

谢谢

Sascha

N-Moskvin
5楼-- · 2020-09-15 20:01

您必须调查错误...

究竟是什么错误?

AMDP中最常见的错误是您没有坚持字段的相同(完全)顺序和外表的相同(完全)字段名称。

BR,

一周热门 更多>