*&---------------------------------------------------------------------*
*& Report Y_ABC_IP_TEST
*&
*&---------------------------------------------------------------------*
*& 校验IP与端口是否输入准确
*&
*&---------------------------------------------------------------------*
REPORT Y_ABC_IP_TEST.
PARAMETERS: P_IPV TYPE CHAR50.
START-OF-SELECTION.
DATA: LV_ANS. " 空,X
DATA: LV_MSG TYPE MSGTX. " 空,X
PERFORM FRM_CHECK_IPPORT USING P_IPV CHANGING LV_ANS LV_MSG.
MESSAGE S001(00) WITH LV_MSG.
*&---------------------------------------------------------------------*
*& Form FRM_CHECK_IPPORT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_P_IP text
* <--P_LV_ANS text
*----------------------------------------------------------------------*
FORM FRM_CHECK_IPPORT USING PV_P_IP
CHANGING CV_ANS CV_MSG.
DATA: LT_STR TYPE TABLE OF STRING WITH HEADER LINE.
DATA: LV_LINE TYPE I.
DATA: LV_PORT TYPE I.
DATA: L_CX_ROOT TYPE REF TO CX_ROOT.
DATA: L_ERROR_MSG TYPE STRING.
REPLACE ALL OCCURRENCES OF ':' IN P_IPV WITH ':'.
SPLIT PV_P_IP AT ':' INTO TABLE LT_STR.
DESCRIBE TABLE LT_STR LINES LV_LINE.
IF LV_LINE NE 2. " IP 和 端口
CV_ANS = 'E'.
CV_MSG = 'IP与端口格式输入有误,请使用“:”连接IP与端口'.
RETURN.
ENDIF.
READ TABLE LT_STR INDEX 1.
PERFORM FRM_CHECK_1IP USING LT_STR CHANGING CV_ANS CV_MSG.
CHECK CV_ANS = ''.
READ TABLE LT_STR INDEX 2.
PERFORM FRM_CHECK_2PORT USING LT_STR CHANGING CV_ANS CV_MSG.
ENDFORM. " FRM_CHECK_IPPORT
*&---------------------------------------------------------------------*
*& Form FRM_CHECK_2PORT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM FRM_CHECK_2PORT USING PV_PORT
CHANGING CV_ANS
CV_MSG.
CHECK PV_PORT IS NOT INITIAL.
DATA: MATCHER2 TYPE REF TO CL_ABAP_MATCHER,
MATCH2 TYPE C LENGTH 1.
MATCHER2 = CL_ABAP_MATCHER=>CREATE( PATTERN = '^[0-9]*[1-9][0-9]*$'
TEXT = PV_PORT ).
MATCH2 = MATCHER2->MATCH( ).
IF MATCH2 EQ ''.
CV_ANS = 'E'.
CV_MSG = '端口格式输入有误'.
RETURN.
ENDIF.
IF PV_PORT NOT BETWEEN 1 AND 65535.
CV_ANS = 'E'.
CV_MSG = '端口不在有效范围内'.
RETURN.
ENDIF.
ENDFORM. " FRM_CHECK_2PORT
*&---------------------------------------------------------------------*
*& Form FRM_CHECK_1IP
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->PV_IP text
* <--CV_ANS text
* <--CV_MSG text
*----------------------------------------------------------------------*
FORM FRM_CHECK_1IP USING PV_IP
CHANGING CV_ANS
CV_MSG.
DATA: MATCHER1 TYPE REF TO CL_ABAP_MATCHER,
MATCH1 TYPE C LENGTH 1.
MATCHER1 = CL_ABAP_MATCHER=>CREATE( PATTERN = '((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)'
TEXT = PV_IP ).
MATCH1 = MATCHER1->MATCH( ).
IF MATCH1 EQ ''.
CV_ANS = 'E'.
CV_MSG = 'IP格式输入有误'.
RETURN.
ENDIF.
ENDFORM. " FRM_CHECK_1IP
ABAP【正则方式】校验【IP与端口】是否输入准确
于 2021-06-05 10:39:59 首次发布