hi,
I am using BAPI_ACC_DOCUMENT_POST to post vendor accounts.
this is the code i am using.
*get the object key, logical system , and obj type for the BAPI
V_OBJ_TYPE = 'BKPFF'.
V_OBJ_KEY = '$'.
CALL FUNCTION 'OWN_LOGICAL_SYSTEM_GET'
IMPORTING
OWN_LOGICAL_SYSTEM = V_LOGSYS
EXCEPTIONS
OWN_LOGICAL_SYSTEM_NOT_DEFINED = 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.
V_OBJ_SYS = V_LOGSYS.
ENDIF.
LOOP AT IT_HEADER.
CLEAR : IT_DOC, IT_ACCGL, IT_CURR, IT_RETURN, IT_EXTENSION1.
REFRESH : IT_DOC, IT_ACCGL, IT_CURR, IT_EXTENSION1.
*populate it_doc - BAPI header table
IT_DOC-OBJ_TYPE = V_OBJ_TYPE.
IT_DOC-OBJ_KEY = V_OBJ_KEY.
IT_DOC-OBJ_SYS = V_OBJ_SYS.
*HEADER
IT_DOC-USERNAME = SY-UNAME.
IT_DOC-COMP_CODE = IT_HEADER-BUKRS.
IT_DOC-BUS_ACT = 'RFBU'.
*length of it_header-bldat
V_BLDAT = STRLEN( IT_HEADER-BLDAT ).
IF V_BLDAT = 9.
CONCATENATE IT_HEADER-BLDAT+5(4) '0' IT_HEADER-BLDAT+3(1) IT_HEADER-BLDAT+0(2) INTO IT_DOC-DOC_DATE.
ELSE.
CONCATENATE IT_HEADER-BLDAT+5(4) IT_HEADER-BLDAT+3(2) IT_HEADER-BLDAT+0(2) INTO IT_DOC-DOC_DATE.
ENDIF.
* CONCATENATE IT_HEADER-BLDAT+0(4) IT_HEADER-BLDAT+5(2) IT_HEADER-BLDAT+8(2) INTO IT_DOC-DOC_DATE.
CONCATENATE IT_HEADER-BUDAT+0(4) IT_HEADER-BUDAT+5(2) IT_HEADER-BUDAT+8(2) INTO IT_DOC-PSTNG_DATE.
IT_DOC-FIS_PERIOD = IT_HEADER-MONAT.
IT_DOC-DOC_TYPE = IT_HEADER-BLART.
IF NOT IT_HEADER-WWERT IS INITIAL.
CONCATENATE IT_HEADER-WWERT+0(4) IT_HEADER-WWERT+5(2) IT_HEADER-WWERT+8(2) INTO IT_DOC-TRANS_DATE.
ELSE.
IT_DOC-TRANS_DATE = IT_DOC-PSTNG_DATE.
ENDIF.
IT_DOC-REF_DOC_NO = IT_HEADER-XBLNR.
IT_DOC-HEADER_TXT = IT_HEADER-BKTXT.
APPEND IT_DOC.
**ITEM DATA
*populate it_accgl - BAPI item table
CLEAR V_ITEM.
LOOP AT IT_ITEM WHERE HEAD_COL = IT_HEADER-FIRST_COL.
V_ITEM = V_ITEM + 1.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
INPUT = V_ITEM
IMPORTING
OUTPUT = V_ITEM.
IT_ACCGL-ITEMNO_ACC = V_ITEM. "IT_ITEM-NEWBS.
*for vendor / gl accounts based on newbs
IF IT_ITEM-NEWBS = '40' OR IT_ITEM-NEWBS = '50'.
IT_ACCGL-GL_ACCOUNT = IT_ITEM-NEWKO.
ELSEIF IT_ITEM-NEWBS = '21' OR
IT_ITEM-NEWBS = '22' OR
IT_ITEM-NEWBS = '23' OR
IT_ITEM-NEWBS = '24' OR
IT_ITEM-NEWBS = '25' OR
IT_ITEM-NEWBS = '26' OR
IT_ITEM-NEWBS = '27' OR
IT_ITEM-NEWBS = '28' OR
IT_ITEM-NEWBS = '29' OR
IT_ITEM-NEWBS = '30' OR
IT_ITEM-NEWBS = '31' OR
IT_ITEM-NEWBS = '32' OR
IT_ITEM-NEWBS = '33' OR
IT_ITEM-NEWBS = '34' OR
IT_ITEM-NEWBS = '35' OR
IT_ITEM-NEWBS = '36' OR
IT_ITEM-NEWBS = '37' OR
IT_ITEM-NEWBS = '38' OR
IT_ITEM-NEWBS = '39'.
IF IT_HEADER-BLART = 'KR' OR IT_HEADER-BLART = 'KA'.
IT_ACCGL-ACCT_TYPE = 'K'.
IT_ACCREC-ITEMNO_ACC = V_ITEM.
IT_ACCREC-VENDOR_NO = IT_ITEM-NEWKO.
IT_ACCREC-COMP_CODE = IT_HEADER-BUKRS.
IT_ACCREC-ITEM_TEXT = IT_ITEM-SGTXT.
APPEND IT_ACCREC.
ENDIF.
ENDIF.
IT_ACCGL-ITEM_TEXT = IT_ITEM-SGTXT.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
INPUT = IT_ITEM-AUFNR
IMPORTING
OUTPUT = IT_ACCGL-ORDERID.
IT_ACCGL-ALLOC_NMBR = IT_ITEM-ZUONR.
CONCATENATE IT_HEADER-BUDAT+0(4) IT_HEADER-BUDAT+5(2) IT_HEADER-BUDAT+8(2) INTO IT_ACCGL-PSTNG_DATE.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
INPUT = IT_ITEM-KOSTL
IMPORTING
OUTPUT = IT_ACCGL-COSTCENTER.
IT_ACCGL-ITEM_TEXT = IT_ITEM-SGTXT.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
INPUT = IT_ITEM-PRCTR
IMPORTING
OUTPUT = IT_ITEM-PRCTR.
IT_ACCGL-PROFIT_CTR = IT_ITEM-PRCTR.
APPEND IT_ACCGL.
**CURRENCY
*populate it_curr - BAPI currency table
IT_CURR-ITEMNO_ACC = V_ITEM. "IT_ITEM-NEWBS.
IT_CURR-CURRENCY = IT_HEADER-WAERS.
*if newbs = 40, it indicates that the amount is credited.ie positive sign
* IF IT_ITEM-NEWBS = '40'.
IT_CURR-AMT_DOCCUR = IT_ITEM-WRBTR.
* ENDIF.
*if newbs = 50, it indicates that the amount is debited.ie negative sign
* IF IT_ITEM-NEWBS = '50'.
* IT_CURR-AMT_DOCCUR = IT_ITEM-WRBTR * -1.
* ENDIF.
IT_CURR-EXCH_RATE = IT_HEADER-KURSF.
APPEND IT_CURR.
***Extension1
*populate it_extension1 - BAPI extension1 table
V_NEWBS = IT_ITEM-NEWBS.
IT_EXTENSION1-FIELD1(10) = V_ITEM.
IT_EXTENSION1-FIELD1+10(2) = IT_ITEM-MWSKZ.
IF NOT IT_ITEM-MWSKZ IS INITIAL.
IT_EXTENSION1-FIELD2(10) = V_ITEM.
IT_EXTENSION1-FIELD2+10(1) = 'X'.
ENDIF.
*for posting key
IT_EXTENSION1-FIELD3 = V_NEWBS.
APPEND IT_EXTENSION1.
ENDLOOP.
*call bapi
* CALL FUNCTION 'BAPI_ACC_GL_POSTING_POST'
* EXPORTING
* DOCUMENTHEADER = IT_DOC
* TABLES
* ACCOUNTGL = IT_ACCGL
* CURRENCYAMOUNT = IT_CURR
* RETURN = IT_RETURN
* EXTENSION1 = IT_EXTENSION1.
CALL FUNCTION 'BAPI_ACC_DOCUMENT_POST'
EXPORTING
DOCUMENTHEADER = IT_DOC
* CUSTOMERCPD =
* CONTRACTHEADER =
IMPORTING
OBJ_TYPE = V_OBJ_TYPE
OBJ_KEY = V_OBJ_KEY
OBJ_SYS = V_OBJ_SYS
TABLES
ACCOUNTGL = IT_ACCGL
* ACCOUNTRECEIVABLE =
ACCOUNTPAYABLE = IT_ACCREC
* ACCOUNTTAX =
CURRENCYAMOUNT = IT_CURR
* CRITERIA =
* VALUEFIELD =
EXTENSION1 = IT_EXTENSION1
RETURN = IT_RETURN
* PAYMENTCARD =
* CONTRACTITEM =
* EXTENSION2 =
* REALESTATE =
* ACCOUNTWT =
.
i am getting the error :
Incorrect entry in field OBJ_TYPE: BKPFF* *Required field GL_ACCOUNT was not transferred in parameter ACCOUNTGL*
Why the error is coming .............how to correct this?
Vikki.