*&---------------------------------------------------------------------*
*& Form FRM_CHECK_FONT_SINGLE
*&---------------------------------------------------------------------*
* 半角检查
*----------------------------------------------------------------------*
* -->I_TEXT 检查文字
*
*----------------------------------------------------------------------*
FORM FRM_CHECK_FONT_SINGLE USING VALUE(I_TEXT) TYPE STRING
CHANGING VALUE(O_FLG_SINGLE) TYPE CHAR1.
DATA:
LW_STR_CHAR TYPE I, " 定義長
LW_STR_OUT TYPE I. " 出力長
CLEAR:
O_FLG_SINGLE.
* 检查文字是空的时候,返回处理
IF I_TEXT IS INITIAL.
RETURN.
ENDIF.
* 取得定义长度
LW_STR_CHAR = STRLEN( I_TEXT ).
* 取得输出长度
CALL METHOD
CL_ABAP_LIST_UTILITIES=>DYNAMIC_OUTPUT_LENGTH
EXPORTING
FIELD = I_TEXT
RECEIVING
LEN = LW_STR_OUT.
* 定义长与与输出长不相等,代表有全角文字混入
IF LW_STR_CHAR <> LW_STR_OUT.
O_FLG_SINGLE = CNS_FLG_ON.
ENDIF.
ENDFORM. " FRM_CHECK_FONT_SINGLE
*&---------------------------------------------------------------------*
*& Form FRM_CHECK_FONT_DOUBLE
*&---------------------------------------------------------------------*
* 全角检查
*----------------------------------------------------------------------*
* -->I_TEXT 检查文字
*
*----------------------------------------------------------------------*
FORM FRM_CHECK_FONT_DOUBLE USING VALUE(I_TEXT) TYPE STRING
CHANGING VALUE(O_FLG_DOUBLE) TYPE CHAR1.
DATA:
LW_STR_CHAR TYPE I, " 定義長
LW_STR_OUT TYPE I. " 出力長
CLEAR:
O_FLG_DOUBLE.
* 检查文字是空的时候,返回处理
IF I_TEXT IS INITIAL.
RETURN.
ENDIF.
* 取得定义长度
LW_STR_CHAR = STRLEN( I_TEXT ).
* 全角byte长取得
LW_STR_CHAR = LW_STR_CHAR * 2.
* 取得输出长度
CALL METHOD
CL_ABAP_LIST_UTILITIES=>DYNAMIC_OUTPUT_LENGTH
EXPORTING
FIELD = I_TEXT
RECEIVING
LEN = LW_STR_OUT.
* 定义长与与输出长不相等,代表有半角文字混入
IF LW_STR_CHAR <> LW_STR_OUT.
O_FLG_DOUBLE = CNS_FLG_ON.
ENDIF.
ENDFORM. " FRM_CHECK_FONT_DOUBLE