* E-OFFICE등에 넘기기 위해 수량을 기본단위로 변환시켜주는 함수.
* 청구예정량, 구매예정량 = pr 수량
* pr의 단위와 기본단위가 틀리면 기본단위로 conversion 한다
IF ( MARA-MEINS NE P_EBAN-MEINS ) AND
NOT MARA-MEINS IS INITIAL.
CALL FUNCTION 'MD_CONVERT_MATERIAL_UNIT'
EXPORTING
I_MATNR = P_EBAN-MATNR
I_IN_ME = P_EBAN-MEINS
I_OUT_ME = MARA-MEINS
I_MENGE = P_EBAN-MENGE
IMPORTING
E_MENGE = P_EBAN-MENGE
EXCEPTIONS
ERROR_IN_APPLICATION = 1
ERROR = 2
OTHERS = 3.
---------------------------------------------------------
* T-CODE /NMMBE에 대해서..
CALL FUNCTION 'MB_ADD_RESERVATION_QUANTITIES'
EXPORTING
X_KZEAR = SPACE
X_MATNR = P_EBAN-MATNR
X_XLOEK = SPACE
* X_KZWSO = ' '
TABLES
XBDART = GR_XBDART
XTAB1 = IT_XTAB1 "수량 들어옴.
XWERKS = GR_XWERKS.
DELETE IT_XTAB1 WHERE WERKS NE P_EBAN-WERKS.
"해당 플랜트에 대해서만 SUM.
LOOP AT IT_XTAB1.
AT FIRST.
SUM.
GV_MENGE = IT_XTAB1-BDMNG.
ENDAT.
ENDLOOP.
WRITE GV_MENGE TO IT_ITEM-BDMNG UNIT MARA-MEINS.
-------------------------------------------------------------
*롱텍스트 가져오는 함수.
FORM READ_LONG_TEXT USING P1 P2 P3.
CLEAR : THEAD, IT_LINE, IT_LINE[].
THEAD-TDID = P1.
THEAD-TDSPRAS = SY-LANGU.
THEAD-TDNAME = P2.
THEAD-TDOBJECT = P3.
CALL FUNCTION 'READ_TEXT'
EXPORTING
CLIENT = SY-MANDT
ID = THEAD-TDID
LANGUAGE = THEAD-TDSPRAS
NAME = THEAD-TDNAME
OBJECT = THEAD-TDOBJECT
* ARCHIVE_HANDLE = 0
* LOCAL_CAT = ' '
* IMPORTING
* HEADER =
TABLES
LINES = IT_LINE
EXCEPTIONS
ID = 1
LANGUAGE = 2
NAME = 3
NOT_FOUND = 4
OBJECT = 5
REFERENCE_CHECK = 6
WRONG_ACCESS_TO_ARCHIVE = 7
OTHERS = 8 .
IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
---------------------------------------------------------------------
*알파 컨버젼.... 0000001234 에서 0000빼는 함수.
FORM ALPHA_CONVERSION USING P_KIND P_FIELD.
IF P_KIND = '1'. "0붙임
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
INPUT = P_FIELD
IMPORTING
OUTPUT = P_FIELD.
ELSEIF P_KIND = '2'. "0제거
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
EXPORTING
INPUT = P_FIELD
IMPORTING
OUTPUT = P_FIELD.
ENDIF.
------------------------------------------------------------------------
*BAPI 전송에 관련된 함수..
*&---------------------------------------------------------------------*
*& Form CHANGE_EKGRP
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM CHANGE_EKGRP USING P_BANFN P_EKGRP P_TYPE P_MESSAGE.
DATA : LT_BAPIEBAN LIKE BAPIEBAN OCCURS 0 WITH HEADER LINE,
LT_BAPIRETURN LIKE BAPIRETURN OCCURS 0 WITH HEADER LINE,
LT_BAPI_OLD LIKE BAPIEBANV OCCURS 0 WITH HEADER LINE,
LT_BAPI_NEW LIKE BAPIEBANV OCCURS 0 WITH HEADER LINE.
* PR 값 읽어오기
CLEAR : LT_BAPIEBAN, LT_BAPIEBAN[], LT_BAPIRETURN, LT_BAPIRETURN[],
LT_BAPI_OLD, LT_BAPI_OLD[], LT_BAPI_NEW, LT_BAPI_NEW[].
CALL FUNCTION 'BAPI_REQUISITION_GETDETAIL'
EXPORTING
NUMBER = P_BANFN
TABLES
REQUISITION_ITEMS = LT_BAPIEBAN
RETURN = LT_BAPIRETURN
EXCEPTIONS
OTHERS = 1.
* 구매그룹변경
LOOP AT LT_BAPIEBAN .
CLEAR : LT_BAPI_OLD, LT_BAPI_NEW.
MOVE-CORRESPONDING LT_BAPIEBAN TO LT_BAPI_OLD.
MOVE-CORRESPONDING LT_BAPIEBAN TO LT_BAPI_NEW.
LT_BAPI_NEW-PUR_GROUP = P_EKGRP.
APPEND LT_BAPI_OLD.
APPEND LT_BAPI_NEW.
ENDLOOP.
* PR 변경 BAPI 실행
CALL FUNCTION 'BAPI_REQUISITION_CHANGE'
EXPORTING
NUMBER = P_BANFN
TABLES
REQUISITION_ITEMS_OLD = LT_BAPI_OLD
REQUISITION_ITEMS_NEW = LT_BAPI_NEW
RETURN = LT_BAPIRETURN
EXCEPTIONS
OTHERS = 1.
IF SY-SUBRC NE 0 OR SY-MSGNO NE '041'.
P_TYPE = 'F'. "실패면 F
CLEAR P_MESSAGE.
CALL FUNCTION 'MESSAGE_TEXT_BUILD'
EXPORTING
MSGID = SY-MSGID
MSGNR = SY-MSGNO
MSGV1 = SY-MSGV1
MSGV2 = SY-MSGV2
MSGV3 = SY-MSGV3
MSGV4 = SY-MSGV4
IMPORTING
MESSAGE_TEXT_OUTPUT = P_MESSAGE.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
ELSE.
P_TYPE = 'S'. "성공이면 S
* BAPI 실행후에는 항상 COMMIT해줄것.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
WAIT = 'Y'.
ENDIF.
ENDFORM. " CHANGE_EKGRP
* e-abap님에 의해서 게시물 이동되었습니다 (2007-11-05 12:45)
댓글 3
번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|
22 | SELECT 구문을 사용하지 않고 데이터 가져오는 방법 [13] | sapjoy | 2006.12.04 | 7611 |
21 | ABAP 문법 사용법 정리 [60] | Delight | 2008.04.30 | 7685 |
20 | [부가세] Multi key 변환 펑션 [6] | 미소 | 2010.07.26 | 7855 |
19 | [Function] 메세지 박스를 뛰워보자 [10] | 양키 | 2010.09.29 | 7921 |
18 | ALV BUFFER CLEAR [3] | ecbase | 2006.12.02 | 8011 |
17 | tcode 권한체크 t-code authority check | sapjoy | 2013.05.21 | 8210 |
16 | [Function]오늘은 몇요일일까요? [4] | 양키 | 2010.09.29 | 8447 |
15 | LDM 파일을 다운로드 하는 Function [1] | 양키 | 2012.08.08 | 8449 |
14 | POPUP 함수(팝업) [11] | sapjoy | 2007.05.17 | 8759 |
13 | 이메일로 파일 보내는 함수 [3] | 열공아밥 | 2009.12.20 | 9278 |
12 | 프로그램실행시간 구하기 [16] | 쥬앙 | 2009.04.06 | 9303 |
11 | Amount의 필드 값의 0을 삭제후 Char로 내보내기 [3] | 민버미꺼! | 2007.12.25 | 9617 |
10 | 소수점 이하 체크 [5] | ecbase | 2006.12.02 | 9714 |
9 | 유용한 Function 올려봅니다. [30] | 김지성 | 2007.04.17 | 9878 |
8 | 현재 떠있는 화면에서 특정 필드의 값을 읽어오는 함수 및 방법 [8] | Delight | 2008.04.28 | 9912 |
7 | 문자인지 숫자인지 구분 [8] | ecbase | 2006.12.01 | 10669 |
6 | 공휴일 체크 및 다음 휴일 구하기 [5] | ecbase | 2006.12.01 | 11090 |
5 | 반올림, 올림, 버림 Function [16] | SSong | 2007.11.20 | 11956 |
4 | 환율관련 함수 [2] | 아밥뽀 | 2014.08.23 | 14057 |
3 | 숫자 왼쪽의 0 없애기 [8] | ecbase | 2006.12.02 | 14819 |