Monthly Archives: July 2013

Sample BDC Program to read data from Excel

This ABAP program read data in Excel format file ( or tab text file ) , copy to internal table , validate and call BDC transaction to process T-code FB01.

Step 1:

Create program ZK_FI_BDC_GL.

Download the source code here:

http://binbox.io/OiCXA#Iw5c2X67

Step2: Create Excel file contain data to upload.

First row of file is header and all columns match with x-file struct in program.

We can also use the text file to upload. Download the sample file here:http://binbox.io/oXa7X#3J0TvtF7

Step3: Open program and run.Input file name and session.

Step4: Run SM35 to process session.

I zip all sample file and source into 1 folder for downloading here:http://bit.ly/15hBs7V

ABAP Download:

3 Modularisation and BDC.pdf__www.sapland.com.zip
ABAP Technical Interview Questions Abap.SapLand.Com
CB_028_Integrating_Microsoft_Office_SharePoint_Server_and_SAP.pdf

Microsoft® Office SharePoint® Server 2007 and SAP

Advertisements

BDC Program to Upload GL Transaction

Using this program to upload data from Excel file to FB01 via BDC Recording.

Download program ZK_FI_BDC_GL_V2  : http://binbox.io/OiCXA#Iw5c2X67

( Type pass : Iw5c2X67 )

This program read Excel file ( or save as tab text file ) to internal table , check and process using BDC method.

Download sample file ( TXT format ) to run with this program .

http://binbox.io/oXa7X#3J0TvtF7

Coder : Khoa Huynh

SAP ABAP – Uploading Excel Sheet Data & Saving It To FB01 Transaction Using BDC Session Or Call Transaction Method.

This is a sample program on uploading FI documents into SAP system

. Also this program shows how to upload multiple line items through BDC sessions

.
Upload the financial documents from a legacy system (excel file) into SAP using transaction code FB01. The file to be uploaded is specified on the selection screen by the user. The same file is displayed on the output screen in ALV Format (grid display) along with status details (success/failure).Also, the successful transaction is uploaded into the SAP system.
ALSO this program download all the error message and success messages in excel sheets.
SAMPLE PROGRAM:
REPORT ztest_fi_bdc_fb01_upload MESSAGE-ID zfimessages.
TYPE-POOLS: truxs,slis.
* STRUCTURE FOR INTERNAL TABLE
TYPES:BEGIN OF x_file,
documentreferencenumber TYPE augbl, “Variable name for document reference number.

documentdate(10) TYPE c, “Variable name for document date.

documenttype TYPE blart, “Variable name for document type.

companycode TYPE bukrs, “Variable name for company code.
postingdate(10) TYPE c, “Variable name for posting date.

period TYPE monat, “Variable name for fiscal period.
currency TYPE waers, “Variable name for currency code.

reference TYPE xblnr1, “Variable name for reference.
postingkey TYPE newbs, “Variable name for posting key.
account TYPE newko, “Variable name for account number.
amount(16) TYPE c, “Variable name for amount.
taxcode TYPE mwskx, “Variable name for taxcode.
businessarea TYPE gsber, “Variable name for business area.
profitcenter TYPE prctr, “Variable name for profit center.

valuedate(10) TYPE c, “Variable name for value date.

status(1) TYPE c, “Variable name for status.
description TYPE string, “Variable name for description.
END OF x_file.
* STRUCTURE FOR MESSAGE STATUS
TYPES: BEGIN OF x_mess,
documentreferencenumber TYPE augbl, “Variable name for document reference number.

status(1) TYPE c, “Variable name for status of the message.

description TYPE string, “Variable name for description of the message.
END OF x_mess.
TYPES: BEGIN OF x_header,
field1(20) TYPE c,
END OF x_header.
TYPES: BEGIN OF x_down,
documentreferencenumber TYPE n,
END OF x_down.
DATA: v_statusd TYPE n,
it_check TYPE STANDARD TABLE OF x_file,
wa_check TYPE x_file.
DATA: it_header TYPE STANDARD TABLE OF x_header,
wa_header TYPE x_header,
p_filee TYPE string,
p_files TYPE string.
* DATA DECLARATION FOR INTERNAL TABLES, WORKAREAS, VARIABLES
DATA: it_upload TYPE STANDARD TABLE OF x_file,” IT To Store Data From Excel Sheet

wa_upload TYPE x_file,
wa_upload1 TYPE x_file,
it_type TYPE truxs_t_text_data,
it_successmess TYPE STANDARD TABLE OF x_file,
wa_successmess TYPE x_file,
it_errormess TYPE STANDARD TABLE OF x_file,
wa_errormess TYPE x_file,
it_bdcdata TYPE STANDARD TABLE OF bdcdata, :” IT To Store Data Field Names & Values Of Each Screen.
wa_bdcdata TYPE bdcdata,
it_messagelog TYPE STANDARD TABLE OF bdcmsgcoll, ” IT To Store Messages

wa_messagelog TYPE bdcmsgcoll,
v_itirate TYPE c,
v_msg TYPE string VALUE ‘ is missing.’,
v_finalmsg TYPE string VALUE ”,
it_success TYPE STANDARD TABLE OF x_mess,
wa_success TYPE x_mess,
v_validate_fg TYPE c,
v_temp TYPE c.
* DATA DECLARATION FOR ALV GRID DISPLAY
DATA: it_alv_fieldcat TYPE slis_t_fieldcat_alv,
wa_alv_fieldcat TYPE slis_fieldcat_alv,
it_alv_layout TYPE slis_layout_alv.
* DATA DECLARATION FOR VALIDATION OF BDC SESSION METHOD
CONSTANTS: c_documentdate TYPE c LENGTH 20 VALUE ‘Document date’,
c_documenttype TYPE c LENGTH 20 VALUE ‘Document type’,
c_companycode TYPE c LENGTH 20 VALUE ‘Company code’,
c_postingdate TYPE c LENGTH 20 VALUE ‘Posting date’,
c_period TYPE c LENGTH 20 VALUE ‘Fiscal period’,
c_currency TYPE c LENGTH 20 VALUE ‘Currency code’,
c_postingkey TYPE c LENGTH 20 VALUE ‘Posting key’,
c_account TYPE c LENGTH 20 VALUE ‘Account’,
c_amount TYPE c LENGTH 20 VALUE ‘Amount’,
c_documentreferenceno TYPE c LENGTH 20 VALUE ‘Document reference #’,
c_x TYPE c VALUE ‘X’,
c_comma TYPE c VALUE ‘,’,
c_session(12) TYPE c VALUE ‘FB01_SESSION’,
c_transaction TYPE tstc-tcode VALUE ‘FB01’,
c_mode TYPE c VALUE ‘N’,
c_update TYPE c VALUE ‘S’,
c_y TYPE c VALUE ‘Y’.
* BLOCK 1 FOR FILE NAME & BLOCK 2 FOR TYPE OF PROCESS.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME
TITLE text-001.
PARAMETERS: p_fname TYPE rlgrap-filename OBLIGATORY,
p_error TYPE rlgrap-filename,
p_succes TYPE rlgrap-filename.
SELECTION-SCREEN END OF BLOCK b1.
SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME
TITLE text-002.
PARAMETERS: rb_sessi RADIOBUTTON GROUP grp1 USER-COMMAND flag,
rb_trans RADIOBUTTON GROUP grp1 DEFAULT ‘X’.
SELECTION-SCREEN END OF BLOCK b2.
SELECTION-SCREEN BEGIN OF BLOCK b3 WITH FRAME.
PARAMETERS: p_sname TYPE apqi-groupid obligatory.
SELECTION-SCREEN END OF BLOCK b3.
p_files = p_succes.
p_filee = p_error.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_fname.
PERFORM get1.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_succes.
PERFORM get2.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_error.
PERFORM get3.
AT SELECTION-SCREEN OUTPUT.
PERFORM modify_screen.
START-OF-SELECTION.
PERFORM alv_setup.
* TRANSFER DATA FROM EXCEL SHEET TO INTERNAL TABLE


CALL FUNCTION ‘TEXT_CONVERT_XLS_TO_SAP’
EXPORTING
i_line_header = c_x
i_tab_raw_data = it_type
i_filename = p_fname
TABLES
i_tab_converted_data = it_upload[]
EXCEPTIONS
conversion_failed = 1
OTHERS = 2.
* IF FILE OTHER THAN EXCEL, THROW ERROR “Excel File Conversion Failed”.
IF sy-subrc <> 0.
v_validate_fg = c_x.
MESSAGE i003.
STOP.
ENDIF.
* IF FILE IS EMPTY, THROW ERROR “Excel File Is Empty”.
IF it_upload IS INITIAL.
v_validate_fg = c_x.
MESSAGE i004.
STOP.
ENDIF.
* SELECT A PROCESS : SESSION OR CALL TRANSACTION
CHECK v_validate_fg <> c_x.
IF rb_sessi = c_x.
PERFORM session.
ELSE.
PERFORM transaction.
ENDIF.
*&———————————————————————*
*& Form session
*&———————————————————————*
* Using Session method
*———————————————————————-*
FORM session.
*VALIDATION FOR SESSION METHOD
LOOP AT it_upload INTO wa_upload.
wa_upload1 = wa_upload.
AT NEW documentreferencenumber.
IF wa_upload1-documentreferencenumber IS INITIAL.
wa_upload1-status = text-003.
CONCATENATE c_documentreferenceno v_msg INTO v_msg.
wa_upload1-description = v_msg.
ENDIF.
IF wa_upload1-documentdate IS INITIAL.
wa_upload1-status = text-003.
CONCATENATE c_documentdate v_msg INTO v_msg.
wa_upload1-description = v_msg.
ENDIF.
IF wa_upload1-documenttype IS INITIAL.
wa_upload1-status = text-003.
CONCATENATE c_documenttype v_msg INTO v_msg SEPARATED BY c_comma.
wa_upload1-description = v_msg.
ENDIF.
IF wa_upload1-companycode IS INITIAL.
wa_upload1-status = text-003.
CONCATENATE c_companycode v_msg INTO v_msg SEPARATED BY c_comma.
wa_upload1-description = v_msg.
ENDIF.
IF wa_upload1-postingdate IS INITIAL.
wa_upload1-status = text-003.
CONCATENATE c_postingdate v_msg INTO v_msg SEPARATED BY c_comma.
wa_upload1-description = v_msg.
ENDIF.
IF wa_upload1-period IS INITIAL.
wa_upload1-status = text-003.
CONCATENATE c_period v_msg INTO v_msg SEPARATED BY c_comma.
wa_upload1-description = v_msg.
ENDIF.
IF wa_upload1-currency IS INITIAL.
wa_upload1-status = text-003.
CONCATENATE c_currency v_msg INTO v_msg SEPARATED BY c_comma.
wa_upload1-description = v_msg.
ENDIF.
ENDAT.
IF wa_upload1-postingkey IS INITIAL.
wa_upload1-status = text-003.
CONCATENATE c_postingkey v_msg INTO v_msg SEPARATED BY c_comma.
wa_upload1-description = v_msg.
ENDIF.
IF wa_upload1-account IS INITIAL.
wa_upload1-status = text-003.
CONCATENATE c_account v_msg INTO v_msg SEPARATED BY c_comma.
wa_upload1-description = v_msg.
ENDIF.
IF wa_upload1-amount IS INITIAL.
wa_upload1-status = text-003.
CONCATENATE c_amount v_msg INTO v_msg SEPARATED BY c_comma.
wa_upload1-description = v_msg.
ENDIF.
IF v_msg CO ‘ is missing.’.
wa_upload1-status = text-004.
wa_upload1-description = ”.
ENDIF.
MODIFY it_upload FROM wa_upload1.
CLEAR wa_upload1.
v_msg = text-005.
ENDLOOP.
* OPEN BDC GROUP
PERFORM bdc_open_grp.
LOOP AT it_upload INTO wa_upload.
v_itirate = c_x.
wa_upload1 = wa_upload.
AT NEW documentreferencenumber.
v_itirate = c_y.
PERFORM bdc_dynpro USING ‘SAPMF05A’ ‘0100’.
PERFORM bdc_field USING ‘BDC_CURSOR’
‘RF05A-NEWKO’.
PERFORM bdc_field USING ‘BDC_OKCODE’
‘/00’.
PERFORM bdc_field USING ‘BKPF-BLDAT’
wa_upload1-documentdate.
PERFORM bdc_field USING ‘BKPF-BLART’
wa_upload1-documenttype.
PERFORM bdc_field USING ‘BKPF-BUKRS’
wa_upload1-companycode.
PERFORM bdc_field USING ‘BKPF-BUDAT’
wa_upload1-postingdate.
PERFORM bdc_field USING ‘BKPF-MONAT’
wa_upload1-period.
PERFORM bdc_field USING ‘BKPF-WAERS’
wa_upload1-currency.
PERFORM bdc_field USING ‘FS006-DOCID’
‘*’.
PERFORM bdc_field USING ‘RF05A-NEWBS’
wa_upload1-postingkey.
PERFORM bdc_field USING ‘RF05A-NEWKO’
wa_upload1-account.
PERFORM bdc_dynpro USING ‘SAPMF05A’ ‘0300’.
PERFORM bdc_field USING ‘BDC_CURSOR’
‘BSEG-VALUT’.
PERFORM bdc_field USING ‘BDC_OKCODE’
‘/00’.
PERFORM bdc_field USING ‘BSEG-WRBTR’
wa_upload1-amount.
PERFORM bdc_field USING ‘BSEG-VALUT’
wa_upload1-valuedate.
PERFORM bdc_field USING ‘DKACB-FMORE’
‘X’.
PERFORM bdc_dynpro USING ‘SAPLKACB’ ‘0002’.
PERFORM bdc_field USING ‘BDC_CURSOR’
‘COBL-PRCTR’.
PERFORM bdc_field USING ‘BDC_OKCODE’
‘=ENTE’.
PERFORM bdc_field USING ‘COBL-GSBER’
wa_upload1-businessarea.
PERFORM bdc_field USING ‘COBL-PRCTR’
wa_upload1-profitcenter.
ENDAT.
CHECK v_itirate = c_x.
IF sy-tabix <> 1.
PERFORM bdc_dynpro USING ‘SAPMF05A’ ‘0300’.
PERFORM bdc_field USING ‘BDC_CURSOR’
‘RF05A-NEWKO’.
PERFORM bdc_field USING ‘BDC_OKCODE’
‘/00’.
PERFORM bdc_field USING ‘RF05A-NEWBS’
wa_upload1-postingkey.
PERFORM bdc_field USING ‘RF05A-NEWKO’
wa_upload1-account.
PERFORM bdc_field USING ‘DKACB-FMORE’
‘X’.
PERFORM bdc_dynpro USING ‘SAPLKACB’ ‘0002’.
PERFORM bdc_field USING ‘BDC_CURSOR’
‘COBL-GSBER’.
PERFORM bdc_field USING ‘BDC_OKCODE’
‘=ENTE’.
PERFORM bdc_field USING ‘COBL-GSBER’
wa_upload1-businessarea.
PERFORM bdc_field USING ‘COBL-PRCTR’
wa_upload1-profitcenter.
PERFORM bdc_dynpro USING ‘SAPMF05A’ ‘0300’.
PERFORM bdc_field USING ‘BDC_CURSOR’
‘RF05A-NEWKO’.
PERFORM bdc_field USING ‘BDC_OKCODE’
‘/00’.
PERFORM bdc_field USING ‘BSEG-WRBTR’
wa_upload1-amount.
PERFORM bdc_field USING ‘BSEG-VALUT’
wa_upload1-valuedate.
PERFORM bdc_dynpro USING ‘SAPLKACB’ ‘0002’.
PERFORM bdc_field USING ‘BDC_CURSOR’
‘COBL-GSBER’.
PERFORM bdc_field USING ‘BDC_OKCODE’
‘=ENTE’.
ENDIF.
AT END OF documentreferencenumber.
PERFORM bdc_dynpro USING ‘SAPMF05A’ ‘0300’.
PERFORM bdc_field USING ‘BDC_CURSOR’
‘BSEG-WRBTR’.
PERFORM bdc_field USING ‘BDC_OKCODE’
‘=BU’.
PERFORM bdc_field USING ‘BSEG-WRBTR’
wa_upload1-amount.
PERFORM bdc_field USING ‘BSEG-VALUT’
wa_upload1-valuedate.
PERFORM bdc_field USING ‘DKACB-FMORE’
‘X’.
PERFORM bdc_dynpro USING ‘SAPLKACB’ ‘0002’.
PERFORM bdc_field USING ‘BDC_CURSOR’
‘COBL-PRCTR’.
PERFORM bdc_field USING ‘BDC_OKCODE’
‘=ENTE’.
PERFORM bdc_field USING ‘COBL-GSBER’
wa_upload1-businessarea.
PERFORM bdc_field USING ‘COBL-PRCTR’
wa_upload1-profitcenter.
* CREATE BDC SESSION
PERFORM bdc.
REFRESH it_bdcdata.
ENDAT.
ENDLOOP.
* CLOSE BDC GROUP
PERFORM bdc_close_grp.
ENDFORM. “End of form Session
*&———————————————————————*
*& Form transaction
*&———————————————————————*
* Using CALL TRANSACTION method
*———————————————————————-*
FORM transaction.
LOOP AT it_upload INTO wa_upload.
v_itirate = c_x.
wa_upload1 = wa_upload.
AT NEW documentreferencenumber.
v_itirate = c_y.
PERFORM bdc_dynpro USING ‘SAPMF05A’ ‘0100’.
PERFORM bdc_field USING ‘BDC_CURSOR’
‘RF05A-NEWKO’.
PERFORM bdc_field USING ‘BDC_OKCODE’
‘/00’.
PERFORM bdc_field USING ‘BKPF-BLDAT’
wa_upload1-documentdate.
PERFORM bdc_field USING ‘BKPF-BLART’
wa_upload1-documenttype.
PERFORM bdc_field USING ‘BKPF-BUKRS’
wa_upload1-companycode.
PERFORM bdc_field USING ‘BKPF-BUDAT’
wa_upload1-postingdate.
PERFORM bdc_field USING ‘BKPF-MONAT’
wa_upload1-period.
PERFORM bdc_field USING ‘BKPF-WAERS’
wa_upload1-currency.
PERFORM bdc_field USING ‘FS006-DOCID’
‘*’.
PERFORM bdc_field USING ‘RF05A-NEWBS’
wa_upload1-postingkey.
PERFORM bdc_field USING ‘RF05A-NEWKO’
wa_upload1-account.
PERFORM bdc_dynpro USING ‘SAPMF05A’ ‘0300’.
PERFORM bdc_field USING ‘BDC_CURSOR’
‘BSEG-VALUT’.
PERFORM bdc_field USING ‘BDC_OKCODE’
‘/00’.
PERFORM bdc_field USING ‘BSEG-WRBTR’
wa_upload1-amount.
PERFORM bdc_field USING ‘BSEG-VALUT’
wa_upload1-valuedate.
PERFORM bdc_field USING ‘DKACB-FMORE’
‘X’.
PERFORM bdc_dynpro USING ‘SAPLKACB’ ‘0002’.
PERFORM bdc_field USING ‘BDC_CURSOR’
‘COBL-PRCTR’.
PERFORM bdc_field USING ‘BDC_OKCODE’
‘=ENTE’.
PERFORM bdc_field USING ‘COBL-GSBER’
wa_upload1-businessarea.
PERFORM bdc_field USING ‘COBL-PRCTR’
wa_upload1-profitcenter.
ENDAT.
CHECK v_itirate = c_x.
IF sy-tabix <> 1.
PERFORM bdc_dynpro USING ‘SAPMF05A’ ‘0300’.
PERFORM bdc_field USING ‘BDC_CURSOR’
‘RF05A-NEWKO’.
PERFORM bdc_field USING ‘BDC_OKCODE’
‘/00’.
PERFORM bdc_field USING ‘RF05A-NEWBS’
wa_upload1-postingkey.
PERFORM bdc_field USING ‘RF05A-NEWKO’
wa_upload1-account.
PERFORM bdc_field USING ‘DKACB-FMORE’
‘X’.
PERFORM bdc_dynpro USING ‘SAPLKACB’ ‘0002’.
PERFORM bdc_field USING ‘BDC_CURSOR’
‘COBL-GSBER’.
PERFORM bdc_field USING ‘BDC_OKCODE’
‘=ENTE’.
PERFORM bdc_field USING ‘COBL-GSBER’
wa_upload1-businessarea.
PERFORM bdc_field USING ‘COBL-PRCTR’
wa_upload1-profitcenter.
PERFORM bdc_dynpro USING ‘SAPMF05A’ ‘0300’.
PERFORM bdc_field USING ‘BDC_CURSOR’
‘RF05A-NEWKO’.
PERFORM bdc_field USING ‘BDC_OKCODE’
‘/00’.
PERFORM bdc_field USING ‘BSEG-WRBTR’
wa_upload1-amount.
PERFORM bdc_field USING ‘BSEG-VALUT’
wa_upload1-valuedate.
PERFORM bdc_dynpro USING ‘SAPLKACB’ ‘0002’.
PERFORM bdc_field USING ‘BDC_CURSOR’
‘COBL-GSBER’.
PERFORM bdc_field USING ‘BDC_OKCODE’
‘=ENTE’.
ENDIF.
AT END OF documentreferencenumber.
PERFORM bdc_dynpro USING ‘SAPMF05A’ ‘0300’.
PERFORM bdc_field USING ‘BDC_CURSOR’
‘BSEG-WRBTR’.
PERFORM bdc_field USING ‘BDC_OKCODE’
‘=BU’.
PERFORM bdc_field USING ‘BSEG-WRBTR’
wa_upload1-amount.
PERFORM bdc_field USING ‘BSEG-VALUT’
wa_upload1-valuedate.
PERFORM bdc_field USING ‘DKACB-FMORE’
‘X’.
PERFORM bdc_dynpro USING ‘SAPLKACB’ ‘0002’.
PERFORM bdc_field USING ‘BDC_CURSOR’
‘COBL-PRCTR’.
PERFORM bdc_field USING ‘BDC_OKCODE’
‘=ENTE’.
PERFORM bdc_field USING ‘COBL-GSBER’
wa_upload1-businessarea.
PERFORM bdc_field USING ‘COBL-PRCTR’
wa_upload1-profitcenter.
* CALL TRANSACTION
CALL TRANSACTION c_transaction USING it_bdcdata MODE c_mode UPDATE c_update MESSAGES INTO it_messagelog.
IF sy-subrc <> 0.
v_temp = text-003.
ENDIF.
LOOP AT it_messagelog INTO wa_messagelog.
CALL FUNCTION ‘FORMAT_MESSAGE’
EXPORTING
id = wa_messagelog-msgid
lang = wa_messagelog-msgspra
no = wa_messagelog-msgnr
v1 = wa_messagelog-msgv1
v2 = wa_messagelog-msgv2
v3 = wa_messagelog-msgv3
v4 = wa_messagelog-msgv4
IMPORTING
msg = v_msg.
IF v_temp IS NOT INITIAL.
wa_messagelog-msgtyp = v_temp.
ENDIF.
IF v_finalmsg = ”.
v_finalmsg = v_msg.
ELSE.
CONCATENATE v_finalmsg v_msg INTO v_finalmsg SEPARATED BY c_comma.
ENDIF.
wa_success-documentreferencenumber = wa_upload1-documentreferencenumber.
wa_success-status = wa_messagelog-msgtyp.
wa_success-description = v_finalmsg.
APPEND wa_success TO it_success.
IF wa_success-documentreferencenumber = wa_upload1-documentreferencenumber.
MOVE wa_success-status TO wa_upload1-status.
MOVE wa_success-description TO wa_upload1-description.
MODIFY it_upload FROM wa_upload1.
ENDIF.
ENDLOOP.
CLEAR v_temp.
CLEAR v_finalmsg.
REFRESH it_messagelog.
* LOOP AT IT_SUCCESS INTO WA_SUCCESS
REFRESH it_bdcdata.
ENDAT.
ENDLOOP.
ENDFORM. ” End of Form transaction
END-OF-SELECTION.
wa_header-field1 = ‘doc_no’.
APPEND wa_header TO it_header.
CLEAR wa_header..
wa_header-field1 = ‘doc_date’.
APPEND wa_header TO it_header.
CLEAR wa_header.
wa_header-field1 = ‘doc_type’.
APPEND wa_header TO it_header.
CLEAR wa_header.
wa_header-field1 = ‘companycode’.
APPEND wa_header TO it_header.
CLEAR wa_header.
wa_header-field1 = ‘postingdate’.
APPEND wa_header TO it_header.
CLEAR wa_header.
wa_header-field1 = ‘period’.
APPEND wa_header TO it_header.
CLEAR wa_header.
wa_header-field1 = ‘currency’.
APPEND wa_header TO it_header.
CLEAR wa_header.
wa_header-field1 = ‘reference’.
APPEND wa_header TO it_header.
CLEAR wa_header.
wa_header-field1 = ‘postingkey’.
APPEND wa_header TO it_header.
CLEAR wa_header..
wa_header-field1 = ‘account’.
APPEND wa_header TO it_header.
CLEAR wa_header.
wa_header-field1 = ‘amount’.
APPEND wa_header TO it_header.
CLEAR wa_header.
wa_header-field1 = ‘taxcode’.
APPEND wa_header TO it_header.
CLEAR wa_header.
wa_header-field1 = ‘businessarea’.
APPEND wa_header TO it_header.
CLEAR wa_header.
wa_header-field1 = ‘profitcenter’.
APPEND wa_header TO it_header.
CLEAR wa_header.
wa_header-field1 = ‘valuedate’.
APPEND wa_header TO it_header.
CLEAR wa_header.
wa_header-field1 = ‘status’.
APPEND wa_header TO it_header.
CLEAR wa_header.
wa_header-field1 = ‘description’.
APPEND wa_header TO it_header.
CLEAR wa_header.
CHECK v_validate_fg <> c_x.
***********************************
* WRITING TO THE LOG FILES.
***************************************
IF rb_sessi = c_x.
LOOP AT it_upload INTO wa_upload.
wa_upload1 = wa_upload.
IF wa_upload1-status = text-003 OR wa_upload1-documentreferencenumber = v_statusd.
APPEND wa_upload1 TO it_errormess.
v_statusd = wa_upload1-documentreferencenumber.
APPEND wa_upload1 TO it_check.
ELSE.
IF wa_upload1-documentreferencenumber <> v_statusd.
APPEND wa_upload1 TO it_successmess.
ENDIF.
LOOP AT it_check INTO wa_check.
LOOP AT it_successmess INTO wa_successmess.
IF wa_successmess-documentreferencenumber = wa_check-documentreferencenumber.
DELETE it_successmess.
ENDIF.
ENDLOOP.
ENDLOOP.
ENDIF.
AT END OF documentreferencenumber.
CLEAR v_statusd.
ENDAT.
ENDLOOP.
PERFORM file_download.
ELSE.
LOOP AT it_upload INTO wa_upload.
wa_upload1 = wa_upload.
APPEND wa_upload1 TO it_check.
AT END OF documentreferencenumber.
IF wa_upload1-status = text-004.
LOOP AT it_check INTO wa_check.
APPEND wa_check TO it_successmess.
ENDLOOP.
REFRESH it_check.
ELSE.
LOOP AT it_check INTO wa_check.
APPEND wa_check TO it_errormess.
ENDLOOP.
REFRESH it_check.
ENDIF.
ENDAT.
ENDLOOP.
PERFORM file_download.
ENDIF.
PERFORM display_alv.
FREE: it_upload,
it_type,
it_bdcdata,
it_messagelog,
it_success,
it_alv_fieldcat,
it_alv_layout.
CLEAR: wa_upload,
wa_upload1,
wa_bdcdata,
wa_messagelog,
wa_success,
wa_alv_fieldcat.
DATA fcode TYPE TABLE OF sy-ucomm.
*&———————————————————————*
*& Form file_download
*&———————————————————————*
* text
*———————————————————————-*
FORM file_download.
IF p_files IS NOT INITIAL.
CALL FUNCTION ‘GUI_DOWNLOAD’
EXPORTING
filename = p_files
filetype = ‘DAT’
append = ‘X’
TABLES
data_tab = it_successmess
fieldnames = it_header
EXCEPTIONS
file_write_error = 1
no_batch = 2
gui_refuse_filetransfer = 3
invalid_type = 4
no_authority = 5
unknown_error = 6
header_not_allowed = 7
separator_not_allowed = 8
filesize_not_allowed = 9
header_too_long = 10
dp_error_create = 11
dp_error_send = 12
dp_error_write = 13
unknown_dp_error = 14
access_denied = 15
dp_out_of_memory = 16
disk_full = 17
dp_timeout = 18
file_not_found = 19
dataprovider_exception = 20
control_flush_error = 21
OTHERS = 22.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDIF.
IF p_filee IS NOT INITIAL.
CALL FUNCTION ‘GUI_DOWNLOAD’
EXPORTING
filename = p_filee
filetype = ‘DAT’
append = ‘X’
TABLES
data_tab = it_errormess
fieldnames = it_header
EXCEPTIONS
file_write_error = 1
no_batch = 2
gui_refuse_filetransfer = 3
invalid_type = 4
no_authority = 5
unknown_error = 6
header_not_allowed = 7
separator_not_allowed = 8
filesize_not_allowed = 9
header_too_long = 10
dp_error_create = 11
dp_error_send = 12
dp_error_write = 13
unknown_dp_error = 14
access_denied = 15
dp_out_of_memory = 16
disk_full = 17
dp_timeout = 18
file_not_found = 19
dataprovider_exception = 20
control_flush_error = 21
OTHERS = 22.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDIF.
ENDFORM. “file_download
*&———————————————————————*
*& Form set_pf_status
*&———————————————————————*
* text
*———————————————————————-*
* –>RT_EXTAB text
*———————————————————————-*
FORM set_pf_status USING rt_extab TYPE slis_t_extab.
IF rb_sessi = ‘X’.
SET PF-STATUS ‘ZSTATUS’.
ELSE.
APPEND ‘DISP’ TO fcode.
APPEND ‘PROCESS’ TO fcode.
SET PF-STATUS ‘ZSTATUS’ EXCLUDING fcode.
ENDIF.
ENDFORM. “set_pf_status
*&———————————————————————*
*& Form user_command
*&———————————————————————*
* text
*———————————————————————-*
* –>SY-UCOMM text
* –>RS_SELFIELD text
*———————————————————————-*
FORM user_command USING r_ucomm LIKE sy-ucomm rs_selfield TYPE slis_selfield.
IF r_ucomm EQ ‘PROCESS’.
SUBMIT rsbdcsub AND RETURN
WITH mappe = p_sname
WITH z_verarb = ‘X’
WITH logall = ‘X’.
ELSEIF r_ucomm EQ ‘DISP’.
CALL TRANSACTION ‘SM35’.
ENDIF.
ENDFORM. “user_command
*&———————————————————————*
*& Form alv_setup
*&———————————————————————*
* Layout for ALV
*———————————————————————-*
FORM alv_setup.
CLEAR wa_alv_fieldcat.
REFRESH it_alv_fieldcat.
wa_alv_fieldcat-fieldname = ‘DOCUMENTREFERENCENUMBER’.
wa_alv_fieldcat-seltext_l = ‘Document Reference Number’. “#EC NOTEXT
APPEND wa_alv_fieldcat TO it_alv_fieldcat.
wa_alv_fieldcat-fieldname = ‘DOCUMENTDATE’.
wa_alv_fieldcat-seltext_l = ‘Document Date’. “#EC NOTEXT
APPEND wa_alv_fieldcat TO it_alv_fieldcat.
wa_alv_fieldcat-fieldname = ‘DOCUMENTTYPE’.
wa_alv_fieldcat-seltext_l = ‘Document Type’. “#EC NOTEXT
APPEND wa_alv_fieldcat TO it_alv_fieldcat.
wa_alv_fieldcat-fieldname = ‘COMPANYCODE’.
wa_alv_fieldcat-seltext_l = ‘Company Code’. “#EC NOTEXT
APPEND wa_alv_fieldcat TO it_alv_fieldcat.
wa_alv_fieldcat-fieldname = ‘POSTINGDATE’.
wa_alv_fieldcat-seltext_l = ‘Posting Date’. “#EC NOTEXT
APPEND wa_alv_fieldcat TO it_alv_fieldcat.
wa_alv_fieldcat-fieldname = ‘PERIOD’.
wa_alv_fieldcat-seltext_l = ‘Period’. “#EC NOTEXT
APPEND wa_alv_fieldcat TO it_alv_fieldcat.
wa_alv_fieldcat-fieldname = ‘CURRENCY’.
wa_alv_fieldcat-seltext_l = ‘Currency’. “#EC NOTEXT
APPEND wa_alv_fieldcat TO it_alv_fieldcat.
wa_alv_fieldcat-fieldname = ‘REFERENCE’.
wa_alv_fieldcat-seltext_l = ‘Reference’. “#EC NOTEXT
APPEND wa_alv_fieldcat TO it_alv_fieldcat.
wa_alv_fieldcat-fieldname = ‘POSTINGKEY’.
wa_alv_fieldcat-seltext_l = ‘Posting Key’. “#EC NOTEXT
APPEND wa_alv_fieldcat TO it_alv_fieldcat.
wa_alv_fieldcat-fieldname = ‘ACCOUNT’.
wa_alv_fieldcat-seltext_l = ‘Account’. “#EC NOTEXT
APPEND wa_alv_fieldcat TO it_alv_fieldcat.
wa_alv_fieldcat-fieldname = ‘AMOUNT’.
wa_alv_fieldcat-seltext_l = ‘Amount’. “#EC NOTEXT
APPEND wa_alv_fieldcat TO it_alv_fieldcat.
wa_alv_fieldcat-fieldname = ‘TAXCODE’.
wa_alv_fieldcat-seltext_l = ‘Tax code’. “#EC NOTEXT
APPEND wa_alv_fieldcat TO it_alv_fieldcat.
wa_alv_fieldcat-fieldname = ‘BUSINESSAREA’.
wa_alv_fieldcat-seltext_l = ‘Business Area’. “#EC NOTEXT
APPEND wa_alv_fieldcat TO it_alv_fieldcat.
wa_alv_fieldcat-fieldname = ‘PROFITCENTER’.
wa_alv_fieldcat-seltext_l = ‘Profit Center’. “#EC NOTEXT
APPEND wa_alv_fieldcat TO it_alv_fieldcat.
wa_alv_fieldcat-fieldname = ‘VALUEDATE’.
wa_alv_fieldcat-seltext_l = ‘Value Date’. “#EC NOTEXT
APPEND wa_alv_fieldcat TO it_alv_fieldcat.
wa_alv_fieldcat-fieldname = ‘STATUS’.
wa_alv_fieldcat-seltext_l = ‘Status’. “#EC NOTEXT
APPEND wa_alv_fieldcat TO it_alv_fieldcat.
wa_alv_fieldcat-fieldname = ‘DESCRIPTION’.
wa_alv_fieldcat-seltext_l = ‘Description’. “#EC NOTEXT
APPEND wa_alv_fieldcat TO it_alv_fieldcat.
ENDFORM. “alv_setup
*&———————————————————————*
*& Form display_alv
*&———————————————————————*
*
*———————————————————————-*
FORM display_alv.
it_alv_layout-colwidth_optimize = c_x.
it_alv_layout-zebra = c_x.
SET PF-STATUS ‘TEST’.
CALL FUNCTION ‘REUSE_ALV_GRID_DISPLAY’
EXPORTING
i_callback_program = sy-repid
i_callback_pf_status_set = ‘SET_PF_STATUS’
i_callback_user_command = ‘USER_COMMAND’
is_layout = it_alv_layout
it_fieldcat = it_alv_fieldcat
TABLES
t_outtab = it_upload.
ENDFORM. “display_alv
**&———————————————————————*
**& Form bdc_open_grp
**&———————————————————————*
** –>Group Session name
**———————————————————————-*
FORM bdc_open_grp.
CALL FUNCTION ‘BDC_OPEN_GROUP’
EXPORTING
client = sy-mandt
group = p_sname
keep = c_x
user = sy-uname.
.
ENDFORM. “bdc_open_grp
*&———————————————————————*
*& Form bdc
*&———————————————————————*
* –>TCODE Transaction code for which session to be created
* –>DYNPROTAB Intenal table that is passed
*———————————————————————-*
FORM bdc.
CALL FUNCTION ‘BDC_INSERT’
EXPORTING
tcode = c_transaction
TABLES
dynprotab = it_bdcdata.
ENDFORM. “bdc
*&———————————————————————*
*& Form bdc_close_grp
*&———————————————————————*
* text
*———————————————————————-*
FORM bdc_close_grp.
CALL FUNCTION ‘BDC_CLOSE_GROUP’
EXCEPTIONS
not_open = 1.
.
IF sy-subrc <> 0.
MESSAGE i017.
ELSE.
MESSAGE s016.
ENDIF.
ENDFORM. “bdc_close_grp
*&———————————————————————*
*& Form get1
*&———————————————————————*
* Browse for a file on the presentation server
*———————————————————————-*
FORM get1.
CALL FUNCTION ‘F4_FILENAME’
EXPORTING
field_name = ‘p_fname’
IMPORTING
file_name = p_fname.
ENDFORM. “get1
*&———————————————————————*
*& Form get2
*&———————————————————————*
* text
*———————————————————————-*
FORM get2.
CALL FUNCTION ‘F4_FILENAME’
EXPORTING
field_name = ‘p_succes’
IMPORTING
file_name = p_succes.
ENDFORM. “get2
*&———————————————————————*
*& Form get3
*&———————————————————————*
* text
*———————————————————————-*
FORM get3.
CALL FUNCTION ‘F4_FILENAME’
EXPORTING
program_name = ‘p_error’
IMPORTING
file_name = p_error.
ENDFORM. “get3
*&———————————————————————*
*& Form BDC_DYNPRO
*&———————————————————————*
*
*———————————————————————-*
* –>PROGRAM Program name
* –>DYNPRO Screen #
* –>DYNBEGIN Beginning of new screen
*———————————————————————-*
FORM bdc_dynpro USING program dynpro.
CLEAR wa_bdcdata.
wa_bdcdata-program = program.
wa_bdcdata-dynpro = dynpro.
wa_bdcdata-dynbegin = c_x.
APPEND wa_bdcdata TO it_bdcdata.
ENDFORM. “BDC_DYNPRO
*
**&———————————————————————*
**& Form BDC_FIELD
**&———————————————————————*
**
**———————————————————————-*
** –>FNAM Field name
** –>FVAL Field value
**———————————————————————-*
FORM bdc_field USING fnam fval.
CLEAR wa_bdcdata.
wa_bdcdata-fnam = fnam.
wa_bdcdata-fval = fval.
APPEND wa_bdcdata TO it_bdcdata.
ENDFORM. “BDC_FIELD
*&———————————————————————*
*& Form modify_screen
*&———————————————————————*
* text
*———————————————————————-*
FORM modify_screen.
LOOP AT SCREEN.
IF rb_sessi <> ‘X’.
IF screen-name CS ‘p_sname’.
screen-active = 0.
MODIFY SCREEN.
ENDIF.
ENDIF.
ENDLOOP.
ENDFORM. “modify_screen