‎2007 Oct 24 7:41 PM
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
‎2007 Oct 24 7:46 PM
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
‎2007 Oct 24 8:53 PM
Hi Seshu,
the prg i have written , is perfectly right??
pls. reply me.
regards,
‎2007 Oct 24 8:55 PM
Hello Venu,
Looks like code is correct ( I am not sure about recording code).
Thanks
Seshu
‎2007 Oct 25 4:55 PM
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,
‎2007 Oct 25 5:01 PM
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