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 both methods in a same program

Former Member
0 Likes
1,144

hi all,

can we use both methods call transaction & session method

in a same program for data uploading.

if yes then how .

plz give me the steps for it?

thanks & regards

sanjeev

1 ACCEPTED SOLUTION
Read only

shishupalreddy
Active Contributor
0 Likes
1,094

hi ,

we can use both the methods in same program.

see the sample code here:

FORM update_processing.

PERFORM construct_bdc_data .

ENDFORM. " UPDATE_PROCESSING

*

&----


*& Form Construct_BDC_data

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM construct_bdc_data .

DATA: w_qty_tx(17),

w_meins LIKE mara-meins.

LOOP AT g_t_tab.

REFRESH bdcdata.

REFRESH t_msg.

PERFORM bdc_dynpro USING 'SAPMM07M' '0400'.

PERFORM bdc_field USING 'BDC_CURSOR' 'MKPF-BUDAT'.

PERFORM bdc_field USING 'BDC_OKCODE' '/00'.

PERFORM bdc_field USING 'MKPF-BKTXT' '93900 Golive'.

PERFORM bdc_field USING 'RM07M-BWARTWA' '309'.

PERFORM bdc_field USING 'RM07M-WERKS' g_t_tab-owerks.

PERFORM bdc_field USING 'RM07M-LGORT' g_t_tab-olgort.

PERFORM bdc_dynpro USING 'SAPMM07M' '0421'.

PERFORM bdc_field USING 'BDC_CURSOR' 'MSEG-ERFMG(01)'.

PERFORM bdc_field USING 'BDC_OKCODE' '/00'.

PERFORM bdc_field USING 'MSEGK-UMWRK' p_nwerks.

PERFORM bdc_field USING 'MSEGK-UMLGO' p_nlgort.

PERFORM bdc_field USING 'MSEGK-UMMAT' g_t_tab-nmatnr.

PERFORM bdc_field USING 'MSEG-MATNR(01)' g_t_tab-omatnr.

w_qty_tx = g_t_tab-erfmg.

PERFORM bdc_field USING 'MSEG-ERFMG(01)' w_qty_tx.

CLEAR w_meins.

CALL FUNCTION 'CONVERSION_EXIT_MATN1_INPUT'

EXPORTING

input = g_t_tab-nmatnr

IMPORTING

output = g_t_tab-nmatnr.

SELECT SINGLE meins

INTO w_meins

FROM mara

WHERE matnr = g_t_tab-nmatnr.

PERFORM bdc_field USING 'MSEG-ERFME(01)' w_meins.

PERFORM bdc_field USING 'DKACB-FMORE' 'X'.

PERFORM bdc_dynpro USING 'SAPLKACB' '0002'.

PERFORM bdc_field USING 'BDC_OKCODE' '=ENTE'.

PERFORM bdc_dynpro USING 'SAPLKACB' '0002'.

PERFORM bdc_field USING 'BDC_OKCODE' '=ENTE'.

PERFORM bdc_dynpro USING 'SAPMM07M' '0421'.

PERFORM bdc_field USING 'BDC_CURSOR' 'MSEG-ERFMG(01)'.

PERFORM bdc_field USING 'BDC_OKCODE' '=BU'.

PERFORM bdc_dynpro USING 'SAPLKACB' '0002'.

PERFORM bdc_field USING 'BDC_OKCODE' '=ENTE'.

PERFORM call_transaction.

ENDLOOP.

  • DESCRIBE TABLE g_t_mat LINES g_f_mblnr.

ENDFORM. " Construct_BDC_data

&----


*& Form call_transaction

&----


  • text

----


  • --> p1 text

  • <-- p2 text

*----


FORM call_transaction .

DATA: w_mode VALUE 'N'.

  • Exucute transaction via Call Transaction

CALL TRANSACTION 'MB1B'

USING bdcdata

MODE w_mode

UPDATE 'S'

MESSAGES INTO t_msg .

  • check for all terminal error messages

READ TABLE t_msg WITH KEY msgtyp = 'S'

msgid = 'M7'

msgnr = '060'.

IF sy-subrc EQ 0.

g_t_mat-mblnr = t_msg-msgv1.

APPEND g_t_mat.

ADD 1 TO g_f_mblnr.

ENDIF.

ENDFORM. " CALL TRANSACTION

&----


*& Form bdc_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 *

&----


FORM bdc_field USING fnam fval.

CLEAR bdcdata.

bdcdata-fnam = fnam.

bdcdata-fval = fval.

APPEND bdcdata.

ENDFORM. " bdc_field

&----


*& Form GET_MSG_TEXT

&----


  • text

----


  • -->P_T_MSG_MSGID text

  • -->P_T_MSG_MSGNR text

  • <--P_W_DETAILS_MSG text

----


*

FORM get_msg_text USING p_msgid

p_msgnr

CHANGING p_text.

DATA : w_arbgb_tx LIKE t100-arbgb.

DATA : t100 LIKE t100.

  • GET MESSAGE TEXT

w_arbgb_tx = p_msgid.

CALL FUNCTION 'T100_SINGLE_READ'

EXPORTING

t100_sprsl = sy-langu

t100_arbgb = w_arbgb_tx

t100_msgnr = p_msgnr

IMPORTING

wt100 = t100

EXCEPTIONS

not_found = 1

OTHERS = 2.

CHECK sy-subrc = 0.

p_text = t100-text.

ENDFORM. " GET_MSG_TEXT

&----


*& Form bdc_create *

&----


*& text *

&----


*& --> p1 text *

*& <-- p2 text *

&----


FORM bdc_create .

PERFORM bdc_open_group.

PERFORM bdcdata_populate.

PERFORM bdc_close.

ENDFORM. " bdc_create

&----


*& Form bdc_open_group *

&----


*& text *

&----


*& --> p1 text *

*& <-- p2 text *

&----


FORM bdc_open_group .

DATA : w_user_tx LIKE apqi-userid.

w_user_tx = sy-uname.

CALL FUNCTION 'BDC_OPEN_GROUP'

EXPORTING

client = sy-mandt

group = 'LT06'

keep = 'X'

user = w_user_tx

EXCEPTIONS

client_invalid = 01

destination_invalid = 02

group_invalid = 03

holddate_invalid = 04

internal_error = 05

queue_error = 06

running = 07

user_invalid = 08.

CASE sy-subrc.

WHEN 0.

WHEN OTHERS.

WRITE: / 'BDC OPEN ERROR', sy-subrc.

ENDCASE.

ENDFORM. " bdc_open_group

&----


*& Form bdc_populate *

&----


*& text *

&----


*& --> p1 text *

*& <-- p2 text *

&----


FORM bdcdata_populate .

LOOP AT g_t_mat.

REFRESH bdcdata.

PERFORM bdc_dynpro1 USING 'SAPML02B' '0203'.

PERFORM bdc_field1 USING 'BDC_CURSOR' 'RL02B-DUNKL'.

PERFORM bdc_field1 USING 'BDC_OKCODE' '/00'.

PERFORM bdc_field1 USING 'RL02B-MBLNR' g_t_mat-mblnr.

write sy-datum to w_date dd/mm/yyyy.

move w_date+6(4) TO w_date1.

PERFORM bdc_field1 USING 'RL02B-MJAHR' w_date1.

PERFORM bdc_field1 USING 'RL02B-LGNUM' p_lgnum.

PERFORM bdc_field1 USING 'RL02B-DUNKL' 'D'.

w_tcode = 'LT06'.

PERFORM bdc_insert.

ENDLOOP.

ENDFORM. " bdcdata_populate

&----


*& Form bdc_insert *

&----


*& text *

&----


*& --> p1 text *

*& <-- p2 text *

&----


FORM bdc_insert.

CALL FUNCTION 'BDC_INSERT'

EXPORTING

tcode = w_tcode

TABLES

dynprotab = bdcdata

EXCEPTIONS

internal_error = 1

not_open = 2

queue_error = 3

tcode_invalid = 4

printing_invalid = 5

posting_invalid = 6

OTHERS = 7.

CASE sy-subrc.

WHEN 0.

WHEN OTHERS.

WRITE: / 'BDC INSERT ERROR', sy-subrc.

ENDCASE.

ENDFORM. " bdc_insert

&----


*& Form bdc_close1 *

&----


*& text *

&----


*& --> p1 text *

*& <-- p2 text *

&----


FORM bdc_close.

CALL FUNCTION 'BDC_CLOSE_GROUP'

EXCEPTIONS

not_open = 1

queue_error = 2

OTHERS = 3.

CASE sy-subrc.

WHEN 0.

WHEN OTHERS.

WRITE: / 'BDC CLOSE ERROR', sy-subrc.

ENDCASE.

ENDFORM. " bdc_close

&----


*& Form bdc_dynpro1 *

&----


*& text *

&----


FORM bdc_dynpro1 USING program dynpro.

CLEAR bdcdata.

bdcdata-program = program.

bdcdata-dynpro = dynpro.

bdcdata-dynbegin = 'X'.

APPEND bdcdata.

ENDFORM. " bdc_dynpro

&----


*& Form bdc_feild1 *

&----


*& text *

&----


FORM bdc_field1 USING fnam fval.

CLEAR bdcdata.

bdcdata-fnam = fnam.

bdcdata-fval = fval.

APPEND bdcdata.

ENDFORM. " bdc_field

first is call transaction for MB1B second is SESSION FOR LT06

regards,

Message was edited by: shishupalreddy ramreddy

11 REPLIES 11
Read only

Former Member
0 Likes
1,094

Hi

Yes you can use both methods in the same program.

Read only

0 Likes
1,094

how?

plz specify it.

or if u have done this then send me the code for it.

it will be helpful for me otherwise just explain me how it is possible?

Read only

shishupalreddy
Active Contributor
0 Likes
1,095

hi ,

we can use both the methods in same program.

see the sample code here:

FORM update_processing.

PERFORM construct_bdc_data .

ENDFORM. " UPDATE_PROCESSING

*

&----


*& Form Construct_BDC_data

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM construct_bdc_data .

DATA: w_qty_tx(17),

w_meins LIKE mara-meins.

LOOP AT g_t_tab.

REFRESH bdcdata.

REFRESH t_msg.

PERFORM bdc_dynpro USING 'SAPMM07M' '0400'.

PERFORM bdc_field USING 'BDC_CURSOR' 'MKPF-BUDAT'.

PERFORM bdc_field USING 'BDC_OKCODE' '/00'.

PERFORM bdc_field USING 'MKPF-BKTXT' '93900 Golive'.

PERFORM bdc_field USING 'RM07M-BWARTWA' '309'.

PERFORM bdc_field USING 'RM07M-WERKS' g_t_tab-owerks.

PERFORM bdc_field USING 'RM07M-LGORT' g_t_tab-olgort.

PERFORM bdc_dynpro USING 'SAPMM07M' '0421'.

PERFORM bdc_field USING 'BDC_CURSOR' 'MSEG-ERFMG(01)'.

PERFORM bdc_field USING 'BDC_OKCODE' '/00'.

PERFORM bdc_field USING 'MSEGK-UMWRK' p_nwerks.

PERFORM bdc_field USING 'MSEGK-UMLGO' p_nlgort.

PERFORM bdc_field USING 'MSEGK-UMMAT' g_t_tab-nmatnr.

PERFORM bdc_field USING 'MSEG-MATNR(01)' g_t_tab-omatnr.

w_qty_tx = g_t_tab-erfmg.

PERFORM bdc_field USING 'MSEG-ERFMG(01)' w_qty_tx.

CLEAR w_meins.

CALL FUNCTION 'CONVERSION_EXIT_MATN1_INPUT'

EXPORTING

input = g_t_tab-nmatnr

IMPORTING

output = g_t_tab-nmatnr.

SELECT SINGLE meins

INTO w_meins

FROM mara

WHERE matnr = g_t_tab-nmatnr.

PERFORM bdc_field USING 'MSEG-ERFME(01)' w_meins.

PERFORM bdc_field USING 'DKACB-FMORE' 'X'.

PERFORM bdc_dynpro USING 'SAPLKACB' '0002'.

PERFORM bdc_field USING 'BDC_OKCODE' '=ENTE'.

PERFORM bdc_dynpro USING 'SAPLKACB' '0002'.

PERFORM bdc_field USING 'BDC_OKCODE' '=ENTE'.

PERFORM bdc_dynpro USING 'SAPMM07M' '0421'.

PERFORM bdc_field USING 'BDC_CURSOR' 'MSEG-ERFMG(01)'.

PERFORM bdc_field USING 'BDC_OKCODE' '=BU'.

PERFORM bdc_dynpro USING 'SAPLKACB' '0002'.

PERFORM bdc_field USING 'BDC_OKCODE' '=ENTE'.

PERFORM call_transaction.

ENDLOOP.

  • DESCRIBE TABLE g_t_mat LINES g_f_mblnr.

ENDFORM. " Construct_BDC_data

&----


*& Form call_transaction

&----


  • text

----


  • --> p1 text

  • <-- p2 text

*----


FORM call_transaction .

DATA: w_mode VALUE 'N'.

  • Exucute transaction via Call Transaction

CALL TRANSACTION 'MB1B'

USING bdcdata

MODE w_mode

UPDATE 'S'

MESSAGES INTO t_msg .

  • check for all terminal error messages

READ TABLE t_msg WITH KEY msgtyp = 'S'

msgid = 'M7'

msgnr = '060'.

IF sy-subrc EQ 0.

g_t_mat-mblnr = t_msg-msgv1.

APPEND g_t_mat.

ADD 1 TO g_f_mblnr.

ENDIF.

ENDFORM. " CALL TRANSACTION

&----


*& Form bdc_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 *

&----


FORM bdc_field USING fnam fval.

CLEAR bdcdata.

bdcdata-fnam = fnam.

bdcdata-fval = fval.

APPEND bdcdata.

ENDFORM. " bdc_field

&----


*& Form GET_MSG_TEXT

&----


  • text

----


  • -->P_T_MSG_MSGID text

  • -->P_T_MSG_MSGNR text

  • <--P_W_DETAILS_MSG text

----


*

FORM get_msg_text USING p_msgid

p_msgnr

CHANGING p_text.

DATA : w_arbgb_tx LIKE t100-arbgb.

DATA : t100 LIKE t100.

  • GET MESSAGE TEXT

w_arbgb_tx = p_msgid.

CALL FUNCTION 'T100_SINGLE_READ'

EXPORTING

t100_sprsl = sy-langu

t100_arbgb = w_arbgb_tx

t100_msgnr = p_msgnr

IMPORTING

wt100 = t100

EXCEPTIONS

not_found = 1

OTHERS = 2.

CHECK sy-subrc = 0.

p_text = t100-text.

ENDFORM. " GET_MSG_TEXT

&----


*& Form bdc_create *

&----


*& text *

&----


*& --> p1 text *

*& <-- p2 text *

&----


FORM bdc_create .

PERFORM bdc_open_group.

PERFORM bdcdata_populate.

PERFORM bdc_close.

ENDFORM. " bdc_create

&----


*& Form bdc_open_group *

&----


*& text *

&----


*& --> p1 text *

*& <-- p2 text *

&----


FORM bdc_open_group .

DATA : w_user_tx LIKE apqi-userid.

w_user_tx = sy-uname.

CALL FUNCTION 'BDC_OPEN_GROUP'

EXPORTING

client = sy-mandt

group = 'LT06'

keep = 'X'

user = w_user_tx

EXCEPTIONS

client_invalid = 01

destination_invalid = 02

group_invalid = 03

holddate_invalid = 04

internal_error = 05

queue_error = 06

running = 07

user_invalid = 08.

CASE sy-subrc.

WHEN 0.

WHEN OTHERS.

WRITE: / 'BDC OPEN ERROR', sy-subrc.

ENDCASE.

ENDFORM. " bdc_open_group

&----


*& Form bdc_populate *

&----


*& text *

&----


*& --> p1 text *

*& <-- p2 text *

&----


FORM bdcdata_populate .

LOOP AT g_t_mat.

REFRESH bdcdata.

PERFORM bdc_dynpro1 USING 'SAPML02B' '0203'.

PERFORM bdc_field1 USING 'BDC_CURSOR' 'RL02B-DUNKL'.

PERFORM bdc_field1 USING 'BDC_OKCODE' '/00'.

PERFORM bdc_field1 USING 'RL02B-MBLNR' g_t_mat-mblnr.

write sy-datum to w_date dd/mm/yyyy.

move w_date+6(4) TO w_date1.

PERFORM bdc_field1 USING 'RL02B-MJAHR' w_date1.

PERFORM bdc_field1 USING 'RL02B-LGNUM' p_lgnum.

PERFORM bdc_field1 USING 'RL02B-DUNKL' 'D'.

w_tcode = 'LT06'.

PERFORM bdc_insert.

ENDLOOP.

ENDFORM. " bdcdata_populate

&----


*& Form bdc_insert *

&----


*& text *

&----


*& --> p1 text *

*& <-- p2 text *

&----


FORM bdc_insert.

CALL FUNCTION 'BDC_INSERT'

EXPORTING

tcode = w_tcode

TABLES

dynprotab = bdcdata

EXCEPTIONS

internal_error = 1

not_open = 2

queue_error = 3

tcode_invalid = 4

printing_invalid = 5

posting_invalid = 6

OTHERS = 7.

CASE sy-subrc.

WHEN 0.

WHEN OTHERS.

WRITE: / 'BDC INSERT ERROR', sy-subrc.

ENDCASE.

ENDFORM. " bdc_insert

&----


*& Form bdc_close1 *

&----


*& text *

&----


*& --> p1 text *

*& <-- p2 text *

&----


FORM bdc_close.

CALL FUNCTION 'BDC_CLOSE_GROUP'

EXCEPTIONS

not_open = 1

queue_error = 2

OTHERS = 3.

CASE sy-subrc.

WHEN 0.

WHEN OTHERS.

WRITE: / 'BDC CLOSE ERROR', sy-subrc.

ENDCASE.

ENDFORM. " bdc_close

&----


*& Form bdc_dynpro1 *

&----


*& text *

&----


FORM bdc_dynpro1 USING program dynpro.

CLEAR bdcdata.

bdcdata-program = program.

bdcdata-dynpro = dynpro.

bdcdata-dynbegin = 'X'.

APPEND bdcdata.

ENDFORM. " bdc_dynpro

&----


*& Form bdc_feild1 *

&----


*& text *

&----


FORM bdc_field1 USING fnam fval.

CLEAR bdcdata.

bdcdata-fnam = fnam.

bdcdata-fval = fval.

APPEND bdcdata.

ENDFORM. " bdc_field

first is call transaction for MB1B second is SESSION FOR LT06

regards,

Message was edited by: shishupalreddy ramreddy

Read only

0 Likes
1,094

hi reddy

thanks for sending the code .

but can u plz explain me that what is this program doing?

and how it will run both the methods after executing it?

plz make it clear.

Read only

Former Member
0 Likes
1,094

Hi,

Go thru this code.

report yramu_bdc_stvg

no standard page heading line-size 255.

----


  • INTERNAL TABLES *

----


DATA: BEGIN OF IT_KNA1 OCCURS 0,

CUSTOMER LIKE RF02D-KUNNR,

COMPANY_CODE LIKE RF02D-BUKRS,

ACCOUNT_GROUP LIKE RF02D-KTOKD,

TITLE LIKE KNA1-ANRED,

NAME LIKE KNA1-NAME1,

SEARCH_TERM LIKE KNA1-SORTL,

STREET LIKE KNA1-STRAS,

CITY LIKE KNA1-ORT01,

POSTAL_CODE LIKE KNA1-PSTLZ,

COUNTRY LIKE KNA1-LAND1,

LANGUAGE_KEY LIKE KNA1-SPRAS,

CNTRY LIKE KNBK-BANKS,

BANK_KEY LIKE KNBK-BANKL,

BANK_ACCOUNT LIKE KNBK-BANKN,

REC_ACCOUNT LIKE KNB1-AKONT,

END OF IT_KNA1.

DATA: IT_BDCDATA TYPE BDCDATA OCCURS 0 WITH HEADER LINE.

DATA: IT_MESSAGES TYPE BDCMSGCOLL OCCURS 0 WITH HEADER LINE.

----


  • SELECTION SCREEN *

----


SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.

PARAMETER P_FILE TYPE RLGRAP-FILENAME DEFAULT 'C:\CUSTOMER.TXT'

OBLIGATORY.

SELECTION-SCREEN END OF BLOCK B1.

----


  • AT SELECTION SCREEN *

----


AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE.

PERFORM HELP_FILE USING P_FILE.

----


  • START OF SELECTION *

----


START-OF-SELECTION.

*UPLOADING THE FILE FROM WORKSTATION

PERFORM UPLOAD_FILE USING P_FILE.

*POPULATING DATA.

PERFORM POPULATE_FILE.

&----


*& Form HELP_FILE

&----


  • text

----


  • -->P_P_FILE text

----


form HELP_FILE using p_p_file.

DATA: L_FILE TYPE IBIPPARMS-PATH.

CALL FUNCTION 'F4_FILENAME'

  • EXPORTING

  • PROGRAM_NAME = SYST-CPROG

  • DYNPRO_NUMBER = SYST-DYNNR

  • FIELD_NAME = ' '

IMPORTING

FILE_NAME = L_FILE.

P_P_FILE = L_FILE.

endform. " HELP_FILE

&----


*& Form UPLOAD_FILE

&----


  • text

----


  • -->P_P_FILE text

----


form UPLOAD_FILE using p_p_file.

CALL FUNCTION 'UPLOAD'

EXPORTING

  • CODEPAGE = ' '

  • FILENAME = 'P_P_FILE'

FILETYPE = 'DAT'

  • ITEM = ' '

  • FILEMASK_MASK = ' '

  • FILEMASK_TEXT = ' '

  • FILETYPE_NO_CHANGE = ' '

  • FILEMASK_ALL = ' '

  • FILETYPE_NO_SHOW = ' '

  • LINE_EXIT = ' '

  • USER_FORM = ' '

  • USER_PROG = ' '

  • SILENT = 'S'

  • IMPORTING

  • FILESIZE =

  • CANCEL =

  • ACT_FILENAME =

  • ACT_FILETYPE =

TABLES

data_tab = IT_KNA1

EXCEPTIONS

CONVERSION_ERROR = 1

INVALID_TABLE_WIDTH = 2

INVALID_TYPE = 3

NO_BATCH = 4

UNKNOWN_ERROR = 5

GUI_REFUSE_FILETRANSFER = 6

OTHERS = 7.

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. " UPLOAD_FILE

&----


*& Form POPULATE_FILE

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


form POPULATE_FILE .

DATA: L_STRING TYPE STRING,

L_COUNTER(2) TYPE N,

V_INDEX TYPE SY-TABIX.

LOOP AT IT_KNA1.

V_INDEX = SY-TABIX.

AT NEW CUSTOMER.

READ TABLE IT_KNA1 INDEX V_INDEX.

IF SY-SUBRC = 0.

perform bdc_dynpro using 'SAPMF02D' '0105'.

perform bdc_field using 'BDC_CURSOR'

'RF02D-KTOKD'.

perform bdc_field using 'BDC_OKCODE'

'/00'.

perform bdc_field using 'RF02D-KUNNR'

IT_KNA1-CUSTOMER.

perform bdc_field using 'RF02D-BUKRS'

IT_KNA1-COMPANY_CODE.

perform bdc_field using 'RF02D-KTOKD'

IT_KNA1-ACCOUNT_GROUP.

*PERFORM BDC_FIELD USING 'RF02D-D0130'

  • 'X'.

perform bdc_dynpro using 'SAPMF02D' '0110'.

perform bdc_field using 'BDC_CURSOR'

'KNA1-SPRAS'.

perform bdc_field using 'BDC_OKCODE'

'/00'.

perform bdc_field using 'KNA1-ANRED'

IT_KNA1-TITLE.

perform bdc_field using 'KNA1-NAME1'

IT_KNA1-NAME.

perform bdc_field using 'KNA1-SORTL'

IT_KNA1-SEARCH_TERM.

perform bdc_field using 'KNA1-STRAS'

IT_KNA1-STREET.

perform bdc_field using 'KNA1-ORT01'

IT_KNA1-CITY.

perform bdc_field using 'KNA1-PSTLZ'

IT_KNA1-POSTAL_CODE.

perform bdc_field using 'KNA1-LAND1'

IT_KNA1-COUNTRY.

perform bdc_field using 'KNA1-SPRAS'

IT_KNA1-LANGUAGE_KEY.

perform bdc_dynpro using 'SAPMF02D' '0120'.

perform bdc_field using 'BDC_CURSOR'

'KNA1-LIFNR'.

perform bdc_field using 'BDC_OKCODE'

'/00'.

perform bdc_dynpro using 'SAPMF02D' '0130'.

PERFORM BDC_FIELD USING 'RF02D-D0130'

'X'.

perform bdc_field using 'BDC_CURSOR'

'KNBK-BANKN(01)'.

perform bdc_field using 'BDC_OKCODE'

'=ENTR'.

perform bdc_dynpro using 'SAPMF02D' '0210'.

perform bdc_field using 'BDC_CURSOR'

'KNB1-AKONT'.

perform bdc_field using 'BDC_OKCODE'

'=UPDA'.

perform bdc_field using 'KNB1-AKONT'

IT_KNA1-REC_ACCOUNT.

perform bdc_dynpro using 'SAPLRSFH' '0100'.

perform bdc_field using 'BDC_OKCODE'

'/EBACK'.

perform bdc_field using 'BDC_CURSOR'

'RSIODYNP4-LOW(01)'.

ENDIF.

ENDAT.

L_COUNTER = L_COUNTER + 1.

CLEAR L_STRING.

CONCATENATE 'KNBK-BANKS(' L_COUNTER ')' INTO L_STRING.

PERFORM BDC_FIELD USING L_STRING

IT_KNA1-CNTRY.

CLEAR L_STRING.

CONCATENATE 'KNBK-BANKL(' L_COUNTER ')' INTO L_STRING.

PERFORM BDC_FIELD USING L_STRING

IT_KNA1-BANK_KEY.

CLEAR L_STRING.

CONCATENATE 'KNBK-BANKN(' L_COUNTER ')' INTO L_STRING.

PERFORM BDC_FIELD USING L_STRING

IT_KNA1-BANK_ACCOUNT.

AT END OF CUSTOMER.

READ TABLE IT_KNA1 INDEX V_INDEX.

IF SY-SUBRC = 0.

CALL TRANSACTION 'FD01' USING IT_BDCDATA MODE 'A' UPDATE 'S' MESSAGES

INTO IT_MESSAGES.

IF SY-SUBRC <> 0.

PERFORM EMPLOYEEID_ERROR.

*ELSE.

ENDIF.

WRITE: SY-SUBRC.

perform message_format_write.

*ENDIF.

*WRITE: SY-SUBRC.

CLEAR IT_BDCDATA.

REFRESH IT_BDCDATA.

ENDIF.

ENDAT.

ENDLOOP.

endform. " POPULATE_FILE

&----


*& Form bdc_dynpro

&----


  • text

----


  • -->P_0224 text

  • -->P_0225 text

----


form bdc_dynpro using value(p_0224)

value(p_0225).

IT_BDCDATA-PROGRAM = P_0224.

IT_BDCDATA-DYNPRO = P_0225.

IT_BDCDATA-DYNBEGIN = 'X'.

APPEND IT_BDCDATA.

CLEAR IT_BDCDATA.

endform. " bdc_dynpro

&----


*& Form bdc_field

&----


  • text

----


  • -->P_0229 text

  • -->P_0230 text

----


form bdc_field using value(p_0229)

value(p_0230).

IT_BDCDATA-FNAM = P_0229.

IT_BDCDATA-FVAL = P_0230.

APPEND IT_BDCDATA.

CLEAR IT_BDCDATA.

endform. " bdc_field

&----


*& Form EMPLOYEEID_ERROR

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


form EMPLOYEEID_ERROR .

CALL FUNCTION 'BDC_OPEN_GROUP'

EXPORTING

CLIENT = SY-MANDT

  • DEST = FILLER8

GROUP = 'Z50583_REC1'

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

IF sy-subrc <> 0.

MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

CALL FUNCTION 'BDC_INSERT'

EXPORTING

TCODE = 'FD01'

  • POST_LOCAL = NOVBLOCAL

  • PRINTING = NOPRINT

  • SIMUBATCH = ' '

  • CTUPARAMS = ' '

TABLES

dynprotab = IT_BDCDATA

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.

MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

CALL FUNCTION 'BDC_CLOSE_GROUP'

EXCEPTIONS

NOT_OPEN = 1

QUEUE_ERROR = 2

OTHERS = 3.

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. " EMPLOYEEID_ERROR

&----


*& Form message_format_write

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


form message_format_write .

DATA: L_MSG(200).

CALL FUNCTION 'FORMAT_MESSAGE'

EXPORTING

ID = SY-MSGID

LANG = SY-LANGU

NO = SY-MSGNO

V1 = SY-MSGV1

V2 = SY-MSGV2

V3 = SY-MSGV3

V4 = SY-MSGV4

IMPORTING

MSG = L_MSG

EXCEPTIONS

NOT_FOUND = 1

OTHERS = 2.

WRITE: / L_MSG.

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. " message_format_write

Thanks

Sunil

Read only

0 Likes
1,094

hi sunil

thanks for the code.

but i think that ur code is making use of only

call transaction method not both method .

so plz send me the code where u have used both the methods for uploading data in same program.

or if i am wrong in understandin ur code then plz let me know.

thanks

Read only

shishupalreddy
Active Contributor
0 Likes
1,094

Hi Sanjeev,

The program first creates the material document using MB1B (call transaction method) .

all the created material documnet Numbers (MBLNR) will be captured into an internal table .

Using session method for the created MBLNR s transfer orders will be created using LT06 tocde.

regards,

Read only

0 Likes
1,094

so how this program will run.

Read only

shishupalreddy
Active Contributor
0 Likes
1,094

HI,

It will create matrial documnet numbers for all the materials in spreadsheet .

for the creatred material document numbers it will also creates Transfer orders (lt06 tcode)

what is ur doubt

be clear

regards

Read only

0 Likes
1,094

my doubt is that when i will execute this program

it will execute immediately and it will createthe material document nos.so after executing it a seesion will also be created for lt06 and we have to execute that session also.

or i am wrong plz explain me

Read only

shishupalreddy
Active Contributor
0 Likes
1,094

Hi ,

First it will create material documnets and creates the session .

then go to sm35 to process the session which will create the transfer orders

regards,