ZPPA_GET_GR_HISTORY bk20090915
FUNCTION ZPPA_GET_GR_HISTORY.
*"----------------------------------------------------------------------
*"*"Local interface:
*" IMPORTING
*" VALUE(GUBUN) TYPE CHAR1
*" VALUE(LIFNR) TYPE LIFNR
*" VALUE(AEDAT) TYPE CHAR8
*" EXPORTING
*" VALUE(RETURN) LIKE ZPPASRETURN STRUCTURE ZPPASRETURN
*" TABLES
*" T_EXPORTA STRUCTURE ZPPAS0041
*"----------------------------------------------------------------------
* 2008/09/10 거래명세표 양식변경(항목추가) : ZPPAS0026 구조변경
*"----------------------------------------------------------------------
** MATNR CHAR 18 0 자재코드
** VERKF CHAR 30 0 공급업체 오피스의 담당영업사원
** TELF1 CHAR 16 0 영업사원전화
** ADDWE2 CHAR 72 0 물류센터주소
** TELF2 CHAR 16 0 물류센터전화
*"----------------------------------------------------------------------
DATA : LT_0029 LIKE ZPPAT0029 OCCURS 0 WITH HEADER LINE,
LT_T001W LIKE T001W OCCURS 0 WITH HEADER LINE.
DATA : BEGIN OF LT_EMAKT OCCURS 0,
EBELN LIKE EKPO-EBELN,
EBELP LIKE EKPO-EBELP,
MATNR LIKE EKPO-MATNR,
MEINS LIKE EKPO-MEINS,
WERKS LIKE EKPO-WERKS,
LGORT LIKE EKPO-LGORT,
MAKTX LIKE MAKT-MAKTX,
END OF LT_EMAKT.
DATA : BEGIN OF LT_AMAKT OCCURS 0,
AUFNR LIKE AFKO-AUFNR,
PLNBEZ LIKE AFKO-PLNBEZ,
MAKTX LIKE MAKT-MAKTX,
VERID LIKE AFPO-VERID,
END OF LT_AMAKT.
DATA : LS_WJ LIKE J_1BBRANCH,
LS_WJADD LIKE ADRC,
LS_ADD LIKE LFA1 .
REFRESH T_EXPORTA.
SELECT * FROM ZPPAT0029 INTO TABLE LT_0029
WHERE ACTYP = 'R' "입고
AND ZRFCRESULT = '00' "성공
AND LIFNR = LIFNR
AND WJTYP = '2' "웅진납품
AND GUBUN = GUBUN
AND AEDAT = AEDAT.
IF SY-SUBRC NE 0.
RETURN-TYPE = 'N'.
RETURN-MESSAGE = TEXT-M01.
EXIT.
ENDIF.
* 관련 구매오더 정보 읽기
SELECT EKPO~EBELN EKPO~EBELP EKPO~MATNR EKPO~MEINS
EKPO~WERKS EKPO~LGORT
MAKT~MAKTX
FROM EKPO
LEFT JOIN MAKT ON EKPO~MATNR = MAKT~MATNR
AND MAKT~SPRAS = SY-LANGU
INTO TABLE LT_EMAKT
FOR ALL ENTRIES IN LT_0029
WHERE EKPO~EBELN = LT_0029-EBELN
AND EKPO~EBELP = LT_0029-EBELP.
IF SY-SUBRC = 0.
SELECT WERKS NAME1 FROM T001W
INTO CORRESPONDING FIELDS OF TABLE LT_T001W
FOR ALL ENTRIES IN LT_EMAKT
WHERE WERKS = LT_EMAKT-WERKS.
ENDIF.
* 관련 생산오더 정보 읽기
LOOP AT LT_0029 WHERE AUFNR NE SPACE.
EXIT.
ENDLOOP.
IF SY-SUBRC = 0.
SELECT AFKO~AUFNR AFKO~PLNBEZ MAKT~MAKTX AFPO~VERID
FROM AFKO
JOIN AFPO ON AFPO~AUFNR = AFKO~AUFNR
JOIN MAKT ON MAKT~MATNR = AFKO~PLNBEZ
AND MAKT~SPRAS = SY-LANGU
INTO TABLE LT_AMAKT
FOR ALL ENTRIES IN LT_0029
WHERE AFKO~AUFNR = LT_0029-AUFNR.
ENDIF.
* 주소정보 읽기
* ..웅진(발주처) 주소 읽기
PERFORM GET_WJ_ADD_DATA IN PROGRAM ZPPAP0005
CHANGING LS_WJ.
CLEAR LS_WJADD.
SELECT SINGLE * FROM ADRC INTO LS_WJADD
WHERE ADDRNUMBER = LS_WJ-ADRNR
AND DATE_FROM <= SY-DATUM
AND DATE_TO >= SY-DATUM.
* .. 납품처 주소 읽기
SELECT SINGLE * FROM LFA1 INTO LS_ADD
WHERE LIFNR = LIFNR AND LOEVM = SPACE.
SORT LT_EMAKT BY EBELN EBELP.
SORT LT_T001W BY WERKS.
SORT LT_AMAKT BY AUFNR.
* 데이터 정렬
LOOP AT LT_0029.
CLEAR : T_EXPORTA, LT_AMAKT, LT_EMAKT, LT_T001W.
READ TABLE LT_EMAKT WITH KEY EBELN = LT_0029-EBELN
EBELP = LT_0029-EBELP
BINARY SEARCH.
READ TABLE LT_T001W WITH KEY WERKS = LT_EMAKT-WERKS
BINARY SEARCH.
READ TABLE LT_AMAKT WITH KEY AUFNR = LT_0029-AUFNR
BINARY SEARCH.
T_EXPORTA-BUDAT = LT_0029-BUDAT.
T_EXPORTA-TXZ01 = LT_0029-TXZ01.
T_EXPORTA-STONO = LT_0029-EBELN.
T_EXPORTA-STOPO = LT_0029-EBELP.
T_EXPORTA-MATNR = LT_AMAKT-PLNBEZ.
T_EXPORTA-MEINS = LT_EMAKT-MEINS.
T_EXPORTA-AEDAT = LT_0029-AEDAT.
T_EXPORTA-AEZET = LT_0029-AEZET.
* 공급업체 영업사원/전화번호
SELECT SINGLE VERKF TELF1
INTO (T_EXPORTA-VERKF, T_EXPORTA-TELF1)
FROM LFM1
WHERE LIFNR = LIFNR
AND EKORG IN ('2000','3000')
AND LOEVM = SPACE
AND TELF1 NE SPACE.
* 거래명세표 센터주소/전화번호
CASE LT_EMAKT-WERKS.
WHEN '1000'.
IF LT_EMAKT-LGORT = '3000'.
T_EXPORTA-ADDWE2 = '웅진씽크빅 본사(단행본)'.
T_EXPORTA-TELF2 = '02-3670-1509'.
ELSE.
T_EXPORTA-ADDWE2 = '웅진씽크빅'.
T_EXPORTA-TELF2 = '031-956-7279'.
ENDIF.
WHEN '2000'.
IF LT_EMAKT-LGORT = '3000'.
T_EXPORTA-ADDWE2 = '대전 대덕구 평촌동 121 웅진씽크빅(신탄진)'.
T_EXPORTA-TELF2 = '042-671-0341~2'.
ELSEIF LT_EMAKT-LGORT = '1010'.
* T_EXPORTA-ADDWE2 = '충남 금산군 추부면 용지리 614-8번지'
* E동9호 웅진씽크빅(유성우체국)'.
CONCATENATE '충남 금산군 추부면 용지리 614-8번지'
'E동9호 웅진씽크빅(유성우체국)'
INTO T_EXPORTA-ADDWE2.
T_EXPORTA-TELF2 = '041-753-6660'.
ELSE.
T_EXPORTA-ADDWE2 = '대전 유성구 대정동 301-2 웅진씽크빅'.
T_EXPORTA-TELF2 = '042-544-6403'.
ENDIF.
WHEN '3000'.
T_EXPORTA-ADDWE2 = '경기도 파주시 교하읍 문발리 535-6 웅진씽크빅'.
T_EXPORTA-TELF2 = '031-955-2941'.
ENDCASE.
CASE GUBUN.
WHEN '1'. "제품
*--> 2009.08.19 cykim - Plant Name 가져오는 로직 변경 ZPPAT0060에서 발취.
* T_EXPORTA-NAME1 = LT_T001W-NAME1.
** 책읽기 신탄진/유성우체국 창고명
* IF LT_EMAKT-WERKS = '2000' AND LT_EMAKT-LGORT = '3000'.
* T_EXPORTA-NAME1 = '신탄진'.
* ELSEIF LT_EMAKT-WERKS = '2000' AND LT_EMAKT-LGORT = '1010'.
* T_EXPORTA-NAME1 = '우체국'.
* ENDIF.
*
* T_EXPORTA-MAKTX = LT_AMAKT-MAKTX.
*
** 곰돌이 생산버젼
* IF LT_AMAKT-VERID IS NOT INITIAL.
* CONCATENATE LT_AMAKT-MAKTX ' #' LT_AMAKT-VERID '호'
* INTO T_EXPORTA-MAKTX.
* ENDIF.
SELECT single werks WERKS_NM
INTO (T_EXPORTA-werks, T_EXPORTA-name1)
FROM ZPPAT0060
WHERE AUFNR eq LT_0029-AUFNR
and lifnr eq lifnr.
*--> 2009.08.19 cykim - end .
WHEN '2'. "상품
T_EXPORTA-MAKTX = LT_EMAKT-MAKTX.
ENDCASE.
WRITE LT_0029-AUFNR TO T_EXPORTA-ORDNO USING EDIT MASK '==ALPHA'.
WRITE LT_0029-MENGE TO T_EXPORTA-MENGE UNIT LT_EMAKT-MEINS.
* 납품처 정보
T_EXPORTA-LIFWE(3) = LIFNR(3).
T_EXPORTA-LIFWE+3(1) = '-'.
T_EXPORTA-LIFWE+4(2) = LIFNR+3(2).
T_EXPORTA-LIFWE+6(1) = '-'.
T_EXPORTA-LIFWE+7(5) = LIFNR+5(5).
T_EXPORTA-NAMWE = LS_ADD-NAME1.
T_EXPORTA-REPWE = LS_ADD-J_1KFREPRE.
CONCATENATE LS_ADD-ORT01 LS_ADD-STRAS INTO T_EXPORTA-ADDWE
SEPARATED BY SPACE.
* 발주처 정보(회사정보)
T_EXPORTA-LIFAG(3) = LS_WJ-STCD2(3).
T_EXPORTA-LIFAG+3(1) = '-'.
T_EXPORTA-LIFAG+4(2) = LS_WJ-STCD2+3(2).
T_EXPORTA-LIFAG+6(1) = '-'.
T_EXPORTA-LIFAG+7(5) = LS_WJ-STCD2+5(5).
T_EXPORTA-NAMAG = LS_WJ-NAME.
T_EXPORTA-REPAG = LS_WJ-KR_REPRES.
CONCATENATE LS_WJADD-CITY1 LS_WJADD-STREET INTO T_EXPORTA-ADDAG
SEPARATED BY SPACE.
* 해피올 제작이관 관련 - 송장항목 변경(2009/04/06)
T_EXPORTA-NAMWE = '(주)웅진해피올'.
T_EXPORTA-LIFWE = '101-81-54322'.
T_EXPORTA-REPWE = '송인회'.
T_EXPORTA-ADDWE = '서울 중구 충무로3가 극동빌딩3층'.
CONCATENATE T_EXPORTA-TELF1 '(' T_EXPORTA-VERKF ')'
INTO T_EXPORTA-TELF1. "담당자전화/담당자명
* T_EXPORTA-VERKF = LS_ADD-NAME1. "실공급업체
CONCATENATE LS_ADD-NAME1 '(' LIFNR(3) '-'
LIFNR+3(2) '-' LIFNR+5(5) ')'
INTO T_EXPORTA-VERKF. "실공급업체
APPEND T_EXPORTA.
ENDLOOP.
IF T_EXPORTA[] IS NOT INITIAL.
RETURN-TYPE = 'S'.
RETURN-MESSAGE = TEXT-M02.
SORT T_EXPORTA BY AEDAT AEZET ORDNO STONO STOPO.
ELSE.
RETURN-TYPE = 'N'.
RETURN-MESSAGE = TEXT-M01.
ENDIF.
* SORT T_EXPORTA BY BUDAT STONO STOPO.
SORT T_EXPORTA BY MAKTX BUDAT STONO STOPO.
ENDFUNCTION.
--------------------------------------------------
function zppa_get_gr_history.
*"----------------------------------------------------------------------
*"*"Local interface:
*" IMPORTING
*" VALUE(GUBUN) TYPE CHAR1
*" VALUE(LIFNR) TYPE LIFNR
*" VALUE(AEDAT) TYPE CHAR8
*" EXPORTING
*" VALUE(RETURN) LIKE ZPPASRETURN STRUCTURE ZPPASRETURN
*" TABLES
*" T_EXPORTA STRUCTURE ZPPAS0041
*"----------------------------------------------------------------------
* 2008/09/10 거래명세표 양식변경(항목추가) : ZPPAS0026 구조변경
*"----------------------------------------------------------------------
** MATNR CHAR 18 0 자재코드
** VERKF CHAR 30 0 공급업체 오피스의 담당영업사원
** TELF1 CHAR 16 0 영업사원전화
** ADDWE2 CHAR 72 0 물류센터주소
** TELF2 CHAR 16 0 물류센터전화
*"----------------------------------------------------------------------
data : lt_0029 like zppat0029 occurs 0 with header line,
lt_t001w like t001w occurs 0 with header line.
data : ls_wj like j_1bbranch,
ls_wjadd like adrc,
ls_add like lfa1 .
refresh t_exporta.
data: lt_zppat0062 like table of zppat0062 with header line,
lt_zppat0062_temp like table of zppat0062 with header line.
select *
into corresponding fields of table lt_zppat0062
from zppat0062
where lifnr eq lifnr
and budat eq aedat.
delete lt_zppat0062 where cangb eq 'X'
or loekz eq 'X'.
* 주소정보 읽기
* ..웅진(발주처) 주소 읽기
perform get_wj_add_data in program zppap0005
changing ls_wj.
clear ls_wjadd.
select single *
into corresponding fields of ls_wjadd
from adrc
where addrnumber = ls_wj-adrnr
and date_from <= sy-datum
and date_to >= sy-datum.
* .. 납품처 주소 읽기
select single *
into CORRESPONDING FIELDS OF ls_add
from lfa1
where lifnr eq lifnr
and loevm eq space
and spras eq sy-langu.
loop at lt_zppat0062.
t_exporta-budat = lt_zppat0062-budat.
t_exporta-name1 = lt_zppat0062-werks_nm.
call function 'CONVERSION_EXIT_ALPHA_OUTPUT'
exporting
input = lt_zppat0062-matnr
importing
output = t_exporta-matnr.
t_exporta-maktx = lt_zppat0062-maktx.
t_exporta-ordno = lt_zppat0062-aufnr.
t_exporta-stono = lt_zppat0062-ebeln.
t_exporta-stopo = lt_zppat0062-ebelp.
t_exporta-werks = lt_zppat0062-werks.
t_exporta-menge = lt_zppat0062-menge.
t_exporta-meins = lt_zppat0062-meins.
t_exporta-aedat = lt_zppat0062-zfdat.
t_exporta-aezet = lt_zppat0062-zftms.
* 공급업체 영업사원/전화번호
select single verkf telf1
into (t_exporta-verkf, t_exporta-telf1)
from lfm1
where lifnr eq lifnr
and ekorg in ('2000','3000')
and loevm eq space
and telf1 ne space.
* 납품처 정보
t_exporta-lifwe(3) = lifnr(3).
t_exporta-lifwe+3(1) = '-'.
t_exporta-lifwe+4(2) = lifnr+3(2).
t_exporta-lifwe+6(1) = '-'.
t_exporta-lifwe+7(5) = lifnr+5(5).
t_exporta-namwe = ls_add-name1.
t_exporta-repwe = ls_add-j_1kfrepre.
concatenate ls_add-ort01 ls_add-stras into t_exporta-addwe
separated by space.
* 발주처 정보(회사정보)
t_exporta-lifag(3) = ls_wj-stcd2(3).
t_exporta-lifag+3(1) = '-'.
t_exporta-lifag+4(2) = ls_wj-stcd2+3(2).
t_exporta-lifag+6(1) = '-'.
t_exporta-lifag+7(5) = ls_wj-stcd2+5(5).
t_exporta-namag = ls_wj-name.
t_exporta-repag = ls_wj-kr_repres.
concatenate ls_wjadd-city1 ls_wjadd-street into t_exporta-addag
separated by space.
append t_exporta.
endloop.
if t_exporta[] is not initial.
return-type = 'S'.
return-message = text-m02.
sort t_exporta by aedat aezet ordno stono stopo.
else.
return-type = 'N'.
return-message = text-m01.
endif.
sort t_exporta by maktx budat stono stopo.
endfunction.