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

Session Creation

Former Member
0 Likes
505

Hi,

How can i create a session without using BDC in an executable program.

i mean it should create a session. i can check this in SM35.

please give me any sample code.

Regards

AZAD.

3 REPLIES 3
Read only

Former Member
0 Likes
462

i don't think you can create a session without BDC.

check this code

&----


*& Report ZSAG_BS *

*& *

&----


*& *

*& *

&----


REPORT ZSAG_BS .

********TABLES

TABLES : MARA,MAKT .

*******INTERNAL TABLE

DATA : BEGIN OF ITAB OCCURS 0 ,

MATNR LIKE MARA-MATNR,

MBRSH LIKE MARA-MBRSH,

MTART LIKE MARA-MTART ,

MAKTX LIKE MAKT-MAKTX,

MEINS LIKE MARA-MEINS ,

END OF ITAB.

DATA : BDCTAB LIKE BDCDATA OCCURS 0 WITH HEADER LINE .

********WS_UPLOAD

CALL FUNCTION 'WS_UPLOAD'

EXPORTING

FILENAME = 'C:\DAT1.TXT'

FILETYPE = 'DAT'

TABLES

DATA_TAB = ITAB .

****************BDC_OPEN_GROUP

CALL FUNCTION 'BDC_OPEN_GROUP'

EXPORTING

CLIENT = SY-MANDT

GROUP = 'CHANDU'

KEEP = 'X'

USER = SY-UNAME

PROG = SY-CPROG .

LOOP AT ITAB .

REFRESH BDCTAB .

*********FIRST SCREEN

BDCTAB-PROGRAM = 'SAPLMGMM'.

BDCTAB-DYNPRO = '0060'.

BDCTAB-DYNBEGIN = 'X' .

APPEND BDCTAB .

CLEAR BDCTAB.

BDCTAB-FNAM = 'RMMG1-MATNR' .

BDCTAB-FVAL = ITAB-MATNR .

APPEND BDCTAB .

CLEAR BDCTAB.

BDCTAB-FNAM = 'RMMG1-MBRSH' .

BDCTAB-FVAL = ITAB-MBRSH .

APPEND BDCTAB .

CLEAR BDCTAB.

BDCTAB-FNAM = 'RMMG1-MTART' .

BDCTAB-FVAL = ITAB-MTART .

APPEND BDCTAB .

CLEAR BDCTAB.

BDCTAB-FNAM = 'BDC_OKCODE'.

BDCTAB-FVAL = '=AUSW' .

APPEND BDCTAB .

CLEAR BDCTAB.

********SECOND SCREEN

BDCTAB-PROGRAM = 'SAPLMGMM'.

BDCTAB-DYNPRO = '0070'.

BDCTAB-DYNBEGIN = 'X' .

APPEND BDCTAB .

CLEAR BDCTAB.

BDCTAB-FNAM = 'MSICHTAUSW-KZSEL(01)' .

BDCTAB-FVAL = 'X' .

APPEND BDCTAB .

CLEAR BDCTAB.

BDCTAB-FNAM = 'BDC_OKCODE'.

BDCTAB-FVAL = '=ENTR' .

APPEND BDCTAB .

CLEAR BDCTAB.

***************THIRD SCREEN

BDCTAB-PROGRAM = 'SAPLMGMM'.

BDCTAB-DYNPRO = '4004'.

BDCTAB-DYNBEGIN = 'X' .

APPEND BDCTAB .

CLEAR BDCTAB.

BDCTAB-FNAM = 'MAKT-MAKTX' .

BDCTAB-FVAL = ITAB-MAKTX.

APPEND BDCTAB .

CLEAR BDCTAB.

BDCTAB-FNAM = 'MARA-MEINS'.

BDCTAB-FVAL = ITAB-MEINS .

APPEND BDCTAB .

CLEAR BDCTAB.

BDCTAB-FNAM = 'BDC_OKCODE'.

BDCTAB-FVAL = '=BU' .

APPEND BDCTAB .

CLEAR BDCTAB.

CALL FUNCTION 'BDC_INSERT'

EXPORTING

TCODE = 'MM01'

TABLES

DYNPROTAB = BDCTAB .

ENDLOOP .

CALL FUNCTION 'BDC_CLOSE_GROUP' .

regards,

srinivas

<b>*reward for useful answers*</b>

Read only

Former Member
0 Likes
462

Hi!

Do not use call transaction, create session instead and use a coding like this:

INCLUDE bdcrecx1.

perform open_dataset using dataset.

perform open_group.

loop at gt_main into wa_main.

perform bdc_dynpro using 'SAPLIQS0' '0100'.

perform bdc_field using 'BDC_CURSOR'

'RIWO00-QMART'.

perform bdc_field using 'BDC_OKCODE'

'/00'.

perform bdc_field using 'RIWO00-QMART'

record-QMART_001.

perform bdc_dynpro using 'SAPLSPO1' '0100'.

perform bdc_field using 'BDC_OKCODE'

'=NO'.

perform bdc_transaction using 'IW21'.

endloop.

perform close_group.

perform close_dataset using dataset.

Regards

Tamá

Read only

Former Member
0 Likes
462

REPORT ZBIMMBOM.

****************************

*Program to create BOM

******************************

TABLES : MARA .

DATA BEGIN OF BDC_TAB OCCURS 50 .

INCLUDE STRUCTURE BDCDATA.

DATA END OF BDC_TAB.

DATA BEGIN OF MESSTAB OCCURS 10.

INCLUDE STRUCTURE BDCMSGCOLL.

DATA END OF MESSTAB.

DATA BEGIN OF I_MESSAGE OCCURS 1.

INCLUDE STRUCTURE ZBCS000002 .

DATA END OF I_MESSAGE.

DATA BEGIN OF ERROR_LOG OCCURS 10.

INCLUDE STRUCTURE SOLI .

DATA END OF ERROR_LOG.

DATA : BEGIN OF BOM_DATA OCCURS 100,

TOP_MATERIAL(18),

COMP_MATERIAL(18),

COMP_QTY(14) ,

END OF BOM_DATA.

DATA : PREV_MATNR(18),

DISP_MODE VALUE 'A' ,

UPD_MODE VALUE 'S' ,

SUBRC LIKE SY-SUBRC ,

TEMP_GROUP LIKE APQI-GROUPID VALUE 'ZEMMBOMCREA' .

PARAMETERS : BOM_FILE(70) OBLIGATORY LOWER CASE .

START-OF-SELECTION.

PERFORM OPEN_AND_READ_BOM_FILE.

PERFORM OPEN_BDC_GROUP .

PERFORM PROCESS_BOM_DATA .

PERFORM CLOSE_BDC_GROUP .

&----


*& Form OPEN_AND_READ_BOM_FILE

&----


  • text *

----


  • --> p1 text

  • <-- p2 text

----


FORM OPEN_AND_READ_BOM_FILE.

OPEN DATASET BOM_FILE FOR INPUT IN TEXT MODE .

IF SY-SUBRC <> 0 .

PERFORM MOVE_TO_MESSAGE USING 'ZI' '999' 'E' TEXT-001 BOM_FILE '' ''.

EXIT.

ENDIF.

REFRESH BOM_DATA .

DO.

CLEAR BOM_DATA .

READ DATASET BOM_FILE INTO BOM_DATA .

IF SY-SUBRC <> 0 .

EXIT.

ENDIF.

APPEND BOM_DATA .

ENDDO.

CLOSE DATASET BOM_FILE .

SORT BOM_DATA BY TOP_MATERIAL .

ENDFORM. " OPEN_AND_READ_BOM_FILE

&----


*& Form PROCESS_BOM_DATA

&----


  • text *

----


  • --> p1 text

  • <-- p2 text

----


FORM PROCESS_BOM_DATA.

DATA : FIRST_TIME .

FIRST_TIME = 1 .

CLEAR PREV_MATNR .

LOOP AT BOM_DATA.

IF PREV_MATNR <> BOM_DATA-TOP_MATERIAL .

IF FIRST_TIME <> 1 .

PERFORM SAVE_BOM_DATA.

ENDIF.

PERFORM FILL_HEADER_DETAIL.

ELSE.

PERFORM FILL_ITEM_DETAIL.

ENDIF.

PREV_MATNR = BOM_DATA-TOP_MATERIAL .

CLEAR FIRST_TIME .

ENDLOOP.

PERFORM SAVE_BOM_DATA.

ENDFORM. " PROCESS_BOM_DATA

&----


*& Form FILL_HEADER_DETAIL

&----


  • text *

----


  • --> p1 text

  • <-- p2 text

----


FORM FILL_HEADER_DETAIL.

DATA : QUANTITY_CH(14) .

REFRESH : BDC_TAB , ERROR_LOG .

WRITE BOM_DATA-COMP_QTY TO QUANTITY_CH DECIMALS 2 .

PERFORM FILL_DYNPRO USING :

'X' 'SAPLCSDI' '0100' ,

' ' 'RC29N-MATNR' BOM_DATA-TOP_MATERIAL ,

' ' 'RC29N-WERKS' '0301' ,

' ' 'RC29N-STLAN' '3' ,

' ' 'BDC_OKCODE' '/0' ,

'X' 'SAPLCSDI' '0110' ,

' ' 'BDC_OKCODE' '/0' ,

'X' 'SAPLCSDI' '0111' ,

' ' 'BDC_OKCODE' '/0',

'X' 'SAPLCSDI' '0140' ,

' ' 'RC29P-AUSKZ(1)' 'X' ,

' ' 'RC29P-IDNRK(1)' BOM_DATA-COMP_MATERIAL ,

' ' 'RC29P-MENGE(1)' QUANTITY_CH,

' ' 'RC29P-POSTP(1)' 'L' ,

' ' 'BDC_OKCODE' 'PHPT' ,

'X' 'SAPLCSDI' '0130' ,

' ' 'RC29P-AUSCH' '2' ,

' ' 'BDC_OKCODE' '/0' ,

'X' 'SAPLCSDI' '0131' ,

' ' 'BDC_OKCODE' '/0' ,

'X' 'SAPLCSDI' '0130' ,

' ' 'BDC_OKCODE' '/3' .

ENDFORM. " FILL_HEADER_DETAIL

&----


*& Form FILL_ITEM_DETAIL

&----


  • text *

----


  • --> p1 text

  • <-- p2 text

----


FORM FILL_ITEM_DETAIL.

DATA QUANTITY_CH(14).

WRITE BOM_DATA-COMP_QTY TO QUANTITY_CH .

PERFORM FILL_DYNPRO USING :

'X' 'SAPLCSDI' '0140' ,

' ' 'BDC_OKCODE' 'FCNP' ,

'X' 'SAPLCSDI' '0140' ,

' ' 'RC29P-AUSKZ(2)' 'X' ,

' ' 'RC29P-IDNRK(2)' BOM_DATA-COMP_MATERIAL ,

' ' 'RC29P-MENGE(2)' QUANTITY_CH ,

' ' 'RC29P-POSTP(2)' 'L' ,

' ' 'BDC_OKCODE' 'PHPT' ,

'X' 'SAPLCSDI' '0130' ,

' ' 'RC29P-AUSCH' '2' ,

' ' 'BDC_OKCODE' '/0' ,

'X' 'SAPLCSD1' '0131' ,

' ' 'BDC_OKCODE' '/0' ,

'X' 'SAPLCSDI' '0130' ,

' ' 'BDC_OKCODE' '/3' .

ENDFORM. " FILL_ITEM_DETAIL

&----


*& Form SAVE_BOM_DATA

&----


  • text *

----


  • --> p1 text

  • <-- p2 text

----


FORM SAVE_BOM_DATA.

PERFORM FILL_DYNPRO USING :

'X' 'SAPLCSDI' '0140' ,

' ' 'BDC_OKCODE' '/11' .

REFRESH MESSTAB .

CALL TRANSACTION 'CS01'

USING BDC_TAB

MODE DISP_MODE

UPDATE UPD_MODE

MESSAGES INTO MESSTAB .

SUBRC = SY-SUBRC .

PERFORM MOVE_MESSTAB .

IF SUBRC <> 0 .

PERFORM POST_BDC_SESSION USING TEMP_GROUP 'CS01' .

PERFORM MOVE_TO_MESSAGE USING 'ZI' '999' 'E' TEXT-002

BOM_DATA-TOP_MATERIAL '' '' .

ENDIF.

PERFORM CHANGE_MATERIAL_MASTER .

ENDFORM. " SAVE_BOM_DATA

&----


*& Form FILL_DYNPRO

&----


  • text *

----


  • --> p1 text

  • <-- p2 text

----


FORM FILL_DYNPRO USING DYNPRO FIELD VALUE.

CLEAR BDC_TAB.

IF DYNPRO = 'X'.

MOVE: FIELD TO BDC_TAB-PROGRAM,

VALUE TO BDC_TAB-DYNPRO,

'X' TO BDC_TAB-DYNBEGIN.

APPEND BDC_TAB.

ELSE.

MOVE: FIELD TO BDC_TAB-FNAM,

VALUE TO BDC_TAB-FVAL.

APPEND BDC_TAB.

ENDIF.

ENDFORM. " FILL_DYNPRO

&----


*& Form MOVE_MESSTAB

&----


  • text *

----


  • --> p1 text

  • <-- p2 text

----


FORM MOVE_MESSTAB.

LOOP AT MESSTAB .

MOVE-CORRESPONDING MESSTAB TO I_MESSAGE .

I_MESSAGE-MSGNO = MESSTAB-MSGNR .

I_MESSAGE-MSGTY = MESSTAB-MSGTYP .

ERROR_LOG = I_MESSAGE .

  • ignore the success message and warnings in the BDC program execution

IF MESSTAB-MSGTYP <> 'S' AND MESSTAB-MSGTYP <> 'W' .

APPEND ERROR_LOG .

ENDIF.

ENDLOOP .

ENDFORM. " MOVE_MESSTAB

&----


*& Form MOVE_TO_MESSAGE

&----


  • text *

----


  • --> p1 text

  • <-- p2 text

----


FORM MOVE_TO_MESSAGE USING MSGID MSGNO MSGTY MSGV1 MSGV2 MSGV3 MSGV4 .

I_MESSAGE-MSGID = MSGID .

I_MESSAGE-MSGNO = MSGNO .

I_MESSAGE-MSGTY = MSGTY .

I_MESSAGE-MSGV1 = MSGV1 .

I_MESSAGE-MSGV2 = MSGV2 .

I_MESSAGE-MSGV3 = MSGV3 .

I_MESSAGE-MSGV4 = MSGV4 .

ERROR_LOG = I_MESSAGE .

APPEND ERROR_LOG .

ENDFORM. " MOVE_TO_MESSAGE

&----


*& Form POST_BDC_SESSION

&----


  • text *

----


  • --> p1 text

  • <-- p2 text

----


FORM POST_BDC_SESSION USING TEMP_GROUP TRANSAC_CODE .

CALL FUNCTION 'BDC_INSERT'

EXPORTING

TCODE = TRANSAC_CODE

TABLES

DYNPROTAB = BDC_TAB

EXCEPTIONS

INTERNAL_ERROR = 1

NOT_OPEN = 2

QUEUE_ERROR = 3

TCODE_INVALID = 4

OTHERS = 5.

ENDFORM. " POST_BDC_SESSION

&----


*& Form CHANGE_MATERIAL_MASTER

&----


  • text *

----


  • --> p1 text

  • <-- p2 text

----


FORM CHANGE_MATERIAL_MASTER.

REFRESH : ERROR_LOG , BDC_TAB .

PERFORM FILL_DYNPRO USING :

'X' 'SAPLMGMM' '0060' ,

' ' 'RMMG1-MATNR' PREV_MATNR ,

' ' 'BDC_OKCODE' '/5' ,

'X' 'SAPLMGMM' '0070' ,

' ' 'MSICHTAUSW-KZSEL(8)' 'X' ,

' ' 'BDC_OKCODE' '/0' ,

'X' 'SAPLMGMM' '0080' ,

' ' 'RMMG1-WERKS' '0301' ,

' ' 'BDC_OKCODE' '/0' ,

'X' 'SAPLMGMM' '3003' ,

' ' 'MARC-MTVFP' '32' ,

' ' 'BDC_OKCODE' 'PRZU' ,

'X' 'SAPLMGMM' '0531' ,

' ' 'RMMG1-DISPR' '0001' ,

' ' 'BDC_OKCODE' '/0' ,

'X' 'SAPLMGMM' '3003' ,

' ' 'BDC_OKCODE' '/11' .

REFRESH MESSTAB .

CALL TRANSACTION 'MM02'

USING BDC_TAB

MODE DISP_MODE

UPDATE UPD_MODE

MESSAGES INTO MESSTAB .

SUBRC = SY-SUBRC .

PERFORM MOVE_MESSTAB .

IF SUBRC <> 0 .

PERFORM POST_BDC_SESSION USING TEMP_GROUP 'MM02' .

PERFORM MOVE_TO_MESSAGE USING 'ZI' '999' 'E' TEXT-003

BOM_DATA-TOP_MATERIAL '' '' .

ENDIF.

ENDFORM. " CHANGE_MATERIAL_MASTER

&----


*& Form OPEN_BDC_GROUP

&----


  • text *

----


  • --> p1 text

  • <-- p2 text

----


FORM OPEN_BDC_GROUP.

CALL FUNCTION 'BDC_OPEN_GROUP'

EXPORTING

CLIENT = SY-MANDT

  • DEST = FILLER8

GROUP = TEMP_GROUP

  • HOLDDATE = FILLER8

KEEP = 'X'

USER = SY-UNAME

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

ENDFORM. " OPEN_BDC_GROUP

&----


*& Form CLOSE_BDC_GROUP

&----


  • text *

----


  • --> p1 text

  • <-- p2 text

----


FORM CLOSE_BDC_GROUP.

CALL FUNCTION 'BDC_CLOSE_GROUP'

EXCEPTIONS

NOT_OPEN = 1

QUEUE_ERROR = 2

OTHERS = 3.

ENDFORM. " CLOSE_BDC_GROUP