Shared Top Border

Enterprise Resource
Planning Portal

 

Advertise | Founder BLOG

ERPGenie.COM ABAP Tips and Tricks Database

THE ultimate
ERP website

 

Forums | Vote for us |

Google    Other Search Options

Login

Login to view more content!!!





Lost Password?
No account yet? Register

Registered Access

Poll

What area of ABAP are you interested in?
 
Home arrow Sample Code arrow BDC arrow Batch Input: Combination of two methods
Batch Input: Combination of two methods PDF Print E-mail
User Rating: / 1
PoorBest 
Written by Anon.   
Monday, 19 March 2007
This report:
  1. Uploads an input file from presentation server (a tabs delimited text file);
  2. Processes all records with 'CALL TRANSACTION USING...' technique;
  3. Creates a BDC session for records that were processed with an error;
  4. Displays statistics and errors report.
REPORT ZVVSC003 LINE-SIZE 120
LINE-COUNT 66
NO STANDARD PAGE HEADING.
************************************************************************
* Description : Upload data from tabs delimited text file
* and perform =something= automatically->
* First all records processed using
* 'CALL TRANSACTION USING...';
* Then erroneous records are added to BDC Session.
* All the lines with '=something=' or '=to be customized='
* words are empty template only and need to be filled with
* real data. Transactions XX01, XX02, XX03 are templates
* as well and should be changed with real ones.
* For demo reasons the LIBS transaction is used for call
* (LIBS is SAP guide for Lists Design).
* Inputs : PC Input File Name
* : BDC Session Name
* Outputs : '=something= statistics & errors' report
* Error/Return Codes : None
* External References: WS_FILENAME_GET, WS_UPLOAD,
* : BDC_OPEN_GROUP, BDC_INSERT, BDC_CLOSE_GROUP,
* : MESSAGE_PREPARE,
* : transactions LIBS, XX01.
************************************************************************

********* TABLES *******************************************************

********* CONSTANS *****************************************************
CONSTANTS: C_X(1) TYPE C VALUE 'X',
C_MODE(1) TYPE C VALUE 'N', "Call Transaction display mode
* A - display all;
* E - display only error;
* N - No display.
C_UPDATE(1) TYPE C VALUE 'S'. "Call Transaction update type
* S - continue processing when update is completed (synchronous);
* A - continue procwssing immediately;
* L - local update.

********* DATA: VARIABLES **********************************************
DATA: W_MSG(50) TYPE C, "Message string by Input File Proc.
W_N0 LIKE SY-TABIX, "Counter: records read
W_N1 LIKE SY-TABIX, "Counter: records selected
W_N2 LIKE SY-TABIX, "Counter: records processed
W_N3 LIKE SY-TABIX, "Counter: records submitted
W_MSGTXT(273) TYPE C. "Formatted message text

********* DATA: INTERNAL TABLES, RANGES ********************************
*-------- BDC table ----------------------------------------------------
DATA: IT_BDC LIKE BDCDATA OCCURS 0 WITH HEADER LINE,
IT_BDCMSG LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE,
*-------- BDC data with error records to be submitted ------------------
BEGIN OF IT_FILE_BDC OCCURS 0,
ER_BDC LIKE BDCDATA OCCURS 0,
END OF IT_FILE_BDC.
*-------- Input file ---------------------------------------------------
DATA: BEGIN OF IT_FILE OCCURS 0,
* =something= data field(s), "Input file fields
END OF IT_FILE,

********* FIELD GROUPS *************************************************
********* FIELD SYMBOLS ************************************************
********* SELECT-OPTIONS AND PARAMETERS ********************************
PARAMETERS: P_FNAME LIKE RLGRAP-FILENAME OBLIGATORY, "Filename Prefix
P_GROUP LIKE APQI-GROUPID OBLIGATORY. "BDC Session Name

********* MACROS *******************************************************

***************
INITIALIZATION.
***************

*************************
**** at selection-screen.
*************************
*--------- F4 for PC Input file ----------------------------------------
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FNAME.
PERFORM SELECT_FILE.
*--------- PC Input file -----------------------------------------------
AT SELECTION-SCREEN ON P_FNAME.
PERFORM TRY_UPLOAD_FILE.
*--------- Company Code ------------------------------------------------
AT SELECTION-SCREEN ON P_BUKRS.
PERFORM CHECK_COMPANY_CODE.


********************
* at selection-screen.
********************
*******************
START-OF-SELECTION.
*******************
PERFORM NUMERATE_LINES.
PERFORM VALIDATE_FILE.

*****************
END-OF-SELECTION.
*****************
PERFORM PROCESS_FILE_CALL.
DESCRIBE TABLE IT_FILE_BDC[] LINES W_N3.
IF W_N3 > 0.
PERFORM PROCESS_FILE_BDC.
ENDIF.
PERFORM PRINT_STATISTIC.
PERFORM PRINT_FOOTER.

************
TOP-OF-PAGE.
************
PERFORM PRINT_HEADER.

**********************************
* top-of-page during line-selection.
**********************************
******************
* at line-selection.
******************
********
* at pf01.
********
****************
* at user-command.
****************

************************************************************************
FORM PRINT_HEADER.
* =to be customized=
* can be used:
* SY-TITLE, SY-TCODE, SY-REPID, SY-DATUM, SY-UZEIT, SY-PAGNO.
WRITE: 'Page: ', SY-PAGNO.
* =to be customized=
* WRITE: / " =something= 'columns headers'(nnn),
ENDFORM.
************************************************************************
FORM PRINT_FOOTER.
* =to be customized=
WRITE /'*** End Of Report ***'.
ENDFORM.
************************************************************************
FORM PRINT_INPUT_LINE.
* =to be customized=
* WRITE: / "=something= field(s) under text-=something=
* " (under columns headers) color col_key,
ENDFORM.
************************************************************************
FORM PRINT_STATISTIC.
SKIP 1.
WRITE: / 'Read Lines'(014) INTENSIFIED ON,
AT 40 W_N0 INTENSIFIED OFF.
WRITE: / 'Selected Lines'(015) INTENSIFIED ON,
AT 40 W_N1 INTENSIFIED OFF.
WRITE: / 'Processed Lines'(016) INTENSIFIED ON,
AT 40 W_N2 INTENSIFIED OFF.
WRITE: / 'Submitted Lines'(017) INTENSIFIED ON,
AT 40 W_N3 INTENSIFIED OFF.
ENDFORM.
************************************************************************
FORM VALIDATE_FILE.
LOOP AT IT_FILE.
* validation for =something=, if needed
* CHECK .....
DELETE IT_FILE.
ENDLOOP.
DESCRIBE TABLE IT_FILE LINES W_N1.
ENDFORM.
************************************************************************
FORM PROCESS_FILE_CALL.
LOOP AT IT_FILE.
PERFORM PROCESS_LINE.
ENDLOOP.
ENDFORM.
************************************************************************
FORM PROCESS_FILE_BDC.
PERFORM OPEN_BDC.
LOOP AT IT_FILE_BDC.
PERFORM BDC_INSERT_LINE.
ENDLOOP.
PERFORM CLOSE_BDC.
ENDFORM.
************************************************************************
FORM NUMERATE_LINES.
DESCRIBE TABLE IT_FILE LINES W_N0.
ENDFORM.
************************************************************************
FORM SELECT_FILE.
CALL FUNCTION 'WS_FILENAME_GET'
EXPORTING
DEF_PATH = 'c:\'
MASK = ',Text Files,*.txt;*.doc,All Files,*.*.'(101)
TITLE = 'Select File'(100)
IMPORTING
FILENAME = P_FNAME
EXCEPTIONS
INV_WINSYS = 1
NO_BATCH = 2
SELECTION_CANCEL = 3
SELECTION_ERROR = 4
OTHERS = 5.
IF SY-SUBRC <> 0 AND SY-SUBRC <> 3.
MESSAGE E102(YB) WITH 'Error Selecting File'(007).
ENDIF.
ENDFORM.
************************************************************************
FORM TRY_UPLOAD_FILE.
CALL FUNCTION 'WS_UPLOAD'
EXPORTING
FILENAME = P_FNAME
FILETYPE = 'DAT'
TABLES
DATA_TAB = IT_FILE
EXCEPTIONS
CONVERSION_ERROR = 1
FILE_OPEN_ERROR = 2
FILE_READ_ERROR = 3
INVALID_TABLE_WIDTH = 4
INVALID_TYPE = 5
NO_BATCH = 6
UNKNOWN_ERROR = 7
OTHERS = 8.
IF SY-SUBRC <> 0.
CASE SY-SUBRC.
* =to be customized=: text-006 = 'Uploading Error:'
* text-06n = Concrete Error Description
WHEN 1. CONCATENATE TEXT-006 TEXT-061 INTO W_MSG SEPARATED BY SPACE.
WHEN 2. CONCATENATE TEXT-006 TEXT-062 INTO W_MSG SEPARATED BY SPACE.
WHEN 3. CONCATENATE TEXT-006 TEXT-063 INTO W_MSG SEPARATED BY SPACE.
WHEN 4. CONCATENATE TEXT-006 TEXT-064 INTO W_MSG SEPARATED BY SPACE.
WHEN 5. CONCATENATE TEXT-006 TEXT-065 INTO W_MSG SEPARATED BY SPACE.
WHEN 6. CONCATENATE TEXT-006 TEXT-066 INTO W_MSG SEPARATED BY SPACE.
WHEN 7. CONCATENATE TEXT-006 TEXT-067 INTO W_MSG SEPARATED BY SPACE.
WHEN 8. CONCATENATE TEXT-006 TEXT-068 INTO W_MSG SEPARATED BY SPACE.
ENDCASE.
MESSAGE E102(YB) WITH W_MSG.
ENDIF.
IF IT_FILE IS INITIAL.
MESSAGE E102(YB) WITH 'Empty File!(013).
ENDIF.
ENDFORM.
************************************************************************
FORM PROCESS_LINE.
PERFORM PRINT_INPUT_LINE.
PERFORM BDC_XX01_PREPARE.
PERFORM BDC_XX01_CALL.
ENDFORM.
************************************************************************
FORM BDC_XX01_PREPARE.
REFRESH IT_BDC.
* add lines to BDC data table using forms: -----------------------------
* bdc_dynpro
* bdc_field
* bdc_okcode
* for example:
* perform bdc_dynpro using 'SAPML03T' '0112'. "Confirm Single Item
* perform bdc_field using 'LTAP-NISTA' it_file-umlme. "Quantity
* perform bdc_okcode using '/00'. "Enter
ENDFORM.
************************************************************************
FORM BDC_XX01_CALL.
CLEAR: IT_BDCMSG[], IT_BDCMSG.
CALL TRANSACTION 'LIBS' USING IT_BDC
MODE C_MODE
UPDATE C_UPDATE
MESSAGES INTO IT_BDCMSG.
IF SY-SUBRC <> 0.
IT_FILE_BDC-ER_BDC = IT_BDC[].
APPEND IT_FILE_BDC.
LOOP AT IT_BDCMSG.
PERFORM PRINT_ERROR_LINE.
ENDLOOP.
ELSE.
ADD 1 TO W_N2.
ENDIF.
ENDFORM.
************************************************************************
FORM BDC_INSERT_LINE.
CALL FUNCTION 'BDC_INSERT'
EXPORTING
TCODE = 'LIBS'
* POST_LOCAL = NOVBLOCAL
* PRINTING = NOPRINT
TABLES
DYNPROTAB = IT_BDC
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.
WRITE: 'Error inserting BDC data'(517) COLOR COL_NEGATIVE, SY-SUBRC.
SUBTRACT 1 FROM W_N3.
ENDIF.
ENDFORM.
************************************************************************
FORM BDC_DYNPRO USING VALUE(P_PROGRAM) TYPE C
VALUE(P_DYNPRO) TYPE C.
CLEAR IT_BDC.
MOVE: P_PROGRAM TO IT_BDC-PROGRAM,
P_DYNPRO TO IT_BDC-DYNPRO,
C_X TO IT_BDC-DYNBEGIN.
APPEND IT_BDC.
ENDFORM.
************************************************************************
FORM BDC_FIELD USING VALUE(P_FIELD) TYPE C
VALUE(P_VALUE).
CLEAR IT_BDC.
MOVE P_FIELD TO IT_BDC-FNAM.
WRITE P_VALUE TO IT_BDC-FVAL LEFT-JUSTIFIED.
APPEND IT_BDC.
ENDFORM.
************************************************************************
FORM BDC_OKCODE USING VALUE(P_CODE) TYPE C.
CLEAR IT_BDC.
MOVE: 'BDC_OKCODE' TO IT_BDC-FNAM,
P_CODE TO IT_BDC-FVAL.
APPEND IT_BDC.
ENDFORM.
************************************************************************
FORM OPEN_BDC.
CALL FUNCTION 'BDC_OPEN_GROUP'
EXPORTING
* CLIENT = SY-MANDT
* DEST = FILLER8
GROUP = P_GROUP
* HOLDDATE = FILLER8
* KEEP = FILLER1
USER = SY-UNAME
* RECORD = FILLER1
* IMPORTING
* QID =
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.
CLEAR W_N3.
CASE SY-SUBRC.
* =to be customized=: text-600 = 'Error Creating BDC group:'
* text-6nn = Concrete Error Description
WHEN 1. CONCATENATE TEXT-600 TEXT-601 INTO W_MSG SEPARATED BY SPACE.
WHEN 2. CONCATENATE TEXT-600 TEXT-602 INTO W_MSG SEPARATED BY SPACE.
WHEN 3. CONCATENATE TEXT-600 TEXT-603 INTO W_MSG SEPARATED BY SPACE.
WHEN 4. CONCATENATE TEXT-600 TEXT-604 INTO W_MSG SEPARATED BY SPACE.
WHEN 5. CONCATENATE TEXT-600 TEXT-605 INTO W_MSG SEPARATED BY SPACE.
WHEN 6. CONCATENATE TEXT-600 TEXT-606 INTO W_MSG SEPARATED BY SPACE.
WHEN 7. CONCATENATE TEXT-600 TEXT-607 INTO W_MSG SEPARATED BY SPACE.
WHEN 8. CONCATENATE TEXT-600 TEXT-608 INTO W_MSG SEPARATED BY SPACE.
WHEN 9. CONCATENATE TEXT-600 TEXT-609 INTO W_MSG SEPARATED BY SPACE.
WHEN 10.CONCATENATE TEXT-600 TEXT-610 INTO W_MSG SEPARATED BY SPACE.
WHEN 11.CONCATENATE TEXT-600 TEXT-611 INTO W_MSG SEPARATED BY SPACE.
ENDCASE.
MESSAGE E102(YB) WITH W_MSG.
ENDIF.
ENDFORM.
************************************************************************
FORM CLOSE_BDC.
CALL FUNCTION 'BDC_CLOSE_GROUP'
EXCEPTIONS
NOT_OPEN = 1
QUEUE_ERROR = 2
OTHERS = 3.
IF SY-SUBRC <> 0.
CLEAR W_N3.
CASE SY-SUBRC.
* =to be customized=: text-700 = 'Error Closing BDC group:'
* text-70n = Concrete Error Description
WHEN 1. CONCATENATE TEXT-700 TEXT-701 INTO W_MSG SEPARATED BY SPACE.
WHEN 2. CONCATENATE TEXT-700 TEXT-702 INTO W_MSG SEPARATED BY SPACE.
WHEN 3. CONCATENATE TEXT-700 TEXT-703 INTO W_MSG SEPARATED BY SPACE.
ENDCASE.
MESSAGE E102(YB) WITH W_MSG.
ENDIF.
ENDFORM.
************************************************************************
FORM PRINT_ERROR_LINE.
WRITE : / IT_BDCMSG-TCODE,
AT 6 IT_BDCMSG-DYNAME,
AT 15 IT_BDCMSG-DYNUMB,
AT 20 IT_BDCMSG-MSGTYP,
AT 21 IT_BDCMSG-MSGNR,
AT 24 '(',
AT 25 IT_BDCMSG-MSGID,
AT 27 ')',
AT 29 IT_BDCMSG-FLDNAME.
CALL FUNCTION 'MESSAGE_PREPARE'
EXPORTING
LANGUAGE = IT_BDCMSG-MSGSPRA
MSG_ID = IT_BDCMSG-MSGID
MSG_NO = IT_BDCMSG-MSGNR
MSG_VAR1 = IT_BDCMSG-MSGV1
MSG_VAR2 = IT_BDCMSG-MSGV2
MSG_VAR3 = IT_BDCMSG-MSGV3
MSG_VAR4 = IT_BDCMSG-MSGV4
IMPORTING
MSG_TEXT = W_MSGTXT
EXCEPTIONS
FUNCTION_NOT_COMPLETED = 1
MESSAGE_NOT_FOUND = 2
OTHERS = 3.
CASE SY-SUBRC.
WHEN 0. WRITE: / W_MSGTXT COLOR COL_NEGATIVE.
WHEN 1. WRITE: / 'Error Processing Message'(015).
WHEN 2. WRITE: / 'Unknown Error Message'(016).
WHEN 3. WRITE: / 'Unknown Error'(017).
ENDCASE.
ENDFORM.
************************************************************************

Related Items:

 
< Prev   Next >

Google Search

Statistics

Contribution Activity
Utilities: 38
Tips and Tricks: 330
Sample Code: 164
Total Contributions: 545

Member Activity
Members: 6061 since 2/1/2007!
New: 0 since yesterday!
Visitors: 959190

Newest Members

Welcome our newest members:

Google Ads

Shared Bottom Border

Contact Us | Polls | Add URL | Contribute | Privacy | Terms | Feedback

Discussion Forum | BLOG | Consultants: Post your resume | Companies: Advertise on ERPGenie.COM | Post Job
Financials Consultant | Consultant Review | Gallia Consulting | Supply Chain Project | SAP Financials Forum
GenieHoldings.COM, Inc. | Genie Press | WorkflowGenie | ESAGenie | ERPTopSites | ABAP Tips and Tricks | SAP Solutions Database

EDIGenie | Searching Survivor