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.

 

 

변수값 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’

 

 

Naver 태그: ,

댓글

이 블로그의 인기 게시물

알아두면 유용한 SAP TABLE

PP 오더 마감(오더상태)

User-Exit와 BAdi를 찾아주는 프로그램