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 Method)

Former Member
0 Likes
1,634

how to make bdc using call session method.

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
978

hi,

try like this


REPORT zbdc_call
       NO STANDARD PAGE HEADING LINE-SIZE 255.

DATA: BEGIN OF record OCCURS 0,
* data element: MATNR
        matnr_001(018),
* data element: BRGEW
        brgew_008(017),
      END OF record.

*** End generated data section ***

SELECTION-SCREEN BEGIN OF BLOCK blk1 WITH FRAME TITLE text-001.
PARAMETER:file LIKE rlgrap-filename.
SELECTION-SCREEN END OF BLOCK blk1.

DATA: bdcdata LIKE bdcdata OCCURS 0 WITH HEADER LINE.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR file.
  CALL FUNCTION 'F4_FILENAME'
    IMPORTING
      file_name = file.

START-OF-SELECTION.
  PERFORM data_upload.
  PERFORM bdcdata.
CALL TRANSACTION 'MM02' USING BDCDATA MODE 'A' UPDATE 'A'.

*&---------------------------------------------------------------------*
*&      Form  data_upload
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM data_upload.

  DATA:loc_file TYPE string.
  loc_file = file.

  CALL FUNCTION 'GUI_UPLOAD'
    EXPORTING
      filename                = loc_file
      filetype                = 'ASC'
      has_field_separator     = 'X'
    TABLES
      data_tab                = record
    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.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.
ENDFORM.                    "data_upload

*&---------------------------------------------------------------------*
*&      Form  bdc_dynpro
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->PROGRAM    text
*      -->DYNPRO     text
*----------------------------------------------------------------------*
FORM bdc_dynpro USING program dynpro.
  CLEAR bdcdata.
  bdcdata-program  = program.
  bdcdata-dynpro   = dynpro.
  bdcdata-dynbegin = 'X'.
  APPEND bdcdata.
ENDFORM.                    "bdc_dynpro


*&---------------------------------------------------------------------*
*&      Form  bdc_field
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->FNAM       text
*      -->FVAL       text
*----------------------------------------------------------------------*
FORM bdc_field USING fnam fval.

  CLEAR bdcdata.
  bdcdata-fnam = fnam.
  bdcdata-fval = fval.
  APPEND bdcdata.
ENDFORM.                    "bdc_field
*&---------------------------------------------------------------------*
*&      Form  bdcdata
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM bdcdata.
  LOOP AT record.
    PERFORM bdc_dynpro      USING 'SAPLMGMM' '0060'.
    PERFORM bdc_field       USING 'BDC_CURSOR'
                                  'RMMG1-MATNR'.
    PERFORM bdc_field       USING 'BDC_OKCODE'
                                  '=AUSW'.
    PERFORM bdc_field       USING 'RMMG1-MATNR'
                                  record-matnr_001.
    PERFORM bdc_dynpro      USING 'SAPLMGMM' '0070'.
    PERFORM bdc_field       USING 'BDC_CURSOR'
                                  'MSICHTAUSW-DYTXT(01)'.
    PERFORM bdc_field       USING 'BDC_OKCODE'
                                  '=ENTR'.
    PERFORM bdc_dynpro      USING 'SAPLMGMM' '4004'.
    PERFORM bdc_field       USING 'BDC_OKCODE'
                                  '=BU'.
    PERFORM bdc_field       USING 'BDC_CURSOR'
                                  'MARA-BRGEW'.
    PERFORM bdc_field       USING 'MARA-BRGEW'
                                  record-brgew_008.
  ENDLOOP.
ENDFORM.                    "bdcdata

reward if usefull....

6 REPLIES 6
Read only

Former Member
0 Likes
978

Hi ,

if u want to use BDC session method then u will to have F.M.

BDC_OPEN_Group

BDC_CLOSE_GROUP

like other F.M. in Reports.

hope it helps u...!!!

<REMOVED BY MODERATOR>

Edited by: Alvaro Tejada Galindo on Mar 19, 2008 6:02 PM

Read only

Former Member
0 Likes
978

hi,

1.Open the batch input session session using function module BDC_OPEN_GROUP.

2.For each transaction in the session:

a. Fill the BDCDATA with values for all screens and fields processed in the transaction.

b. Transfer the transaction to the session with BDC_INSERT.

3.Close the batch input session with BDC_CLOSE_GROUP.

4.this is silmilar to the way how u use the other FMS.

CALL FUNCTION ‘BDC_OPEN_GROUP’

EXPORTING

CLIENT = <client>

GROUP = <session name>

HOLDATA = <lock data>

KEEP = <deletion indicator>

USER = <batch user name>

EXCEPTIONS RUNNING

QUEUE_ERROR = 1

CLIENT_INVALID = 2

GROUP_INVALID = 3

CALL FUNCTION ‘BDC_INSERT’

EXPORTING TCODE = <trans code>

TABLES DYNPROTAB = <bdc_table>

EXCEPTIONS

INTERNAL_ERROR = 1

NOT_OPEN = 2

QUEUE_ERROR = 3

TCODE_INVALID = 4

CALL FUNCTION ‘BDC_CLOSE_GROUP’

EXCEPTIONS

NOT_OPEN = 1

QUEUE_ERROR = 2

Note : Close the session after opening it

Read only

Former Member
0 Likes
979

hi,

try like this


REPORT zbdc_call
       NO STANDARD PAGE HEADING LINE-SIZE 255.

DATA: BEGIN OF record OCCURS 0,
* data element: MATNR
        matnr_001(018),
* data element: BRGEW
        brgew_008(017),
      END OF record.

*** End generated data section ***

SELECTION-SCREEN BEGIN OF BLOCK blk1 WITH FRAME TITLE text-001.
PARAMETER:file LIKE rlgrap-filename.
SELECTION-SCREEN END OF BLOCK blk1.

DATA: bdcdata LIKE bdcdata OCCURS 0 WITH HEADER LINE.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR file.
  CALL FUNCTION 'F4_FILENAME'
    IMPORTING
      file_name = file.

START-OF-SELECTION.
  PERFORM data_upload.
  PERFORM bdcdata.
CALL TRANSACTION 'MM02' USING BDCDATA MODE 'A' UPDATE 'A'.

*&---------------------------------------------------------------------*
*&      Form  data_upload
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM data_upload.

  DATA:loc_file TYPE string.
  loc_file = file.

  CALL FUNCTION 'GUI_UPLOAD'
    EXPORTING
      filename                = loc_file
      filetype                = 'ASC'
      has_field_separator     = 'X'
    TABLES
      data_tab                = record
    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.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.
ENDFORM.                    "data_upload

*&---------------------------------------------------------------------*
*&      Form  bdc_dynpro
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->PROGRAM    text
*      -->DYNPRO     text
*----------------------------------------------------------------------*
FORM bdc_dynpro USING program dynpro.
  CLEAR bdcdata.
  bdcdata-program  = program.
  bdcdata-dynpro   = dynpro.
  bdcdata-dynbegin = 'X'.
  APPEND bdcdata.
ENDFORM.                    "bdc_dynpro


*&---------------------------------------------------------------------*
*&      Form  bdc_field
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->FNAM       text
*      -->FVAL       text
*----------------------------------------------------------------------*
FORM bdc_field USING fnam fval.

  CLEAR bdcdata.
  bdcdata-fnam = fnam.
  bdcdata-fval = fval.
  APPEND bdcdata.
ENDFORM.                    "bdc_field
*&---------------------------------------------------------------------*
*&      Form  bdcdata
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM bdcdata.
  LOOP AT record.
    PERFORM bdc_dynpro      USING 'SAPLMGMM' '0060'.
    PERFORM bdc_field       USING 'BDC_CURSOR'
                                  'RMMG1-MATNR'.
    PERFORM bdc_field       USING 'BDC_OKCODE'
                                  '=AUSW'.
    PERFORM bdc_field       USING 'RMMG1-MATNR'
                                  record-matnr_001.
    PERFORM bdc_dynpro      USING 'SAPLMGMM' '0070'.
    PERFORM bdc_field       USING 'BDC_CURSOR'
                                  'MSICHTAUSW-DYTXT(01)'.
    PERFORM bdc_field       USING 'BDC_OKCODE'
                                  '=ENTR'.
    PERFORM bdc_dynpro      USING 'SAPLMGMM' '4004'.
    PERFORM bdc_field       USING 'BDC_OKCODE'
                                  '=BU'.
    PERFORM bdc_field       USING 'BDC_CURSOR'
                                  'MARA-BRGEW'.
    PERFORM bdc_field       USING 'MARA-BRGEW'
                                  record-brgew_008.
  ENDLOOP.
ENDFORM.                    "bdcdata

reward if usefull....

Read only

Former Member
0 Likes
978

Hi,

BDC SESSION METHOD:

-


Since Direct Input and Call Transaction methods cannot be used for support projects due to the database availability and networking constraints, SAP suggests to use Session Method for data migration in support projects.

In this method, a session is created in the Application Server. A session has a session memory used to hold the internal table records. We can process the session later whenever database is available with free network traffic.

FUNCTION MODULES USED IN BDC SESSION METHOD:

-


1. BDC_OPEN_GROUP - This FM is used to create a session in Appn. Server.

2. BDC_INSERT - This FM is used to insert the internal table records into session memory.

3. BDC_CLOSE_GROUP - This FM is used to save the records in session memory and close it to process later.

Eg. code:

-


DATA : BEGIN OF ITAB OCCURS 0,

STR(255),

END OF ITAB.

DATA ITAB1 LIKE KNA1 OCCURS 0 WITH HEADER LINE.

DATA JTAB LIKE BDCDATA OCCURS 0 WITH HEADER LINE.

CALL FUNCTION 'UPLOAD'

EXPORTING

FILENAME = 'C:\KARTHIK.TXT'

FILETYPE = 'ASC'

TABLES

DATA_TAB = ITAB.

LOOP AT ITAB.

SPLIT ITAB-STR AT ',' INTO ITAB1-KUNNR ITAB1-NAME1 ITAB1-ORT01

ITAB1-LAND1.

APPEND ITAB1.

ENDLOOP.

CALL FUNCTION 'BDC_OPEN_GROUP'

EXPORTING

CLIENT = SY-MANDT

GROUP = 'SHABANA'

KEEP = 'X'

USER = SY-UNAME.

LOOP AT ITAB1.

PERFORM PROGINFO USING 'SAPMYCALLTRANSACTION' '400'.

PERFORM FLDINFO USING 'WA-KUNNR' ITAB1-KUNNR.

PERFORM FLDINFO USING 'WA-NAME1' ITAB1-NAME1.

PERFORM FLDINFO USING 'WA-ORT01' ITAB1-ORT01.

PERFORM FLDINFO USING 'WA-LAND1' ITAB1-LAND1.

CALL FUNCTION 'BDC_INSERT'

EXPORTING

TCODE = 'YCALLTRANS'

TABLES

DYNPROTAB = JTAB.

ENDLOOP.

CALL FUNCTION 'BDC_CLOSE_GROUP'.

FORM PROGINFO USING PROGNAME SCRNUM.

CLEAR JTAB.

REFRESH JTAB.

JTAB-PROGRAM = PROGNAME.

JTAB-DYNPRO = SCRNUM.

JTAB-DYNBEGIN = 'X'.

APPEND JTAB.

ENDFORM.

FORM FLDINFO USING FLDNAME FLDVALUE.

CLEAR JTAB.

JTAB-FNAM = FLDNAME.

JTAB-FVAL = FLDVALUE.

APPEND JTAB.

ENDFORM.

Save -> Activate -> Execute -> A session is created.

To process the session, GOTO SM35 Tcode.

Navigations to process the session:

SM35 -> Select the session -> click on PROCESS pushbutton from appn. toolbar -> Opens an interface -> Select DISPLAY ERRORS ONLY radiobutton -> Process -> Opens the user-defined screen -> Modify and Insert the records -> Finally opens a message -> Click on Session Overview pushbutton -> Comes back to SM35 screen -> Select the session -> Click on Log Pushbutton from appn. toolbar -> To view the detailed log, select session from here -> Click Analyze Log pushbutton from appn. toolbar -> Opens an interface -> Click on Log Created on...date... tab button -> We can view the detailed log of transaction.

If Background mode is selected, GOTO SM36 Tcode.

SM36 -> Click on Own Jobs pushbutton from appn. toolbar -> Select session from the list -> Click on Job Log pushbutton from appn. toolbar -> Gives you detailed log of background processing.

Hope this helps u,

Regards,

Arunsri

Read only

Former Member
0 Likes
978

Hi,

Use this code,you can easily understand which u want to know

DATA: BEGIN OF itab OCCURS 0,

str(255),

END OF itab.

DATA: BEGIN OF itab1 OCCURS 0,

lifnr LIKE lfa1-lifnr,

name1 LIKE lfa1-name1,

ort01 LIKE lfa1-ort01,

END OF itab1.

DATA: jtab LIKE bdcdata OCCURS 0 WITH HEADER LINE.

CALL FUNCTION 'WS_UPLOAD'

EXPORTING

filename = 'D:\ABAP EVE\ffile5.txt'

filetype = 'ASC'

TABLES

data_tab = itab

EXCEPTIONS

conversion_error = 1

file_open_error = 2

file_read_error = 3

invalid_type = 4

no_batch = 5

unknown_error = 6

invalid_table_width = 7

gui_refuse_filetransfer = 8

customer_error = 9

no_authority = 10

OTHERS = 11.

IF sy-subrc <> 0.

WRITE:/ 'no file exist'.

ENDIF.

LOOP AT itab.

SPLIT itab-str AT ',' INTO itab1-lifnr itab1-name1 itab1-ort01.

APPEND itab1.

ENDLOOP.

CALL FUNCTION 'BDC_OPEN_GROUP'

EXPORTING

client = sy-mandt

  • DEST = FILLER8

group = 'ZCSSESSIONM1'

  • HOLDDATE = FILLER8

keep = 'X'

user = sy-uname

  • RECORD = FILLER1

  • PROG = SY-CPROG

  • 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.

LOOP AT itab1.

PERFORM prginfo USING 'SAPMZBDCCT' '123'.

PERFORM fldinfo USING 'i01' itab1-lifnr.

PERFORM fldinfo USING 'i02' itab1-name1.

PERFORM fldinfo USING 'i03' itab1-ort01.

  • CALL TRANSACTION 'ZCSBDCCT' USING jtab.

CALL FUNCTION 'BDC_INSERT'

EXPORTING

tcode = 'ZCSBDCCT'

  • POST_LOCAL = NOVBLOCAL

  • PRINTING = NOPRINT

  • SIMUBATCH = ' '

  • CTUPARAMS = ' '

TABLES

dynprotab = jtab

EXCEPTIONS

internal_error = 1

not_open = 2

queue_error = 3

tcode_invalid = 4

printing_invalid = 5

posting_invalid = 6

OTHERS = 7.

ENDLOOP.

CALL FUNCTION 'BDC_CLOSE_GROUP'.

&----


*& Form prginfo

&----


  • text

----


  • -->PRGNAME text

  • -->SCRNUMBER text

----


FORM prginfo USING prgname scrnumber.

CLEAR jtab.

REFRESH jtab.

jtab-program = prgname.

jtab-dynpro = scrnumber.

jtab-dynbegin = 'X'.

APPEND jtab.

ENDFORM. "prginfo

&----


*& Form fldinfo

&----


  • text

----


  • -->FLDNM text

  • -->FLDVAL text

----


FORM fldinfo USING fldnm fldval.

CLEAR jtab.

jtab-fnam = fldnm.

jtab-fval = fldval.

APPEND jtab.

ENDFORM. "fldinfo

MPP CODE.

TOP-INCLUDE.

DATA: OK_CODE TYPE SY-UCOMM.

DATA: I01(10),I02(20),I03(26).

DATA: WA TYPE LFA1.

PAI

CASE OK_CODE.

WHEN 'INSERT'.

MOVE I01 TO WA-LIFNR.

MOVE I02 TO WA-NAME1.

MOVE I03 TO WA-ORT01.

INSERT INTO LFA1 VALUES WA.

IF SY-SUBRC = 0.

MESSAGE I001(ZCSMSG).

ELSE.

MESSAGE I002(ZCSMSG).

ENDIF.

WHEN 'EXIT'.

LEAVE PROGRAM.

ENDCASE.

Create the 3 io's in layout and 2 pushbuttons(exit,insert).

Open SM35 TCode -> select the session -> Click on "Process" from application toolbar

-> select mode of execution(foreground/background) -> click on "process".

Flatfile data:

300001,Yogesh,Secundrabad

320003,Wreline,Mexico

320004,Alexme,New York

And store this in "D:\ABAP EVE\ffile5.txt" path

Reward,if it is useful.

Thanks,

Chandu.