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 PROBLEM

Former Member
0 Likes
732

Hi Friends,

i am writing a prg for T.CODE MB1A.IN RECORDING PROCESS.

IN SUBROUTINE .. ITS GIVING ERROR.

I AM MENTIONED THE CODE HERE.

PLS. ANY ONE COREECT ANS SEND ME PROPER CODE.

HELP ME.

DATA : BEGIN OF IT_BDCDATA OCCURS 0.

INCLUDE STRUCTURE BDCDATA.

DATA : END OF IT_BDCDATA.

DATA : BEGIN OF IT_MESSTAB OCCURS 0.

INCLUDE STRUCTURE BDCMSGCOLL.

DATA : END OF IT_MESSTAB.

DATA : V_ERFMG(17),

v_mode TYPE c VALUE 'N',

v_update TYPE c VALUE 'S'.

DATA : BEGIN OF IT_ITAB OCCURS 0,

STR(250),

END OF IT_ITAB.

DATA : BEGIN OF it_final OCCURS 0,

WERKS TYPE MSEG-WERKS,

LGORT TYPE MSEG-LGORT,

MATNR TYPE MSEG-MATNR,

V_ERFMG,

CHARG TYPE MSEG-CHARG,

END OF it_final.

DATA : BEGIN OF it_error OCCURS 0,

WERKS TYPE MSEG-WERKS,

LGORT TYPE MSEG-LGORT,

MATNR TYPE MSEG-MATNR,

V_ERFMG,

CHARG TYPE MSEG-CHARG,

message(80) type c,

END OF it_error.

data dir2 type string.

PARAMETERS : dir1(50) TYPE c.

dir2 = dir1.

CONSTANTS:c_movement like RM07M-BWARTWA value '551',

c_tcode TYPE tstc-tcode VALUE 'MB1A'.

CALL FUNCTION 'GUI_UPLOAD'

EXPORTING

FILENAME = dir2 "'C:\order.txt'

FILETYPE = 'ASC'

HAS_FIELD_SEPARATOR = 'X'

TABLES

DATA_TAB = IT_ITAB.

LOOP AT IT_ITAB.

SPLIT IT_ITAB AT ',' INTO IT_FINAL-WERKS IT_FINAL-LGORT IT_FINAL-MATNR

IT_FINAL-V_ERFMG.

APPEND IT_FINAL.

ENDLOOP.

loop at it_final.

PERFORM BDC_DYNPRO USING :

'X' 'SAPMM07M' '0400',

* 'BDC_CURSOR' 'RM07M-BWARTWA',

* 'BDC_OKCODE' '/00',

'MKPF-BLDAT' sy-datum,

'MKPF-BUDAT' sy-datum,

'RM07M-BWARTWA' c_movement,

'RM07M-WERKS' it_final-werks,

'RM07M-LGORT' it_final-lgort,

'XFULL' 'X',

'RM07M-WVERS3' 'X',

'SAPMM07M' '0421' 'X' ,

* 'BDC_CURSOR' 'MSEG-CHARG(01)',

* 'BDC_OKCODE' '/00',

'MSEG-MATNR(01)' 'it_final-matnr',

'MSEG-ERFMG(01)' 'it_final-erfmg',

'MSEG-CHARG(01)' 'it_final-charg',

* 'BDC_SUBSCR' 'SAPMM07M',

* 'BDC_SUBSCR' 'SAPLKACB',

* 'DKACB-FMORE' 'X',

*

'SAPLKACB' '0002' 'X',

'BDC_OKCODE' '=ENTE',

'BDC_SUBSCR' 'SAPLKACB',

'SAPLKACB' '0002' 'X' ,

'BDC_OKCODE' '=ENTE',

'BDC_SUBSCR' 'SAPLKACB',

'SAPMM07M' '0421' 'X' ,

'BDC_CURSOR' 'MSEG-ERFMG(01)',

'BDC_OKCODE' '=BU',

'BDC_SUBSCR' 'SAPMM07M',

'BDC_SUBSCR' 'SAPLKACB',

'DKACB-FMORE' 'X',

'SAPLKACB' '0002' 'X'.

  • 'BDC_OKCODE' '=ENTE',

* 'BDC_SUBSCR' 'SAPLKACB'.

CALL TRANSACTION c_tcode USING it_bdcdata

MODE v_mode

UPDATE v_update

MESSAGES INTO it_messtab.

if sy-subrc <> 0.

PERFORM format_messages.

endif.

ENDLOOP.

&----


*& Form format_messages

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM format_messages.

DATA : v_msg(80).

CALL FUNCTION 'FORMAT_MESSAGE'

EXPORTING

id = it_messtab-msgid

lang = sy-langu

no = it_messtab-msgnr

v1 = it_messtab-msgv1

v2 = it_messtab-msgv2

v3 = it_messtab-msgv3

v4 = it_messtab-msgv4

IMPORTING

msg = v_msg

EXCEPTIONS

not_found = 1

OTHERS = 2.

IF sy-subrc = 0.

it_error-message = v_msg.

it_error-werks = it_final-werks.

it_error-lgort = it_final-lgort.

it_error-matnr = it_final-matnr.

it_error-v_erfmg = it_final-v_erfmg.

it_error-charg = it_final-charg.

append it_error.

clear it_error.

ENDIF.

CLEAR it_messtab.

CLEAR v_msg.

ENDFORM. " format_messages

&----


*& Form BDC_DYNPRO

&----


  • text

----


  • -->P_0176 text

  • -->P_0177 text

  • -->P_0178 text

----


FORM BDC_DYNPRO USING VALUE(P_0176)

VALUE(P_0177)

VALUE(P_0178).

*FORM BDC_DYNPRO USING program dynpro.

CLEAR IT_BDCDATA.

IT_BDCDATA-program = program.

IT_BDCDATA-dynpro = dynpro.

IT_BDCDATA-dynbegin = 'X'.

APPEND IT_BDCDATA.

CLEAR IT_BDCDATA.

ENDFORM. " BDC_DYNPRO

5 REPLIES 5
Read only

Former Member
0 Likes
691

What is the error ?

CALL TRANSACTION c_tcode USING it_bdcdata

MODE v_mode

UPDATE v_update

MESSAGES INTO it_messtab.

<b>refresh it_bdcdata.</b>

if sy-subrc <> 0.

PERFORM format_messages.

endif.

Use refresh after call transaction.

Thanks

Seshu

Read only

0 Likes
691

Hi Seshu,

the prg i have written , is perfectly right??

pls. reply me.

regards,

Read only

0 Likes
691

Hello Venu,

Looks like code is correct ( I am not sure about recording code).

Thanks

Seshu

Read only

0 Likes
691

Hi Seshu,

i am capturing the errors in internal table it_error..

but how to display?? can help me any code to display the ERROR RECORDS??

here is the code.

CALL FUNCTION 'FORMAT_MESSAGE'

EXPORTING

id = it_messtab-msgid

lang = sy-langu

no = it_messtab-msgnr

v1 = it_messtab-msgv1

v2 = it_messtab-msgv2

v3 = it_messtab-msgv3

v4 = it_messtab-msgv4

IMPORTING

msg = v_msg

EXCEPTIONS

not_found = 1

OTHERS = 2.

IF sy-subrc = 0.

it_error-message = v_msg.

it_error-werks = it_final-werks.

it_error-lgort = it_final-lgort.

it_error-matnr = it_final-matnr.

it_error-v_erfmg = it_final-erfmg.

it_error-charg = it_final-charg.

append it_error.

clear it_error.

ENDIF.

CLEAR it_messtab.

CLEAR v_msg.

REGARDS,

Read only

0 Likes
691

Hello Venu,

Note : You get log messages only when you run in 'N' Mode

loop at inT_ table.

  • BDC OK_CODES Here

Call transaction statement

CALL FUNCTION 'FORMAT_MESSAGE'

EXPORTING

id = it_messtab-msgid

lang = sy-langu

no = it_messtab-msgnr

v1 = it_messtab-msgv1

v2 = it_messtab-msgv2

v3 = it_messtab-msgv3

v4 = it_messtab-msgv4

IMPORTING

msg = v_msg

EXCEPTIONS

not_found = 1

OTHERS = 2.

IF sy-subrc = 0.

it_error-message = v_msg.

it_error-werks = it_final-werks.

it_error-lgort = it_final-lgort.

it_error-matnr = it_final-matnr.

it_error-v_erfmg = it_final-erfmg.

it_error-charg = it_final-charg.

append it_error.

clear it_error.

ENDIF.

CLEAR it_messtab.

CLEAR v_msg.

Endloop.

After loop :

loop at it_error.

write:/ it_error-fields.

endloop.

Thanks

Seshu