File format is shown below –
Copy the data and paste it in TXT file.
Browse the TXT File
N – Is a separator.
REPORT ZBAPIFB60.
TABLES: BSEG, BKPF.
** Internal table declaration
DATA: lt_glacct TYPE TABLE OF bapiacgl09,
lt_vendact TYPE TABLE OF bapiacap09,
lt_curramt TYPE TABLE OF bapiaccr09,
lt_return TYPE TABLE OF bapiret2,
lt_ACCOUNTWT TYPE TABLE OF BAPIACWT09,
lt_LFBW TYPE TABLE OF LFBW.
** Workarea and variable declaration
DATA: lv_objtyp TYPE bapiache09-obj_type,
lv_objkey TYPE bapiache09-obj_key,
lv_objsys TYPE bapiache09-obj_sys,
wa_docheader TYPE bapiache09,
wa_glacct LIKE LINE OF lt_glacct,
wa_curramt LIKE LINE OF lt_curramt,
wa_vendact LIKE LINE OF lt_vendact,
wa_return LIKE LINE OF lt_return,
wa_ACCOUNTWT LIKE LINE OF lt_ACCOUNTWT,
wa_LFBW LIKE LINE OF lt_LFBW.
PARAMETERS : V_BUKRS TYPE BKPF-BUKRS.
PARAMETERS : V_BUDAT TYPE BKPF-BUDAT.
PARAMETERS : V_BLDAT TYPE BKPF-BLDAT.
PARAMETERS : V_GJAHR TYPE BKPF-GJAHR.
PARAMETERS : V_BLART TYPE BKPF-BLART.
TYPES : BEGIN OF ST,
BUZEI(3),
LIFNR(10),
WRBTR(13),
BUPLA(4),
SECCO(4),
SHKZG(1),
MWSKZ(2),
GSBER(1),
PRCTR(10),
KOSTL(10),
SGTXT(50),
ZFBDT(10),
ZLSCH(1),
END OF ST.
* INTERNAL TABLE AND WORKAREA DECLARATION
DATA : ITAB TYPE TABLE OF ST.
DATA : WA TYPE ST.
* TYPES DECLARATION
DATA: W_FILENAME TYPE STRING.
SELECTION-SCREEN SKIP 1.
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-500.
PARAMETERS: P_FILENM LIKE RLGRAP-FILENAME.
SELECTION-SCREEN END OF BLOCK B1.
START-OF-SELECTION.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILENM.
CALL FUNCTION 'WS_FILENAME_GET'
EXPORTING
MASK = ',*.*,*.*.'
MODE = '0'
TITLE = 'GET FILE NAME'
IMPORTING
FILENAME = P_FILENM
EXCEPTIONS
INV_WINSYS = 1
NO_BATCH = 2
SELECTION_CANCEL = 3
SELECTION_ERROR = 4
OTHERS = 5.
** END OF CHANGE DCS05052003
** START OF CHANGE DCS05052003
START-OF-SELECTION.
W_FILENAME = P_FILENM.
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
** FILENAME = 'C:\BDC_XLS_ASSIGN.TXT'
FILENAME = W_FILENAME
FILETYPE = 'ASC'
HAS_FIELD_SEPARATOR = 'X'
TABLES
DATA_TAB = ITAB
EXCEPTIONS
FILE_OPEN_ERROR = 1
FILE_READ_ERROR = 2
NO_BATCH = 3
GUI_REFUSE_FILETRANSFER = 4
INVALID_TYPE = 5
NO_AUTHORITY = 6
UNKNOWN_ERROR = 7
BAD_DATA_FORMAT = 8
HEADER_NOT_ALLOWED = 9
SEPARATOR_NOT_ALLOWED = 10
HEADER_TOO_LONG = 11
UNKNOWN_DP_ERROR = 12
ACCESS_DENIED = 13
DP_OUT_OF_MEMORY = 14
DISK_FULL = 15
DP_TIMEOUT = 16
OTHERS = 17.
.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO.
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
** All necessary fields for vendor invoices will be considerd.
* Populate header data of document
wa_docheader-obj_type = 'BKPFF'.
wa_docheader-obj_key = '$'.
wa_docheader-obj_sys = 'Your
Object System'.
wa_docheader-bus_act = 'RFBU'.
wa_docheader-comp_code = V_BUKRS.
wa_docheader-username = sy-uname.
wa_docheader-header_txt = 'Upload using BAPI'.
wa_docheader-doc_date = V_BLDAT.
wa_docheader-pstng_date = V_BUDAT.
wa_docheader-fisc_year = V_GJAHR.
wa_docheader-doc_type = V_BLART.
LOOP AT ITAB INTO WA.
IF WA-BUZEI EQ 'N'.
"Write: 'Post the Documents'.
CALL FUNCTION 'BAPI_ACC_DOCUMENT_POST'
EXPORTING
documentheader = wa_docheader
IMPORTING
obj_type = lv_objtyp
obj_key = lv_objkey
obj_sys = lv_objsys
TABLES
accountgl = lt_glacct
accountpayable = lt_vendact
currencyamount = lt_curramt
ACCOUNTWT = LT_ACCOUNTWT
return = lt_return.
IF sy-subrc EQ 0.
WRITE:/ lv_objtyp.
WRITE:/ lv_objkey.
WRITE:/ lv_objsys.
LOOP AT lt_return INTO wa_return.
WRITE:/ wa_return-message.
CLEAR wa_return.
ENDLOOP.
COMMIT WORK AND WAIT.
ENDIF.
CLEAR: wa_glacct, lt_glacct, wa_vendact, lt_vendact, wa_curramt, lt_curramt, wa_accountwt, LT_ACCOUNTWT, wa_return, lt_return.
ENDIF.
IF WA-BUZEI NE 'N'.
* Account payable are maintained here
IF WA-SHKZG EQ ''.
WA_VENDACT-ITEMNO_ACC = WA-BUZEI.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
INPUT = WA-LIFNR
IMPORTING
OUTPUT = WA-LIFNR.
WA_VENDACT-VENDOR_NO = WA-LIFNR."'0000109967'.
CALL FUNCTION 'CONVERT_DATE_TO_INTERNAL'
EXPORTING
DATE_EXTERNAL = WA-ZFBDT
* ACCEPT_INITIAL_DATE =
IMPORTING
DATE_INTERNAL = WA-ZFBDT
* EXCEPTIONS
* DATE_EXTERNAL_IS_INVALID = 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.
ENDIF.
WA_VENDACT-BLINE_DATE = WA-ZFBDT."'20140816'.
WA_VENDACT-ITEM_TEXT = WA-SGTXT."'ACCOUNT PAYABLE'.
WA_VENDACT-BUSINESSPLACE = WA-BUPLA."'COFT'.
WA_VENDACT-SECTIONCODE = WA-SECCO."'COFT'.
WA_VENDACT-PYMT_METH = WA-ZLSCH.
APPEND WA_VENDACT TO LT_VENDACT.
"Read from Vendor Master the Tax Code.
SELECT * FROM LFBW INTO CORRESPONDING FIELDS OF WA_LFBW WHERE
LIFNR = WA-LIFNR AND
BUKRS = V_BUKRS AND
WT_SUBJCT = 'X'.
"APPEND WA_LFBW to LT_LFBW.
wa_ACCOUNTWT-ITEMNO_ACC = WA-BUZEI.
wa_ACCOUNTWT-WT_TYPE = WA_LFBW-WITHT."'W1'.
wa_ACCOUNTWT-WT_CODE = WA_LFBW-WITHT."'W1'.
APPEND wa_ACCOUNTWT TO LT_ACCOUNTWT.
ENDSELECT.
*Make sure total amount balance for a document should be zero
wa_curramt-itemno_acc = WA-BUZEI.
wa_curramt-curr_type = '00'.
wa_curramt-currency = 'INR'.
DATA:LD_AMT(13) TYPE P DECIMALS 2.
CALL FUNCTION 'MOVE_CHAR_TO_NUM'
EXPORTING
CHR = WA-WRBTR
IMPORTING
NUM = ld_amt
EXCEPTIONS
CONVT_NO_NUMBER = 1
CONVT_OVERFLOW = 2
OTHERS = 3.
wa_curramt-amt_doccur = ( -1 ) * ld_amt."'-1000.00'.
APPEND wa_curramt TO lt_curramt.
CLEAR wa_curramt.
ENDIF.
* Corresponding entry in GL Account
IF WA-SHKZG EQ 'S'.
WA_GLACCT-ITEMNO_ACC = WA-BUZEI.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
INPUT = WA-LIFNR
IMPORTING
OUTPUT = WA-LIFNR.
WA_GLACCT-GL_ACCOUNT = WA-LIFNR."'0000602025'.
WA_GLACCT-TAX_CODE = WA-MWSKZ.
WA_GLACCT-ITEM_TEXT = WA-SGTXT."'GL ACCOUNT'.
WA_GLACCT-BUS_AREA = WA-GSBER."'1'.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
INPUT = WA-PRCTR
IMPORTING
OUTPUT = WA-PRCTR.
WA_GLACCT-PROFIT_CTR = WA-PRCTR."'100'.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
INPUT = WA-KOSTL
IMPORTING
OUTPUT = WA-KOSTL.
WA_GLACCT-COSTCENTER = WA-KOSTL."'0000017090'.
APPEND WA_GLACCT TO LT_GLACCT.
wa_curramt-itemno_acc = WA-BUZEI."'0000000002'.
wa_curramt-curr_type = '00'.
wa_curramt-currency = 'INR'.
CALL FUNCTION 'MOVE_CHAR_TO_NUM'
EXPORTING
CHR = WA-WRBTR
IMPORTING
NUM = ld_amt
EXCEPTIONS
CONVT_NO_NUMBER = 1
CONVT_OVERFLOW = 2
OTHERS = 3.
wa_curramt-amt_doccur = ld_amt."'1000.00'.
APPEND wa_curramt TO lt_curramt.
ENDIF.
*Credit Entry in GL Account
IF WA-SHKZG EQ 'H'.
WA_GLACCT-ITEMNO_ACC = WA-BUZEI.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
INPUT = WA-LIFNR
IMPORTING
OUTPUT = WA-LIFNR.
WA_GLACCT-GL_ACCOUNT = WA-LIFNR."'0000602025'.
WA_GLACCT-TAX_CODE = WA-MWSKZ.
WA_GLACCT-ITEM_TEXT = WA-SGTXT."'GL ACCOUNT'.
WA_GLACCT-BUS_AREA = WA-GSBER."'1'.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
INPUT = WA-PRCTR
IMPORTING
OUTPUT = WA-PRCTR.
WA_GLACCT-PROFIT_CTR = WA-PRCTR."'100'.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
INPUT = WA-KOSTL
IMPORTING
OUTPUT = WA-KOSTL.
WA_GLACCT-COSTCENTER = WA-KOSTL."'0000017090'.
APPEND WA_GLACCT TO LT_GLACCT.
wa_curramt-itemno_acc = WA-BUZEI."'0000000002'.
wa_curramt-curr_type = '00'.
wa_curramt-currency = 'INR'.
CALL FUNCTION 'MOVE_CHAR_TO_NUM'
EXPORTING
CHR = WA-WRBTR
IMPORTING
NUM = ld_amt
EXCEPTIONS
CONVT_NO_NUMBER = 1
CONVT_OVERFLOW = 2
OTHERS = 3.
wa_curramt-amt_doccur = ( -1 ) * ld_amt."'1000.00'.
APPEND wa_curramt TO lt_curramt.
ENDIF.
ENDIF.
ENDLOOP.
|