CONVERSION_EXIT_ALPHA_OUTPUT
: 변수 값 ALPH CONVERSION 함수.
**진짜 많이 쓰임- 오더 번호 데이터 타입, 길이가 각 회사마다 다를 수 있기 때문**
: 데이터 값의 0을 빼거나 추가해주는 함수.
DATA LV_NUM TYPE N LENGTH 5.
DATA LV_CHAR TYPE C LENGTH 5.
LV_NUM = 5. "00005"
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
EXPORTING
INPUT = LV_NUM "00005"
IMPORTING
OUTPUT = LV_CHAR. "5"
CL_DEMO_OUTPUT=>DISPLAY( LV_CHAR ).
"같은 의미의 신문법 사용"
LV_CHAR = |{ LV_NUM ALPHA = OUT }|.
CL_DEMO_OUTPUT=>DISPLAY( LV_CHAR ).

CONVERSION_EXIT_ALPHA_INPUT
DATA LV_CHAR TYPE C LENGTH 5.
LV_CHAR = 5.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
INPUT = LV_CHAR "5"
IMPORTING
OUTPUT = LV_CHAR. "00005"
CL_DEMO_OUTPUT=>DISPLAY( LV_CHAR ).
"신문법"
LV_CHAR = |{ LV_CHAR ALPHA = IN }|.
CL_DEMO_OUTPUT=>DISPLAY( LV_CHAR ).

FI_ALPHA_CONVERT
DATA: GV_MATNR(18),
TMP_MATNR LIKE MARA-MATNR.
GV_MATNR = '100060001'.
CALL FUNCTION 'FI_ALPHA_CONVERT'
EXPORTING
I_STRING = GV_MATNR
IMPORTING
E_STRING = TMP_MATNR.
IF SY-SUBRC EQ 0.
WRITE: 'TMP_MATNR: ', TMP_MATNR.
ENDIF.

END_OF_MONTH_DETERMINE
: 특정일자의 해당월의 마지막 일을 가져오는 함수.
DATA TMP_LASTDAY(2).
CALL FUNCTION 'END_OF_MONTH_DETERMINE'
EXPORTING
DATUM = SY-DATUM "기준이 되는 일자
IMPORTING
TT = TMP_LASTDAY "해당월의 마지막 일(28,29,30,31)
EXCEPTIONS
OTHERS = 1.
IF SY-SUBRC = 0.
WRITE: '해당 월의 마지막 일: ', TMP_LASTDAY.
ENDIF.

RH_PM_CONVERT_DATE_TO_MONTH
: 두 일자 사이의 개월 수를 계산하는 함수.
DATA: GV_BEGDA TYPE P1000-BEGDA,
GV_ENDDA TYPE P1000-BEGDA VALUE '20230506',
ACT_MONTHS(2) TYPE N.
GV_BEGDA = SY-DATUM.
CALL FUNCTION 'RH_PM_CONVERT_DATE_TO_MONTH'
EXPORTING
BEGDA = GV_BEGDA "시작일자
ENDDA = GV_ENDDA "종료일자
IMPORTING
MONTHS = ACT_MONTHS "개월수
* EXCEPTIONS
* INVALID_BEGDA = 1
* OTHERS = 2
.
IF SY-SUBRC EQ 0.
WRITE: '정규직 전환까지...', ACT_MONTHS, '개월 남았다.'.
ENDIF.

CLOI_PUT_SIGN_IN_FRONT
: 뒤에 붙은 '-' 부호를 앞으로 빼주는 함수.
DATA GV_VALUE(5).
GV_VALUE = '1234-'.
CALL FUNCTION 'CLOI_PUT_SIGN_IN_FRONT'
CHANGING
VALUE = GV_VALUE.
IF SY-SUBRC = 0.
WRITE: '결과: ', GV_VALUE.
ENDIF.

STRING_REPLACE
: 문자열에서 특정문자(열)변경 및 삭제 함수.
**핸드폰번호 010-1234-5678 에서 '-' 없애기**
DATA: T_TEXT(30) VALUE '031-370-9164',
NO_DASH(30).
CALL FUNCTION 'STRING_REPLACE'
EXPORTING
PATTERN = '-' " 변경할 문자열
SUBSTITUTE = '' " 변경될 문자열
* MAX_REPLACES = 0 *
IMPORTING
NUMBER_OF_REPLACES = NO_DASH
CHANGING
TEXT = T_TEXT " 문자열이 들어있는 문장
EXCEPTIONS
WRONG_STRING_LENGTH = 1
OTHERS = 2.
IF SY-SUBRC = 0.
WRITE: '결과: ', T_TEXT.
ENDIF.

EVAL_FORMULA
: 문자열로된 계산식의 계산값을 RETURN 하는 함수
DATA: AAA TYPE P.
CALL FUNCTION 'EVAL_FORMULA'
EXPORTING
FORMULA = '(10+10)*10/10-7*(5+3)/7'
IMPORTING
VALUE = AAA.
IF SY-SUBRC = 0.
WRITE: 'RESULT: ', AAA.
ENDIF.

NUMERIC_CHECK
: 문자열에 있는 값이 숫자만으로 되어있는지 문자가 포함됐는지 체크하는 함수
DATA: STRING_1(20) TYPE C, STRING_1_TYPE(4) TYPE C,
STRING_2(20) TYPE C, STRING_2_TYPE(4) TYPE C,
STRING_3(20) TYPE C, STRING_3_TYPE(4) TYPE C.
STRING_1 = '12345678901234567890'.
STRING_2 = 'abcdefg우리나라만세z'.
STRING_3 = 'abcdAAA34557azzidfll'.
CALL FUNCTION 'NUMERIC_CHECK'
EXPORTING
STRING_IN = STRING_1
IMPORTING
HTYPE = STRING_1_TYPE.
CALL FUNCTION 'NUMERIC_CHECK'
EXPORTING
STRING_IN = STRING_2
IMPORTING
HTYPE = STRING_2_TYPE.
CALL FUNCTION 'NUMERIC_CHECK'
EXPORTING
STRING_IN = STRING_3
IMPORTING
HTYPE = STRING_3_TYPE.
IF SY-SUBRC = 0.
WRITE: 'STRING_1: ', STRING_1_TYPE,/
'STRING_2: ', STRING_2_TYPE,/
'STRING_3: ', STRING_1_TYPE.
ENDIF.

FIMA_NUMERICAL_VALUE_ROUND
: 반올림, 올림, 버림을 쉽게 할 수 있는 함수
DATA: INPUT TYPE F,
OUTPUT TYPE F,
OUTPUT_N(5) TYPE N.
INPUT = '1276.65'.
CALL FUNCTION 'FIMA_NUMERICAL_VALUE_ROUND'
EXPORTING
* I_RTYPE = ' ' "반올림 "3개의 값 중 하나 EXPORTING"
I_RTYPE = '+' "올림
* I_RTYPE = '-' "버림
I_RUNIT = '1' "기준자리 수
I_VALUE = INPUT
IMPORTING
E_VALUE_RND = OUTPUT.
OUTPUT_N = OUTPUT. "정확한 길이 필요. 없다면 뒤에 계속 0임"
IF SY-SUBRC = 0.
WRITE: 'OUTPUT: ', OUTPUT_N.
ENDIF.

HOLIDAY_GET
: 회사달력의 공휴일만 가져오는 함수.
DATA: IT_HOLI LIKE TABLE OF ISCAL_DAY,
LV_TO TYPE SCAL-DATE,
LV_FROM TYPE SCAL-DATE.
LV_FROM = '20250101'.
LV_TO = SY-DATUM.
CALL FUNCTION 'HOLIDAY_GET'
EXPORTING
HOLIDAY_CALENDAR = 'KR' " 회사달력지정
FACTORY_CALENDAR = 'KR' " 회사달력지정
DATE_FROM = LV_FROM " FROM DATE
DATE_TO = LV_TO " TO DATE
TABLES
HOLIDAYS = IT_HOLI. " 공휴일만 저장된 ITAB.
IF SY-SUBRC EQ 0.
CL_DEMO_OUTPUT=>DISPLAY( IT_HOLI ).
ENDIF.

SAPGUI_PROGRESS_INDICATOR
: 하단의 상태바에 특정문자열을 표시해 주는 함수.
" 조회조건 자재 추출
SELECT MATNR, ' ' AS INDEX
FROM MARA
WHERE MATNR IN @S_MATNR
ORDER BY MATNR
INTO TABLE @DATA(LT_MARA).
" 총 ITAB 라인 ㅅ
DESCRIBE TABLE LT_MARA LINES DATA(LV_LINES).
" 데이터 가공 진행 상태 표시
LOOP AT LT_MARA ASSIGNING FIELD-SYMBOL(<FS_MARA>).
DATA(LV_INDEX) = SY-TABIX. " N 번째
<FS_MARA>-INDEX = SY-TABIX.
DATA(LV_PROGRESSS) = LV_INDEX * 100 / LV_LINES. " 총 N개의 ITAB 라인중 N 퍼센트
" PROGRESS INDICATOR - +10%마다 진행 상태 표시
IF LV_PROGRESSS MOD 10 EQ 0.
TRY.
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
EXPORTING
PERCENTAGE = LV_PROGRESSS
TEXT = |처리 중... { LV_PROGRESSS }% ( { LV_INDEX } / { LV_LINES } )|.
CATCH CX_ROOT.
ENDTRY.
ENDIF.
ENDLOOP.
CL_DEMO_OUTPUT=>DISPLAY( LT_MARA ).

POPUP_TO_GET_ONE_VALUE
: 하나의 입력값을 받는 POPUP창 띄우는 함수
DATA: LV_ANSWER(1),
LV_VALUE1 LIKE SPOP-VARVALUE1.
CALL FUNCTION 'POPUP_TO_GET_ONE_VALUE'
EXPORTING
TEXTLINE1 = '이름을 입력하세요'
TEXTLINE2 = '이름 입력 후 Continue 클릭하면 입력됩니다'
TEXTLINE3 = 'Cancel 클릭하면 이름 입력 취소됩니다'
TITEL = '팝업창'
VALUELENGTH = 10 “입력받을 길이
IMPORTING
ANSWER = LV_ANSWER “ 선택버튼 종류 " 계속 = 'J', 취소 = 'A'
VALUE1 = LV_VALUE1. “ 입력된 값

POPUP 관련 함수들
POPUP_TO_CONFIRM_LOSS_OF_DATA - user가 delete명령같은 것을 실행할 때 dialog box생성한다.
POPUP_TO_CONFIRM_STEP - user가 다음 단계로 실행을 원할 때 dialog box 를 생성한다.
POPUP_TO_CONFIRM_WITH_MESSAGE - user가 수행중 어떤 특정한 결정을 내리는 부분에 있을 때, 정보제공 dialog box를 생성한다.
POPUP_TO_CONFIRM_WITH_VALUE - user가 특정한 object로 작업을 수행하기를 원할 때 question box를 생성한다.
POPUP_TO_DECIDE - user에게 radio button을 제공하여 결정하게 한다.
POPUP_TO_DECIDE_WITH_MESSAGE - user에게 분류된 text를 제공함으로써 결정하게 하는 dialog box를 생성한다.
POPUP_TO_DISPLAY_TEXT - 두 줄로 된 dialog box를 생성한다.POPUP_TO_SELECT_MONTH - 달을 선택하게 한다.
POPUP_WITH_TABLE_DISPLAY - 유저에게 선택한 table을 table line값과 함께 보여준다.
POPUP_TO_FILL_COMMAND_LINE – 입력값을 받을 수 있는 입력 필드가 생긴다.
CHAR_FLTP_CONVERSION
: 소수점이 있는 문자열을 DECIMAL TYPE으로 변환하는 함수
DATA: GV_TEXT(10) VALUE '2345.6708',
GV_DECIMAL(10) TYPE P DECIMALS 3.
CALL FUNCTION 'CHAR_FLTP_CONVERSION'
EXPORTING
STRING = GV_TEXT "CHAR 변수
IMPORTING
FLSTR = GV_DECIMAL. "DEC 변수

'SAP' 카테고리의 다른 글
| 원하는 CELL 시작 위치 설정 [ SET_CURRENT_CELL_BASE ] (0) | 2025.12.09 |
|---|---|
| Field Catalog NO_OUT (0) | 2025.12.08 |
| NEW SYNTAX (0) | 2025.12.05 |
| Field Catalog / Layout / Sort (0) | 2025.12.05 |
| Hotspot_click 핫해 핫해 (0) | 2025.12.05 |