SAP PM & ABAP Code Niraj Visnoi

SAP ABAP BDC programming
Home
What is SAP ?
SAP LSMW Explained with example
SAP PM T-Codes
PM BRD/COR Maintenance
Add Your URL
User Exits & Enhancements
Best Of SAP Links
BDC Code
My Resume
SAP SmartForms Step by Step
SAP ABAP ALV Grid Explained with Example
Useful Tips
Contact Information Guest Book and Consultants List
ABAP Code
ABAP System Fields
SAPScript
SAPScript Graphics
SAPScript Print Program
ABAP ListViewer
Dialog Programming
SAP Tables
SAP ALE and IDOC
Recommended SAP ABAP Coding guidelines
SAP General ABAP
Submit Your Code
SAP Books For consultants
Free Website Submission and ROR Sitemap generator
Free Domain Search
Free HoroScope

SAP ABAP BDC Programming Explained .

BDC PROGRAM STRUCTURE

 There are 5 parts in a BDC program .Each part is executed one after another.

1) Selection screen is used with a parameter to input the text file of TYPE RLGRAP-FILENAME . Various function modules like KD_GET_FILENAME_ON_F4 can be used to read the file name at runtime or the filename can be defaulted by using DEAULT clause in the parameter statement.

2) Open the text file for input.If file fails to open (SY-SUBRC NE 0) then stop the program with a error message.
    OPEN DATASET filename FOR INPUT IN TEXT MODE is used to open the file.
3)Loop through the dataset using a loop  statement like DO .. ENDDO with an EXIT statemenyt if no next record exists.
and filling the work structure which will hold the data for a single transaction in each loop pass.
   Filling the BDC TABLE of TYPE BDCDATA in the loop for every record(equivalent to transaction) in the data set. 
 Submit the internal table containing bdc data for each and every transaction (internal table of TYPE BDCDATA is submitted for each transaction until all the records in the dataset are read) using
CALL TRANSACTION 'tr' USING I_bdcdata MODE 'N' UDATE 'S' .

 DO
  READ DATASET file INTO W_bdcdata
   IF SY-SUBRC NE 0.
    EXIT.
   ENDIF.
  PERFORM Fill_BDCDATA                                    
  PERFORM Submit_BDCDATA
 ENDDO

4) Error handling when submission via CALL TRANSACTION fails ,either by using the internal table to be filled by the system messages which is of TYPE BDCMSGCOLS and can be specified in CALL TRANSACTION statement with the addition MESSAGES INTO .
 Or error handling by sending the mail to a predefined recipient.
 Or for each and every transaction that fails create a
single BDC SESSION by using BDC_OPEN_GROUP function module
and submitting the intenal bdc data table to it.
 For each and every error a report should display them
all at the end of the program so that the transacton in error can be identified.

 The approach of opening a BDC SESSION is often used with an error report when an error occurs as all the transaction in error can be seen and executed in the session manager .

5)Clean up actions.
 Here clean up actions are performed like closing the dataset with CLOSE DATASET command ,closing any error
session if they were created using CLOSE_GROUP function module.and displaying the report .

To fill the bdc data table we should have all the information associated with the screens used in the transaction
and all the fields in those screens that will be filled by the CALL TRANSACTION statement.We can use BDC SESSION RECORDER  or Transaction Recorder(Transaction SHDB) to get the information on the screens and the fields. The
data which is required to fill the internal table of TYPE BDCDATA is

Program Name
Screen Number
Screen Begin
Field Name
Field Value 
Information on Field Name and Field Type can be used to create the structure that will be used to read records from the data set .
While filling the Field value in BDCDATA table care should be taken for special fields like 'BDC_CURSOR',' BDC_OKCODE'

Structure of BDCDATA table
PROGRAM   Name of program
DYNPRO      Number of screen
DYNBEGIN   If New screen begins value ='X'
FNAM            Field Name
FVAL             Field Value

Structure of  BDCMSGCOLL
MSGID          Message ID
MSGTYP      MessageType
MSGNR        Message Number
MSGV1         1st placeholder
MSGV2         2nd Place Holder
NSGV3         3rd Placce Holder
MSGV4         4th Place Holder   
To see all the messages stored by the system in the BDCMSGCOLS table we can use LOOP AT .ENDLOOP command.

Code to read internal table of type BDCMSGCOLS.
 
TABLE T100 HAS FOLLOWING FIELDS
SPRSL   TYPE SPRAS (Language)
ARBGB  TYPE ARBGP (BUSINESS AREA)
MSGNR  Message number (3C)
TEXT       Message Text (Type 73C)
 
 LOOP AT MESSTAB.     "Int Table of TYPE BDCMSGCOLS
        SELECT SINGLE * FROM T100 WHERE SPRSL = MESSTAB-MSGSPRA
                                  AND   ARBGB = MESSTAB-MSGID
                                  AND   MSGNR = MESSTAB-MSGNR.
        IF SY-SUBRC = 0.
          L_MSTRING = T100-TEXT.
          IF L_MSTRING CS '&1'.
            REPLACE '&1' WITH MESSTAB-MSGV1 INTO L_MSTRING.
            REPLACE '&2' WITH MESSTAB-MSGV2 INTO L_MSTRING.
            REPLACE '&3' WITH MESSTAB-MSGV3 INTO L_MSTRING.
            REPLACE '&4' WITH MESSTAB-MSGV4 INTO L_MSTRING.
          ELSE.
            REPLACE '&' WITH MESSTAB-MSGV1 INTO L_MSTRING.
            REPLACE '&' WITH MESSTAB-MSGV2 INTO L_MSTRING.
            REPLACE '&' WITH MESSTAB-MSGV3 INTO L_MSTRING.
            REPLACE '&' WITH MESSTAB-MSGV4 INTO L_MSTRING.
          ENDIF.
          CONDENSE L_MSTRING.
          WRITE: / MESSTAB-MSGTYP, L_MSTRING(250).
        ELSE.
          WRITE: / MESSTAB.
        ENDIF.
      ENDLOOP.
      SKIP.
    ENDIF.

http://sap.niraj.tripod.com

http://sap.niraj.tripod.com

Search http://sap.niraj.tripod.com Search www

 http://sap.niraj.tripod.com      Niraj Visnoi *INDIA * niraj_visnoi@consultant.com      
 CELL No. 91 9911413767       Copyright © 2006 all rights reserved