BAPI 를 이용한 전표 생성하는 프로그램 입니다
DATA : obj_type LIKE bapiache02-obj_type,
obj_key LIKE bapiache02-obj_key,
obj_sys LIKE bapiache02-obj_sys,
documentheader LIKE bapiache09,
accountgl LIKE bapiacgl09 OCCURS 0 WITH HEADER LINE,
currencyamount LIKE bapiaccr09 OCCURS 0 WITH HEADER LINE,
return LIKE bapiret2 OCCURS 0 WITH HEADER LINE,
extension1 LIKE bapiextc OCCURS 0 WITH HEADER LINE,
bapi_retn_info LIKE bapiret2 OCCURS 0 WITH HEADER LINE.
DATA : error_flag.
DATA : lv_text(50) TYPE c.
LOOP AT gt_list WHERE mark = 'X' AND belnr IS INITIAL.
documentheader-username = sy-uname.
documentheader-comp_code = p_bukrs.
documentheader-doc_date = sy-datum. "증빙일자
documentheader-pstng_date = gt_list-trade_day. "날짜
documentheader-doc_type = 'AB'. "전표유형
CLEAR : lv_text.
CONCATENATE gt_list-coupon_no '미수금'
INTO lv_text
SEPARATED BY space.
accountgl-itemno_acc = '1' .
accountgl-gl_account = '0011115010'. "계정번호(미수금)
accountgl-item_text = lv_text.
accountgl-doc_type = 'AB'. "전기유형 .
accountgl-comp_code = p_bukrs. "회사코드 .
accountgl-plant = gt_list-werks. "플랜트
accountgl-pstng_date = gt_list-trade_day. "전기일자.
accountgl-alloc_nmbr = gt_list-coupon_no. "지정
accountgl-sales_off = gt_list-werks. "사업장
APPEND accountgl.
CLEAR : lv_text.
CONCATENATE gt_list-coupon_no '선수금'
INTO lv_text
SEPARATED BY space.
accountgl-itemno_acc = '2' .
accountgl-gl_account = '0021119006'."계정번호
accountgl-item_text = lv_text.
accountgl-doc_type = 'AB' .
accountgl-comp_code = p_bukrs. "회사코드 .
accountgl-plant = gt_list-werks. "플랜트
accountgl-pstng_date = gt_list-trade_day. "전기일자.
accountgl-alloc_nmbr = gt_list-memb_cd. "지정(회원번호)
accountgl-sales_off = gt_list-werks. "사업장
APPEND accountgl.
currencyamount-itemno_acc = '1'.
currencyamount-currency = 'KRW'.
currencyamount-amt_doccur = gt_list-sale_amt * 100. "금액.
APPEND currencyamount.
currencyamount-itemno_acc = '2'.
currencyamount-currency = 'KRW'.
currencyamount-amt_doccur = gt_list-sale_amt * 100 * -1. "금액.
APPEND currencyamount.
CALL FUNCTION 'BAPI_ACC_DOCUMENT_POST'
EXPORTING
documentheader = documentheader
* CUSTOMERCPD =
* CONTRACTHEADER =
IMPORTING
obj_type = obj_type
obj_key = obj_key
obj_sys = obj_sys
TABLES
accountgl = accountgl
* ACCOUNTRECEIVABLE =
* ACCOUNTPAYABLE =
* ACCOUNTTAX =
currencyamount = currencyamount
* CRITERIA =
* VALUEFIELD =
* EXTENSION1 =
return = return
* PAYMENTCARD =
* CONTRACTITEM =
* EXTENSION2 =
* REALESTATE =
* ACCOUNTWT =
.
IF sy-subrc <> 0.
MESSAGE e999(re) WITH 'Problem occured'.
ELSE.
LOOP AT return.
IF NOT return IS INITIAL.
CLEAR : bapi_retn_info.
MOVE-CORRESPONDING return TO bapi_retn_info.
IF return-type = 'A' OR return-type = 'E'.
error_flag = 'X'.
ENDIF.
APPEND bapi_retn_info.
ENDIF.
ENDLOOP.
IF error_flag = 'X'.
MESSAGE e999(re) WITH 'Problem occured'.
ROLLBACK WORK.
ELSE.
COMMIT WORK.
ENDIF.
ENDIF.
gt_list-belnr = obj_key+0(10).
gt_list-gjahr = obj_key+11(4).
MODIFY gt_list.
CLEAR gt_list.
ENDLOOP.
위 프로그램을 처리 하면 정상적으로 전표가 생성이 됩니다
그런데 문제는 위에 있슨 BAPI를 이용해서 사업장(BSEG-BUPLA) 필드에 값을 입력하는 방법을 도무지 모르겠습니다
전표가 생성후 사업장을 일일이 입력할 수 없고,
<실제로, 전표번호로 조회 화면 사업장(BSEG-BUPLA)에 빠져 있습니다.>
고수님들의 조언 부탁드립니다
미수금/선수금은 일반 GL이 아니라, AR/AP 아닌가요? @.@a
살펴본 바로는, BUPLA는 일반 GL 구조체 말고, AR/AP 구조체에 필드명 BUSINESSPLACE로 매핑되어 있습니다.
초보의 말만 믿지 마시고, 고수님들의 조언을 기다려보시죠.. 넹..