일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- SAP
- selection screen
- ABAP
- EXIT
- UTF-8
- Enhancement
- KOSA
- Standard Function
- 동적 쿼리
- 이명박
- 유닉스
- FI 용어정리
- List box
- alv 정형화
- gimp
- Java
- fi
- ole
- sapa
- 엑소버드
- function
- Smart Forms
- EUC-kr
- 스마트폼
- badi
- 가계부
- 오라클 함수
- 머니플랜
- ALV
- 방화벽
- Today
- Total
Drunken Lion
유용한 SAP Standard Function 본문
회사달력의 공휴일만 가져오는 함수.
DATA: IT_HOLI LIKE ISCAL_DAY OCCURS 0 WITH HEADER LINE.
LV_ALTIME = DATE_TO – DATE_FROM.
CALL FUNCTION 'HOLIDAY_GET'
EXPORTING
HOLIDAY_CALENDAR = 'E3' “회사달력지정
FACTORY_CALENDAR = 'E3' “회사달력지정
DATE_FROM = DATE_FROM “FROM DATE
DATE_TO = DATE_TO “TO DATE
* IMPORTING
* YEAR_OF_VALID_FROM =
* YEAR_OF_VALID_TO =
* RETURNCODE =
TABLES
HOLIDAYS = IT_HOLI. “공휴일만 저장된 ITAB.
* EXCEPTIONS
* FACTORY_CALENDAR_NOT_FOUND = 1
* HOLIDAY_CALENDAR_NOT_FOUND = 2
* DATE_HAS_INVALID_FORMAT = 3
* DATE_INCONSISTENCY = 4
* OTHERS = 5
IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ELSE.
DESCRIBE TABLE IT_HOLI LINES LINE. “LINE = 공휴일수
IF LINE <> 0.
LV_ALTIME = LV_ALTIME - LINE. “휴무일을 뺀 순수 작업일수
ENDIF.
ENDIF.
※ FROM DATE = TO DATE 인 경우 해당일자가 휴무일인지를 체크 할 수 있다.
특정일자의 달(月)의 마지막 일자를 가져오는 함수.
DATA LAST_DATE LIKE SY-DATUM.
CALL FUNCTION 'RP_LAST_DAY_OF_MONTHS'
EXPORTING
DAY_IN = SY-DATUM “기준이 되는 임의의 일자
IMPORTING
LAST_DAY_OF_MONTH = LAST_DATE “해당월의 마지막 일자
* EXCEPTIONS
* DAY_IN_NO_DATE = 1
* OTHERS = 2
.
IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
변수값 ALPHA CONVERSION 함수.
DATA: GV_MATNR(18),
TMP_MATNR LIKE MARA-MATNR.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
EXPORTING
INPUT = TMP_MATNR “ALPHA CONVERSION이 된 변수값
IMPORTING
OUTPUT = GV_MATNR. “ALPHA CONVERSION이 안된 변수값
AND
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
INPUT = GV_MATNR “ALPHA CONVERSION이 안된 변수값
IMPORTING
OUTPUT = TMP_MATNR. “ALPHA CONVERSION이 된 변수값
OR
CALL FUNCTION 'FI_ALPHA_CONVERT'
EXPORTING
I_STRING = GV_MATNR
IMPORTING
E_STRING = TMP_MATNR.
GV_MATNR = ‘100060001’.
TMP_MATNR = ‘000000000100060001’.
INTERNAL TABLE을 TEXT FILE로 내리는 함수.
DATA ERFILE LIKE RLGRAP-FILENAME VALUE 'C:\TEMP\SPEC.TXT'.
CALL FUNCTION 'WS_DOWNLOAD'
EXPORTING
FILENAME = ERFILE “PC로 내려오는 파일 이름
FILETYPE = 'DAT' “DAT, DBF, ASC, BIN
TABLES
DATA_TAB = ITAB. “텍스트로 내릴 ITAB.
OR
CALL FUNCTION 'DOWNLOAD'
EXPORTING
FILENAME = ERFILE “PC로 내려오는 파일 이름
FILETYPE = 'DAT' “DAT, DBF, ASC, BIN
TABLES
DATA_TAB = ITAB. “텍스트로 내릴 ITAB.
PC에 있는 텍스트 파일을 INTERNAL TABLE로 가져오는 함수
DATA: ED_FNAME LIKE RLGRAP-FILENAME VALUE 'C:\TEMP\OUT.TXT',
ED_FTYPE LIKE RLGRAP-FILETYPE VALUE 'DAT'.
CALL FUNCTION 'WS_UPLOAD'
EXPORTING
FILENAME = ED_FNAME
FILETYPE = ED_FTYPE “DAT, DBF, ASC, BIN
TABLES
DATA_TAB = ITAB. “텍스트파일의 내용을 가져오는 INTERNAL TABLE
OR
CALL FUNCTION 'UPLOAD'
EXPORTING
FILENAME = ED_FNAME
FILETYPE = ED_FTYPE “DAT, DBF, ASC, BIN
TABLES
DATA_TAB = ITAB. “텍스트파일의 내용을 가져오는 INTERNAL TABLE
응용 프로그램 실행하는 함수.
CALL FUNCTION 'WS_EXECUTE'
EXPORTING
PROGRAM = 'C:\SAPPROD\PRT3000.EXE'. “실행할 응용 프로그램
특정일자의 해당월의 마지막 일을 가져오는 함수
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.
PC에 있는 파일을 선택할 수 있는 파일선택 창 띄우는 함수
DATA: FILENAME(128).
CALL FUNCTION 'KD_GET_FILENAME_ON_F4'
EXPORTING
PROGRAM_NAME = SYST-REPID
DYNPRO_NUMBER = SYST-DYNNR
* FIELD_NAME = ' '
* STATIC = ' '
* MASK = ' '
CHANGING
FILE_NAME = FILENAME “경로와 파일명이 들어가는 변수
* EXCEPTIONS
* MASK_TOO_LONG = 1
* OTHERS = 2
.
IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
하단의 상태바에 특정문자열을 표시해 주는 함수
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
EXPORTING
PERCENTAGE = SY-INDEX
TEXT = '데이터를 가져오는 중입니다…'.
LOOP문과 함께 사용하면 진행현황을 % 로 표시할 수 있다.
SAP 오피스의 메일박스에 메일 전송하는 함수
DATA : BEGIN OF MS_MAILOBJECT_CONT OCCURS 0.
INCLUDE STRUCTURE MCMAILOBJ.
DATA : END OF MS_MAILOBJECT_CONT.
CLEAR : MS_MAILOBJECT_CONT.
REFRESH : MS_MAILOBJECT_CONT.
CONCATENATE '플랜트' WERKS ' 자재코드 ' MATNR
' 원가 생성작업을 해 주세요.'
INTO MS_MAILOBJECT_CONT-OBJLINE.
MOVE : '1' TO MS_MAILOBJECT_CONT-OBJNR,
'1' TO MS_MAILOBJECT_CONT-OBJLEVEL,
'RAW' TO MS_MAILOBJECT_CONT-OBJTYPE,
'원가생성 요청' TO MS_MAILOBJECT_CONT-OBJNAM,
'원가생성 요청' TO MS_MAILOBJECT_CONT-OBJDES.
APPEND MS_MAILOBJECT_CONT.
CALL FUNCTION 'MC_SEND_MAIL'
EXPORTING
MS_MAIL_SENDMODE = 'B'
MS_MAIL_TITLE = '원가생성요청'
MS_MAIL_DESCRIPTION = '원가생성작업을 해주세요'
MS_MAIL_RECEIVER = 'ED03'
MS_MAIL_EXPRESS = '' “ X=고속(받는사람의 작업화면에 창이 뜸)
TABLES
MS_MAIL_CONT = MS_MAILOBJECT_CONT
.
IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
하나의 입력값을 받는 POPUP창 띄우는 함수
DATA ANSWER(1).
DATA VALUE1 LIKE SPOP-VARVALUE1.
CALL FUNCTION 'POPUP_TO_GET_ONE_VALUE'
EXPORTING
TEXTLINE1 = '서천 외주단가를 입력하세요.'
TEXTLINE2 = '단가 입력후 계속을 클릭하면 입력.'
TEXTLINE3 = '취소를 클릭하면 단가입력 취소.'
TITEL = '외주단가 입력'
VALUELENGTH = 10 “입력받을 길이
IMPORTING
ANSWER = ANSWER “선택버튼 종류
VALUE1 = VALUE1. “입력된 값
* EXCEPTIONS
* TITEL_TOO_LONG = 1
* OTHERS = 2
화폐단위 변경에 따른 금액을 변경된 화폐단위에 맞게 변환해 주는 함수
CALL FUNCTION 'Z_BAPI_CA_READ_EXCHANGE_RATE'
EXPORTING
DATE = T_ERDAT "레코드생성일자(가격결정일)
SOURCE_CURRENCY = T_WAERK "원시화폐
TARGET_CURRENCY = 'USD'
COMPANY_CURRENCY = 'KRW'
TYPE_OF_RATE = 'M'
SOURCE_AMOUNT = LV_ZZAMT "원시화폐금액
IMPORTING
TARGET_AMOUNT = LV_ZZUSD. "변환된USD금액
사원번호를 가지고 해당 사원명 가져오는 함수
CALL FUNCTION 'RP_CHECK_PERNR'
EXPORTING
BEG = SY-DATUM "오늘날짜
PNR = GV_PERNR "사원번호
IMPORTING
NAME = GV_NAME "사원명
EXCEPTIONS
OTHERS = 1.
문자열에서 특정문자(열) 변경 및 삭제
DATA: T_TEXT(30) VALUE '031-370-9164',
CALL FUNCTION 'STRING_REPLACE'
EXPORTING
PATTERN = '-' " 변경할 문자열
SUBSTITUTE = '' " 변경될 문자열
* MAX_REPLACES = 0
* importing
* number_of_replaces = numberofreplaces
CHANGING
TEXT = T_TEXT " 문자열이 들어있는 문장
EXCEPTIONS
WRONG_STRING_LENGTH = 1
OTHERS = 2.
T_TEXT : ‘0313709164’
소수점이 있는 문자열을 DECIMAL TYPE으로 변환하는 함수
DATA: GV_TEXT(10),
GV_DECIMAL(10) TYPE P DECIMALS 3.
CALL FUNCTION 'CHAR_FLTP_CONVERSION'
EXPORTING
STRING = GV_TEXT "CHAR 변수
IMPORTING
FLSTR = GV_DECIMAL . "DEC 변수
GV_TEXT : ‘2345.678’
GV_DECIMAL : 2345.678
두 일자사이의 개월 수를 계산하는 함수
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 <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
그래픽 구현
DATA: BEGIN OF ITAB_DATA OCCURS 0,
DATANAME(15),
QUANTITY1 TYPE I,
QUANTITY2 TYPE I,
QUANTITY3 TYPE I,
END OF ITAB_DATA,
BEGIN OF ITAB_OPTIONS OCCURS 0,
OPTION(20),
END OF ITAB_OPTIONS.
ITAB_DATA-DATANAME = '국내석건'.
ITAB_DATA-QUANTITY1 = 55.
ITAB_DATA-QUANTITY2 = 62.
ITAB_DATA-QUANTITY3 = 59.
APPEND ITAB_DATA.
ITAB_DATA-DATANAME = '산공생산'.
ITAB_DATA-QUANTITY1 = 35.
ITAB_DATA-QUANTITY2 = 52.
ITAB_DATA-QUANTITY3 = 44.
APPEND ITAB_DATA.
ITAB_DATA-DATANAME = '수출생산'.
ITAB_DATA-QUANTITY1 = 68.
ITAB_DATA-QUANTITY2 = 52.
ITAB_DATA-QUANTITY3 = 79.
APPEND ITAB_DATA.
CALL FUNCTION 'GRAPH_MATRIX_3D'
EXPORTING
COL1 = '1월'
COL2 = '2월'
COL3 = '3월'
TITL = '매출금액'
TABLES
DATA = ITAB_DATA
OPTS = ITAB_OPTIONS
EXCEPTIONS
OTHERS = 1.
뒤에 붙은 ‘-‘부호를 앞으로 빼주는 함수
DATA GV_VALUE(5).
GV_VALUE = '1234-'.
CALL FUNCTION 'CLOI_PUT_SIGN_IN_FRONT'
CHANGING
VALUE = GV_VALUE.
GV_VALUE “ ‘-1234’
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 – 입력값을 받을 수 있는 입력 필드가 생긴다.
문자열 자를 때 자르는 위치에 2BYTE문자가 있는지를 체크하는 함수
DATA: LV_LENGTH TYPE I.
CALL FUNCTION 'TRUNCATE_MULTIPLE_BYTE_STRING'
EXPORTING
STRING = 'ABDC가1234'
TARGET_LENGTH = '5'
IMPORTING
USE_LENGTH = LV_LENGTH
.
LV_LENGTH 와 TARGET_LENGTH 에서 입력한 값이 일치하면 문제가 없고,
1이 작은 경우 2BYTE 문자가 걸림.
자르는 위치를 LV_LENGTH로 하면 문자가 깨지는 문제가 발생하지 않음.
OR
DATA: LV_O_STR(10).
CALL FUNCTION 'CUT_2BYTES_STRINGS'
EXPORTING
I_STR = 'AB가나1234'
I_LEN = '5'
IMPORTING
O_STR = LV_O_STR
.
LV_O_STR : ‘AB가’
반올림, 올림, 버림을 쉽게 할 수 있는 함수
DATA: INPUT TYPE F,
OUTPUT TYPE F,
OUTPUT_N(5) TYPE N.
INPUT = '1276.65'.
CALL FUNCTION 'FIMA_NUMERICAL_VALUE_ROUND'
EXPORTING
I_RTYPE = ' ' "반올림
* I_RTYPE = '+' "올림
* I_RTYPE = '-' "버림
I_RUNIT = '1' “기준자리 수
I_VALUE = INPUT
IMPORTING
E_VALUE_RND = OUTPUT.
OUTPUT_N = OUTPUT.
OUTPUT_N : ‘01277’
문자열에 있는 값이 숫자만으로 되어있는지 문자가 포함됐는지 체크하는 함수
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.
STRING_1_TYPE : NUMC
STRING_2_TYPE : CHAR
STRING_3_TYPE : CHAR
클립보드에 들어있는 내용을 가져오는 함수
DATA: BEGIN OF TAB OCCURS 1,
TEXT(20) TYPE C,
END OF TAB.
DATA EMPTY(1).
CLEAR EMPTY.
REFRESH TAB.
FREE TAB.
CALL FUNCTION 'CLPB_IMPORT'
IMPORTING
EMPTY = EMPTY
TABLES
DATA_TAB = TAB
EXCEPTIONS
CLPB_ERROR = 01.
문자열로된 계산식의 계산값을 RETURN 하는 함수
DATA: AAA TYPE P.
CALL FUNCTION 'EVAL_FORMULA'
EXPORTING
FORMULA = '(10+10)*10/10-7*(5+3)/7'
IMPORTING
VALUE = AAA
.
WRITE AAA. => ‘12’
* Origin of an input help 조회
CALL FUNCTION 'DDIF_TABL_GET'
EXPORTING
NAME = pi_table
STATE = c_A
* LANGU = ' '
* IMPORTING
* GOTSTATE =
* DD02V_WA =
* DD09L_WA =
TABLES
DD03P_TAB = lt_dd03p_tab
* DD05M_TAB =
* DD08V_TAB =
* DD12V_TAB =
* DD17V_TAB =
DD35V_TAB = lt_dd35v_tab
* DD36M_TAB =
EXCEPTIONS
ILLEGAL_INPUT = 1
OTHERS = 2.
* Value Request 값 추출
CALL FUNCTION 'F4IF_FIELD_VALUE_REQUEST'
EXPORTING
TABNAME = pi_table
FIELDNAME = pi_field
* SEARCHHELP = ' '
* SHLPPARAM = ' '
* DYNPPROG = ' '
* DYNPNR = ' '
* DYNPROFIELD = ' '
* STEPL = 0
* VALUE = ' '
* MULTIPLE_CHOICE = ' '
* DISPLAY = ' '
SUPPRESS_RECORDLIST = c_X
* CALLBACK_PROGRAM = ' '
* CALLBACK_FORM = ' '
* SELECTION_SCREEN = ' '
* IMPORTING
* USER_RESET =
TABLES
RETURN_TAB = lt_return_tab
EXCEPTIONS
FIELD_NOT_FOUND = 1
NO_HELP_FOR_FIELD = 2
INCONSISTENT_HELP = 3
NO_VALUES_FOUND = 4
OTHERS = 5.
'SAP > ABAP' 카테고리의 다른 글
테이블컨트롤의 스크롤이 아무 반응 없을 때... (0) | 2007.10.09 |
---|---|
BDC & ALV sample program (0) | 2007.10.08 |
Selection Screen 만들기. (0) | 2007.09.13 |
유닉스 관련 명령어 (0) | 2007.09.13 |
MODIFY ... FROM wa TRANSPORTING (f1, f2, ... Fn) (0) | 2007.04.30 |