ABAP 프로그램을 개발하다 보면 자주 사용하는 것은 아니지만 가끔 난수(Random) 값이 필요한 경우가 있습니다.
필요한 난수가 숫자인 경우도 있고, 문자열인 경우도 있습니다.
그리고 지정된 자릿수의 숫자 또는 문자열의 난수가 필요한 경우도 있습니다.
SAP에서 기본적으로 제공하는 RANDOM 관련 함수가 의외로 많이 있습니다. 비즈니스 환경에 따라 Random 값을 많이 사용하는 경우가 있는 듯 합니다.
이번 글에서는 SAP에서 제공하는 Random 관련 함수(Function Module) 중에서 비교적 사용성이 많아 보이는 함수들을 위주로 ABAP에서 난수를 생성하는 RANDOM 관련 함수 모음에 대해 설명해 보겠습니다.
RANDOM_I2
– Function : RANDOM_I2 (rnd_min ~ rnd_max 사이의 숫자 리턴)
– 사용 예 :
CALL FUNCTION ‘RANDOM_I2’ “ * EXPORTING * rnd_min = 0 ” datatype-integer2 * rnd_max = 100 ” datatype-integer2 IMPORTING rnd_value = rnd_data. ” datatype-integer2 |
RANDOM_AMOUNT
– Function : RANDOM_AMOUNT (rnd_min ~ rnd_max 사이의 화폐단위에 대한 금액 리턴)
– 사용 예 :
CALL FUNCTION ‘RANDOM_AMOUNT’ “ * EXPORTING * rnd_min = ‘-10000000’ ” bbseg-wrbtr * rnd_max = ‘10000000’ ” bbseg-wrbtr * valcurr = ‘KRW’ ” tcurx-currkey IMPORTING rnd_amount = rnd_data. ” bbseg-wrbtr |
RANDOM_I4
– Function : RANDOM_I4 (rnd_min ~ rnd_max 사이의 숫자 리턴)
– 사용 예 :
CALL FUNCTION ‘RANDOM_I4’ “ * EXPORTING * rnd_min = 0 ” datatype-integer4 * rnd_max = 100 ” datatype-integer4 IMPORTING rnd_value = rnd_data. ” datatype-integer4 |
GENERAL_GET_RANDOM_INT
– Function : GENERAL_GET_RANDOM_INT (0 ~ range값 범위의 숫자 리턴)
– 사용 예 :
CALL FUNCTION ‘GENERAL_GET_RANDOM_INT’ “Provides a random int within 0 and RANGE EXPORTING range = 9999 ” i The random int will be <= range IMPORTING random = rnd_data. ” i Random value |
GENERAL_GET_RANDOM_PWD
– Function : GENERAL_GET_RANDOM_PWD (문자와 숫자가 섞인 문자열 리턴)
– 사용 예 :
CALL FUNCTION ‘GENERAL_GET_RANDOM_PWD’ “Creates a random (alpha)-numeric password EXPORTING number_chars = 10 ” i Specifies the number of characters IMPORTING random_pwd = rnd_data. ” string Random password of (alpha)-numeric characters |
GENERAL_GET_RANDOM_STRING
– Function : GENERAL_GET_RANDOM_STRING (문자로만 이루어진 문자열 리턴)
– 사용 예 :
CALL FUNCTION ‘GENERAL_GET_RANDOM_STRING’ “Creates a random strings EXPORTING number_chars = 10 ” i Specifies the number of generated chars IMPORTING random_string = rnd_data. ” string Generated string |
QF05_RANDOM_INTEGER
– Function : QF05_RANDOM_INTEGER
– 사용 예 :
CALL FUNCTION ‘QF05_RANDOM_INTEGER’ “Random (whole) number * EXPORTING * ran_int_max = 100 ” qf00-ran_int Greatest required value * ran_int_min = 1 ” qf00-ran_int Smallest required value IMPORTING ran_int = rnd_data ” qf00-ran_int Random number EXCEPTIONS INVALID_INPUT = 1. ” RAN_INT_MIN > RAN_INT_MAX |
GENERATE_SEC_RANDOM
– Function : GENERATE_SEC_RANDOM (length 숫자의 2배 길이에 해당하는 문자열 리턴)
– 사용 예 :
CALL FUNCTION ‘GENERATE_SEC_RANDOM’ “ EXPORTING length = 16 ” i IMPORTING random = rnd_data ” xstring EXCEPTIONS INVALID_LENGTH = 1 “ NO_MEMORY = 2 “ INTERNAL_ERROR = 3 . “ |
SXMS_CREATE_RANDOM_NUMBER
– Function : SXMS_CREATE_RANDOM_NUMBER (4자리 숫자 리턴)
– 사용 예 :
CALL FUNCTION ‘SXMS_CREATE_RANDOM_NUMBER’ “ * EXPORTING * messageguid = ” sxmsmguid Integration Engine: Message ID IMPORTING random_number = rnd_data. ” int4 |
CACS_RANDOM_I4
– Function : CACS_RANDOM_I4 (rnd_min ~ rnd_max 사이의 숫자 리턴)
– 사용 예 :
CALL FUNCTION ‘CACS_RANDOM_I4’ “ * EXPORTING * rnd_min = 0 ” integer4 * rnd_max = 100 ” integer4 IMPORTING rnd_value = rnd_data. ” integer4 |
ISU_RANDOM_INTEGER
– Function : ISU_RANDOM_INTEGER
– 사용 예 :
CALL FUNCTION ‘ISU_RANDOM_INTEGER’ “ * EXPORTING * ranint_max = 99 ” regen-maxcount IMPORTING ranint_number = rnd_data. ” regen-maxcount |
※ 함께 읽으면 도움이 될 만한 다른 포스팅 글입니다.
이 글이 도움이 되었기를 바랍니다. ^-^