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 OK CODE FOR ENTER NOT RECORDING

Former Member
0 Likes
7,812

I m creating a BDC Programme for uploading OLD PO date from excel to SAP System.

All PO's are Service PO.

PO's date and Delivery Date is in back date.

My programme working fine.

But i have to press enter manually due to PO Date = back date and Delivery date is also back date.

SHDB unable to record this event.

How to record this event.

Is there any way to disable system messages during BDC Programme.

When I press enter two times my programme runs very well.

Kindly help me.

Its very much urgent.

Code is give below.

REPORT zbdcme21n

NO STANDARD PAGE HEADING LINE-SIZE 255.

DATA : l_file TYPE rlgrap-filename.

DATA: e_group_opened.

PARAMETERS session RADIOBUTTON GROUP ctu. "create session

*DATA : session RADIOBUTTON GROUP ctu.

DATA : group(12). "group name of session

group = 'BDC'.

*PARAMETERS: user(12) DEFAULT sy-uname. "user for session in batch

DATA : user(12).

user = sy-uname.

*DATA : keep AS CHECKBOX. "' ' = delete session if finished

DATA : keep TYPE checkbox.

keep = 'X'.

*PARAMETERS: holddate LIKE sy-datum. "'X' = keep session if finished

DATA : holddate LIKE sy-datum.

holddate = sy-datum.

PARAMETERS ctu RADIOBUTTON GROUP ctu. "call transaction

DATA: bdcdata LIKE bdcdata OCCURS 0 WITH HEADER LINE.

DATA : BEGIN OF i_tab OCCURS 0, "excel data stored in this file.

row TYPE alsmex_tabline-row,

col TYPE alsmex_tabline-col,

value TYPE alsmex_tabline-value,

END OF i_tab.

DATA : BEGIN OF wa_line1 OCCURS 0, "excel data stored in this file.

row TYPE alsmex_tabline-row,

col TYPE alsmex_tabline-col,

value TYPE alsmex_tabline-value,

srno TYPE i,

END OF wa_line1.

DATA : wa_line2 LIKE wa_line1 OCCURS 0 WITH HEADER LINE .

DATA : wa_hdr1 LIKE wa_line1 OCCURS 0 WITH HEADER LINE .

DATA : wa_hdr LIKE i_tab OCCURS 0 WITH HEADER LINE .

DATA : wa_line LIKE i_tab OCCURS 0 WITH HEADER LINE .

DATA : w_cnt TYPE i . "store total no of pos

DATA : w_hdr_counter VALUE 1. "for header line count

DATA : w_line_counter VALUE 1. "for Line Item Counter.

w_cnt = 0.

SELECTION-SCREEN: BEGIN OF BLOCK b1 WITH FRAME TITLE text-000.

PARAMETER: dataset TYPE rlgrap-filename OBLIGATORY.

SELECTION-SCREEN: END OF BLOCK b1.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR dataset.

PERFORM upload_file.

*include bdcrecx1.

START-OF-SELECTION.

PERFORM process_itab.

*include bdcrecx1.

START-OF-SELECTION.

PERFORM open_group.

**********************start for header

w_hdr_counter = 1.

WHILE w_hdr_counter <= w_cnt.

PERFORM bdc_dynpro USING 'SAPMM06E' '0100'.

PERFORM bdc_field USING 'BDC_CURSOR'

'RM06E-BEDAT'.

PERFORM bdc_field USING 'BDC_OKCODE'

'/00'.

READ TABLE wa_hdr1 WITH KEY col = 2 srno = w_hdr_counter.

PERFORM bdc_field USING 'EKKO-LIFNR'

wa_hdr1-value. "'800000'.

READ TABLE wa_hdr1 WITH KEY col = 3 srno = w_hdr_counter.

PERFORM bdc_field USING 'RM06E-BSART'

wa_hdr1-value. "'ZS'.

READ TABLE wa_hdr1 WITH KEY col = 4 srno = w_hdr_counter.

PERFORM bdc_field USING 'RM06E-BEDAT'

wa_hdr1-value. " '14.01.2008'.

  • PERFORM bdc_field USING 'RM06E-LPEIN'

  • 'T'.

READ TABLE wa_hdr1 WITH KEY col = 13 srno = w_hdr_counter.

PERFORM bdc_field USING 'RM06E-EEIND'

wa_hdr1-value. "'14.01.2008'. "Delivery Date

PERFORM bdc_field USING 'RM06E-LPEIN'

'T'.

READ TABLE wa_hdr1 WITH KEY col = 6 srno = w_hdr_counter.

PERFORM bdc_field USING 'EKKO-EKORG'

wa_hdr1-value. "'serv'.

READ TABLE wa_hdr1 WITH KEY col = 7 srno = w_hdr_counter.

PERFORM bdc_field USING 'EKKO-EKGRP'

wa_hdr1-value. "'dce'. Purchase Group

READ TABLE wa_hdr1 WITH KEY col = 8 srno = w_hdr_counter.

PERFORM bdc_field USING 'RM06E-EPSTP'

wa_hdr1-value. "'d'. Item Category

READ TABLE wa_hdr1 WITH KEY col = 9 srno = w_hdr_counter.

PERFORM bdc_field USING 'RM06E-KNTTP'

wa_hdr1-value. "'p'. Account Asign Category

READ TABLE wa_hdr1 WITH KEY col = 10 srno = w_hdr_counter.

PERFORM bdc_field USING 'RM06E-WERKS'

wa_hdr1-value. "'1001'.Plant

READ TABLE wa_hdr1 WITH KEY col = 11 srno = w_hdr_counter.

PERFORM bdc_field USING 'RM06E-LGORT'

wa_hdr1-value. " '1101'. Store Location

READ TABLE wa_hdr1 WITH KEY col = 12 srno = w_hdr_counter.

PERFORM bdc_field USING 'RM06E-MATKL'

wa_hdr1-value. "'c003'. Material Group

PERFORM bdc_dynpro USING 'SAPLMLSP' '0200'.

PERFORM bdc_field USING 'BDC_OKCODE'

'/00'.

********************end of Header Data*******************

data i type n value 1.

data bfield type string.

LOOP AT wa_line1 WHERE col = 1 AND srno = wa_hdr1-srno.

READ TABLE wa_line2 WITH KEY COL = 14 SRNO = wa_hdr1-srno ROW = wa_line1-ROW.

PERFORM bdc_field USING 'RM11P-HEADTEXT'

wa_line2-value. " 'Earthwork text'.

concatenate 'ESLL-SRVPOS(' i ')' into bfield.

PERFORM bdc_field USING 'BDC_CURSOR'

bfield. " 'ESLL-SRVPOS(01)'. "increase counter

  • PERFORM bdc_field USING 'RM11P-NEW_ROW'

  • '10'.

READ TABLE wa_line2 WITH KEY COL = 15 SRNO = wa_hdr1-srno ROW = wa_line1-ROW.

PERFORM bdc_field USING bfield "'ESLL-SRVPOS(01)'

wa_line2-value. "'5000000000'.

concatenate 'ESLL-MENGE(' i ')' into bfield.

READ TABLE wa_line2 WITH KEY COL = 16 SRNO = wa_hdr1-srno ROW = wa_line1-ROW.

PERFORM bdc_field USING bfield "'ESLL-MENGE(01)' "qty

wa_line2-value. "'15'.

concatenate 'ESLL-MEINS(' i ')' into bfield.

READ TABLE wa_line2 WITH KEY COL = 17 SRNO = wa_hdr1-srno ROW = wa_line1-ROW.

PERFORM bdc_field USING bfield "'ESLL-MEINS(01)'

wa_line2-value. "'ft3'.

concatenate 'ESLL-TBTWR(' i ')' into bfield.

READ TABLE wa_line2 WITH KEY COL = 18 SRNO = wa_hdr1-srno ROW = wa_line1-ROW.

PERFORM bdc_field USING bfield " 'ESLL-TBTWR(01)'

wa_line2-value. "'150'.

PERFORM bdc_field USING 'BDC_OKCODE' "Manually added

'/00'.

PERFORM bdc_dynpro USING 'SAPLMLSK' '0200'.

concatenate 'ESKN-PS_PSP_PNR' i ')' into bfield.

PERFORM bdc_field USING 'BDC_CURSOR'

'ESKN-PS_PSP_PNR(01)'.

PERFORM bdc_field USING 'BDC_OKCODE'

'/00'.

PERFORM bdc_field USING 'VRTKZ1'

'X'.

concatenate 'ESKN-SAKTO(' i ')' into bfield.

READ TABLE wa_line2 WITH KEY COL = 19 SRNO = wa_hdr1-srno ROW = wa_line1-ROW.

PERFORM bdc_field USING 'ESKN-SAKTO(01)' "GL Account No.

wa_line2-value. " '6010010'.

concatenate 'ESKN-PS_PSP_PNR(' i ')' into bfield.

READ TABLE wa_line2 WITH KEY COL = 20 SRNO = wa_hdr1-srno ROW = wa_line1-ROW.

PERFORM bdc_field USING 'ESKN-PS_PSP_PNR(01)'

wa_line2-value. " 'HR/KMP-KU'. "WBS Element

PERFORM bdc_dynpro USING 'SAPLMLSK' '0200'.

PERFORM bdc_field USING 'BDC_CURSOR'

'ESLL-INTROW'.

PERFORM bdc_field USING 'BDC_OKCODE'

'=BACK'.

PERFORM bdc_field USING 'VRTKZ1'

'X'.

PERFORM bdc_dynpro USING 'SAPLMLSP' '0200'.

i = i + 1.

ENDLOOP.

  • PERFORM bdc_field USING 'BDC_OKCODE'

  • '=BACK'.

  • PERFORM bdc_field USING 'VRTKZ1'

  • 'X'.

  • PERFORM bdc_dynpro USING 'SAPLMLSP' '0200'.

PERFORM bdc_field USING 'BDC_OKCODE'

'/00'.

*perform bdc_field using 'RM11P-HEADTEXT'

  • 'Earthwork text'.

*perform bdc_field using 'BDC_CURSOR' "Start Service Line 2

  • 'ESLL-SRVPOS(02)'.

*perform bdc_field using 'RM11P-NEW_ROW'

  • '10'.

*perform bdc_field using 'ESLL-SRVPOS(02)'

  • '5000000006'.

*perform bdc_field using 'ESLL-MENGE(02)'

  • '10'.

*perform bdc_field using 'ESLL-MEINS(02)'

  • 'kmk'.

*perform bdc_field using 'ESLL-TBTWR(02)'

  • '500'.

*perform bdc_dynpro using 'SAPLMLSK' '0200'.

*perform bdc_field using 'BDC_CURSOR'

  • 'ESLL-INTROW'.

*perform bdc_field using 'BDC_OKCODE'

  • '/00'.

*perform bdc_field using 'VRTKZ1'

  • 'X'.

*perform bdc_dynpro using 'SAPLMLSK' '0200'.

*perform bdc_field using 'BDC_CURSOR'

  • 'ESKN-PS_PSP_PNR(01)'.

*perform bdc_field using 'BDC_OKCODE'

  • '/00'.

*perform bdc_field using 'VRTKZ1'

  • 'X'.

*perform bdc_field using 'ESKN-SAKTO(01)'

  • '6010010'.

*perform bdc_field using 'ESKN-PS_PSP_PNR(01)'

  • 'HR/KMP-KU'.

*perform bdc_dynpro using 'SAPLMLSK' '0200'.

*perform bdc_field using 'BDC_CURSOR'

  • 'ESLL-INTROW'.

*perform bdc_field using 'BDC_OKCODE'

  • '=BACK'.

*perform bdc_field using 'VRTKZ1'

  • 'X'.

*perform bdc_dynpro using 'SAPLMLSP' '0200'.

*perform bdc_field using 'BDC_OKCODE'

  • '/00'.

*perform bdc_field using 'RM11P-HEADTEXT'

  • 'Earthwork text'.

*perform bdc_field using 'BDC_CURSOR'

  • 'ESLL-KTEXT1(01)'.

*perform bdc_field using 'RM11P-NEW_ROW'

  • '10'.

*perform bdc_dynpro using 'SAPLMLSP' '0200'.

*perform bdc_field using 'BDC_OKCODE'

  • '=ESB'.

*perform bdc_field using 'RM11P-HEADTEXT'

  • 'Earthwork text'.

*perform bdc_field using 'BDC_CURSOR'

  • 'ESLL-KTEXT1(01)'.

*perform bdc_field using 'RM11P-NEW_ROW'

  • '10'.

*perform bdc_dynpro using 'SAPMM06E' '0120'.

*perform bdc_field using 'BDC_CURSOR'

  • 'RM06E-EBELP'.

*perform bdc_field using 'BDC_OKCODE'

  • '=MALL'.

*perform bdc_field using 'RM06E-EBELP'

  • '10'.

PERFORM bdc_dynpro USING 'SAPMM06E' '0120'.

PERFORM bdc_field USING 'BDC_CURSOR'

'RM06E-EBELP'.

PERFORM bdc_field USING 'BDC_OKCODE'

'=KOPF'.

  • PERFORM bdc_field USING 'RM06E-EBELP'

  • '10'.

PERFORM bdc_dynpro USING 'SAPMM06E' '0101'.

PERFORM bdc_field USING 'BDC_CURSOR'

'EKKO-EKGRP'.

PERFORM bdc_field USING 'BDC_OKCODE'

'=TXK'.

*perform bdc_field using 'EKKO-EKGRP'

  • 'DCE'.

*perform bdc_field using 'EKKO-PINCR'

  • '10'.

*perform bdc_field using 'EKKO-UPINC'

  • '1'.

*perform bdc_field using 'EKKO-WAERS'

  • 'INR'.

*perform bdc_field using 'EKKO-WKURS'

  • ' 1.00000'.

PERFORM bdc_dynpro USING 'SAPMM06E' '0103'.

PERFORM bdc_field USING 'BDC_CURSOR'

'RM06E-LTEX1(01)'.

PERFORM bdc_field USING 'BDC_OKCODE'

'=BU'.

PERFORM bdc_field USING 'RM06E-LTEX1(01)'

'Old PO no.'.

*perform bdc_transaction using 'ME21'.

w_hdr_counter = w_hdr_counter + 1.

ENDWHILE.

CALL TRANSACTION 'ME21' USING bdcdata MODE 'A'.

PERFORM close_group.

***************forms************

FORM upload_file.

CALL FUNCTION 'WS_FILENAME_GET'

EXPORTING

*def_filename = ' '

*def_path = ' '

*mask = ' '

mode = '0'

title = 'Choose the Appropriate excel sheet for service PO upload'

IMPORTING

filename = dataset

*EXCEPTIONS

*inv_winsys = 01

*no_batch = 02

*selection_cancel = 03

*selection_error = 04

.

l_file = dataset.

PERFORM read_exceldata.

ENDFORM. "UPLOAD_FILE

&----


*& Form READ_EXCELDATA

&----


  • text

----


FORM read_exceldata.

CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'

EXPORTING

filename = l_file

i_begin_col = 1

i_begin_row = 2

i_end_col = 25

i_end_row = 4

TABLES

intern = i_tab

  • EXCEPTIONS

  • INCONSISTENT_PARAMETERS = 1

  • UPLOAD_OLE = 2

  • OTHERS = 3

.

ENDFORM. "READ_EXCELDATA

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

----


----


  • create batchinput session *

  • (not for call transaction using...) *

----


FORM open_group.

IF session = 'X'.

SKIP.

WRITE: /(20) 'Create group'(i01), group.

SKIP.

  • open batchinput group

CALL FUNCTION 'BDC_OPEN_GROUP'

EXPORTING

client = sy-mandt

group = group

user = user

keep = keep

holddate = holddate.

WRITE: /(30) 'BDC_OPEN_GROUP'(i02),

(12) 'returncode:'(i05),

sy-subrc.

ENDIF.

ENDFORM. "OPEN_GROUP

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

----


  • end batchinput session *

  • (call transaction using...: error session) *

----


FORM close_group.

IF session = 'X'.

  • close batchinput group

CALL FUNCTION 'BDC_CLOSE_GROUP'.

WRITE: /(30) 'BDC_CLOSE_GROUP'(i04),

(12) 'returncode:'(i05),

sy-subrc.

ELSE.

IF e_group_opened = 'X'.

CALL FUNCTION 'BDC_CLOSE_GROUP'.

WRITE: /.

WRITE: /(30) 'Fehlermappe wurde erzeugt'(i06).

e_group_opened = ' '.

ENDIF.

ENDIF.

ENDFORM. "CLOSE_GROUP

----


&----


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

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

****bdc field************

FORM bdc_field USING fnam fval.

  • IF FVAL <> NODATA.

CLEAR bdcdata.

bdcdata-fnam = fnam.

bdcdata-fval = fval.

APPEND bdcdata.

  • ENDIF.

ENDFORM. "BDC_FIELD

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

FORM process_itab.

APPEND LINES OF i_tab TO wa_hdr .

DELETE wa_hdr WHERE col > 13 .

APPEND LINES OF i_tab TO wa_line .

DELETE wa_line WHERE col <> 1 AND col < 14 .

DATA : w_sr TYPE i.

w_sr = 0.

LOOP AT wa_hdr.

IF wa_hdr-col = 1.

w_sr = wa_hdr-value.

ENDIF.

wa_hdr1-row = wa_hdr-row.

wa_hdr1-col = wa_hdr-col.

wa_hdr1-value = wa_hdr-value.

wa_hdr1-srno = w_sr.

APPEND wa_hdr1.

w_cnt = wa_hdr-row.

ENDLOOP.

w_sr = 0.

LOOP AT wa_line.

IF wa_line-col = 1.

w_sr = wa_line-value.

ENDIF.

wa_line1-row = wa_line-row.

wa_line1-col = wa_line-col.

wa_line1-value = wa_line-value.

wa_line1-srno = w_sr.

APPEND wa_line1.

ENDLOOP.

w_sr = 0.

CLEAR wa_line2.

LOOP AT wa_line1.

wa_line2-row = wa_line1-row.

wa_line2-col = wa_line1-col.

wa_line2-value = wa_line1-value.

wa_line2-srno = wa_line1-srno.

APPEND wa_line2.

ENDLOOP.

ENDFORM. "PROCESS_ITAB

***************forms************

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
2,605

Hi Pradeep

I find there is a problem in your code

When ever you use

PERFORM bdc_field USING 'BDC_OKCODE'

you should follow it up with

PERFORM bdc_dynpro USING <prg name> <screen number>

Please find code below with changes from a part of your code


PERFORM bdc_field USING 'RM06E-MATKL'
wa_hdr1-value. "'c003'. Material Group
* comment this statement is not needed now.
* PERFORM bdc_dynpro USING 'SAPLMLSP' '0200'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.


READ TABLE wa_line2 WITH KEY COL = 14 SRNO = wa_hdr1-srno ROW = wa_line1-ROW.
* Put the bdc_dynpro for the prg name and screen number (I might be wrong with prg name and 
* Screen  number
PERFORM bdc_dynpro USING 'SAPLMLSK' '0200'.

Reward points as this will definitely help you

Edited by: Sriram Chandran on Mar 15, 2008 4:39 PM

I m creating a BDC Programme for uploading OLD PO date from excel to SAP System.

All PO's are Service PO.

PO's date and Delivery Date is in back date.

My programme working fine.

But i have to press enter manually due to PO Date = back date and Delivery date is also back date.

SHDB unable to record this event.

How to record this event.

Is there any way to disable system messages during BDC Programme.

When I press enter two times my programme runs very well.

Kindly help me.

Its very much urgent.

Code is give below.

REPORT zbdcme21n

NO STANDARD PAGE HEADING LINE-SIZE 255.

DATA : l_file TYPE rlgrap-filename.

DATA: e_group_opened.

PARAMETERS session RADIOBUTTON GROUP ctu. "create session

*DATA : session RADIOBUTTON GROUP ctu.

DATA : group(12). "group name of session

group = 'BDC'.

*PARAMETERS: user(12) DEFAULT sy-uname. "user for session in batch

DATA : user(12).

user = sy-uname.

*DATA : keep AS CHECKBOX. "' ' = delete session if finished

DATA : keep TYPE checkbox.

keep = 'X'.

*PARAMETERS: holddate LIKE sy-datum. "'X' = keep session if finished

DATA : holddate LIKE sy-datum.

holddate = sy-datum.

PARAMETERS ctu RADIOBUTTON GROUP ctu. "call transaction

DATA: bdcdata LIKE bdcdata OCCURS 0 WITH HEADER LINE.

DATA : BEGIN OF i_tab OCCURS 0, "excel data stored in this file.

row TYPE alsmex_tabline-row,

col TYPE alsmex_tabline-col,

value TYPE alsmex_tabline-value,

END OF i_tab.

DATA : BEGIN OF wa_line1 OCCURS 0, "excel data stored in this file.

row TYPE alsmex_tabline-row,

col TYPE alsmex_tabline-col,

value TYPE alsmex_tabline-value,

srno TYPE i,

END OF wa_line1.

DATA : wa_line2 LIKE wa_line1 OCCURS 0 WITH HEADER LINE .

DATA : wa_hdr1 LIKE wa_line1 OCCURS 0 WITH HEADER LINE .

DATA : wa_hdr LIKE i_tab OCCURS 0 WITH HEADER LINE .

DATA : wa_line LIKE i_tab OCCURS 0 WITH HEADER LINE .

DATA : w_cnt TYPE i . "store total no of pos

DATA : w_hdr_counter VALUE 1. "for header line count

DATA : w_line_counter VALUE 1. "for Line Item Counter.

w_cnt = 0.

SELECTION-SCREEN: BEGIN OF BLOCK b1 WITH FRAME TITLE text-000.

PARAMETER: dataset TYPE rlgrap-filename OBLIGATORY.

SELECTION-SCREEN: END OF BLOCK b1.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR dataset.

PERFORM upload_file.

*include bdcrecx1.

START-OF-SELECTION.

PERFORM process_itab.

*include bdcrecx1.

START-OF-SELECTION.

PERFORM open_group.

**********************start for header

w_hdr_counter = 1.

WHILE w_hdr_counter <= w_cnt.

PERFORM bdc_dynpro USING 'SAPMM06E' '0100'.

PERFORM bdc_field USING 'BDC_CURSOR'

'RM06E-BEDAT'.

PERFORM bdc_field USING 'BDC_OKCODE'

'/00'.

READ TABLE wa_hdr1 WITH KEY col = 2 srno = w_hdr_counter.

PERFORM bdc_field USING 'EKKO-LIFNR'

wa_hdr1-value. "'800000'.

READ TABLE wa_hdr1 WITH KEY col = 3 srno = w_hdr_counter.

PERFORM bdc_field USING 'RM06E-BSART'

wa_hdr1-value. "'ZS'.

READ TABLE wa_hdr1 WITH KEY col = 4 srno = w_hdr_counter.

PERFORM bdc_field USING 'RM06E-BEDAT'

wa_hdr1-value. " '14.01.2008'.

  • PERFORM bdc_field USING 'RM06E-LPEIN'

  • 'T'.

READ TABLE wa_hdr1 WITH KEY col = 13 srno = w_hdr_counter.

PERFORM bdc_field USING 'RM06E-EEIND'

wa_hdr1-value. "'14.01.2008'. "Delivery Date

PERFORM bdc_field USING 'RM06E-LPEIN'

'T'.

READ TABLE wa_hdr1 WITH KEY col = 6 srno = w_hdr_counter.

PERFORM bdc_field USING 'EKKO-EKORG'

wa_hdr1-value. "'serv'.

READ TABLE wa_hdr1 WITH KEY col = 7 srno = w_hdr_counter.

PERFORM bdc_field USING 'EKKO-EKGRP'

wa_hdr1-value. "'dce'. Purchase Group

READ TABLE wa_hdr1 WITH KEY col = 8 srno = w_hdr_counter.

PERFORM bdc_field USING 'RM06E-EPSTP'

wa_hdr1-value. "'d'. Item Category

READ TABLE wa_hdr1 WITH KEY col = 9 srno = w_hdr_counter.

PERFORM bdc_field USING 'RM06E-KNTTP'

wa_hdr1-value. "'p'. Account Asign Category

READ TABLE wa_hdr1 WITH KEY col = 10 srno = w_hdr_counter.

PERFORM bdc_field USING 'RM06E-WERKS'

wa_hdr1-value. "'1001'.Plant

READ TABLE wa_hdr1 WITH KEY col = 11 srno = w_hdr_counter.

PERFORM bdc_field USING 'RM06E-LGORT'

wa_hdr1-value. " '1101'. Store Location

READ TABLE wa_hdr1 WITH KEY col = 12 srno = w_hdr_counter.

PERFORM bdc_field USING 'RM06E-MATKL'

wa_hdr1-value. "'c003'. Material Group

PERFORM bdc_dynpro USING 'SAPLMLSP' '0200'.

PERFORM bdc_field USING 'BDC_OKCODE'

'/00'.

********************end of Header Data*******************

data i type n value 1.

data bfield type string.

LOOP AT wa_line1 WHERE col = 1 AND srno = wa_hdr1-srno.

READ TABLE wa_line2 WITH KEY COL = 14 SRNO = wa_hdr1-srno ROW = wa_line1-ROW.

PERFORM bdc_field USING 'RM11P-HEADTEXT'

wa_line2-value. " 'Earthwork text'.

concatenate 'ESLL-SRVPOS(' i ')' into bfield.

PERFORM bdc_field USING 'BDC_CURSOR'

bfield. " 'ESLL-SRVPOS(01)'. "increase counter

  • PERFORM bdc_field USING 'RM11P-NEW_ROW'

  • '10'.

READ TABLE wa_line2 WITH KEY COL = 15 SRNO = wa_hdr1-srno ROW = wa_line1-ROW.

PERFORM bdc_field USING bfield "'ESLL-SRVPOS(01)'

wa_line2-value. "'5000000000'.

concatenate 'ESLL-MENGE(' i ')' into bfield.

READ TABLE wa_line2 WITH KEY COL = 16 SRNO = wa_hdr1-srno ROW = wa_line1-ROW.

PERFORM bdc_field USING bfield "'ESLL-MENGE(01)' "qty

wa_line2-value. "'15'.

concatenate 'ESLL-MEINS(' i ')' into bfield.

READ TABLE wa_line2 WITH KEY COL = 17 SRNO = wa_hdr1-srno ROW = wa_line1-ROW.

PERFORM bdc_field USING bfield "'ESLL-MEINS(01)'

wa_line2-value. "'ft3'.

concatenate 'ESLL-TBTWR(' i ')' into bfield.

READ TABLE wa_line2 WITH KEY COL = 18 SRNO = wa_hdr1-srno ROW = wa_line1-ROW.

PERFORM bdc_field USING bfield " 'ESLL-TBTWR(01)'

wa_line2-value. "'150'.

PERFORM bdc_field USING 'BDC_OKCODE' "Manually added

'/00'.

PERFORM bdc_dynpro USING 'SAPLMLSK' '0200'.

concatenate 'ESKN-PS_PSP_PNR' i ')' into bfield.

PERFORM bdc_field USING 'BDC_CURSOR'

'ESKN-PS_PSP_PNR(01)'.

PERFORM bdc_field USING 'BDC_OKCODE'

'/00'.

PERFORM bdc_field USING 'VRTKZ1'

'X'.

concatenate 'ESKN-SAKTO(' i ')' into bfield.

READ TABLE wa_line2 WITH KEY COL = 19 SRNO = wa_hdr1-srno ROW = wa_line1-ROW.

PERFORM bdc_field USING 'ESKN-SAKTO(01)' "GL Account No.

wa_line2-value. " '6010010'.

concatenate 'ESKN-PS_PSP_PNR(' i ')' into bfield.

READ TABLE wa_line2 WITH KEY COL = 20 SRNO = wa_hdr1-srno ROW = wa_line1-ROW.

PERFORM bdc_field USING 'ESKN-PS_PSP_PNR(01)'

wa_line2-value. " 'HR/KMP-KU'. "WBS Element

PERFORM bdc_dynpro USING 'SAPLMLSK' '0200'.

PERFORM bdc_field USING 'BDC_CURSOR'

'ESLL-INTROW'.

PERFORM bdc_field USING 'BDC_OKCODE'

'=BACK'.

PERFORM bdc_field USING 'VRTKZ1'

'X'.

PERFORM bdc_dynpro USING 'SAPLMLSP' '0200'.

i = i + 1.

ENDLOOP.

  • PERFORM bdc_field USING 'BDC_OKCODE'

  • '=BACK'.

  • PERFORM bdc_field USING 'VRTKZ1'

  • 'X'.

  • PERFORM bdc_dynpro USING 'SAPLMLSP' '0200'.

PERFORM bdc_field USING 'BDC_OKCODE'

'/00'.

*perform bdc_field using 'RM11P-HEADTEXT'

  • 'Earthwork text'.

*perform bdc_field using 'BDC_CURSOR' "Start Service Line 2

  • 'ESLL-SRVPOS(02)'.

*perform bdc_field using 'RM11P-NEW_ROW'

  • '10'.

*perform bdc_field using 'ESLL-SRVPOS(02)'

  • '5000000006'.

*perform bdc_field using 'ESLL-MENGE(02)'

  • '10'.

*perform bdc_field using 'ESLL-MEINS(02)'

  • 'kmk'.

*perform bdc_field using 'ESLL-TBTWR(02)'

  • '500'.

*perform bdc_dynpro using 'SAPLMLSK' '0200'.

*perform bdc_field using 'BDC_CURSOR'

  • 'ESLL-INTROW'.

*perform bdc_field using 'BDC_OKCODE'

  • '/00'.

*perform bdc_field using 'VRTKZ1'

  • 'X'.

*perform bdc_dynpro using 'SAPLMLSK' '0200'.

*perform bdc_field using 'BDC_CURSOR'

  • 'ESKN-PS_PSP_PNR(01)'.

*perform bdc_field using 'BDC_OKCODE'

  • '/00'.

*perform bdc_field using 'VRTKZ1'

  • 'X'.

*perform bdc_field using 'ESKN-SAKTO(01)'

  • '6010010'.

*perform bdc_field using 'ESKN-PS_PSP_PNR(01)'

  • 'HR/KMP-KU'.

*perform bdc_dynpro using 'SAPLMLSK' '0200'.

*perform bdc_field using 'BDC_CURSOR'

  • 'ESLL-INTROW'.

*perform bdc_field using 'BDC_OKCODE'

  • '=BACK'.

*perform bdc_field using 'VRTKZ1'

  • 'X'.

*perform bdc_dynpro using 'SAPLMLSP' '0200'.

*perform bdc_field using 'BDC_OKCODE'

  • '/00'.

*perform bdc_field using 'RM11P-HEADTEXT'

  • 'Earthwork text'.

*perform bdc_field using 'BDC_CURSOR'

  • 'ESLL-KTEXT1(01)'.

*perform bdc_field using 'RM11P-NEW_ROW'

  • '10'.

*perform bdc_dynpro using 'SAPLMLSP' '0200'.

*perform bdc_field using 'BDC_OKCODE'

  • '=ESB'.

*perform bdc_field using 'RM11P-HEADTEXT'

  • 'Earthwork text'.

*perform bdc_field using 'BDC_CURSOR'

  • 'ESLL-KTEXT1(01)'.

*perform bdc_field using 'RM11P-NEW_ROW'

  • '10'.

*perform bdc_dynpro using 'SAPMM06E' '0120'.

*perform bdc_field using 'BDC_CURSOR'

  • 'RM06E-EBELP'.

*perform bdc_field using 'BDC_OKCODE'

  • '=MALL'.

*perform bdc_field using 'RM06E-EBELP'

  • '10'.

PERFORM bdc_dynpro USING 'SAPMM06E' '0120'.

PERFORM bdc_field USING 'BDC_CURSOR'

'RM06E-EBELP'.

PERFORM bdc_field USING 'BDC_OKCODE'

'=KOPF'.

  • PERFORM bdc_field USING 'RM06E-EBELP'

  • '10'.

PERFORM bdc_dynpro USING 'SAPMM06E' '0101'.

PERFORM bdc_field USING 'BDC_CURSOR'

'EKKO-EKGRP'.

PERFORM bdc_field USING 'BDC_OKCODE'

'=TXK'.

*perform bdc_field using 'EKKO-EKGRP'

  • 'DCE'.

*perform bdc_field using 'EKKO-PINCR'

  • '10'.

*perform bdc_field using 'EKKO-UPINC'

  • '1'.

*perform bdc_field using 'EKKO-WAERS'

  • 'INR'.

*perform bdc_field using 'EKKO-WKURS'

  • ' 1.00000'.

PERFORM bdc_dynpro USING 'SAPMM06E' '0103'.

PERFORM bdc_field USING 'BDC_CURSOR'

'RM06E-LTEX1(01)'.

PERFORM bdc_field USING 'BDC_OKCODE'

'=BU'.

PERFORM bdc_field USING 'RM06E-LTEX1(01)'

'Old PO no.'.

*perform bdc_transaction using 'ME21'.

w_hdr_counter = w_hdr_counter + 1.

ENDWHILE.

CALL TRANSACTION 'ME21' USING bdcdata MODE 'A'.

PERFORM close_group.

***************forms************

FORM upload_file.

CALL FUNCTION 'WS_FILENAME_GET'

EXPORTING

*def_filename = ' '

*def_path = ' '

*mask = ' '

mode = '0'

title = 'Choose the Appropriate excel sheet for service PO upload'

IMPORTING

filename = dataset

*EXCEPTIONS

*inv_winsys = 01

*no_batch = 02

*selection_cancel = 03

*selection_error = 04

.

l_file = dataset.

PERFORM read_exceldata.

ENDFORM. "UPLOAD_FILE

&----


*& Form READ_EXCELDATA

&----


  • text

----


FORM read_exceldata.

CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'

EXPORTING

filename = l_file

i_begin_col = 1

i_begin_row = 2

i_end_col = 25

i_end_row = 4

TABLES

intern = i_tab

  • EXCEPTIONS

  • INCONSISTENT_PARAMETERS = 1

  • UPLOAD_OLE = 2

  • OTHERS = 3

.

ENDFORM. "READ_EXCELDATA

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

----


----


  • create batchinput session *

  • (not for call transaction using...) *

----


FORM open_group.

IF session = 'X'.

SKIP.

WRITE: /(20) 'Create group'(i01), group.

SKIP.

  • open batchinput group

CALL FUNCTION 'BDC_OPEN_GROUP'

EXPORTING

client = sy-mandt

group = group

user = user

keep = keep

holddate = holddate.

WRITE: /(30) 'BDC_OPEN_GROUP'(i02),

(12) 'returncode:'(i05),

sy-subrc.

ENDIF.

ENDFORM. "OPEN_GROUP

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

----


  • end batchinput session *

  • (call transaction using...: error session) *

----


FORM close_group.

IF session = 'X'.

  • close batchinput group

CALL FUNCTION 'BDC_CLOSE_GROUP'.

WRITE: /(30) 'BDC_CLOSE_GROUP'(i04),

(12) 'returncode:'(i05),

sy-subrc.

ELSE.

IF e_group_opened = 'X'.

CALL FUNCTION 'BDC_CLOSE_GROUP'.

WRITE: /.

WRITE: /(30) 'Fehlermappe wurde erzeugt'(i06).

e_group_opened = ' '.

ENDIF.

ENDIF.

ENDFORM. "CLOSE_GROUP

----


&----


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

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

****bdc field************

FORM bdc_field USING fnam fval.

  • IF FVAL <> NODATA.

CLEAR bdcdata.

bdcdata-fnam = fnam.

bdcdata-fval = fval.

APPEND bdcdata.

  • ENDIF.

ENDFORM. "BDC_FIELD

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

FORM process_itab.

APPEND LINES OF i_tab TO wa_hdr .

DELETE wa_hdr WHERE col > 13 .

APPEND LINES OF i_tab TO wa_line .

DELETE wa_line WHERE col <> 1 AND col < 14 .

DATA : w_sr TYPE i.

w_sr = 0.

LOOP AT wa_hdr.

IF wa_hdr-col = 1.

w_sr = wa_hdr-value.

ENDIF.

wa_hdr1-row = wa_hdr-row.

wa_hdr1-col = wa_hdr-col.

wa_hdr1-value = wa_hdr-value.

wa_hdr1-srno = w_sr.

APPEND wa_hdr1.

w_cnt = wa_hdr-row.

ENDLOOP.

w_sr = 0.

LOOP AT wa_line.

IF wa_line-col = 1.

w_sr = wa_line-value.

ENDIF.

wa_line1-row = wa_line-row.

wa_line1-col = wa_line-col.

wa_line1-value = wa_line-value.

wa_line1-srno = w_sr.

APPEND wa_line1.

ENDLOOP.

w_sr = 0.

CLEAR wa_line2.

LOOP AT wa_line1.

wa_line2-row = wa_line1-row.

wa_line2-col = wa_line1-col.

wa_line2-value = wa_line1-value.

wa_line2-srno = wa_line1-srno.

APPEND wa_line2.

ENDLOOP.

ENDFORM. "PROCESS_ITAB

***************forms************

8 REPLIES 8
Read only

vinod_vemuru2
Active Contributor
0 Likes
2,605

Hi,

Try explicitly coding bdc ok code for enter in appropriate places.(i.e. the place where u need to press the enter)

Check this OK codes: /00 and =ENTR.

In most of the transactions OK code for enter will be /00.

Also try prosessing ur session in back ground mode. Ideally this will take care of messages.

Thanks,

Vinod.

Read only

0 Likes
2,605

Should I also have to run

PERFORM bdc_dynpro USING 'SAPLMLSP' '0200'.

before manually creating OK code.

Is there any way to disable system message/Warning or igore system message/Warnings in BDC Programme.

Read only

0 Likes
2,605

Warning message will not affect your update in BDC. It will go through and update database.

Do not worry about passing "Enter OK COde"

Read only

0 Likes
2,605

It is not updating database.

i tried with mode N and A.

Read only

Former Member
0 Likes
2,605

As suggested by other gentleman try =ENTR

But there is more possiblity of something wrong in the code.

Please check in Foreground processing

Also, to check your code, it is very difficult for us to read.

Please remove commented code lines.

Enclose your code within ""

It will improve the readablity of your code

Read only

Former Member
0 Likes
2,606

Hi Pradeep

I find there is a problem in your code

When ever you use

PERFORM bdc_field USING 'BDC_OKCODE'

you should follow it up with

PERFORM bdc_dynpro USING <prg name> <screen number>

Please find code below with changes from a part of your code


PERFORM bdc_field USING 'RM06E-MATKL'
wa_hdr1-value. "'c003'. Material Group
* comment this statement is not needed now.
* PERFORM bdc_dynpro USING 'SAPLMLSP' '0200'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.


READ TABLE wa_line2 WITH KEY COL = 14 SRNO = wa_hdr1-srno ROW = wa_line1-ROW.
* Put the bdc_dynpro for the prg name and screen number (I might be wrong with prg name and 
* Screen  number
PERFORM bdc_dynpro USING 'SAPLMLSK' '0200'.

Reward points as this will definitely help you

Edited by: Sriram Chandran on Mar 15, 2008 4:39 PM

Read only

0 Likes
2,605

I tried but it is not working.

I also manually created

PERFORM bdc_dynpro USING 'SAPLMLSP' '0200'.

PERFORM bdc_field USING 'BDC_OKCODE'

'/00'.

but it is not working.

Read only

0 Likes
2,605

Hi Pradeep,

First check whether u coded this in all the required places. If yes then go in all screens display mode and check whether u are getting /00 in the popup(for OK codes). I think there is some problem with the flow of BDC logic. Just create one more recording and recheck every thing is fine with ur code.

Did u tried processing ur recording whcih u used for coding?

It it updating the data base?

Thnaks,

Vinod.

Edited by: Vinod Kumar Vemuru on Mar 17, 2008 11:48 AM