Skip to Content
0
Former Member
Dec 10, 2008 at 02:09 PM

Error in BAPI_ACC_DOCUMENT_POST

371 Views

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.