PP 관련 펑션
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.
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문과 함께 사용하면 진행현황을 % 로 표시할 수 있다.
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.
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_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.
DATA: AAA TYPE P.
CALL FUNCTION 'EVAL_FORMULA'
EXPORTING
FORMULA = '(10+10)*10/10-7*(5+3)/7'
IMPORTING
VALUE = AAA
.
WRITE AAA. => ‘12’
댓글
댓글 쓰기