1. 程式人生 > >ABAP自定義擷取字串長度函式

ABAP自定義擷取字串長度函式

SAP 中strlen()只能計算字串的個數,不能計算含有中文字串的長度,如字串“SAP大波霸”,strlen('SAP大波霸') = 6,其實真實長度為3+3*2 = 9。
我們可以通過cl_abap_list_utilities=>dynamic_output_length來精確獲取字串長度,下面我寫了一個擷取字串長度的函式,供參考:
FUNCTION zotfm001.
*"----------------------------------------------------------------------
*"*"本地介面:
*"  IMPORTING
*"     VALUE(I_STRING) TYPE  STRING
*"     VALUE(I_STRLEN) TYPE  I
*"  EXPORTING
*"     VALUE(E_STRING1) TYPE  STRING
*"     VALUE(E_STRING2) TYPE  STRING
*"----------------------------------------------------------------------
  DATA:lv_char TYPE string,
       lv_len  TYPE i,
       lv_st1  TYPE i,
       lv_st2  TYPE i,
       lv_str  TYPE i.

  CHECK i_string IS NOT INITIAL AND i_strlen IS NOT INITIAL.
  lv_str = strlen( i_string ).

  DO.
    IF lv_str >= sy-index.
      lv_char = i_string+0(sy-index).
      CALL METHOD cl_abap_list_utilities=>dynamic_output_length
        EXPORTING
          field = lv_char
        RECEIVING
          len   = lv_len.
      IF lv_len >= i_strlen.
        e_string1 = lv_char.

        lv_st1 = strlen( lv_char ).
        lv_st2 = lv_str - lv_st1.
        e_string2 = i_string+lv_st1(lv_st2).
        EXIT.
      ENDIF.
    ELSE.
      e_string1 = i_string.
      e_string2 = ''.
      EXIT.
    ENDIF.
  ENDDO.

ENDFUNCTION.

測試:
I_STRING:SAP大波霸
I_STRLEN:5

E_STRING1:SAP大
E_STRING2:波霸

相關推薦

ABAP定義擷取字串長度函式

SAP 中strlen()只能計算字串的個數,不能計算含有中文字串的長度,如字串“SAP大波霸”,strlen('SAP大波霸') = 6,其實真實長度為3+3*2 = 9。 我們可以通過cl_abap_list_utilities=>dynamic_output_

hive中定義函式定義json字串解析函式

hive中如何定義自己的函式 寫一個Java 程式,實現想要的函式功能 1.匯入hive安裝目錄的lib目錄的包 2新建一個類繼承 UDF類 3.過載父類中evaluate方法; 4.寫下自己的邏輯 package test; import

定義分割字串函式

create function [dbo].[f_split] ( @c varchar(2000),--需要分割的字串(例如:1,2,3,4,5 我|和|你) @split varchar(2)--分隔符(例如 , | $) ) returns @t table(co

字串長度函式的區別和比較

            程式設計過程中,我們需要用到函式用來處理我們的字串長度。但是,隨著計算機位數的不斷擴充套件,之前的很多函式對於計算字串長度的功能也已經適用範圍有限。所以,出現了很多的新的函式用來應對不同使用環境下的字串處理

JS擷取字串長度練習

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>擷取字串長度</title> </head> <body> &

js的正則定義金額輸入驗證函式

名稱:正則驗證金額函式方法 描述:自定義函式驗證金額 作用:可驗證 90與90.00,及判斷是否是1個小數點。 js程式碼: function is_money(s) { var reg_sum = "^[0-9]+[\.][0-9]{0,3}$";

sql注入擷取字串 Sql注入擷取字串常用函式

Sql注入擷取字串常用函式          在sql注入中,往往會用到擷取字串的問題,例如不回顯的情況下進行的注入,也成為盲注,這種情況下往往需要一個一個字元的去猜解,過程中需要用到擷取字串。本文中主要列舉三

Hive面試題:請寫出你在工作中定義過的udf函式,簡述定義步驟

步驟: 1.extends UDF,實現evaluate() 2.add JAR /home/hadoop/hivejar/udf.jar; 3.create temporary function tolowercase as 'com.ghgj.hive.udf.ToLowerCa

定義的log列印函式(C++版本,可選列印優先順序及輸出到檔案)

log列印函式,功能如講解如下: 1 可控制巨集COUT_LEVEL決定log,輸出等級,預設為3,輸出ULOGE,ULOGW,ULOGI 2 可控制巨集FS_IN是否輸出到檔案,可通過巨集FILE_LEVEL決定輸出等級,預設為3,檔案路徑為當前路徑,名字預設為outp

Sql注入擷取字串常用函式--mid,substr,left

在sql注入中,往往會用到擷取字串的問題,例如不回顯的情況下進行的注入,也成為盲注,這種情況下往往需要一個一個字元的去猜解,過程中需要用到擷取字串。本文中主要列舉三個函式和該函式注入過程中的一些用例。Ps;此處用mysql進行說明,其他型別資料庫請自行檢測。 三大法寶:

Vue定義指令封裝節流函式的方法示例

節流函式是web前端開發中經常用到的一個開發技巧,在input實時搜尋,滾動事件等,為了避免過多消耗效能,我們都會使用節流函式.在《JavaScript高階程式設計》一書中有這樣的一個例子: function throttle (method, context) { clearTimeout((metho

Python 定義裝飾器與函式的可變引數

1.函式的可變引數 參考來源 def f(*args, **kw): *:代指元組,長度不限 **:代表鍵值對,個數不限 def f(*args, **kw): print len(args) print args for i in kw:

pandas 學習彙總13 - 函式應用- 將定義或其他庫函式應用於Pandas物件( tcy)

Pandas函式應用- 將自定義或其他庫函式應用於Pandas物件(pipe,apply,applymap,map,agg) 2018/12/5   1.函式:    # 表函式應用: df.pipe(func, *args, **kwarg

Presto-定義UDF例項(標量函式)

背景介紹 這篇文章主要說明一下關於Presto中UDF的開發。這個例項中的自定方法的邏輯很簡單,只是傳如一個字串,然後在字串前面拼裝一個Hello,只是為了說明如何去自己實現一個Scalar Function。 下面是具體步驟及程式碼 1.建立Maven工程 p

Android中定義TabLayout指示器長度

效果圖: MainActivity.java檔案 public class MainActivity extends AppCompatActivity { @Override protected void onCreate(@Nullabl

Android定義View的建構函式

自定義View是Android中一個常見的需求,每個自定義的View都需要實現三個基本的建構函式,而這三個建構函式又有兩種常見的寫法。 第一種 每個建構函式分別呼叫基類的建構函式,再呼叫一個公共的初始化方法做額外初始化。 public class MyView extends ListView {

oracle獲取字串長度函式length()和hengthb()

oracle獲取字串長度函式length()和hengthb()lengthb(string)計算string所佔的位元組長度:返回字串的長度,單位是位元組length(string)計算string所佔的字元長度:返回字串的長度,單位是字元 對於單位元組字元,LENGTHB和LENGTH是一樣的.如可以用l

PHP內建的字串長度函式strlen mb_strlen

採用mb_strlen函式可以較好地解決這個問題。mb_strlen的用法和 strlen類似,只不過它有第二個可選引數用於指定字元編碼。例如得到UTF-8的字串$str長度,可以用 mb_strlen($str,'UTF-8')。如果省略第二個引數,則會使用PHP的內部編碼。內部編碼可以通過 mb_int

sizeof運算子與求字串長度函式strlen的區別

 sizeof運算子與求字串長度函式strlen的區別:  sizeof可以用於資料型別,也可以用於任意型別的變數;  strlen只能用於字串變數的長度,  用sizeod求字串長度時,是指整個字串

20190112-定義實現字串的操作方法,如strip,upper,title,ljust,center,zfill,find,rfind等

1:自定義實現strip()Python strip() 方法用於移除字串頭尾指定的字元(預設為空格或換行符)或字元序列演算法:strip()僅移除首尾的指定字元,不能移除中間的先從首部開始移除 def customerize_strip(s,value=' '): result =''