自定义功能可从MATNR列中删除前导零

2020-08-17 01:57发布

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

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


大家好。 我是SAP HANA的新手。 以前,我曾从事Oracle DB的研究。 我们需要将数据仓库从Oracle迁移到HANA数据库。我需要在HANA DB中创建一个自定义函数,该函数接受输入的Material Number(即varchar字段),并且应检查输入字段是否仅包含数字。 如果是,应修剪前导零。 否则,应按原样返回物料ID。 这是该函数的Oracle变体。 请提供相同的等效HANA变体。

创建或替换可编辑功能ERPDEV.FN_CONVERTMATNR(VARCHAR2中的MATNR_P)返回VARCHAR2是MATNR_V VARCHAR2(100); 开始matnr_v:= to_number(matnr_p); MATNR_V:= LTRIM(MATNR_P,'0'); 返回MATNR_V; 当value_error THEN MATNR_V:= MATNR_P时例外 返回MATNR_V; 结束; /将ERPDEV.FN_CONVERTMATNR上的GRANT执行到MIGDEV/将ERPDEV.FN_CONVERTMATNR上的GRANT执行到JDEDEV/

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

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


大家好。 我是SAP HANA的新手。 以前,我曾从事Oracle DB的研究。 我们需要将数据仓库从Oracle迁移到HANA数据库。我需要在HANA DB中创建一个自定义函数,该函数接受输入的Material Number(即varchar字段),并且应检查输入字段是否仅包含数字。 如果是,应修剪前导零。 否则,应按原样返回物料ID。 这是该函数的Oracle变体。 请提供相同的等效HANA变体。

创建或替换可编辑功能ERPDEV.FN_CONVERTMATNR(VARCHAR2中的MATNR_P)返回VARCHAR2是MATNR_V VARCHAR2(100); 开始matnr_v:= to_number(matnr_p); MATNR_V:= LTRIM(MATNR_P,'0'); 返回MATNR_V; 当value_error THEN MATNR_V:= MATNR_P时例外 返回MATNR_V; 结束; /将ERPDEV.FN_CONVERTMATNR上的GRANT执行到MIGDEV/将ERPDEV.FN_CONVERTMATNR上的GRANT执行到JDEDEV/

付费偷看设置
发送
3条回答
黑丝骑士
1楼-- · 2020-08-17 02:27

如果您搜索IS_NUMERIC函数的示例,则可以轻松地自己编写转换函数。

我敢肯定,我已经写了一篇关于该函数的博客文章...

何必丶何苦呢
2楼-- · 2020-08-17 02:08

检查SAP HANA DB帮助或Google将提供答案。

95年老男孩
3楼-- · 2020-08-17 02:12

您好 Sai Tejasvi

下面是为标量函数创建的原型,该函数接受" InputString"并通过比较ASCII对其进行处理以获取"唯一数字"部分-" OnlyNumber"。

下一步," OnlyNumber"将保留" Inputstring"的数字部分。

如果输入字符串与" OnlyNumber"相同,则修剪前导零,否则显示输入字符串。

功能 :: SF_TEST(IN InputString NVARCHAR(100))
 返回值OutputValue NVARCHAR(100)
 语言SQLSCRIPT
 SQL安全调用者
 开始
   DECLARE位置,长度INT;
   OnlyNumber:='';
   位置:= 1;
   长度:= LENGTH(:InputString);
   当(位置<=长度)做
     IF(ASCII(SUBSTRING(:InputString,position,1))> = 48 AND ASCII(SUBSTRING(:InputString,position,1))<= 57)然后
       OnlyNumber:= OutputNumber ||  SUBSTRING(:InputString,position,1);
     万一;
     位置:=位置+1;
   结束时;

    IF:InputString = OnlyNumber
    然后OutputValue = ltrim(:InputString,'0');
    else OutputValue =:InputString;
   万一;

 END; 

一周热门 更多>