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.
|
Hallo,
ReplyDeletecould you pleas provide example of the TXT file as well?
Thanks a lot!
Ivan
Hi Ivan,
DeleteI have attached the screen shot.
Make the data as per the attached file. Then copy the data in to the TXT file.
Regards,
SAP FICO BLOG
Thank you very much!
DeleteBest regards,
Ivan