0% found this document useful (0 votes)
218 views25 pages

Bapi Acc Document Post With Split

The document declares various internal tables and data objects to store and process data. It defines tables to store financial document data, account assignments, cost centers, and other reference data. It also defines variables for file names, counts, amounts and other values needed to process a batch of financial documents.

Uploaded by

Hornsingh
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
218 views25 pages

Bapi Acc Document Post With Split

The document declares various internal tables and data objects to store and process data. It defines tables to store financial document data, account assignments, cost centers, and other reference data. It also defines variables for file names, counts, amounts and other values needed to process a batch of financial documents.

Uploaded by

Hornsingh
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 25

REPORT zleasewave_batch.

*&
*& DATA DECLARATION
*&---------------------------------------------------------------------*

*&---------------------------------------------------------------------*
*& I N T E R N A L T A B L E S
*&---------------------------------------------------------------------*
DATA: text08(255) type c.

DATA : ITAB TYPE TABLE OF STRING WITH HEADER LINE.


DATA: WA_ITAB LIKE ITAB.

data: x_path type string.


DATA: text09(255) type c.
DATA: text07(255) type c.

DATA : filename1 TYPE string.

DATA : W_FILE0 TYPE RLGRAP-FILENAME.

DATA : FULL_NAME TYPE STRING.


DATA : STRIPPED_NAME TYPE STRING.
DATA : FILE_PATH TYPE STRING.

DATA: MESS(60).
DATA: wa_string(255) type c.
class cl_abap_char_utilities definition load.

constants: con_tab type c value cl_abap_char_utilities=>HORIZONTAL_TAB.

**Concatenate sy-datum6(2)'-'sy-datum4(2)'-'sy-datum0(4) into text08.


*
*
*Concatenate 'GL_LW_SAP_5624_' sy-datum+6(2) '-' sy-datum+4(2) '-' sy-datum+0(4)
'-' SY-UZEIT into text08 in character mode.
*
*Concatenate '/usr/sap/Leasewave/work/' text08 into text09.

DATA: D_MSG_TEXT type STRING.


DATA:
E_FILE1(255) TYPE C VALUE '/usr/sap/Leasewave/archive/'.

DATA: V_FILE TYPE RLGRAP-FILENAME,


W_FILE2 TYPE RLGRAP-FILENAME.

DATA :

DOC_HEADER LIKE BAPIACHE09,


IT_ACCOUNTGL LIKE BAPIACGL09 OCCURS 0 WITH HEADER LINE,
IT_CURRENCYAMT LIKE BAPIACCR09 OCCURS 0 WITH HEADER LINE,
IT_RETURN LIKE BAPIRET2 OCCURS 0 WITH HEADER LINE.

DATA: IT_FILE_LIST LIKE TABLE OF RSFILLST WITH HEADER LINE.


*
*DATA: lsys like tbdls-logsys.
*DATA: l_objkey TYPE awkey,
* l_rtncode type INRI-RETURNCODE,
* l_objtran TYPE glvor,
*
* l_belnr type belnr_d,
*
* l_qty type INRI-QUANTITY.

DATA : BEGIN OF IT_RETURN_E OCCURS 0,


MSG_TYP LIKE BAPIRET2-TYPE,
MSG_DESC LIKE BAPIRET2-MESSAGE,
END OF IT_RETURN_E.

DATA : BEGIN OF IT_ERR OCCURS 0,


ERTXT(200) TYPE C,
END OF IT_ERR.

DATA : BEGIN OF IT_ERR1 OCCURS 0,


ERTXT(200) TYPE C,
END OF IT_ERR1.

DATA TABIX1 TYPE STRING.

DATA : FNO TYPE STRING.


DATA : TEXT1 TYPE STRING.

DATA : DATE_TEMP1(10) TYPE C,


DATE_TEMP2(10) TYPE C,
DATE_TEMP3(10) TYPE C.

DATA : CC_PC1 TYPE PRCTR..


DATA: CC_PC2 type string.

DATA: cc_pc type string.


*
*DATA : WA_BANCS TYPE ZBANCS_COUNTER.

*DATA : BEGIN OF IT_FB01 OCCURS 0,


* XBLNR LIKE BKPF-XBLNR, "REFERENCE
* BKTXT LIKE BKPF-BKTXT, "DOCUMENT HEADER TEXT
* BLDAT LIKE BKPF-BLDAT, "DOCUMENT DATE
* BUDAT LIKE BKPF-BUDAT, "POSTING DATE
* WAERS LIKE BKPF-WAERS, "CURRENCY
** BLANK1 TYPE STRING,
** BLANK2 TYPE STRING,
* RATE TYPE STRING,
* FDAT TYPE BKPF-BUDAT,
* newbs TYPE NEWBS, "POSTING KEY
* NEWKO LIKE SKB1-SAKNR,"G/L ACCOUNT,
* KOSTL LIKE COBL-KOSTL,
* PDNO TYPE STRING,"PURCHASE DOC NO
** BLANK4 TYPE STRING,
* VDATE TYPE BKPF-BUDAT, "VALUE DATE
** BLANK5 TYPE STRING,
** BLANK6 TYPE STRING,
* WRBTR TYPE STRING, "FCAMOUNT
* AAMNT TYPE STRING, "ALCMOUNT
** WRBTR LIKE BSEG-WRBTR, "AMOUNT
* SPLG TYPE STRING, "SPLGLINDIC
* ORDERNO TYPE STRING, "ORDER NO
* ALLOC TYPE STRING, "ALLOCATION
* SGTXT LIKE BSEG-SGTXT, "ITEM TEXT
* PMETHOD TYPE STRING,"PAYMETHOD
* PMNT TYPE STRING,"PMNT TERMS
* BANKACC TYPE STRING,"BANK ACC
* PRCTR LIKE COBL-PRCTR, "PROFIT CENTRE
* END OF IT_FB01.

*DATA: BEGIN OF IT_FB01 OCCURS 0,


* XBLNR LIKE BKPF-XBLNR, "REFERENCE
* BKTXT LIKE BKPF-BKTXT, "DOCUMENT HEADER TEXT
* BLDAT LIKE BKPF-BLDAT, "DOCUMENT DATE
* BUDAT LIKE BKPF-BUDAT, "POSTING DATE
* WAERS LIKE BKPF-WAERS, "CURRENCY
* BLANK1 TYPE STRING,
* BLANK2 TYPE STRING,
* newbs TYPE NEWBS, "POSTING KEY
* NEWKO LIKE SKB1-SAKNR,"G/L ACCOUNT
* KOSTL LIKE COBL-KOSTL, "COST CENTRE
* BLANK3 TYPE STRING,"PURCHASING DOC NUMBER
* BLANK4 TYPE BKPF-BUDAT,"VALUE DATE
* BLANK5 TYPE STRING,"FC AMOUNT
*
* WRBTR TYPE BSEG-WRBTR, "AMOUNT
** WRBTR LIKE BSEG-WRBTR, "AMOUNT
* BLANK6 TYPE STRING,"SPL_GL
* BLANK7 TYPE AUFK-AUFNR, "ORDER NUMBER
* BLANK8 TYPE STRING, "ALLOCATION
** BLANK9 TYPE STRING,
* SGTXT LIKE BSEG-SGTXT, "ITEM TEXT
* BLANK10 TYPE STRING, "PAY METHOD
* BLANK11 TYPE STRING, "TERMS
* BLANK12 TYPE STRING, "BANK ACC
*
* PRCTR LIKE COBL-PRCTR, "PROFIT CENTRE
* END OF IT_FB01.
DATA : BEGIN OF int_fb01 OCCURS 1000,
xblnr LIKE bkpf-xblnr, " (16) Ref. Doc. No.(Legacy PK)
bktxt LIKE bkpf-bktxt, " (25) Doc. header text
bldat(10), " (8) Date of the Document
budat(10), " (8) Posting Date
waers LIKE bkpf-waers , " (5) Currency key "MOD
kursf(16) , " Foreign Rate "MOD
wwert(10) , "Translation date "MOD
newbs LIKE rf05a-newbs, " (2) Posting Key
newko LIKE rf05a-newko, " (17) Account code
kostl LIKE cobl-kostl, " (10) Cost Centre
ebeln LIKE bseg-ebeln, " (10) purchasing document number
v_value_date(10) , " value date
wrbtr(16), " (13) Amount in document currenc
dmbtr(16), " Amount in loc curren
newum LIKE rf05a-newum, " (1)Special G/L indicator
aufnr LIKE cobl-aufnr , " (12)Order Number
zuonr LIKE bseg-zuonr , " (18)Allocation number
sgtxt LIKE bseg-sgtxt, " (50)Line item text
zlsch LIKE bseg-zlsch, " (1) Payment method
zterm LIKE bseg-zterm, " (4) Terms of payment key
gsber LIKE cobl-gsber, " (4) Business area
prctr LIKE cobl-prctr, " (10)Profit center
end of int_fb01.

TYPES : BEGIN OF it_demo,


xblnr(16) type c, " (16) Ref. Doc. No.(Legacy PK)
bktxt(25) type c , " (25) Doc. header text
bldat(10) type c, " (8) Date of the Document
budat(10) type c, " (8) Posting Date
waers(5) type c , " (5) Currency key "MOD
kursf(16) type c, " Foreign Rate "MOD
wwert(10) type c , "Translation date "MOD
newbs(10) type c, " (2) Posting Key
newko(6) type c, " (17) Account code
kostl(10) type c, " (10) Cost Centre
ebeln(10) type c, " (10) purchasing document number
v_value_date(10) type c, " value date
wrbtr(16) type c, " (13) Amount in document currenc
dmbtr(16) type c, " Amount in loc curren
newum(10) type c, " (1)Special G/L indicator
aufnr(10) type c , " (12)Order Number
zuonr(10) type c , " (18)Allocation number
sgtxt(95) type c, " (50)Line item text
zlsch(10) type c, " (1) Payment method
zterm(10) type c, " (4) Terms of payment key
gsber(10) type c, " (4) Business area
prctr(10) type c, " (10)Profit center
end of it_demo.

data: wa_demo type it_demo.

*DATA: wa_string(255) type c.

DATA: IT_FB01 LIKE TABLE OF INT_FB01 with header line..

*DATA: E_FILE1 LIKE RLGRAP-FILENAME VALUE 'usr/sap/Leasewave/archive/file.txt'.


*DATA : ITAB LIKE TABLE OF ALSMEX_TABLINE WITH HEADER LINE.

TYPES: BEGIN OF TY_SKB1,


BUKRS TYPE SKB1-BUKRS,
SAKNR TYPE SKB1-SAKNR,
XSPEB TYPE SKB1-XSPEB,
END OF TY_SKB1.

DATA: IT_SKB1 TYPE HASHED TABLE OF TY_SKB1 WITH UNIQUE KEY BUKRS SAKNR WITH HEADER
LINE.

TYPES: BEGIN OF TY_CC,


BUKRS TYPE CSKS-BUKRS,
KOSTL TYPE CSKS-KOSTL,
BKZKP TYPE CSKS-BKZKP,
END OF TY_CC.

DATA: IT_CC TYPE TABLE OF TY_CC WITH HEADER LINE.

TYPES: BEGIN OF TY_PC,


BUKRS TYPE CSKS-BUKRS,
PRCTR TYPE CSKS-KOSTL,
BKZKP TYPE CSKS-BKZKP,
END OF TY_PC.

DATA: IT_PC TYPE TABLE OF TY_PC WITH HEADER LINE.

TYPES: BEGIN OF TY_SKA1,


KTOPL TYPE SKA1-KTOPL,
SAKNR TYPE SKA1-SAKNR,
KTOKS TYPE SKA1-KTOKS,
END OF TY_SKA1.

DATA: IT_SKA1 TYPE HASHED TABLE OF TY_SKA1 WITH UNIQUE KEY KTOPL SAKNR WITH HEADER
LINE.

DATA : IT_T001 TYPE T001.

DATA: V_BUKRS TYPE BUKRS.

DATA : MSG TYPE STRING.

DATA : COMPANYCODE TYPE BUKRS VALUe '5000'.


DATA : FILE_NO TYPE I.
DATA : FILE_COUNT(5) TYPE C.
DATA : FILE_COUNT1 TYPE I.
DATA : DATE1 TYPE BUDAT.
DATA : DOC_NO(255) TYPE C.

DATA : DOCNO1 TYPE STRING.


DATA : DOCNO2 TYPE STRING.
DATA : DOCNO3 TYPE STRING.
DATA : DOCNO4 TYPE STRING.
DATA : DOCNO5 TYPE STRING.
DATA : DOCNO6 TYPE STRING.
DATA : DOCNO7 TYPE STRING.

DATA : ROWNO TYPE STRING.

DATA : V_COUNT TYPE I,


V_KOSTL TYPE CSKS-KOSTL,
* V_FILE TYPE RLGRAP-FILENAME,
W_FILE TYPE RLGRAP-FILENAME,
V_LINE TYPE I,
V_LINES TYPE I,
V_COUNT1 TYPE I,
V_LENGTH TYPE I,
* V_DEBIT(16) TYPE C,
* V_CREDIT(16) TYPE C,
V_DEBIT1(16) TYPE C,
V_CREDIT1(16) TYPE C,
* V_TALLY(16) TYPE C,
* V_RESULT(16) TYPE C,
* V_DIFF(16) TYPE C,
V_DEBIT TYPE P DECIMALS 4,
V_CREDIT TYPE P DECIMALS 4,
* V_DEBIT1 TYPE P decimals 4,
* V_CREDIT1 TYPE P decimals 4,
V_TALLY(16) TYPE C,
V_RESULT(16) TYPE C,
V_DIFF(16) TYPE C,
V_ERROR TYPE C VALUE 0,
FLAG TYPE C VALUE 0,
FLAG1 TYPE C VALUE 0,
AMT(16) TYPE C VALUE 0.

Data itab2 like it_FB01 occurs 0 with header line.

*SELECTION-SCREEN : BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.


*PARAMETER : P_FILE TYPE RLGRAP-FILENAME OBLIGATORY.
*SELECTION-SCREEN : END OF BLOCK B1.

SELECTION-SCREEN BEGIN OF BLOCK sel1 WITH FRAME TITLE text-001.


SELECTION-SCREEN SKIP.
PARAMETERS : file1 LIKE rlgrap-filename OBLIGATORY DEFAULT
'/usr/sap/Leasewave/work/'.
SELECTION-SCREEN SKIP.
PARAMETERS : company LIKE t001-bukrs OBLIGATORY DEFAULT '5000'." Changed
PARAMETERS : document LIKE t001-dtprov OBLIGATORY DEFAULT 'SA'.
*PARAMETERS : p_belnr LIKE bkpf-belnr.
*PARAMETERS : p_gjahr LIKE bkpf-gjahr OBLIGATORY.
*PARAMETERS : mode LIKE ibipparms-callmode OBLIGATORY DEFAULT 'N'.
*SELECTION-SCREEN SKIP.
**PARAMETERS : file2 LIKE rlgrap-filename OBLIGATORY.
*SELECTION-SCREEN SKIP.
*PARAMETERS : session LIKE apqi-groupid.
*SELECTION-SCREEN SKIP.
*PARAMETERS : p_simu AS CHECKBOX.
SELECTION-SCREEN END OF BLOCK sel1.
*SELECTION-SCREEN PUSHBUTTON /10(25) text-002 USER-COMMAND help.
INITIALIZATION.
GET PARAMETER ID 'BUK' FIELD company.
IF company IS INITIAL.
company = '5000'.
ENDIF.
GET PARAMETER ID 'BAR' FIELD document.
IF document IS INITIAL.
document = 'SA'.
ENDIF.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR file1.

* CALL FUNCTION 'KD_GET_FILENAME_ON_F4'


* EXPORTING
* PROGRAM_NAME = SYST-REPID
* DYNPRO_NUMBER = SYST-DYNNR
* CHANGING
* FILE_NAME = P_FILE
* EXCEPTIONS
* MASK_TOO_LONG = 1
* OTHERS = 2.
* IF SY-SUBRC <> 0.
*
* ENDIF.
*perform file.

*form file.
*
*
*
*CALL FUNCTION '/SAPDMC/LSM_F4_SERVER_FILE'
* EXPORTING
* DIRECTORY = '/usr/sap/'
* FILEMASK = ' '
* IMPORTING
* SERVERFILE = file1
* EXCEPTIONS
* CANCELED_BY_USER = 1
* OTHERS = 2
* .
*IF SY-SUBRC = 0.
*
*
*MESSAGE 'SUCCESSFUL' TYPE 'I'.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
*ENDIF.
*
*endform.

START-OF-SELECTION.

PERFORM UPLOAD.

FILE_COUNT1 = FILE_COUNT + 1.

* IF FILE_COUNT1 = FILE_NO.
PERFORM VALIDATIONS.
* for pre-document posting check
PERFORM FB01_CHECK.
* IT_FB01[] = INT_FB01[].
CLEAR V_TALLY.
CLEAR V_RESULT.

IF FLAG1 = 0.
*checking if debit is equal to credit.
* LOOP AT IT_FB01.
*
* IF IT_FB01-DC = '40'.
* AMT = IT_FB01-WRBTR * 1.
* V_DEBIT1 = V_DEBIT1 + AMT.
* ELSE.
** AMT = IT_FB01-WRBTR * 1.
* AMT = IT_FB01-WRBTR * -1.
* V_CREDIT1 = V_CREDIT1 + AMT.
* ENDIF.
*
* ENDLOOP.
* CLEAR AMT.
* AMT = V_DEBIT1 + V_CREDIT1.
* V_CREDIT1 = V_CREDIT1 * -1.
** IF AMT = 0.
* IF V_DEBIT1 = V_CREDIT1.

* Posting the document


PERFORM FB01.

* Updating the table ZBANCS_COUNTER.


* WA_BANCS-FILE_COUNTER = FILE_COUNT1.
* WA_BANCS-POSTED_DATE = SY-DATUM.
* WA_BANCS-COMP_CODE = COMPANYCODE.
** WA_BANCS-DOCUMENT_NO = DOCNO7.
* INSERT INTO ZBANCS_COUNTER2 VALUES WA_BANCS.
* ELSE.
* FORMAT COLOR 6 INVERSE.
*
* WRITE:/ 'ERROR DEBIT AMOUNT IS NOT EQUAL TO CREDIT AMOUNT'.
* FORMAT COLOR 2 INVERSE.
* EXIT.
* ENDIF.

ELSE.
LOOP AT IT_RETURN_E.
FORMAT COLOR 6 INVERSE.

WRITE: / IT_RETURN_E-MSG_TYP,
IT_RETURN_E-MSG_DESC.

FORMAT COLOR 2 INVERSE.


ENDLOOP.

EXIT.
ENDIF.

END-OF-SELECTION.

*&---------------------------------------------------------------------*
*& Form UPLOAD
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM UPLOAD.

CALL FUNCTION 'SUBST_GET_FILE_LIST'


EXPORTING
DIRNAME = '/usr/sap/Leasewave/work/'
FILENM = '*'
* PATTERN =
TABLES
FILE_LIST = IT_FILE_LIST
EXCEPTIONS
ACCESS_ERROR = 1
OTHERS = 2.

IF SY-SUBRC <> 0.
WRITE : / 'Error in Opening the file sy-subrc=',sy-subrc.
ENDIF.

SORT IT_FILE_LIST BY NAME.


*

LOOP AT IT_FILE_LIST.

IF IT_FILE_LIST-NAME EQ '.' OR IT_FILE_LIST-NAME EQ '..'.


CONTINUE.
* ENDIF.
ELSEIF IT_FILE_LIST-NAME CS 'GL'.
* ELSEIF IT_FILE_LIST-NAME EQ '[email protected]'.
* ELSEIF IT_FILE_LIST-NAME EQ 'TB.P.9000_30012011@7478'.
CONCATENATE file1 IT_FILE_LIST-NAME INTO V_FILE.
CONCATENATE e_file1 IT_FILE_LIST-NAME INTO W_FILE2.
PERFORM DATASET.
EXIT.
endif.
ENDLOOP.

ENDFORM.

FORM DATASET.
data : len1 type i.
OPEN DATASET V_FILE FOR INPUT IN TEXT MODE ENCODING DEFAULT.
DO.
READ DATASET V_FILE INTO WA_ITAB.
IF SY-SUBRC EQ 0.
APPEND WA_ITAB TO ITAB.
ELSE.
EXIT.
ENDIF.
ENDDO.
CLOSE DATASET V_FILE.

LOOP AT ITAB.

clear text1.
IF SY-TABIX EQ 1.
SPLIT ITAB AT cl_abap_char_utilities=>horizontal_tab INTO COMPANYCODE FNO
text1.
FILE_NO = FNO.
ELSE.
SPLIT ITAB AT cl_abap_char_utilities=>horizontal_tab INTO :

int_fb01-xblnr
int_fb01-bktxt
date_temp1
date_temp2
int_fb01-waers
* wa_demo-kursf
* wa_demo-wwert
int_fb01-newbs
int_fb01-newko
* wa_demo-kostl
* wa_demo-ebeln
* wa_demo-v_value_date
int_fb01-wrbtr
* wa_demo-dmbtr
* wa_demo-newum
* wa_demo-aufnr
* wa_demo-zuonr
int_fb01-sgtxt
* wa_demo-zlsch
* wa_demo-zterm
* wa_demo-gsber
cc_pc.
REPLACE ALL OCCURRENCES OF '.' IN date_temp1 WITH SPACE.
CONDENSE date_temp1 NO-GAPS.
MOVE date_temp1 TO IT_FB01-BLDAT.

REPLACE ALL OCCURRENCES OF '.' IN date_temp2 WITH SPACE.


CONDENSE date_temp2 NO-GAPS.
MOVE date_temp1 TO IT_FB01-BUDAT.

IF cc_pc IS NOT INITIAL.


len1 = strlen( cc_pc ).
if len1 > 1.

IF cc_pc+0(1) = '5' .
MOVE cc_pc TO IT_FB01-KOSTL.
ELSEIF cc_pc+0(1) = '4'.
MOVE cc_pc TO IT_FB01-PRCTR.
ELSE.
rowno = sy-tabix - 1.
CONCATENATE 'ERROR :Line Item: ' rowno ' CC/PC does not exists :' cc_pc
into IT_ERR-ERTXT.
APPEND IT_ERR.
CLEAR IT_ERR.
clear rowno.
endif.
APPEND IT_ERR.
CLEAR IT_ERR.
clear rowno.
ENDIF.
ENDIF.
ENDIF.

APPEND INT_FB01.
CLEAR INT_FB01.
CLEAR : date_temp1 ,date_temp2.
CLEAR cc_pc.

ENDLOOP.
IT_FB01[] = INT_FB01[].

ENDFORM. "DATASET
*&---------------------------------------------------------------------*
*& Form FB01
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM FB01 .
LOOP AT IT_FB01.
IF COMPANYCODE IS NOT INITIAL.
AUTHORITY-CHECK OBJECT 'F_BKPF_BUK'
ID 'BUKRS' FIELD COMPANYCODE
ID 'ACTVT' FIELD '01'.
IF SY-SUBRC <> 0.
CONCATENATE 'YOU ARE NOT AUTHORIZED TO UPLOAD DATA OF COMPANY CODE'
COMPANYCODE
INTO MSG
SEPARATED BY SPACE.
MESSAGE MSG TYPE 'E'.
ENDIF.
ENDIF.
ENDLOOP.

DESCRIBE TABLE IT_FB01 LINES V_LINES.

LOOP AT IT_FB01.

V_COUNT1 = SY-TABIX.

PERFORM FILL_TABLES.

* DOCUMENT SPLITTING AFTER EVERY 500 LINE ITEMS


IF V_COUNT1 EQ 500.
PERFORM DOC_SPLIT_POST.
ENDIF.

V_LINES = V_LINES - 1.

IF V_LINES EQ 0.
IF V_DEBIT <> V_CREDIT.
PERFORM DOC_SPLIT_POST.
ELSEIF V_DEBIT NE 0 AND V_CREDIT NE 0.

PERFORM BAPI_ACC_POST_DOCUMENT.
ENDIF.
ENDIF.

ENDLOOP.

ENDFORM. "FB01
*&---------------------------------------------------------------------*
*& Form FILL_TABLES
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM FILL_TABLES .

* PERFORM FILL_HEADER.
IF SY-TABIX EQ 1.
PERFORM FILL_HEADER.
ENDIF.
PERFORM FILL_ACCOUNTGL.
PERFORM FILL_CURRENCYAMOUNT.

ENDFORM. " FILL_TABLES


*&---------------------------------------------------------------------*
*& FORM FILL_HEADER
*&---------------------------------------------------------------------*

FORM FILL_HEADER .

IF COMPANYCODE IS NOT INITIAL AND


IT_FB01-BUDAT IS NOT INITIAL AND
IT_FB01-BLDAT IS NOT INITIAL AND
IT_FB01-XBLNR IS NOT INITIAL.

V_LENGTH = STRLEN( IT_FB01-BLDAT ).

IF V_LENGTH < 8.
CONCATENATE '0' IT_FB01-BLDAT INTO IT_FB01-BLDAT.
ENDIF.

CLEAR V_LENGTH.

V_LENGTH = STRLEN( IT_FB01-BUDAT ).

IF V_LENGTH < 8.
CONCATENATE '0' IT_FB01-BUDAT INTO IT_FB01-BUDAT.
ENDIF.

DOC_HEADER-BUS_ACT = 'RFBU'.
DOC_HEADER-USERNAME = SY-UNAME.
DOC_HEADER-REF_DOC_NO = IT_FB01-XBLNR.
DOC_HEADER-HEADER_TXT = IT_FB01-BKTXT.
DOC_HEADER-COMP_CODE = COMPANYCODE."IT_FB01-BUKRS.
CONCATENATE IT_FB01-BLDAT+4(4) IT_FB01-BLDAT+2(2) IT_FB01-BLDAT(2) INTO
DOC_HEADER-DOC_DATE.
CONCATENATE IT_FB01-BUDAT+4(4) IT_FB01-BUDAT+2(2) IT_FB01-BUDAT(2) INTO
DOC_HEADER-PSTNG_DATE.
DOC_HEADER-DOC_TYPE = 'SA'."IT_FB01-BLART.

ENDIF.

ENDFORM. "FILL_HEADER
*&---------------------------------------------------------------------*
*& Form FILL_CURRENCYAMOUNT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM FILL_CURRENCYAMOUNT .

IT_CURRENCYAMT-ITEMNO_ACC = V_COUNT.
IT_CURRENCYAMT-CURRENCY = IT_FB01-WAERS.
IF IT_FB01-newbs = '40'.
IT_CURRENCYAMT-AMT_DOCCUR = IT_FB01-WRBTR * 1.
V_DEBIT = V_DEBIT + IT_FB01-WRBTR.
ELSE.
IT_CURRENCYAMT-AMT_DOCCUR = IT_FB01-WRBTR * -1.
V_CREDIT = V_CREDIT + IT_FB01-WRBTR.
ENDIF.
IT_CURRENCYAMT-AMT_BASE = IT_FB01-WRBTR.

APPEND IT_CURRENCYAMT.
V_TALLY = V_TALLY + IT_CURRENCYAMT-AMT_DOCCUR.

ENDFORM. " FILL_CURRENCYAMOUNT


*&---------------------------------------------------------------------*
*& FORM FILL_ACCOUNTGL
*&---------------------------------------------------------------------*

FORM FILL_ACCOUNTGL .

V_COUNT = '1' + V_COUNT.


IF V_COUNT IS NOT INITIAL.
IT_ACCOUNTGL-ITEMNO_ACC = V_COUNT.
ELSE.
EXIT.
ENDIF.
IF IT_FB01-NEWKO IS NOT INITIAL.
IT_ACCOUNTGL-GL_ACCOUNT = IT_FB01-NEWKO.

CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'


EXPORTING
INPUT = IT_ACCOUNTGL-GL_ACCOUNT
IMPORTING
OUTPUT = IT_ACCOUNTGL-GL_ACCOUNT.

ELSE.
FORMAT COLOR 6 INVERSE.
WRITE:/ 'GL ACCOUNT IS NOT AVAILABLE'.
FORMAT COLOR 2 INVERSE.

EXIT.
ENDIF.
IT_ACCOUNTGL-DOC_TYPE = 'SA'."IT_FB01-BLART.

* IF it_accountgl-gl_account NE 164010."added by ravi singh

* endif."added by ravi singh


if it_accountgl-gl_account eq 164010.
IT_ACCOUNTGL-PROFIT_CTR = IT_FB01-PRCTR.

CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'


EXPORTING
INPUT = IT_ACCOUNTGL-PROFIT_CTR
IMPORTING
OUTPUT = IT_ACCOUNTGL-PROFIT_CTR.

else.

IT_ACCOUNTGL-COSTCENTER = IT_FB01-PRCTR.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
INPUT = IT_ACCOUNTGL-COSTCENTER
IMPORTING
OUTPUT = IT_ACCOUNTGL-COSTCENTER.

endif.

*it_accountgl-pstng_date = it_fb01-budat.
* IT_ACCOUNTGL-TAX_CODE = IT_FB01-MWSKZ.

* IT_ACCOUNTGL-TAXJURCODE = IT_FB01-TXJCD.

* IT_ACCOUNTGL-ALLOC_NMBR = IT_FB01-ZUONR.

IT_ACCOUNTGL-ITEM_TEXT = IT_FB01-SGTXT.

* IT_ACCOUNTGL-ORDERID = IT_FB01-aufnr.
* CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
* EXPORTING
* INPUT = IT_ACCOUNTGL-ORDERID
* IMPORTING
* OUTPUT = IT_ACCOUNTGL-ORDERID.
.
*IT_ACCOUNTGL-COMP_CODE = companycode.

* IT_ACCOUNTGL-ORDERID = IT_FB01-AUFNR.

APPEND IT_ACCOUNTGL.
CLEAR IT_ACCOUNTGL.

ENDFORM. " FILL_ACCOUNTGL

*&---------------------------------------------------------------------*
*& Form BAPI_ACC_POST_DOCUMENT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM BAPI_ACC_POST_DOCUMENT .
* CHECKING WHETHER THE DOCUMENT IS SUITABLE FOR POSTING
CALL FUNCTION 'BAPI_ACC_DOCUMENT_CHECK'
EXPORTING
DOCUMENTHEADER = DOC_HEADER
TABLES
ACCOUNTGL = IT_ACCOUNTGL
CURRENCYAMOUNT = IT_CURRENCYAMT
RETURN = IT_RETURN.

* POSTING THE DOCUMENT USING FB01


CALL FUNCTION 'BAPI_ACC_DOCUMENT_POST'
EXPORTING
DOCUMENTHEADER = DOC_HEADER
TABLES
ACCOUNTGL = IT_ACCOUNTGL
CURRENCYAMOUNT = IT_CURRENCYAMT
RETURN = IT_RETURN.

* COMMITING THE WORK USING COMMIT WORK


CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
* EXPORTING
* WAIT =
* IMPORTING
* RETURN =
.
LOOP AT IT_RETURN.

IF IT_RETURN-TYPE = 'E'.
FORMAT COLOR 6 INVERSE.
WRITE: / 'FOR REFERENCE NO : ', DOC_HEADER-REF_DOC_NO,
IT_RETURN-TYPE,
IT_RETURN-ID ,
IT_RETURN-NUMBER,
IT_RETURN-MESSAGE.

FORMAT COLOR 2 INVERSE .

ELSEIF IT_RETURN-TYPE = 'S'.

perform file_trans.

else.

message e398(00) with 'Error in moving the file'.


ENDIF.

* AND IT_RETURN-NUMBER = '605'.


* DOC_NO = IT_RETURN-MESSAGE.
* WRITE: / 'FOR REFERENCE NO : ', DOC_HEADER-REF_DOC_NO,
* IT_RETURN-TYPE,
* IT_RETURN-ID ,
* IT_RETURN-NUMBER,
* IT_RETURN-MESSAGE.
*
* SPLIT DOC_NO AT ':' INTO DOCNO1 DOCNO2.
* SHIFT DOCNO2 LEFT DELETING LEADING SPACE.
* SPLIT DOCNO2 AT SPACE INTO DOCNO3 DOCNO4 DOCNO5.
* DOCNO6 = DOCNO4+0(10).
* CONCATENATE DOCNO7 DOCNO6 '|' INTO DOCNO7.
*

WRITE: / 'FOR REFERENCE NO : ', DOC_HEADER-REF_DOC_NO,


IT_RETURN-TYPE,
IT_RETURN-ID ,
IT_RETURN-NUMBER,
IT_RETURN-MESSAGE.
* ENDIF.
ENDLOOP.
SKIP 2.

CLEAR V_COUNT.
CLEAR IT_ACCOUNTGL.
CLEAR IT_CURRENCYAMT.
REFRESH IT_ACCOUNTGL.
REFRESH IT_CURRENCYAMT.

ENDFORM. "BAPI_ACC_POST_DOCUMENT

*&---------------------------------------------------------------------*
*& Form DOC_SPLIT_POST
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM DOC_SPLIT_POST .

IF V_DEBIT > V_CREDIT.


V_DIFF = V_DIFF - ( V_DEBIT - V_CREDIT ).
IF V_DIFF > 0.
V_DIFF = V_DIFF * -1.
ENDIF.
ELSE.
V_DIFF = V_DIFF + ( V_CREDIT - V_DEBIT ).
ENDIF.

V_COUNT = 1 + V_COUNT.

IT_ACCOUNTGL-ITEMNO_ACC = V_COUNT.
* IT_ACCOUNTGL-GL_ACCOUNT = '0000999900'."IT_FB01-NEWKO.
IT_ACCOUNTGL-GL_ACCOUNT = '0000165028'.
IT_ACCOUNTGL-DOC_TYPE = 'SA'.
IT_ACCOUNTGL-PROFIT_CTR = '0004350004'."IT_FB01-PRCTR.
APPEND IT_ACCOUNTGL.

IT_CURRENCYAMT-ITEMNO_ACC = V_COUNT.
IT_CURRENCYAMT-CURRENCY = 'INR'.
IT_CURRENCYAMT-AMT_DOCCUR = V_DIFF.
APPEND IT_CURRENCYAMT.
ClEAR IT_CURRENCYAMT.
V_RESULT = V_TALLY + V_DIFF.
IF V_RESULT = 0.
DELETE IT_FB01 FROM 1 TO 500.
PERFORM BAPI_ACC_POST_DOCUMENT_SPLIT.
ENDIF.

CLEAR SY-TABIX.
CLEAR V_DIFF.

ENDFORM. "DOC_SPLIT_POST

*&---------------------------------------------------------------------*
*& Form BAPI_ACC_POST_DOCUMENT_SPLIT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM BAPI_ACC_POST_DOCUMENT_SPLIT .

* CHECKING WHETHER THE DOCUMENT IS SUITABLE FOR POSTING


CALL FUNCTION 'BAPI_ACC_DOCUMENT_CHECK'
EXPORTING
DOCUMENTHEADER = DOC_HEADER
TABLES
ACCOUNTGL = IT_ACCOUNTGL
CURRENCYAMOUNT = IT_CURRENCYAMT
RETURN = IT_RETURN.

* POSTING THE DOCUMENT USING FB01

CALL FUNCTION 'BAPI_ACC_DOCUMENT_POST'


EXPORTING
DOCUMENTHEADER = DOC_HEADER
TABLES
ACCOUNTGL = IT_ACCOUNTGL
CURRENCYAMOUNT = IT_CURRENCYAMT
RETURN = IT_RETURN.

* COMMITING THE WORK USING COMMIT WORK


CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
* EXPORTING
* WAIT =
* IMPORTING
* RETURN =
.

LOOP AT IT_RETURN.
IF IT_RETURN-TYPE = 'E'.
FORMAT COLOR 6 INVERSE.
WRITE: / 'FOR REFERENCE NO : ', DOC_HEADER-REF_DOC_NO,
IT_RETURN-TYPE,
IT_RETURN-ID ,
IT_RETURN-NUMBER,
IT_RETURN-MESSAGE.
FORMAT COLOR INVERSE OFF.

ELSEIF IT_RETURN-TYPE = 'S'.


* loop at it_fb01.
* ITAB2 = IT_fb01.
*
* append itab2.
* clear itab2.
*eNdloop.
*
*
*
*
*
*
*
*if itab2[] is not initial.
perform file_trans.

else.

message e398(00) with 'Error in moving the file'.


ENDIF.

* AND IT_RETURN-NUMBER = '605'.


* DOC_NO = IT_RETURN-MESSAGE.
* WRITE: / 'FOR REFERENCE NO : ', DOC_HEADER-REF_DOC_NO,
* IT_RETURN-TYPE,
* IT_RETURN-ID ,
* IT_RETURN-NUMBER,
* IT_RETURN-MESSAGE.

* SPLIT DOC_NO AT ':' INTO DOCNO1 DOCNO2.


* SHIFT DOCNO2 LEFT DELETING LEADING SPACE.
* SPLIT DOCNO2 AT SPACE INTO DOCNO3 DOCNO4 DOCNO5.
* DOCNO6 = DOCNO4+0(10).
* CONCATENATE DOCNO7 DOCNO6 '|' INTO DOCNO7.

* ELSE.

WRITE: / 'FOR REFERENCE NO : ', DOC_HEADER-REF_DOC_NO,


IT_RETURN-TYPE,
IT_RETURN-ID ,
IT_RETURN-NUMBER,
IT_RETURN-MESSAGE.
* ENDIF.
ENDLOOP.

SKIP 2.

CLEAR V_TALLY.
CLEAR V_COUNT.
CLEAR V_KOSTL.
CLEAR V_DEBIT.
CLEAR V_CREDIT.
CLEAR IT_ACCOUNTGL.
CLEAR IT_CURRENCYAMT.
REFRESH IT_ACCOUNTGL.
REFRESH IT_CURRENCYAMT.
ENDFORM. " BAPI_ACC_POST_DOCUMENT_SPLIT
*&---------------------------------------------------------------------*
*& FORM BAPI_ACC_DOCUMENT_CHECK
*&---------------------------------------------------------------------*
* TEXT
*----------------------------------------------------------------------*
* --> P1 TEXT
* <-- P2 TEXT
*----------------------------------------------------------------------*
FORM BAPI_ACC_DOCUMENT_CHECK .

* CHECKING WHETHER THE DOCUMENT IS SUITABLE FOR POSTING


CALL FUNCTION 'BAPI_ACC_DOCUMENT_CHECK'
EXPORTING
DOCUMENTHEADER = DOC_HEADER
TABLES
ACCOUNTGL = IT_ACCOUNTGL
CURRENCYAMOUNT = IT_CURRENCYAMT
RETURN = IT_RETURN.

* ERROR ENCOUNTERED, THEN DO NOT UPLOAD THE FILE.


LOOP AT IT_RETURN.
IF IT_RETURN-TYPE = 'E'.
V_ERROR = 1.
NEW-LINE.
* FORMAT COLOR 6 INVERSE.
* WRITE: / 'FOR REFERENCE NO : ', DOC_HEADER-REF_DOC_NO,
* IT_RETURN-TYPE,
* IT_RETURN-ID ,
* IT_RETURN-NUMBER,
* IT_RETURN-MESSAGE.
* FORMAT COLOR INVERSE OFF.
*
IT_RETURN_E-MSG_TYP = IT_RETURN-TYPE .
IT_RETURN_E-MSG_DESC = IT_RETURN-MESSAGE.
APPEND IT_RETURN_E.
ENDIF.
ENDLOOP.

IF V_ERROR = 1.
FLAG = 1.
ENDIF.

IF FLAG = 1 AND IT_RETURN_E[] IS NOT INITIAL.


FLAG1 = 1.
* EXIT.
ENDIF.

CLEAR V_COUNT.
CLEAR V_KOSTL.
CLEAR V_DEBIT.
CLEAR V_CREDIT.
CLEAR IT_ACCOUNTGL.
CLEAR IT_CURRENCYAMT.
REFRESH IT_ACCOUNTGL.
REFRESH IT_CURRENCYAMT.
ENDFORM. " BAPI_ACC_DOCUMENT_CHECK
*&---------------------------------------------------------------------*
*& FORM FB01_CHECK
*&---------------------------------------------------------------------*
* TEXT
*----------------------------------------------------------------------*
* --> P1 TEXT
* <-- P2 TEXT
*----------------------------------------------------------------------*
FORM FB01_CHECK .
DESCRIBE TABLE IT_FB01 LINES V_LINES.

LOOP AT IT_FB01.
V_COUNT1 = SY-TABIX.

* IF FLAG = 1.
* FLAG1 = 1.
* EXIT.
* ENDIF.

PERFORM FILL_TABLES.

* DOCUMENT SPLITTING AFTER EVERY 500 LINE ITEMS


IF V_COUNT1 EQ 500.
PERFORM DOC_SPLIT.
ENDIF.

V_LINES = V_LINES - 1.

IF V_LINES EQ 0.
IF V_DEBIT <> V_CREDIT.
PERFORM DOC_SPLIT.
ELSEIF V_DEBIT NE 0 AND V_CREDIT NE 0.
PERFORM BAPI_ACC_DOCUMENT_CHECK.
ENDIF.
ENDIF.

ENDLOOP.

ENDFORM. " FB01_CHECK


*&---------------------------------------------------------------------*
*& FORM DOC_SPLIT
*&---------------------------------------------------------------------*
* TEXT
*----------------------------------------------------------------------*
* --> P1 TEXT
* <-- P2 TEXT
*----------------------------------------------------------------------*
FORM DOC_SPLIT .
IF V_DEBIT > V_CREDIT.
V_DIFF = V_DIFF - ( V_DEBIT - V_CREDIT ).
IF V_DIFF > 0.
V_DIFF = V_DIFF * -1.
ENDIF.
ELSE.
V_DIFF = V_DIFF + ( V_CREDIT - V_DEBIT ).
ENDIF.
V_COUNT = 1 + V_COUNT.

IT_ACCOUNTGL-ITEMNO_ACC = V_COUNT.
* IT_ACCOUNTGL-GL_ACCOUNT = '0000165028'."IT_FB01-NEWKO.
IT_ACCOUNTGL-GL_ACCOUNT = '0000165028'."IT_FB01-NEWKO.
IT_ACCOUNTGL-DOC_TYPE = 'SA'."'ZA'.
IT_ACCOUNTGL-PROFIT_CTR = '0004350004'."IT_FB01-PRCTR.
APPEND IT_ACCOUNTGL.

IT_CURRENCYAMT-ITEMNO_ACC = V_COUNT.
IT_CURRENCYAMT-CURRENCY = 'INR'.
IT_CURRENCYAMT-AMT_DOCCUR = V_DIFF.
APPEND IT_CURRENCYAMT.
CLEAR IT_CURRENCYAMT.

DELETE IT_FB01 FROM 1 TO 500.

PERFORM BAPI_ACC_DOCUMENT_CHECK.

CLEAR SY-TABIX.
CLEAR V_DIFF.

ENDFORM. " DOC_SPLIT


*&---------------------------------------------------------------------*
*& FORM VALIDATIONS
*&---------------------------------------------------------------------*
* TEXT
*----------------------------------------------------------------------*
* --> P1 TEXT
* <-- P2 TEXT
*----------------------------------------------------------------------*
FORM VALIDATIONS .
SELECT SINGLE * FROM T001 INTO IT_T001 WHERE BUKRS = COMPANYCODE.
IF SY-SUBRC <> 0.
CONCATENATE 'ERROR : ' COMPANYCODE ' INVALID COMPANY CODE' INTO IT_ERR1-ERTXT.
APPEND IT_ERR1.
CLEAR IT_ERR1.

ENDIF.

LOOP AT IT_FB01.

TABIX1 = SY-TABIX.
*Checking for Posting-Key Validation
IF IT_FB01-NEWBS <> '40' AND IT_FB01-NEWBS <> '50'.
CONCATENATE 'LINE ITEM ' TABIX1 'POSTING KEY' IT_FB01-NEWBS 'INVALID POSTING
KEY' INTO IT_ERR-ERTXT.
APPEND IT_ERR.
CLEAR IT_ERR.
ENDIF.

*Checking for GL-Account Validation


CLEAR IT_SKB1.

* CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'


* EXPORTING
* INPUT = IT_FB01-NEWKO
* IMPORTING
* OUTPUT = IT_FB01-NEWKO.
concatenate '0000' it_fb01-newko into it_fb01-newko.

SELECT SINGLE BUKRS SAKNR XSPEB FROM SKB1 INTO IT_SKB1


WHERE
SAKNR = IT_FB01-NEWKO.
IF SY-SUBRC <> 0.
CONCATENATE 'LINE ITEM :' TABIX1 'GL-' IT_FB01-NEWKO ' INVALID GL AC' INTO
IT_ERR-ERTXT.
APPEND IT_ERR.
CLEAR IT_ERR.
ELSEIF IT_SKB1-XSPEB NE SPACE.
CONCATENATE 'LINE ITEM :' TABIX1 'GL-' IT_FB01-NEWKO '-GL AC BLOCKED FOR
POSTING' INTO IT_ERR-ERTXT.
APPEND IT_ERR.
CLEAR IT_ERR.
* ENDIF.

ENDIF.

*Checking for Cost-Center Validation

CLEAR IT_CC.
IF IT_FB01-KOSTL IS NOT INITIAL.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
INPUT = IT_FB01-KOSTL
IMPORTING
OUTPUT = IT_FB01-KOSTL.

SELECT SINGLE BUKRS KOSTL BKZKP FROM CSKS INTO IT_CC


WHERE BUKRS = COMPANYCODE
AND KOSTL = IT_FB01-KOSTL.

IF SY-SUBRC <> 0.
CONCATENATE 'LINE ITEM :' TABIX1 'CC-' IT_FB01-KOSTL ' INVALID CC' INTO
IT_ERR-ERTXT.
APPEND IT_ERR.
CLEAR IT_ERR.
ELSEIF IT_CC-BKZKP NE SPACE.
CONCATENATE 'LINE ITEM :' TABIX1 'CC-' IT_FB01-KOSTL '-COSTCENTER BLOCKED
FOR POSTING' INTO IT_ERR-ERTXT.
APPEND IT_ERR.
CLEAR IT_ERR.
* ENDIF.

ENDIF.
ENDIF.

*Checking for Profit-Center Validation

CLEAR IT_PC.
IF IT_FB01-PRCTR IS NOT INITIAL.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
INPUT = IT_FB01-PRCTR
IMPORTING
OUTPUT = IT_FB01-PRCTR.
SELECT BUKRS PRCTR FROM CEPC INTO TABLE IT_PC
WHERE PRCTR = IT_FB01-PRCTR. "AND BUKRS = COMPANYCODE

IF SY-SUBRC <> 0.
CONCATENATE 'LINE ITEM :' TABIX1 'PC-' IT_FB01-PRCTR ' INVALID PC' INTO
IT_ERR-ERTXT.
APPEND IT_ERR.
CLEAR IT_ERR.
** ELSEIF IT_PC-BKZKP NE SPACE.
** CONCATENATE 'LINE ITEM :' TABIX1 'PC-' IT_FB01-PRCTR '-PROFITCENTER
BLOCKED FOR POSTING' INTO IT_ERR-ERTXT.
** APPEND IT_ERR.
** CLEAR IT_ERR.
* ENDIF.
ENDIF.
ENDIF.

IF IT_FB01-NEWBS = '40'.

AMT = IT_FB01-WRBTR * 1.
V_DEBIT1 = V_DEBIT1 + AMT.
ELSE.
* AMT = IT_FB01-WRBTR * 1.

AMT = IT_FB01-WRBTR * -1.


V_CREDIT1 = V_CREDIT1 + AMT.
ENDIF.

ENDLOOP.
CLEAR AMT.
AMT = V_DEBIT1 + V_CREDIT1.
V_CREDIT1 = V_CREDIT1 * -1.
IF V_DEBIT1 <> V_CREDIT1.
CONCATENATE 'ERROR : DEBIT AMOUNT IS NOT EQUAL TO CREDIT AMOUNT WITH DIFFERENCE
: ' AMT INTO IT_ERR1-ERTXT.
* IT_ERR1-ERTXT = 'ERROR : DEBIT AMOUNT IS NOT EQUAL TO CREDIT AMOUNT WITH
DIFFERENCE : ', amt.
APPEND IT_ERR1.
CLEAR IT_ERR1.

ENDIF.

*Displaying the error messages


IF NOT IT_ERR[] IS INITIAL.
APPEND LINES OF IT_ERR TO IT_ERR1.
ENDIF.
IF NOT IT_ERR1[] IS INITIAL.
FLAG1 = 1.
LOOP AT IT_ERR1.
WRITE:/ IT_ERR1-ERTXT.
ENDLOOP.
ENDIF.
*

ENDFORM. " VALIDATIONS


*.
form file_trans.

DATA : fname1 type string.


data : extn type string.
data : len type i.
data : w_file1 type RLGRAP-FILENAME.
CALL FUNCTION 'SO_SPLIT_FILE_AND_PATH'
EXPORTING
FULL_NAME = filename1
IMPORTING
STRIPPED_NAME = STRIPPED_NAME
FILE_PATH = FILE_PATH
* EXCEPTIONS
* X_ERROR = 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.

* CONCATENATE dest_dir STRIPPED_NAME INTO W_FILE.

CONCATENATE e_file1 STRIPPED_NAME INTO W_FILE1.

len = strlen( w_file1 ).


len = len - 4.
w_file0 = w_file1+0(len).

Open dataset w_file2 for output in text mode ENCODING DEFAULT .

if sy-subrc = 0.
*message 'File transfered succesfully from work to archive'(002) type 'S'.

loop at itab.
TRANSFER Itab TO W_FILE2.

endloop.

DELETE DATASET V_FILE.

Else.
WRITE:/'Cannot open -> usr/sap/Leasewave/archive/ error = ', sy-subrc.
endif.
close dataset W_FILE2.
* TRANSFER ITAB2 TO PATH1.
* CLOSE DATASET PATH1.

endform.

You might also like