Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

BDC call session

Former Member
0 Likes
482

Hiii gurus!

I want to create a bdc for - VA01 - > VL01N (with PGI )-> VF0.

How can i implement BDC call session.

Points sure!

Rahul

1 ACCEPTED SOLUTION
Read only

Former Member
4 REPLIES 4
Read only

Former Member
Read only

Former Member
0 Likes
440

Hi ,

First do the recording for Va01 using the TCODE : SHDB and other transactions and put the code in the program

Next create an internal table for the fields u recorded

Then assignt the fields to the bdc structure

use the fn moduels

bdc_open_group

bdc_insert

bdc_clode

for the bdc session method .

Then upload the test file from Presenatation server and see in the debug mode if all the fields are getting populated .

Then go to sm35 and process the session and check them in both foreground and background method .

Please reward if useful .

Read only

Former Member
0 Likes
440

Hi Rahul,

First you go to 'SHDB' Tcode. Give a Transanction name VA01,step by step give a data into VA01.

SHDB transaction display on all steps,you can use that steps implement BDC programing.

Thanks,

SReddy.

Read only

Former Member
0 Likes
440

hi,

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.

hope this may be helpful,.............

regards,

praveena.