0% found this document useful (0 votes)
175 views23 pages

Z Fi BDC Asset Master

This program processes asset master data from an input text file. It reads the input file, checks for mandatory fields, and fills a BDC table to call transaction AS91 to add or update asset master records. If any errors occur, it formats error messages and downloads records to an error file. Based on a user selection, it will either call the transaction directly or create a BDC session to process the records in batches. After processing, it displays an audit report.

Uploaded by

Ramana saps4hana
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)
175 views23 pages

Z Fi BDC Asset Master

This program processes asset master data from an input text file. It reads the input file, checks for mandatory fields, and fills a BDC table to call transaction AS91 to add or update asset master records. If any errors occur, it formats error messages and downloads records to an error file. Based on a user selection, it will either call the transaction directly or create a BDC session to process the records in batches. After processing, it displays an audit report.

Uploaded by

Ramana saps4hana
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/ 23

REPORT Z_FI_BDC_ASSET_MASTER NO STANDARD PAGE HEADING

MESSAGE-ID Z_MSGCLASS
LINE-SIZE 132
LINE-COUNT 65.
************************************************************************
* Program Name : Z_FI_BDC_ASSET_MASTER *
* Description : Asset Master *
* Development class : Z_DEVELOPMENT *
* Description : *
* *
* 1. Read input file *
* 2. Check the mandatory fields and if any one of them is missing *
* move the record to error file. *
* 3. Fill the bdcdata and call AS91 transaction *
* 4. If any errors format the message and send it for reporting *
* 5. If any errors, it downloads the error file *
* 6. Based on user input, this programs does the following *
* a) Call transaction and in case of errors add to a session *
* B) Create session *
* 7. Display the Audit report *
*----------------------------------------------------------------------*
*----------------------------------------------------------------------*
* Request No. Created Date Developer name *
*----------------------------------------------------------------------*
* SRDK900081 27/09/2006 Ashok Kumar.N
*----------------------------------------------------------------------*

*----------------------------------------------------------------------*
* FLAGS *
*----------------------------------------------------------------------*
DATA: FG_STOP TYPE C, " Flag used to stop processing
FG_COLOR TYPE C, " Flag to set Background color
FG_OPENSESSION TYPE C. " Flag for Open Sesssion

*----------------------------------------------------------------------*
* INTERNAL TABLE DECLARATIONS *
*----------------------------------------------------------------------*
*--- Internal table for input file for ascii data load
DATA: BEGIN OF I_INFILE_ASC OCCURS 0,
STRING(1000) TYPE C,
END OF I_INFILE_ASC.

*--- Internal table to store messages from Call Transaction.


DATA : I_BDCMSGCOLL TYPE STANDARD TABLE OF BDCMSGCOLL WITH HEADER LINE,

*--- Internal table for BDC data


IT_BDCTAB TYPE BDCDATA OCCURS 0 WITH HEADER LINE.

*----- Internal to hold the records in the text file


DATA : BEGIN OF IT_DATA OCCURS 10,
ANLKL(8), " Asset class
BUKRS(4), " Company Code
TXT50(50), " Asset description
TXA50(50), " Additional asset description
SERNR(18), " Serial number
INVNR(25), " Inventory number
MENGE(13), " Quantity
MEINS(3), " Base Unit of Measure
XHIST(1), " Asset is managed historically
IVDAT(10), " Last inventory date
INKEN(1), " Inventory indicator
AKTIV(10), " Asset capitalization date
GSBER(4), " Business Area
KOSTL(10), " Cost Center
WERKS(4), " Plant
LIFNR(10), " Account number of vendor (other key word)
HERST(30), " Manufacturer of asset
XNEU_AM(1), " Indicator: Asset purchased new
AFASL1(4), " Depreciation key1
AFASL2(4), " Depreciation key2
NDJAR1(3), " Planned useful life in years
NDJAR2(3), " Planned useful life in years
NDPER1(3), " Planned useful life in periods
NDPER2(3), " Planned useful life in periods
AFABG1(10), " Depreciation calculation start date
AFABG2(10), " Depreciation calculation start date
ANLGR(12), " Group asset
ANBTR01_1(13), " Amount posted 1 of 1
ANBTR01_6(13), " Amount posted 1 of 6
ANBTR02_1(13), " Amount posted 2 of 1
END OF IT_DATA.

*--- Internal table to hold the error records.


DATA : BEGIN OF IT_ERROR OCCURS 0.
INCLUDE STRUCTURE IT_DATA.
DATA : MESSAGE(80) TYPE C,
END OF IT_ERROR.

*--- Internal table for session names


DATA : BEGIN OF IT_SESSION OCCURS 0,
NAME(12),
END OF IT_SESSION.

*--- Internal table to hold Collecting messages in the SAP System


DATA : IT_MSG LIKE BDCMSGCOLL OCCURS 10 WITH HEADER LINE.

*--- Internal table to hold error records to be downloaded


DATA : BEGIN OF I_FINAL OCCURS 0,
STRING(1000),
END OF I_FINAL.

*--- Internal table for session names


DATA : BEGIN OF I_SESSION OCCURS 0,
NAME(12),
END OF I_SESSION.

*--- Internal table to hold data from Excel


DATA : IT_INTERN TYPE ALSMEX_TABLINE OCCURS 0 WITH HEADER LINE.

*----------------------------------------------------------------------*
* CONSTANTS *
*----------------------------------------------------------------------*
CONSTANTS : C_FILETYPE LIKE RLGRAP-FILETYPE VALUE 'DAT', " Filetype
C_TCODE LIKE TSTC-TCODE VALUE 'AS91', " Transaction
C_MODE(1) VALUE 'A', " Mode
C_UPDATE(1) VALUE 'S', " Update
C_SESS(12) TYPE C VALUE 'ASSET_SESS'. " Session Name
*----------------------------------------------------------------------*
* DATA DECLARATIONS *
*----------------------------------------------------------------------*
DATA : G_TABIX LIKE SY-TABIX, " Table Index
G_MESG(80) TYPE C, " Message,
G_ERROR TYPE I, " No.of Errors
G_SUCCESS TYPE I, " No.of successes
G_BDC_SESS TYPE APQI-GROUPID VALUE 'UPLOAD', " Queue info defn
G_MAX TYPE I VALUE '900', " Max records
G_LINES TYPE I, " No.of records
G_INSERT TYPE I, " Insert
G_COUNTER(2) TYPE N, " No.of Sessions
G_EMPTY TYPE I, " No. of empty records
G_TOTAL TYPE I, " Total no. of records
with data
G_SESSION TYPE APQI-GROUPID, " Session name
G_DEL TYPE X VALUE '09', " To seperate fields in
case of Dat
G_SFILE(255), " File path
G_FILEEXT(3). " File Extension

*----------------------------------------------------------------------*
* SELECTION SCREEN. *
*----------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK SCR1 WITH FRAME TITLE TEXT-001.
PARAMETER : P_FILE TYPE RLGRAP-FILENAME OBLIGATORY DEFAULT 'C:/ASSET_MASTER.TXT',
" Input File
P_ERR TYPE RLGRAP-FILENAME OBLIGATORY DEFAULT
'C:/ASSET_MASTER_ERR.TXT', " Error File
P_FTYPE LIKE RLGRAP-FILETYPE DEFAULT 'DAT'.
" File Type
SELECTION-SCREEN END OF BLOCK SCR1.

SELECTION-SCREEN BEGIN OF BLOCK MODE WITH FRAME TITLE TEXT-002.


PARAMETER : P_CT RADIOBUTTON GROUP BDC, " Call Transaction
P_BDC RADIOBUTTON GROUP BDC DEFAULT 'X'. " Create BDC sess

PARAMETER : P_SESS1 TYPE APQI-GROUPID OBLIGATORY DEFAULT C_SESS. " Session name

PARAMETER : P_MAX(4) OBLIGATORY DEFAULT '100', " No.of recs in a


session
P_TEST AS CHECKBOX DEFAULT 'X'. " Test mode
PARAMETERS: P_HEADER TYPE I DEFAULT 0. " Header Lines
PARAMETERS: P_BEGCOL TYPE I DEFAULT 1 NO-DISPLAY, " Start Column
P_BEGROW TYPE I DEFAULT 1 NO-DISPLAY, " Start Row
P_ENDCOL TYPE I DEFAULT 100 NO-DISPLAY, " End Column
P_ENDROW TYPE I DEFAULT 32000 NO-DISPLAY. " End Row
SELECTION-SCREEN END OF BLOCK MODE.

*---------------------------------------------------------------------*
* AT SELECTION-SCREEN *
*---------------------------------------------------------------------*
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE.
*--- Validating file
PERFORM VALIDATE_FILE USING P_FILE.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_ERR.


*--- Validating file
PERFORM VALIDATE_FILE USING P_ERR.
*----------------------------------------------------------------------*
* START-OF-SELECTION
*----------------------------------------------------------------------*
START-OF-SELECTION.

*--- Perform to store the data to an internal table


PERFORM READ_INPUT_FILE_DATA.
*--- Process data in non test mode only
IF P_TEST = SPACE.
IF NOT IT_DATA[] IS INITIAL.
*--- Perform to process data
PERFORM PROCESS_DATA.
ELSE.
G_MESG = 'Error in Processing BDC Data'(001).
MESSAGE I001(Z_MSGCLASS) WITH G_MESG.
FG_STOP = 'X'.
STOP.
ENDIF.
ENDIF.

*----------------------------------------------------------------------*
* END OF SELECTION. *
*----------------------------------------------------------------------*
END-OF-SELECTION.

IF FG_STOP = SPACE.
*--- Perform to display the selection screen of the rep`ort
PERFORM DISPLAY_SEL_SCR_REPORT.
*--- Perform to display the session report
PERFORM SESSION_REPORT.
*--- Perform to display the no.of records,success and error records
PERFORM DISPLAY_SUMMARY_REPORT.
*--- Downloading error records.
PERFORM DOWNLOAD_ERROR_FILES.
*---- Perform to display the error records
PERFORM DISPLAY_ERROR_RECORDS.
ENDIF.
*----------------------------------------------------------------------*
* Form : validate_input_file
*----------------------------------------------------------------------*
* Description : To provide F4 help for file if read from PC
*----------------------------------------------------------------------*
FORM VALIDATE_FILE USING F_FILE TYPE RLGRAP-FILENAME.
*--- Call function to get the File (user specified)
CALL FUNCTION 'KD_GET_FILENAME_ON_F4'
CHANGING
FILE_NAME = F_FILE
EXCEPTIONS
MASK_TOO_LONG = 1
OTHERS = 2.

IF SY-SUBRC <> 0.
*--- Display message if error occurs in getting file
G_MESG = 'Error in getting the Filename'(002).
MESSAGE I001(Z_MSGCLASS) WITH G_MESG.
ENDIF.

ENDFORM. " validate_input_file


*----------------------------------------------------------------------*
* Form : Read_inputfile
*----------------------------------------------------------------------*
* Description : To upload the data into internal table
*----------------------------------------------------------------------*
FORM READ_INPUTFILE TABLES F_INFILE
USING F_FILE TYPE RLGRAP-FILENAME
F_FILTYP TYPE RLGRAP-FILETYPE.
*--- Local variable declarations
DATA : LV_DEL TYPE CHAR01,
LV_FILE TYPE STRING.
*--- Clear and initialize variables
CLEAR F_INFILE.
REFRESH F_INFILE.
LV_FILE = F_FILE.

*--- Function module to upload the input file


IF F_FILTYP = 'DAT'.
LV_DEL = '|'.
ENDIF.
*--- Call function GUI_UPLOAD to upload data from flat file to internal table
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
FILENAME = LV_FILE
FILETYPE = 'ASC'
HAS_FIELD_SEPARATOR = LV_DEL
TABLES
DATA_TAB = F_INFILE
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.
*--- Display message if error occurs in uploading data from file
G_MESG = 'Error in uploading the file'(003).
MESSAGE I001(Z_MSGCLASS) WITH G_MESG.
CLEAR G_MESG.
FG_STOP = 'X'.
STOP.
ENDIF.

ENDFORM. "Read_inputfile
*&---------------------------------------------------------------------*
*& Form FORMAT_ASC_DATA
*&---------------------------------------------------------------------*
* To format the ASCII data
*----------------------------------------------------------------------*
FORM FORMAT_ASC_DATA.
*--- Loop to format ASCII data
LOOP AT I_INFILE_ASC.

IT_DATA-ANLKL = I_INFILE_ASC-STRING+0(8).
IT_DATA-BUKRS = I_INFILE_ASC-STRING+8(4).
IT_DATA-TXT50 = I_INFILE_ASC-STRING+12(50).
IT_DATA-TXA50 = I_INFILE_ASC-STRING+62(50).
IT_DATA-SERNR = I_INFILE_ASC-STRING+112(18).
IT_DATA-INVNR = I_INFILE_ASC-STRING+130(25).
IT_DATA-MENGE = I_INFILE_ASC-STRING+155(13).
IT_DATA-MEINS = I_INFILE_ASC-STRING+168(3).
IT_DATA-XHIST = I_INFILE_ASC-STRING+171(1).
IT_DATA-IVDAT = I_INFILE_ASC-STRING+172(10).
IT_DATA-INKEN = I_INFILE_ASC-STRING+182(1).
IT_DATA-AKTIV = I_INFILE_ASC-STRING+183(10).
IT_DATA-GSBER = I_INFILE_ASC-STRING+193(4).
IT_DATA-KOSTL = I_INFILE_ASC-STRING+197(10).
IT_DATA-WERKS = I_INFILE_ASC-STRING+207(4).
IT_DATA-LIFNR = I_INFILE_ASC-STRING+211(10).
IT_DATA-HERST = I_INFILE_ASC-STRING+221(30).
IT_DATA-XNEU_AM = I_INFILE_ASC-STRING+251(1).
IT_DATA-AFASL1 = I_INFILE_ASC-STRING+252(4).
IT_DATA-AFASL2 = I_INFILE_ASC-STRING+256(4).
IT_DATA-NDJAR1 = I_INFILE_ASC-STRING+260(3).
IT_DATA-NDJAR2 = I_INFILE_ASC-STRING+263(3).
IT_DATA-NDPER1 = I_INFILE_ASC-STRING+266(3).
IT_DATA-NDPER2 = I_INFILE_ASC-STRING+269(3).
IT_DATA-AFABG1 = I_INFILE_ASC-STRING+272(10).
IT_DATA-AFABG2 = I_INFILE_ASC-STRING+282(10).
IT_DATA-ANLGR = I_INFILE_ASC-STRING+292(12).
IT_DATA-ANBTR01_1 = I_INFILE_ASC-STRING+304(13).
IT_DATA-ANBTR01_6 = I_INFILE_ASC-STRING+317(13).
IT_DATA-ANBTR02_1 = I_INFILE_ASC-STRING+330(13).

ENDLOOP.

ENDFORM. " FORMAT_ASC_DATA

*&---------------------------------------------------------------------*
*& Form error_processing
*&---------------------------------------------------------------------*
* To process the error records
*----------------------------------------------------------------------*
FORM ERROR_PROCESSING USING F_IT_DATA
F_MESG.
G_ERROR = G_ERROR + 1.
IT_ERROR = F_IT_DATA.
IT_ERROR-MESSAGE = F_MESG.
APPEND IT_ERROR.
CLEAR IT_ERROR.

ENDFORM. " ERROR_PROCESSING


*---------------------------------------------------------------------*
* Form : process_data *
*---------------------------------------------------------------------*
* --- Populating the BDC Data *
*---------------------------------------------------------------------*
FORM PROCESS_DATA .

LOOP AT IT_DATA.

CLEAR :IT_BDCTAB,
I_BDCMSGCOLL.
REFRESH:IT_BDCTAB,
I_BDCMSGCOLL.
*--- To fill the data from the text file
PERFORM FILL_BDCDATA.
IF P_CT EQ 'X'.
*--- Posts data using call transaction method.
PERFORM CALL_TRANSACTION.
ELSE.
*--- Posts data using session method.
PERFORM CALL_SESSION USING C_TCODE P_MAX P_SESS1.
ENDIF.

ENDLOOP.
IF FG_OPENSESSION = 'X'.
*--- Perform to close BDC session
PERFORM CLOSE_SESSION.
ENDIF.

ENDFORM. " PROCESS_DATA

*&---------------------------------------------------------------------*
*& Form FILL_BDCDATA
*&---------------------------------------------------------------------*
* To populate the data
*----------------------------------------------------------------------*
FORM FILL_BDCDATA.

*---- Perform to fill the fields in the screen 0105


PERFORM FILL_SCREEN_0105.
*---- Perform to fill the fields in the screen 1000
PERFORM FILL_SCREEN_1000.
*---- Perform to fill the fields in the screen 0195
PERFORM FILL_SCREEN_0195.
*---- Perform to fill the fields in the screen 1100
PERFORM FILL_SCREEN_1100.

ENDFORM. " FILL_BDCDATA

*&---------------------------------------------------------------------*
*& Form FILL_SCREEN_0105
*&---------------------------------------------------------------------*
* To fill the fields in the screen 0105
*----------------------------------------------------------------------*
FORM FILL_SCREEN_0105 .

PERFORM BDC_DYNPRO USING 'SAPLAIST' '0105'.


PERFORM BDC_FIELD USING 'BDC_OKCODE' '/00'.
PERFORM BDC_FIELD USING 'BDC_CURSOR' 'ANLA-BUKRS'.
PERFORM BDC_FIELD USING 'ANLA-ANLKL' IT_DATA-ANLKL.
PERFORM BDC_FIELD USING 'ANLA-BUKRS' IT_DATA-BUKRS.

ENDFORM. " FILL_SCREEN_0105

*&---------------------------------------------------------------------*
*& Form FILL_SCREEN_1000
*&---------------------------------------------------------------------*
* To fill the fields in the screen 1000
*----------------------------------------------------------------------*
FORM FILL_SCREEN_1000 .

PERFORM BDC_DYNPRO USING 'SAPLAIST' '1000'.


PERFORM BDC_FIELD USING 'BDC_OKCODE' '=TAB02'.
PERFORM BDC_FIELD USING 'BDC_CURSOR' 'ANLA-AKTIV'.
PERFORM BDC_FIELD USING 'ANLA-TXT50' IT_DATA-TXT50.
PERFORM BDC_FIELD USING 'ANLA-TXA50' IT_DATA-TXA50.
PERFORM BDC_FIELD USING 'ANLA-SERNR' IT_DATA-SERNR.
PERFORM BDC_FIELD USING 'ANLA-INVNR' IT_DATA-INVNR.
PERFORM BDC_FIELD USING 'ANLA-MENGE' IT_DATA-MENGE.
PERFORM BDC_FIELD USING 'ANLA-MEINS' IT_DATA-MEINS.
PERFORM BDC_FIELD USING 'RA02S-XHIST' IT_DATA-XHIST.
PERFORM BDC_FIELD USING 'ANLA-IVDAT' IT_DATA-IVDAT.
PERFORM BDC_FIELD USING 'ANLA-INKEN' IT_DATA-INKEN. " <== check
PERFORM BDC_FIELD USING 'ANLA-AKTIV' IT_DATA-AKTIV.

PERFORM BDC_DYNPRO USING 'SAPLAIST' '1000'.


PERFORM BDC_FIELD USING 'BDC_OKCODE' '=TAB04'.
PERFORM BDC_FIELD USING 'BDC_CURSOR' 'ANLZ-WERKS'.
PERFORM BDC_FIELD USING 'ANLZ-GSBER' IT_DATA-GSBER.
PERFORM BDC_FIELD USING 'ANLZ-KOSTL' IT_DATA-KOSTL.
PERFORM BDC_FIELD USING 'ANLZ-WERKS' IT_DATA-WERKS.

PERFORM BDC_DYNPRO USING 'SAPLAIST' '1000'.


PERFORM BDC_FIELD USING 'BDC_OKCODE' '/00'.
PERFORM BDC_FIELD USING 'BDC_CURSOR' 'ANLA-LIEFE'.
PERFORM BDC_FIELD USING 'ANLA-LIFNR' IT_DATA-LIFNR.
PERFORM BDC_FIELD USING 'ANLA-HERST' IT_DATA-HERST.
PERFORM BDC_FIELD USING 'RA02S-XNEU_AM' IT_DATA-XNEU_AM.

PERFORM BDC_DYNPRO USING 'SAPLAIST' '1000'.


PERFORM BDC_FIELD USING 'BDC_OKCODE' '=TAB08'.
PERFORM BDC_FIELD USING 'BDC_CURSOR' 'ANLA-LIFNR'.

PERFORM BDC_DYNPRO USING 'SAPLAIST' '1000'.


PERFORM BDC_FIELD USING 'BDC_OKCODE' '=SELZ'.
PERFORM BDC_FIELD USING 'BDC_CURSOR' 'T093T-AFBKTX(02)'.
PERFORM BDC_FIELD USING 'ANLB-AFASL(01)' IT_DATA-AFASL1.
PERFORM BDC_FIELD USING 'ANLB-AFASL(02)' IT_DATA-AFASL2.
PERFORM BDC_FIELD USING 'ANLB-NDJAR(01)' IT_DATA-NDJAR1.
PERFORM BDC_FIELD USING 'ANLB-NDJAR(02)' IT_DATA-NDJAR2.
PERFORM BDC_FIELD USING 'ANLB-NDPER(01)' IT_DATA-NDPER1.
PERFORM BDC_FIELD USING 'ANLB-NDPER(02)' IT_DATA-NDPER2.
PERFORM BDC_FIELD USING 'ANLB-AFABG(01)' IT_DATA-AFABG1.
PERFORM BDC_FIELD USING 'ANLB-AFABG(02)' IT_DATA-AFABG2.

ENDFORM. " FILL_SCREEN_1000

*&---------------------------------------------------------------------*
*& Form FILL_SCREEN_0195
*&---------------------------------------------------------------------*
* To fill the fields in the screen 0195
*----------------------------------------------------------------------*
FORM FILL_SCREEN_0195 .

PERFORM BDC_DYNPRO USING 'SAPLAIST' '0195'.


PERFORM BDC_FIELD USING 'BDC_OKCODE' '/00'.
PERFORM BDC_FIELD USING 'BDC_CURSOR' 'ANLB-ANLGR'.
PERFORM BDC_FIELD USING 'ANLB-ANLGR' IT_DATA-ANLGR.

PERFORM BDC_DYNPRO USING 'SAPLAIST' '0195'.


PERFORM BDC_FIELD USING 'BDC_OKCODE' '=ALTD'.
PERFORM BDC_FIELD USING 'BDC_CURSOR' 'ANLB-ANLGR'.

ENDFORM. " FILL_SCREEN_0195

*&---------------------------------------------------------------------*
*& Form FILL_SCREEN_1100
*&---------------------------------------------------------------------*
* To fill the fields in the screen 1100
*----------------------------------------------------------------------*
FORM FILL_SCREEN_1100 .

PERFORM BDC_DYNPRO USING 'SAPLALTD' '1100'.


PERFORM BDC_FIELD USING 'BDC_OKCODE' '/00'.
PERFORM BDC_FIELD USING 'BDC_CURSOR' 'RALT_DYNP_STRUC-
ANBTR02(01)'.
PERFORM BDC_FIELD USING 'RALT_DYNP_STRUC-ANBTR01(01)' IT_DATA-ANBTR01_1.
PERFORM BDC_FIELD USING 'RALT_DYNP_STRUC-ANBTR01(06)' IT_DATA-ANBTR01_6.
PERFORM BDC_FIELD USING 'RALT_DYNP_STRUC-ANBTR02(01)' IT_DATA-ANBTR02_1.

PERFORM BDC_DYNPRO USING 'SAPLALTD' '1100'.


PERFORM BDC_FIELD USING 'BDC_OKCODE' '=BUCH'.
PERFORM BDC_FIELD USING 'BDC_CURSOR' 'ANLA-ANLN1'.

ENDFORM. " FILL_SCREEN_1100

*&---------------------------------------------------------------------*
*& Form BDC_DYNPRO
*----------------------------------------------------------------------*
* Start new screen *
*----------------------------------------------------------------------*
FORM BDC_DYNPRO USING F_PROGRAM F_DYNPRO.
CLEAR IT_BDCTAB.
IT_BDCTAB-PROGRAM = F_PROGRAM.
IT_BDCTAB-DYNPRO = F_DYNPRO.
IT_BDCTAB-DYNBEGIN = 'X'.
APPEND IT_BDCTAB.
ENDFORM.

*&---------------------------------------------------------------------*
*& Form BDC_FIELD
*----------------------------------------------------------------------*
* Insert field *
*----------------------------------------------------------------------*
FORM BDC_FIELD USING FNAM FVAL.
IF FVAL <> SPACE.
CLEAR IT_BDCTAB.
IT_BDCTAB-FNAM = FNAM.
IT_BDCTAB-FVAL = FVAL.
APPEND IT_BDCTAB.
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form call_transaction
*&---------------------------------------------------------------------*
* Posts data using call transaction method. *
*----------------------------------------------------------------------*
FORM CALL_TRANSACTION.

CLEAR: G_LINES,
G_MESG.
*--- Call transaction method
CALL TRANSACTION C_TCODE USING IT_BDCTAB
MODE C_MODE
UPDATE C_UPDATE
MESSAGES INTO I_BDCMSGCOLL.
IF SY-SUBRC <> 0.
DESCRIBE TABLE I_BDCMSGCOLL LINES G_LINES.
READ TABLE I_BDCMSGCOLL INDEX G_LINES TRANSPORTING ALL FIELDS.
*--- Formats message returned by call transaction.
PERFORM FORMAT_MESSAGE.
*--- Perform to process error processing
PERFORM ERROR_PROCESSING USING IT_DATA G_MESG.
PERFORM CALL_SESSION USING C_TCODE P_MAX P_SESS1.
ELSE. "If call transaction is successful.
G_SUCCESS = G_SUCCESS + 1.
ENDIF.

ENDFORM. " CALL_TRANSACTION

*&---------------------------------------------------------------------*
*& Form format_message
*&---------------------------------------------------------------------*
* Reading messages
*----------------------------------------------------------------------*
FORM FORMAT_MESSAGE.
CLEAR G_MESG.

*--- Function module to get the message.


CALL FUNCTION 'FORMAT_MESSAGE'
EXPORTING
ID = I_BDCMSGCOLL-MSGID
LANG = SY-LANGU
NO = I_BDCMSGCOLL-MSGNR
V1 = I_BDCMSGCOLL-MSGV1
V2 = I_BDCMSGCOLL-MSGV2
V3 = I_BDCMSGCOLL-MSGV3
V4 = I_BDCMSGCOLL-MSGV4
IMPORTING
MSG = G_MESG.

ENDFORM. " FORMAT_MESSAGE

*----------------------------------------------------------------------*
* Form : call_session
*----------------------------------------------------------------------*
* To call the session either for FSP0 or FSP2
*----------------------------------------------------------------------*
FORM CALL_SESSION USING FP_TCODE TYPE ANY
F_MAX TYPE ANY
F_SESS1 TYPE ANY.
* To open the session
PERFORM OPEN_SESSION USING F_MAX F_SESS1.
* Perform Insert BDC Session
PERFORM BDC_INSERT USING FP_TCODE.
* To close the session
IF G_INSERT = F_MAX .
PERFORM CLOSE_SESSION.
ENDIF.
ENDFORM. " call_session

*----------------------------------------------------------------------*
* Form : open_session
*----------------------------------------------------------------------*
* To open BDC open group.
*----------------------------------------------------------------------*
FORM OPEN_SESSION USING F_MAX TYPE ANY
F_SESS1 TYPE ANY.

IF G_INSERT = F_MAX OR FG_OPENSESSION = SPACE.


G_COUNTER = G_COUNTER + 1.
CLEAR G_SESSION.
CONCATENATE F_SESS1 '_' G_COUNTER INTO G_SESSION.
* Opening the BDC Session
CALL FUNCTION 'BDC_OPEN_GROUP'
EXPORTING
CLIENT = SY-MANDT
GROUP = G_SESSION
KEEP = 'X'
USER = SY-UNAME
EXCEPTIONS
CLIENT_INVALID = 1
DESTINATION_INVALID = 2
GROUP_INVALID = 3
GROUP_IS_LOCKED = 4
HOLDDATE_INVALID = 5
INTERNAL_ERROR = 6
QUEUE_ERROR = 7
RUNNING = 8
SYSTEM_LOCK_ERROR = 9
USER_INVALID = 10
OTHERS = 11.
IF SY-SUBRC <> 0.
G_MESG = 'Error in Opening the Session'(004).
MESSAGE I001(Z_MSGCLASS) WITH G_MESG.
EXIT.
ELSE.
CLEAR G_INSERT.
FG_OPENSESSION = 'X'.
ENDIF.
ENDIF.
ENDFORM. " OPEN_SESSION

*----------------------------------------------------------------------*
* Form : bdc_insert
*----------------------------------------------------------------------*
* To Insert data.
*----------------------------------------------------------------------*
FORM BDC_INSERT USING FP_TCODE TYPE ANY.

* Inserting BDC
CALL FUNCTION 'BDC_INSERT'
EXPORTING
TCODE = FP_TCODE
TABLES
DYNPROTAB = IT_BDCTAB
EXCEPTIONS
INTERNAL_ERROR = 1
NOT_OPEN = 2
QUEUE_ERROR = 3
TCODE_INVALID = 4
PRINTING_INVALID = 5
POSTING_INVALID = 6
OTHERS = 7.
IF SY-SUBRC <> 0.
G_MESG = 'Error in inserting the record'(005).
MESSAGE I001(Z_MSGCLASS) WITH G_MESG.
CLEAR G_MESG.
ELSE.
G_INSERT = G_INSERT + 1.
ENDIF.

ENDFORM. " BDC_INSERT

*----------------------------------------------------------------------*
* Form : close_session
*----------------------------------------------------------------------*
* To close the session
*----------------------------------------------------------------------*
FORM CLOSE_SESSION.
CALL FUNCTION 'BDC_CLOSE_GROUP'
EXCEPTIONS
NOT_OPEN = 1
QUEUE_ERROR = 2
OTHERS = 3.

IF SY-SUBRC <> 0.
G_MESG = 'Session cannot be closed'(006).
MESSAGE I001(Z_MSGCLASS) WITH G_MESG.
CLEAR G_MESG.
ELSE.
I_SESSION-NAME = G_SESSION.
APPEND I_SESSION.
CLEAR I_SESSION.
CLEAR FG_OPENSESSION.
ENDIF.
ENDFORM. " CLOSE_SESSION

*---------------------------------------------------------------------*
* Form DOWNLOAD_ERROR_FILES
*---------------------------------------------------------------------*
* Downloading the error records to error file
*----------------------------------------------------------------------*
FORM DOWNLOAD_ERROR_FILES.
DATA : LV_DEL TYPE CHAR01,
LV_FILE TYPE STRING.

IF NOT IT_ERROR[] IS INITIAL.


IF P_FTYPE = 'DAT'.
LOOP AT IT_ERROR.

CONCATENATE IT_DATA-ANLKL
IT_DATA-BUKRS
IT_DATA-TXT50
IT_DATA-TXA50
IT_DATA-SERNR
IT_DATA-INVNR
IT_DATA-MENGE
IT_DATA-MEINS
IT_DATA-XHIST
IT_DATA-IVDAT
IT_DATA-INKEN
IT_DATA-AKTIV
IT_DATA-GSBER
IT_DATA-KOSTL
IT_DATA-WERKS
IT_DATA-LIFNR
IT_DATA-HERST
IT_DATA-XNEU_AM
IT_DATA-AFASL1
IT_DATA-AFASL2
IT_DATA-NDJAR1
IT_DATA-NDJAR2
IT_DATA-NDPER1
IT_DATA-NDPER2
IT_DATA-AFABG1
IT_DATA-AFABG2
IT_DATA-ANLGR
IT_DATA-ANBTR01_1
IT_DATA-ANBTR01_6
IT_DATA-ANBTR02_1
INTO I_FINAL-STRING SEPARATED BY G_DEL.
APPEND I_FINAL.
CLEAR I_FINAL.
ENDLOOP.
CLEAR I_FINAL.
ELSEIF P_FTYPE = 'ASC'.

LOOP AT IT_ERROR.

I_FINAL-STRING+0(8) = IT_DATA-ANLKL.
I_FINAL-STRING+8(4) = IT_DATA-BUKRS.
I_FINAL-STRING+12(50) = IT_DATA-TXT50.
I_FINAL-STRING+62(50) = IT_DATA-TXA50.
I_FINAL-STRING+112(18) = IT_DATA-SERNR.
I_FINAL-STRING+130(25) = IT_DATA-INVNR.
I_FINAL-STRING+155(13) = IT_DATA-MENGE.
I_FINAL-STRING+168(3) = IT_DATA-MEINS.
I_FINAL-STRING+171(1) = IT_DATA-XHIST.
I_FINAL-STRING+172(10) = IT_DATA-IVDAT.
I_FINAL-STRING+182(1) = IT_DATA-INKEN.
I_FINAL-STRING+183(10) = IT_DATA-AKTIV.
I_FINAL-STRING+193(4) = IT_DATA-GSBER.
I_FINAL-STRING+197(10) = IT_DATA-KOSTL.
I_FINAL-STRING+207(4) = IT_DATA-WERKS.
I_FINAL-STRING+211(10) = IT_DATA-LIFNR.
I_FINAL-STRING+221(30) = IT_DATA-HERST.
I_FINAL-STRING+251(1) = IT_DATA-XNEU_AM.
I_FINAL-STRING+252(4) = IT_DATA-AFASL1.
I_FINAL-STRING+256(4) = IT_DATA-AFASL2.
I_FINAL-STRING+260(3) = IT_DATA-NDJAR1.
I_FINAL-STRING+263(3) = IT_DATA-NDJAR2.
I_FINAL-STRING+266(3) = IT_DATA-NDPER1.
I_FINAL-STRING+269(3) = IT_DATA-NDPER2.
I_FINAL-STRING+272(10) = IT_DATA-AFABG1.
I_FINAL-STRING+282(10) = IT_DATA-AFABG2.
I_FINAL-STRING+292(12) = IT_DATA-ANLGR.
I_FINAL-STRING+304(13) = IT_DATA-ANBTR01_1.
I_FINAL-STRING+317(13) = IT_DATA-ANBTR01_6.
I_FINAL-STRING+330(13) = IT_DATA-ANBTR02_1.

APPEND I_FINAL.
CLEAR I_FINAL.
ENDLOOP.
ENDIF. "IF P_FTYPE = 'DAT'.

LV_FILE = P_ERR.

IF P_FTYPE = 'DAT'.
LV_DEL = '|'.
ENDIF.

CALL FUNCTION 'GUI_DOWNLOAD'


EXPORTING
* BIN_FILESIZE =
FILENAME = LV_FILE
FILETYPE = 'ASC'
* APPEND = ' '
WRITE_FIELD_SEPARATOR = LV_DEL
* HEADER = '00'
* TRUNC_TRAILING_BLANKS = ' '
* WRITE_LF = 'X'
* COL_SELECT = ' '
* COL_SELECT_MASK = ' '
* DAT_MODE = ' '
* CONFIRM_OVERWRITE = ' '
* NO_AUTH_CHECK = ' '
* CODEPAGE = ' '
* IGNORE_CERR = ABAP_TRUE
* REPLACEMENT = '#'
* WRITE_BOM = ' '
* IMPORTING
* FILELENGTH =
TABLES
DATA_TAB = I_FINAL
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.
G_MESG = 'Error in downloading the file'(007).
MESSAGE I001(Z_MSGCLASS) WITH G_MESG.
CLEAR G_MESG.
ENDIF.

ENDIF. "IF NOT I_FILE_ERROR[] IS INITIAL.

ENDFORM. " DOWNLOAD_ERROR_FILES

*&---------------------------------------------------------------------*
*& Form READ_INPUT_DATA
*&---------------------------------------------------------------------*
* To Read the input file data
*----------------------------------------------------------------------*
FORM READ_INPUT_FILE_DATA.

*--- Splitting the filename and its extension


PERFORM SPLIT_FILENAME_EXT.

CASE G_FILEEXT.

WHEN 'XLS'.
*--- Perform to convert the Excel data into an internal table
PERFORM CONVERT_XLS_ITAB.
WHEN 'TXT'.
IF P_FTYPE = 'ASC'.
*--- Uploading the data from server
PERFORM READ_INPUTFILE TABLES I_INFILE_ASC
USING P_FILE P_FTYPE.
*--- Perform Formating ASC type data
PERFORM FORMAT_ASC_DATA.
ELSEIF P_FTYPE = 'DAT'.
*--- Uploading the data from server
PERFORM READ_INPUTFILE TABLES IT_DATA
USING P_FILE P_FTYPE.
ENDIF.
WHEN OTHERS.
G_MESG = 'Invalid Operation'(008).
MESSAGE I001(Z_MSGCLASS) WITH G_MESG.
CLEAR G_MESG.
FG_STOP = 'X'.
STOP.
ENDCASE.
IF NOT IT_DATA[] IS INITIAL.
*--- Perform to delete Header lines
PERFORM DELETE_HEADER_EMPTY_RECS.
ENDIF.
ENDFORM. " READ_INPUT_FILE_DATA

*&---------------------------------------------------------------------*
*& Form SPLIT_FILENAME_EXT
*&---------------------------------------------------------------------*
* To split the filename and the extension
*----------------------------------------------------------------------*
FORM SPLIT_FILENAME_EXT.

MOVE P_FILE TO G_SFILE.


*--- To get the extensions of the file
CALL FUNCTION 'CV120_SPLIT_FILE'
EXPORTING
PF_FILE = G_SFILE
IMPORTING
* PFX_FILE =
PFX_EXTENSION = G_FILEEXT
* PFX_DOTEXTENSION =
.
*--- Checking the case of file extension
IF G_FILEEXT NA SY-ABCDE.
TRANSLATE G_FILEEXT TO UPPER CASE.
ENDIF.

ENDFORM. " SPLIT_FILENAME_EXT

*&---------------------------------------------------------------------*
*& Form MOVE_DATA
*&---------------------------------------------------------------------*
* To move the input file data to an internal table
*----------------------------------------------------------------------*
FORM MOVE_DATA.

DATA : LV_INDEX TYPE I.


FIELD-SYMBOLS <FS>.
*--- Sorting the internal table
SORT IT_INTERN BY ROW COL.
CLEAR IT_INTERN.

LOOP AT IT_INTERN.
MOVE IT_INTERN-COL TO LV_INDEX.
*--- Assigning the each record to an internal table row
ASSIGN COMPONENT LV_INDEX OF STRUCTURE IT_DATA TO <FS>.
IF SY-SUBRC = 0.
*--- Asigning the field value to a field symbol
MOVE IT_INTERN-VALUE TO <FS>.
ENDIF.
AT END OF ROW.
APPEND IT_DATA.
CLEAR IT_DATA.
ENDAT.
ENDLOOP.
ENDFORM. " MOVE_DATA

*&---------------------------------------------------------------------*
*& Form CONVER_XLS_ITAB
*&---------------------------------------------------------------------*
* To convert the excel data into an internal table
*----------------------------------------------------------------------*
FORM CONVERT_XLS_ITAB.

CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'


EXPORTING
FILENAME = P_FILE
I_BEGIN_COL = P_BEGCOL
I_BEGIN_ROW = P_BEGROW
I_END_COL = P_ENDCOL
I_END_ROW = P_ENDROW
TABLES
INTERN = IT_INTERN
* EXCEPTIONS
* INCONSISTENT_PARAMETERS = 1
* UPLOAD_OLE = 2
* OTHERS = 3
.
IF SY-SUBRC <> 0. "#EC *
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.

IF NOT IT_INTERN[] IS INITIAL.


*--- Perform to move the data into an internal data
PERFORM MOVE_DATA.
ELSE.
G_MESG = 'No values found'(009).
MESSAGE I001(Z_MSGCLASS) WITH G_MESG.
CLEAR G_MESG.
FG_STOP = 'X'.
STOP.
ENDIF.

ENDFORM. " CONVERT_XLS_ITAB

*&---------------------------------------------------------------------*
*& Form DELETE_HEADER_EMPTY_RECS
*&---------------------------------------------------------------------*
* To delete the Header and empty records
*----------------------------------------------------------------------*
FORM DELETE_HEADER_EMPTY_RECS.

DATA: LV_TABIX LIKE SY-TABIX. " Table Index

IF NOT P_HEADER IS INITIAL.


LOOP AT IT_DATA.
IF P_HEADER > 0 AND NOT IT_DATA IS INITIAL.
DELETE IT_DATA FROM 1 TO P_HEADER.
EXIT.
ENDIF.
ENDLOOP.
ENDIF.
CLEAR IT_DATA.
*--- To delete the empty lines from internal table
LOOP AT IT_DATA.
LV_TABIX = SY-TABIX.
IF IT_DATA IS INITIAL.
G_EMPTY = G_EMPTY + 1.
DELETE IT_DATA INDEX LV_TABIX..
ENDIF.
ENDLOOP.

CLEAR IT_DATA.
*--- Total no of recs in file
DESCRIBE TABLE IT_DATA LINES G_TOTAL.
IF G_TOTAL = 0.
G_MESG = 'No records in the file'(010).
MESSAGE I001(Z_MSGCLASS) WITH G_MESG.
CLEAR G_MESG.
FG_STOP = 'X'.
STOP.
ENDIF.

ENDFORM. " DELETE_HEADER_EMPTY_RECS

*&---------------------------------------------------------------------*
*& Form DISPLAY_SELECTION_SCR
*&---------------------------------------------------------------------*
* To display the selection screen input
*----------------------------------------------------------------------*
FORM DISPLAY_SEL_SCR_REPORT.

WRITE :/1(132) SY-ULINE.


FORMAT COLOR COL_HEADING INTENSIFIED ON.
WRITE :/1(1) SY-VLINE,
65(65) 'SELECTION SCREEN DATA'(011),
132(1) SY-VLINE.
WRITE :/1(132) SY-ULINE.
FORMAT INTENSIFIED OFF.

*--- Input file name


PERFORM FILL_COLOR.
WRITE :/1(1) SY-VLINE,
2(24) 'Input File name'(012),
27(2) ' : ',
30(100) P_FILE,
132(1) SY-VLINE.

IF NOT IT_ERROR[] IS INITIAL.


*--- Setting the Error file name to .CSV
PERFORM FILL_COLOR.
IF G_FILEEXT = 'XLS'.
IF NOT P_ERR CS '.XLS'.
IF P_ERR CA '.'.
P_ERR = P_ERR(SY-FDPOS).
CONCATENATE P_ERR '.CSV' INTO P_ERR.
ENDIF.
ENDIF.
P_FTYPE = 'DAT'.
G_DEL = '2C'. " Hexadecimal value for ','
ENDIF.
*--- Error File name
PERFORM FILL_COLOR.
WRITE :/1(1) SY-VLINE,
2(24) 'Error File name'(013),
27(2) ' : ',
30(100) P_ERR,
132(1) SY-VLINE.
ENDIF.
*--- File type
PERFORM FILL_COLOR.
WRITE :/1(1) SY-VLINE,
2(24) 'File Type'(014),
27(2) ' : '.
IF G_FILEEXT = 'XLS'.
WRITE :30 'XLS',
132(1) SY-VLINE.
ELSE.
WRITE :30 P_FTYPE,
132(1) SY-VLINE.
ENDIF.
*--- BDC methods
PERFORM FILL_COLOR.
IF P_CT = 'X'.
WRITE :/1(1) SY-VLINE,
2(24) 'Call Transaction'(015),
27(2) ' : ',
30 P_CT,
132(1) SY-VLINE.
ELSE.
WRITE :/1(1) SY-VLINE,
2(24) 'Create Session'(016),
27(2) ' : ',
30 P_BDC,
132(1) SY-VLINE.
ENDIF.
*--- Test Mode
PERFORM FILL_COLOR.
WRITE :/1(1) SY-VLINE,
2(24) 'Test Mode'(017),
27(2) ' : ',
30 P_TEST,
132(1) SY-VLINE.
*--- Header lines
PERFORM FILL_COLOR.
WRITE :/1(1) SY-VLINE,
2(24) 'Header Lines'(018),
27(2) ' : ',
30 P_HEADER LEFT-JUSTIFIED,
132(1) SY-VLINE.
WRITE :/1(132) SY-ULINE.

ENDFORM. " DISPLAY_SELECTION_SCR

*&---------------------------------------------------------------------*
*& Form DISPLAY_SUCCESS_ERROR_DATA
*&---------------------------------------------------------------------*
* To display the no.of records,success and error records
*----------------------------------------------------------------------*
FORM DISPLAY_SUMMARY_REPORT.
SKIP 3.
FORMAT COLOR COL_HEADING INTENSIFIED ON.
WRITE :/1(132) SY-ULINE.
WRITE :/1(1) SY-VLINE,
65 'SUMMARY REPORT'(019) CENTERED,
132(1) SY-VLINE.
FORMAT INTENSIFIED OFF.
PERFORM FILL_COLOR.
WRITE :/1(132) SY-ULINE.
WRITE :/1(1) SY-VLINE,
2(24) 'Processed Records'(020),
27(2) ' : ',
30 G_TOTAL,
132(1) SY-VLINE.
PERFORM FILL_COLOR.
WRITE :/1(1) SY-VLINE,
2(24) 'Successfully Uploaded'(021),
27(2) ' : ',
30 G_SUCCESS,
132(1) SY-VLINE.
PERFORM FILL_COLOR.
WRITE :/1(1) SY-VLINE,
2(24) 'Error Records'(022),
27(2) ' : ',
30 G_ERROR,
132(1) SY-VLINE.
PERFORM FILL_COLOR.
WRITE :/1(1) SY-VLINE,
2(24) 'Empty Records'(023),
27(2) ' : ',
30 G_EMPTY,
132(1) SY-VLINE.
WRITE :/1(132) SY-ULINE.

ENDFORM. " DISPLAY_SUMMARY_REPORT

*----------------------------------------------------------------------*
* Form : session_report
*----------------------------------------------------------------------*
* To display the list of sessions created
*----------------------------------------------------------------------*
FORM SESSION_REPORT .
IF NOT I_SESSION[] IS INITIAL.
FORMAT COLOR COL_HEADING.
WRITE :/01(132) SY-ULINE.
WRITE :/01(01) SY-VLINE,
65 'SESSIONS CREATED'(024) CENTERED,
132(01) SY-VLINE.
WRITE :/01(132) SY-ULINE.
FORMAT INTENSIFIED OFF.

FORMAT COLOR COL_NORMAL INTENSIFIED OFF.


WRITE :/01(132) SY-ULINE.
LOOP AT I_SESSION.
WRITE : /1 SY-VLINE.
AT FIRST.
WRITE : 5 'Session names'(O25).
ENDAT.
WRITE : 27 ':', 30 I_SESSION-NAME,
132 SY-VLINE.
ENDLOOP.
WRITE : /01(132) SY-ULINE.
ENDIF.

ENDFORM. " session_report

*&---------------------------------------------------------------------*
*& Form DISPLAY_ERROR_RECORDS
*&---------------------------------------------------------------------*
* To display the error records
*----------------------------------------------------------------------*
FORM DISPLAY_ERROR_RECORDS.

IF G_ERROR > 0.
* ---- Perform to display the error header
PERFORM DISPLAY_ERROR_HEADER.
* ---- Perform to display the error records
PERFORM DISPLAY_ERROR_DETAIL.
ENDIF.

ENDFORM. " DISPLAY_ERROR_RECORDS

*&---------------------------------------------------------------------*
*& Form DISPLAY_ERROR_HEADER
*&---------------------------------------------------------------------*
* To display the error header
*----------------------------------------------------------------------*
FORM DISPLAY_ERROR_HEADER.

FORMAT COLOR COL_HEADING INTENSIFIED ON.


SKIP.
WRITE :/1(132) SY-ULINE.
WRITE :/1(1) SY-VLINE,
65 'ERROR RECORDS'(026) CENTERED,
132(1) SY-VLINE.
FORMAT INTENSIFIED OFF.
FORMAT COLOR COL_HEADING.
WRITE :/1(132) SY-ULINE.
WRITE :/1(1) SY-VLINE,
2(12) 'Asset Class'(027),
15(1) SY-VLINE,
16(13) 'Company Code'(028),
35(1) SY-VLINE,
37(50) 'Error Message'(029),
132(1) SY-VLINE.
WRITE :/1(132) SY-ULINE.
FORMAT INTENSIFIED OFF.

ENDFORM. " DISPLAY_ERROR_HEADER

*&---------------------------------------------------------------------*
*& Form DISPLAY_ERROR_DETAIL
*&---------------------------------------------------------------------*
* To display the error records
*----------------------------------------------------------------------*
FORM DISPLAY_ERROR_DETAIL.

FORMAT COLOR 1 INTENSIFIED OFF .


LOOP AT IT_ERROR.
PERFORM FILL_COLOR.
WRITE : /1(1) SY-VLINE,
2(12) IT_ERROR-ANLKL,
15(1) SY-VLINE,
16(13) IT_ERROR-BUKRS,
35(1) SY-VLINE,
37(50) IT_ERROR-MESSAGE,
132(1) SY-VLINE.
ENDLOOP.
WRITE :/1(132) SY-ULINE.

ENDFORM. " DISPLAY_ERROR_DETAIL

*&---------------------------------------------------------------------*
*& Form FILL_COLOR
*&---------------------------------------------------------------------*
* To display the background color
*----------------------------------------------------------------------*
FORM FILL_COLOR.

IF FG_COLOR = SPACE.
FORMAT COLOR 2.
FG_COLOR = 'X'.
ELSE.
FORMAT COLOR 4.
CLEAR FG_COLOR.
ENDIF.

ENDFORM. " FILL_COLOR

*Text elements
*----------------------------------------------------------
* 001 Error in Processing BDC Data
* 002 Error in getting the Filename
* 003 Error in uploading the file
* 004 Error in Opening the Session
* 005 Error in inserting the record
* 006 Session cannot be closed
* 007 Error in downloading the file
* 008 Invalid Operation
* 009 No values found
* 010 No records in the file
* 011 SELECTION SCREEN DATA
* 012 Input File name
* 013 Error File name
* 014 File Type
* 015 Call Transaction
* 016 Create Session
* 017 Test Mode
* 018 Header Lines
* 019 SUMMARY REPORT
* 020 Processed Records
* 021 Successfully Uploaded
* 022 Error Records
* 023 Empty Records
* 024 SESSIONS CREATED
* 026 ERROR RECORDS
* 027 Asset Class
* 028 Company Code
* 029 Error Message
* O25 Session names

*Selection texts
*----------------------------------------------------------
* P_BDC BDC Session
* P_CT Call Transaction
* P_ERR Error File Name
* P_FILE Input File Name
* P_FTYPE File Type
* P_HEADER No. of Header Records
* P_MAX Maximum No. of Records
* P_SESS1 Session Name
* P_TEST Test Mode

*Messages
*----------------------------------------------------------
*
* Message class: Z_MSGCLASS
*001 &

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy