안녕하세요.
PO관련된 프로그램 수정 중 헤매다가 여기에 질문 올립니다.
간단한 예제라도 있으면 답변 부탁드립니다.
좋은 하루 되십시오.
댓글 4
-
andy
2009.02.13 02:35
-
옥바라기
2009.02.13 02:40
저도 저런식으로 비슷하게 하긴 했는데 PERFORM set_change_item_data <--- 이 부분 좀 알려주십시오.
그 부분이 가장 궁금한 부분입니다.
미리 감사드립니다.
-
andy
2009.02.13 02:47
*&---------------------------------------------------------------------*
*& Form set_header_data
*&---------------------------------------------------------------------*
* text : 변경 헤더 데이타 세팅
*----------------------------------------------------------------------*
FORM set_change_header_data USING ps_header STRUCTURE zmm0017s.
* 구매오더 유형에 따라 세팅하는 값이 달라진다.
CASE ps_header-bsart.
* 구매오더
WHEN 'A1' OR 'A2' OR 'A3'.
PERFORM set_poheader USING :
'' 'COMP_CODE' ps_header-bukrs, "회사코드
'' 'DOC_TYPE' ps_header-bsart, "오더유형
'' 'PMNTTRMS' ps_header-zterm, "지급조건
'' 'PURCH_ORG' ps_header-ekorg, "구매조직
'' 'PUR_GROUP' ps_header-ekgrp, "구매그룹
'' 'COLLECT_NO' ps_header-kunnr, "납품처
'' 'CURRENCY' ps_header-waers. "단위
* 운송오더
WHEN 'U1' OR 'U2'.
PERFORM set_poheader USING :
'' 'COMP_CODE' ps_header-bukrs, "회사코드
'' 'DOC_TYPE' ps_header-bsart, "오더유형
'' 'PURCH_ORG' ps_header-ekorg, "구매조직
'' 'COLLECT_NO' ps_header-kunnr, "납품처
'' 'PUR_GROUP' ps_header-ekgrp. "구매그룹
ENDCASE.
ENDFORM. " set_header_data
구매오더 유형은 각 회사마다 세팅 값이 다르니, 확인하시고 넣으셔야 겠죠?
-
옥바라기
2009.02.13 03:10
감사합니다. ^^
올해 좋은 일만 가득하시길 바라겠습니다.
FUNCTION zmm_change_purchase_order.
*"----------------------------------------------------------------------
*"*"Local interface:
*" IMPORTING
*" REFERENCE(I_HEADER) LIKE ZMM0017S STRUCTURE ZMM0017S
*" REFERENCE(I_EBELN) LIKE EKPO-EBELN
*" REFERENCE(I_COMMIT) TYPE CHAR01 OPTIONAL
*" TABLES
*" T_ITEM STRUCTURE ZMM0018S
*" T_RETURN STRUCTURE BAPIRET2
*"----------------------------------------------------------------------
init : t_return,
gt_poitem, gt_poitemx, gt_poschedule, gt_poschedulex,
gt_return, gt_pocond, gt_pocondx.
CLEAR : gs_header.
* 오더번호
MOVE i_ebeln TO g_purchaseorder.
* 헤더 정의
PERFORM set_change_header_data USING i_header.
* 아이템, 납품일정 정의
LOOP AT t_item.
* 아이템 세팅
PERFORM set_change_item_data USING i_header t_item
i_ebeln t_item-ebelp.
* 납품일정 세팅
PERFORM set_poschedule USING :
'S' 'X' 'PO_ITEM' t_item-ebelp,
'' 'X' 'SCHED_LINE' t_item-etenr,
'' '' 'DELIVERY_DATE' i_header-eindt,
'' '' 'PO_ITEMX' ' ',
'E' '' 'QUANTITY' t_item-menge.
* 가격조건 세팅
IF NOT t_item-frc1 IS INITIAL.
PERFORM set_po_condition USING t_item
i_header
'U'.
ENDIF.
ENDLOOP.
* 구매오더 생성 Bapi 호출
CALL FUNCTION 'BAPI_PO_CHANGE'
EXPORTING
purchaseorder = g_purchaseorder
poheader = gs_poheader
poheaderx = gs_poheaderx
TABLES
return = gt_return
poitem = gt_poitem
poitemx = gt_poitemx
poschedule = gt_poschedule
poschedulex = gt_poschedulex
pocond = gt_pocond
pocondx = gt_pocondx
popartner = gt_popartner.
* Commit work.
IF i_commit EQ 'X'.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'.
ENDIF.
* 결과 전송
MOVE gt_return[] TO t_return[].
ENDFUNCTION.
이런식으로 펑션으로 만들어 호출했습니다.