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.