Skip to Content
0
Former Member
Sep 13, 2007 at 07:11 PM

HOW TO PROGRAM THE ERRORS IN POSTING A DOCU USING BAPI_ACC_DCOCUMENT_POST

326 Views

MY INTERNAL TABLES ARE :

  • TABLE FOR INTERNAL CUSTOMER.

DATA: BEGIN OF T_ICUSTOMER OCCURS 0,

BUKRS LIKE BKPF-BUKRS, "COMPANY

BELNR LIKE BKPF-BELNR, "ACC.DOCUMENT NUMBER

GJAHR LIKE BKPF-GJAHR, "FISCAL YEAR

MONAT LIKE BKPF-MONAT, "FISCAL PERIOD

EBELN LIKE EKKO-EBELN, "DOCUMENT NUMBER

  • KUNNR LIKE LIKP-KUNNR,"DEALER

KUNNR LIKE EKPO-KUNNR, "INTERNL DEALER NUMBER

HKONT LIKE BSEG-HKONT, "G/L ACCOUT NUMBER

KOSTL LIKE BSEG-KOSTL, "COST CENTRE NUMBER

END OF T_ICUSTOMER.

  • table to pass data to bapi header

DATA: BEGIN OF STR_BAPI_HDR,

TCODE LIKE SY-TCODE, " VALUE 'RFBU'

USERNAME LIKE SY-UNAME,

BUKRS LIKE BSEG-BUKRS,

DOC_DATE LIKE SY-DATUM ,

PSTNG_DATE LIKE SY-DATUM,

YEAR LIKE BSEG-GJAHR,

DOCTYPE LIKE BKPF-BLART, " VALUE 'ZZ',

BELNR LIKE BKPF-BELNR,

END OF STR_BAPI_HDR.

  • table for debit/credit data of a dealer

DATA: BEGIN OF T_ITEM_DATA OCCURS 0,

BELNR LIKE BSEG-BELNR," DOCUMENT NUMBER

BSCHL LIKE BSEG-BSCHL," POSTING KEY

SHKZG LIKE BSEG-SHKZG," DEBIT/CREDIT INDICATOR

WRBTR LIKE BSEG-WRBTR," AMOUNT

PSWSL LIKE BSEG-PSWSL," CURRENCY

HKONT LIKE BSEG-HKONT," G/L ACCOUNT

KUNNR LIKE BSEG-KUNNR," DEALER

PRCTR LIKE BSEG-PRCTR," PROFIT CENTRE

END OF T_ITEM_DATA.

  • table to pass data to bapiacgl09

DATA: T_ACCOUNTGL TYPE STANDARD TABLE OF BAPIACGL09,

WA_ACCOUNTGL TYPE BAPIACGL09.

*table to pass data to bapiaccr09

DATA: T_CURRENCYAMOUNT TYPE STANDARD TABLE OF BAPIACCR09,

WA_CURRENCYAMOUNT TYPE BAPIACCR09.

NOW I NEED TO PASS DATA TO BAPI 'BAPI_ACC_DOCUMENT_POST".

SO I CONSTRUCTED THE STRUCTURE AND TABLES TO PASS TO THE BAPI AS FOLLOWS:

LOOP AT T_ICUSTOMER.

  • SELECTING HEADER DATA VALUES TO PASS TO STRUCTURE BAPIACHE09

CLEAR STR_BAPI_HDR.

STR_BAPI_HDR-TCODE = 'RFBU'.

STR_BAPI_HDR-USERNAME = SY-UNAME.

STR_BAPI_HDR-BUKRS = T_ICUSTOMER-BUKRS.

STR_BAPI_HDR-DOC_DATE = SY-DATUM.

STR_BAPI_HDR-PSTNG_DATE = SY-DATUM.

STR_BAPI_HDR-YEAR = T_ICUSTOMER-GJAHR.

STR_BAPI_HDR-DOCTYPE = 'ZZ'.

STR_BAPI_HDR-BELNR = T_ICUSTOMER-BELNR.

  • SELCETING DATA FROM BSEG

CLEAR T_ITEM_DATA.

REFRESH T_ITEM_DATA.

SELECT BELNR

BSCHL

SHKZG

WRBTR

PSWSL

HKONT

KUNNR

PRCTR

FROM BSEG

INTO CORRESPONDING FIELDS OF TABLE T_ITEM_DATA

WHERE BELNR = T_ICUSTOMER-BELNR.

ITEMNO_ACC = 1.

LOOP AT T_ITEM_DATA.

*declare a variable here to pass to item tab..

IF T_ITEM_DATA-BSCHL = '31' AND

T_ITEM_DATA-SHKZG = 'H'. " IF CREDITING THE INVENTORY

CONCATENATE TEXT T_ICUSTOMER-EBELN INTO ITEM_TEXT.

WA_ACCOUNTGL-ITEMNO_ACC = ITEMNO_ACC.

WA_ACCOUNTGL-GL_ACCOUNT = T_ICUSTOMER-HKONT.

WA_ACCOUNTGL-ITEM_TEXT = ITEM_TEXT.

WA_ACCOUNTGL-COSTCENTER = T_ICUSTOMER-KOSTL.

WA_ACCOUNTGL-DE_CRE_IND = 's'.

WA_CURRENCYAMOUNT-ITEMNO_ACC = ITEMNO_ACC.

WA_CURRENCYAMOUNT-CURRENCY = T_ITEM_DATA-PSWSL.

WA_CURRENCYAMOUNT-CURRENCY_ISO = T_ITEM_DATA-PSWSL.

WA_CURRENCYAMOUNT-AMT_DOCCUR = T_ITEM_DATA-WRBTR.

APPEND WA_ACCOUNTGL TO T_ACCOUNTGL.

APPEND WA_CURRENCYAMOUNT TO T_CURRENCYAMOUNT.

CLEAR: WA_ACCOUNTGL,WA_CURRENCYAMOUNT.

ELSEIF T_ITEM_DATA-BSCHL = '99' AND

T_ITEM_DATA-SHKZG = 'S'.

WA_ACCOUNTGL-ITEMNO_ACC = ITEMNO_ACC.

WA_ACCOUNTGL-GL_ACCOUNT = T_ITEM_DATA-HKONT.

WA_ACCOUNTGL-PROFIT_CTR = T_ITEM_DATA-PRCTR.

WA_ACCOUNTGL-DE_CRE_IND = 'H'.

WA_CURRENCYAMOUNT-ITEMNO_ACC = ITEMNO_ACC.

WA_CURRENCYAMOUNT-CURRENCY = T_ITEM_DATA-PSWSL.

WA_CURRENCYAMOUNT-CURRENCY_ISO = T_ITEM_DATA-PSWSL.

WA_CURRENCYAMOUNT-AMT_DOCCUR = T_ITEM_DATA-WRBTR.

APPEND WA_ACCOUNTGL TO T_ACCOUNTGL.

APPEND WA_CURRENCYAMOUNT TO T_CURRENCYAMOUNT.

CLEAR: WA_ACCOUNTGL,WA_CURRENCYAMOUNT.

ENDIF.

ITEMNO_ACC = ITEMNO_ACC + 1.

ENDLOOP.

NOW I CALL THE BAPI AND PASS THESE STRUCTURE AND TABLE:

CALL FUNCTION 'BAPI_ACC_DOCUMENT_POST'

EXPORTING

documentheader = STR_BAPI_HDR

  • CUSTOMERCPD =

  • CONTRACTHEADER =

  • IMPORTING

  • OBJ_TYPE =

  • OBJ_KEY =

  • OBJ_SYS =

tables

ACCOUNTGL = T_ACCOUNTGL

  • ACCOUNTRECEIVABLE =

  • ACCOUNTPAYABLE =

  • ACCOUNTTAX =

currencyamount = T_CURRENCYAMOUNT

  • CRITERIA =

  • VALUEFIELD =

  • EXTENSION1 =

  • return =

  • PAYMENTCARD =

  • CONTRACTITEM =

.

NOW I WANT TO CHECK IF THE DOCUMENT IS POSTED OR NOT.SO I NEED TO CONSTRUCT THE TABLE RETURN....

CAN ANY ONE HELP ME IN CONSTRUCTING THE TABLE AND HOW TO CHECK IF IT IS SUCCESSFULL OR NOTAND DO THE NECESSARY POST PROCESSING..I.E. CALL THE REURN VALUE INTO

THE PROGRAM AND DO THE POST PROCESSING..

ENDLOOP.