Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

Error in BAPI_ACC_DOCUMENT_POST

Former Member
0 Likes
903

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.

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
532

do not populate

*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.

gl line item along with cost center there has to be a account that needs to be populated.

3 REPLIES 3
Read only

Former Member
0 Likes
533

do not populate

*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.

gl line item along with cost center there has to be a account that needs to be populated.

Read only

Former Member
0 Likes
532

Hi vikki,

I am also facing the same problem. Please let me know if you have solved this problem.

Thanks

Rajan

Read only

0 Likes
532

Hi,

Dont populate the below fields in the HEADER TABLE

*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.

this solved my problem.

If u have any query let me know.