‎2007 Sep 17 3:31 AM
please send real time example of call transation and session method
‎2007 Sep 17 5:13 AM
hi,
this is for VK11 call transaction method..
report Zdemo.
no standard page heading line-size 255.
*include bdcrecx1.
TABLES : t100.
************************************************************************
Internal table declaration *
************************************************************************
DATA : BEGIN OF it_zrtm OCCURS 0,
index(4), "Index
kschl(4), "Condition type
REGIO(3), "region
matnr(18), "Material no
kbetr(11), "Rate
konwa(5), "Rate unit (currency or percentage)
krech(1), "Calculation type for condition
datab(10), "Validity start date
datbi(10), "Validity end date
er_message(100),
END OF it_zrtm.
************************************************************************
Internal table to get the error data *
************************************************************************
DATA : it_error LIKE it_zrtm OCCURS 0 WITH HEADER LINE.
DATA : bdcdata LIKE bdcdata OCCURS 0 WITH HEADER LINE.
DATA : i_msgtab LIKE bdcmsgcoll OCCURS 0 WITH HEADER LINE.
************************************************************************
Internal table to find the error from the legacy data *
************************************************************************
DATA : BEGIN OF it_erfind OCCURS 0,
index(4), "Index
er_message(100), "For Error Message
END OF it_erfind.
************************************************************************
Variables declaration *
************************************************************************
DATA : g_message(200),
time(10),
date(10) ,
v_error_filename LIKE rlgrap-filename.
date = sy-datum.
time = sy-uzeit.
************************************************************************
Initialization
************************************************************************
INITIALIZATION.
Generating Error file name with date and time.
PERFORM make_file_name.
************************************************************************
Selection Screen *
************************************************************************
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
PARAMETER: p_file LIKE ibipparms-path OBLIGATORY.
SELECTION-SCREEN SKIP.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(30) text-003.
SELECTION-SCREEN COMMENT 33(79) text-004.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN:END OF BLOCK b1.
************************************************************************
At Selection Screen *
************************************************************************
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file .
Creates f4 help to select the file
PERFORM get_filename.
************************************************************************
Start of selection *
************************************************************************
START-OF-SELECTION.
Uploads the file from legacy.
PERFORM upload_data.
Uploads to the database.
PERFORM fill_data.
************************************************************************
Start of selection *
************************************************************************
END-OF-SELECTION.
&----
*& Form fill_data
&----
text
----
FORM fill_data.
LOOP AT it_zrtm.
Start of Screen 1
perform bdc_dynpro using 'SAPMV13A' '0100'.
perform bdc_field using 'BDC_CURSOR'
'RV13A-KSCHL'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'RV13A-KSCHL'
it_zrtm-kschl.
perform bdc_dynpro using 'SAPLV14A' '0100'.
perform bdc_field using 'BDC_CURSOR'
'RV130-SELKZ(01)'.
perform bdc_field using 'BDC_OKCODE'
'=WEIT'.
perform bdc_dynpro using 'SAPMV13A' '1955'.
perform bdc_field using 'BDC_CURSOR'
'RV13A-DATBI(01)'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'KOMG-VKORG'
'1000'.
perform bdc_field using 'KOMG-REGIO'
it_zrtm-regio.
perform bdc_field using 'KOMG-MATKL(01)'
it_zrtm-matnr.
perform bdc_field using 'KONP-KBETR(01)'
it_zrtm-kbetr.
perform bdc_field using 'KONP-KONWA(01)'
it_zrtm-konwa.
perform bdc_field using 'RV13A-KRECH(01)'
it_zrtm-krech.
perform bdc_field using 'RV13A-DATAB(01)'
it_zrtm-datab.
perform bdc_field using 'RV13A-DATBI(01)'
it_zrtm-datbi.
perform bdc_dynpro using 'SAPMV13A' '1955'.
perform bdc_field using 'BDC_CURSOR'
'KOMG-MATKL(01)'.
perform bdc_field using 'BDC_OKCODE'
'=SICH'.
Calling the VK11 transcation
PERFORM bdc_transaction TABLES i_msgtab USING 'VK11' 'A' 'L'.
************************************************************************
*To fetch the error message from the standard error table
************************************************************************
SELECT SINGLE * FROM t100 WHERE sprsl = 'E'
AND arbgb = sy-msgid
AND msgnr = sy-msgno.
g_message = t100-text.
***********************************************************************
*subroutine to change the error message for every document number
***********************************************************************
PERFORM replace_parameters USING sy-msgv1
sy-msgv2
sy-msgv3
sy-msgv4
CHANGING g_message.
WRITE: / 'System variables:'.
SKIP.
WRITE: / ' Sy-msgty:', sy-msgty.
WRITE: / ' Sy-msgid:', sy-msgid.
WRITE: / ' Sy-msgno:', sy-msgno.
WRITE: / ' Sy-msgv1:', sy-msgv1.
WRITE: / ' Sy-msgv2:', sy-msgv2.
WRITE: / ' Sy-msgv3:', sy-msgv3.
WRITE: / ' Sy-msgv4:', sy-msgv4.
SKIP.
WRITE: / 'Message:'.
SKIP.
WRITE: / sy-msgty, g_message.
************************************************************************
*To find out the error in the legacy data if there is anything and pass
*the document no with error message to the seperate internal table
*called it_erfind
************************************************************************
IF sy-msgty = 'E'.
it_erfind-index = it_zrtm-index.
it_erfind-er_message = g_message.
APPEND it_erfind.
ENDIF.
*Finally we are segregating the error and downloading the error data.
----
AT LAST.
*To segregate the error
----
PERFORM segregate_error.
*To download the error from it_error internal table with err mesg
----
PERFORM error_download.
PERFORM display_message.
ENDAT.
ENDLOOP.
perform close_group.
CLEAR it_zrtm.
ENDFORM. "fill_data
*Subrotine to replace the parameters
----
FORM replace_parameters USING p_par_1 p_par_2 p_par_3
p_par_4 CHANGING p_message.
erst mal pruefen, ob numerierte Parameter verwendet wurden
----
DO.
REPLACE '&1' WITH p_par_1 INTO p_message.
IF sy-subrc <> 0.
EXIT.
ENDIF.
ENDDO.
DO.
REPLACE '&2' WITH p_par_2 INTO p_message.
IF sy-subrc <> 0.
EXIT.
ENDIF.
ENDDO.
DO.
REPLACE '&3' WITH p_par_3 INTO p_message.
IF sy-subrc <> 0.
EXIT.
ENDIF.
ENDDO.
DO.
REPLACE '&4' WITH p_par_4 INTO p_message.
IF sy-subrc <> 0.
EXIT.
ENDIF.
ENDDO.
falls keine numerierten Parameter vorh., ersetzen wie gehabt
----
REPLACE '&' WITH p_par_1 INTO p_message.
CONDENSE p_message.
IF sy-subrc EQ 0.
REPLACE '&' WITH p_par_2 INTO p_message.
CONDENSE p_message.
IF sy-subrc EQ 0.
REPLACE '&' WITH p_par_3 INTO p_message.
CONDENSE p_message.
IF sy-subrc EQ 0.
REPLACE '&' WITH p_par_4 INTO p_message.
CONDENSE p_message.
ENDIF.
ENDIF.
ENDIF.
ENDFORM. "REPLACE_PARAMETERS
*Subroutine to segregate the error data from the legacy data
----
FORM segregate_error.
LOOP AT it_erfind.
LOOP AT it_zrtm WHERE index = it_erfind-index.
MOVE-CORRESPONDING it_zrtm TO it_error.
it_error-er_message = it_erfind-er_message.
APPEND it_error.
ENDLOOP.
ENDLOOP.
ENDFORM. "segregate_error
********************************************************************
*Subroutine to download the error data from the it_error table.
********************************************************************
FORM error_download.
IF it_error[] IS NOT INITIAL.
CALL FUNCTION 'WS_DOWNLOAD'
EXPORTING
codepage = 'IBM'
filename = v_error_filename
filetype = 'DAT'
TABLES
data_tab = it_error.
ENDIF.
ENDFORM. "error_download
----
Start new screen *
----
FORM bdc_dynpro USING program dynpro.
CLEAR bdcdata.
bdcdata-program = program.
bdcdata-dynpro = dynpro.
bdcdata-dynbegin = 'X'.
APPEND bdcdata.
ENDFORM. "BDC_DYNPRO
----
Insert 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 bdc_transaction
&----
text
----
-->MESSTAB text
-->TCODE text
-->CTUMODE text
-->CUPDATE text
----
FORM bdc_transaction TABLES messtab USING tcode ctumode cupdate .
CALL TRANSACTION tcode USING bdcdata
MODE ctumode
UPDATE cupdate
MESSAGES INTO messtab.
REFRESH bdcdata.
CLEAR bdcdata.
ENDFORM. " bdc_transaction
********************************************************************
Uploading data file to internal table. *
********************************************************************
FORM upload_data.
CALL FUNCTION 'WS_UPLOAD'
EXPORTING
filename = p_file
CODEPAGE = 'IBM '
filetype = 'DAT'
TABLES
data_tab = it_zrtm
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_data
&----
*& Form display_message
&----
FORM display_message .
IF it_error[] IS INITIAL.
MESSAGE i019(zmsg). "Success
ELSE.
MESSAGE e020(zmsg). "Failed
ENDIF.
ENDFORM. " display_message
&----
*& Form get_filename
&----
text
----
--> p1 text
<-- p2 text
----
FORM get_filename .
CALL FUNCTION 'F4_FILENAME'
EXPORTING
program_name = syst-cprog
dynpro_number = syst-dynnr
FIELD_NAME = p_file
IMPORTING
file_name = p_file .
IF sy-subrc NE 0 .
WRITE : / 'Enter File Name'.
ENDIF.
ENDFORM. " get_filename
&----
*& Form make_file_name
&----
FORM make_file_name .
WRITE sy-datum TO date MM/DD/YYYY.
WRITE sy-uzeit TO time USING EDIT MASK ' __ __ __'.
CONCATENATE text-002 date time '.txt'
INTO v_error_filename.
endform.
regards,
‎2007 Sep 17 5:27 AM
Hi,
i Have give bdc program for materila flag deletion .Just the program i hope u can do recording for MM06 .if not pls let me i could help u .
regards ,
karthik
*Program to set flag for material deletion (Transaction MM06)
*Logic is if Plant is blank in flat file hole material is Marked for deletion
*Else the Particlar plant for the material is marked for deletion
REPORT zind_mm06_trial_02
NO STANDARD PAGE HEADING LINE-SIZE 255.
INCLUDE bdcrecx1.
TABLES: mara, marc.
DATA: BEGIN OF t_mara OCCURS 0,
matnr LIKE mara-matnr,
werks LIKE marc-werks,
END OF t_mara.
*SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN BEGIN OF BLOCK blk1 WITH FRAME.
PARAMETER:p_file LIKE rlgrap-filename OBLIGATORY.
SELECTION-SCREEN END OF BLOCK blk1.
*SELECTION-SCREEN END OF LINE.
----
At Selection-screen *
----
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
CALL FUNCTION 'WS_FILENAME_GET'
EXPORTING
def_filename = ' '
def_path = ' '
mask = ',All Files,..'
mode = ' '
title = ' '
IMPORTING
filename = p_file
EXCEPTIONS
inv_winsys = 1
no_batch = 2
selection_cancel = 3
selection_error = 4
OTHERS = 5.
IF sy-subrc <> 0.
MESSAGE s008(zm) WITH p_file.
STOP.
ENDIF.
START-OF-SELECTION.
PERFORM 100_collect_db_recs.
PERFORM 200_process_db_recs.
&----
*& Form 100_COLLECT_DB_RECS
&----
text
----
To upload data from flat file to Internal table
----
FORM 100_collect_db_recs .
CALL FUNCTION 'WS_UPLOAD'
EXPORTING
codepage = 'IBM'
filename = p_file
filetype = 'DAT'
TABLES
data_tab = t_mara
EXCEPTIONS
conversion_error = 1
file_open_error = 2
file_read_error = 3
invalid_table_width = 4
invalid_type = 5
no_batch = 6
unknown_error = 7
OTHERS = 8.
IF sy-subrc NE 0.
MESSAGE i008(zm) WITH p_file.
STOP.
ELSE.
IF t_mara[] IS INITIAL.
MESSAGE i009(zm) WITH p_file.
STOP.
ENDIF.
ENDIF.
ENDFORM. " 100_COLLECT_DB_RECS
&----
*& Form 200_PROCESS_DB_RECS
&----
text
----
BDC RECORDING PART
----
FORM 200_process_db_recs .
DATA: l_matnr(18) TYPE n.
PERFORM open_group .
LOOP AT t_mara.
PERFORM bdc_dynpro USING 'SAPMM03G' '0100'.
PERFORM bdc_field USING 'BDC_CURSOR' 'RM03G-WERKS'.
PERFORM bdc_field USING 'BDC_OKCODE' '/00'.
PERFORM bdc_field USING 'RM03G-MATNR' t_mara-matnr.
IF t_mara-werks NE ''.
PERFORM bdc_field USING 'RM03G-WERKS' t_mara-werks.
ENDIF.
PERFORM bdc_dynpro USING 'SAPMM03G' '0111'.
PERFORM bdc_field USING 'BDC_CURSOR' 'RM03G-LVOWK'.
PERFORM bdc_field USING 'BDC_OKCODE' '=BU'.
IF t_mara-werks = '' .
PERFORM bdc_field USING 'RM03G-LVOMA' 'X'.
ELSEIF t_mara-werks NE ''.
PERFORM bdc_field USING 'RM03G-LVOMA' ''.
PERFORM bdc_field USING 'RM03G-LVOWK' 'X'.
ENDIF.
PERFORM bdc_transaction USING 'MM06'.
PERFORM close_group.
ENDLOOP.
ENDFORM. " 200_PROCESS_DB_RECS
‎2007 Sep 17 5:32 AM
Hi,
I have sent a BDC which was used in real time scenario.
REPORT bdc_vl01n.
TYPES : BEGIN OF ty_del,
vstel LIKE likp-vstel, "Shipping Point - C(4)
datbi(8), "Delivery Selection Date - D(8)
vbeln LIKE lv50c-vbeln, "Order - C(10)
abpos(6),
bipos(6),
bldat(8), "Document Date in document - D(8)
wadat(8), "Planned Goods movement date - D(8)
wadat_ist(8), "Actual goods movement date - D(8)
g_lfimg(13), "Delivery quantity - N(13,3)
charg LIKE lips-charg, "Batch - C(10)
lgort LIKE lips-lgort, "Storage location - C(4)
END OF ty_del.
DATA : it_del TYPE STANDARD TABLE OF ty_del WITH HEADER LINE,
it_del1 TYPE STANDARD TABLE OF ty_del WITH HEADER LINE,
it_bdcdata TYPE STANDARD TABLE OF bdcdata WITH HEADER LINE,
w_group LIKE apqi-groupid,
itemno TYPE posnr_vf,
i TYPE i, j TYPE i.
START-OF-SELECTION.
CONCATENATE 'DEL-' sy-datum4(4) sy-uzeit0(4) INTO w_group.
CALL FUNCTION 'UPLOAD'
EXPORTING
filetype = 'DAT'
TABLES
data_tab = it_del
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.
CALL FUNCTION 'BDC_OPEN_GROUP'
EXPORTING
client = sy-mandt
group = w_group
keep = ' '
user = sy-uname.
APPEND LINES OF it_del TO it_del1.
DELETE ADJACENT DUPLICATES FROM it_del1 COMPARING vbeln.
LOOP AT it_del1.
READ TABLE it_del WITH KEY vbeln = it_del1-vbeln.
PERFORM bdc_dynpro USING 'SAPMV50A' '4001' 'X'. " Line 2
PERFORM bdc_field USING : 'BDC_CURSOR' 'LIKP-VSTEL',
'BDC_OKCODE' '/00',
'LIKP-VSTEL' it_del-vstel,
'LV50C-DATBI' it_del-datbi,
'LV50C-VBELN' it_del-vbeln.
'LV50C-ABPOS' it_del-abpos,
'LV50C-BIPOS' it_del-bipos.
*
PERFORM bdc_dynpro USING 'SAPMV50A' '1000' 'X'. " Line 8
PERFORM bdc_field USING : 'BDC_OKCODE' '=T\01',
'BDC_SUBSCR' 'SAPMV50A ',
'LIKP-BLDAT' it_del-bldat.
PERFORM bdc_dynpro USING 'SAPMV50A' '1000' 'X'. " Line 18
PERFORM bdc_field USING : 'BDC_OKCODE' '/00',
'LIKP-BLDAT' it_del-bldat,
'LIKP-WADAT' it_del-wadat,
'LIKP-WADAT_IST' it_del-wadat_ist.
PERFORM bdc_dynpro USING 'SAPMV50A' '1000' 'X'. " Line 30
PERFORM bdc_field USING : 'BDC_OKCODE' '=MKAL_T',
'LIKP-BLDAT' it_del-bldat,
'LIKP-WADAT' it_del-wadat,
'LIKP-WADAT_IST' it_del-wadat_ist.
PERFORM bdc_dynpro USING 'SAPMV50A' '1000' 'X'. " Line 42
PERFORM bdc_field USING : 'BDC_OKCODE' '=IDET_T',
'LIKP-BLDAT' it_del-bldat,
'LIKP-WADAT' it_del-wadat,
'LIKP-WADAT_IST' it_del-wadat_ist.
PERFORM bdc_dynpro USING 'SAPMV50A' '3000' 'X'.
PERFORM bdc_field USING : 'BDC_OKCODE' '=T\04', " Line 54
'BDC_SUBSCR' 'SAPMV50A',
'BDC_CURSOR' 'LIPS-POSNR',
'BDC_SUBSCR' 'SAPMV50A'.
i = 0.
j = 0.
LOOP AT it_del WHERE vbeln = it_del1-vbeln.
ADD 1 TO i.
ENDLOOP.
LOOP AT it_del WHERE vbeln = it_del1-vbeln. " Line 60 - 720
PERFORM bdc_dynpro USING 'SAPMV50A' '3000' 'X'.
PERFORM bdc_field USING : 'BDC_OKCODE' '/00',
'LIPS-LFIMG' it_del-g_lfimg,
'LIPS-LGORT' it_del-lgort.
j = j + 1.
IF j < i.
PERFORM bdc_field USING 'BDC_OKCODE' '=NITE_T'.
ENDIF.
ENDLOOP.
PERFORM bdc_dynpro USING 'SAPMV50A' '3000' 'X'.
PERFORM bdc_field USING : 'BDC_OKCODE' '=OVER_T', " Line 735
'BDC_SUBSCR' 'SAPMV50A'.
itemno = '10'.
LOOP AT it_del WHERE vbeln = it_del1-vbeln. " Line 750
PERFORM bdc_dynpro USING 'SAPMV50A' '1000' 'X'.
PERFORM bdc_field USING : 'BDC_OKCODE' '=POPO_T',
'BDC_SUBSCR' 'SAPMV50A',
'LIKP-BLDAT' it_del-bldat.
PERFORM bdc_dynpro USING 'SAPMV50A' '0111' 'X'.
PERFORM bdc_field USING : 'BDC_CURSOR' 'RV50A-POSNR',
'BDC_OKCODE' '=WEIT',
'RV50A-POSNR' itemno.
PERFORM bdc_dynpro USING 'SAPMV50A' '1000' 'X'.
PERFORM bdc_field USING : 'BDC_OKCODE' '/00',
'LIPS-CHARG(01)' it_del-charg.
ADD 10 TO itemno.
ENDLOOP.
PERFORM bdc_dynpro USING 'SAPMV50A' '1000' 'X'. " Line 1325
PERFORM bdc_field USING : 'BDC_OKCODE' '=SICH_T'.
PERFORM bdc_field USING : 'BDC_OKCODE' '=WABU_T'.
PERFORM bdc_transaction USING 'VL01N'.
ENDLOOP.
CALL FUNCTION 'BDC_CLOSE_GROUP'.
MESSAGE i000(ztest) WITH 'Session ' w_group 'Created'.
FORM bdc_dynpro USING program dynpro dynbegin.
it_bdcdata-program = program.
it_bdcdata-dynpro = dynpro.
it_bdcdata-dynbegin = dynbegin.
APPEND it_bdcdata.
CLEAR it_bdcdata.
ENDFORM.
FORM bdc_field USING fnam fval.
it_bdcdata-fnam = fnam.
it_bdcdata-fval = fval.
APPEND it_bdcdata.
CLEAR it_bdcdata.
ENDFORM.
FORM bdc_transaction USING tcode.
CALL FUNCTION 'BDC_INSERT'
EXPORTING
tcode = tcode
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.
CLEAR it_bdcdata.
REFRESH it_bdcdata.
ENDFORM.
Reward if useful.
Message was edited by:
Sathyaa
‎2007 Sep 17 5:41 AM
hi,
this program works for both session and call transaction, just declare internal table as ur flat file structure, perform recording, and copy the performs, i had used standard include it works for both session and call transaction,
include bdcrecx1.
parameters: filename like rlgrap-filename.
data: begin of record,
ASNUM(18),
ASKTX(40),
ASTYP(4),
MEINS(3),
MATKL(6),
BKLAS(4),
end of record.
data: itab_program like record occurs 0 with header line.
***
****************************************************
At Selection Screen
****************************************************
at selection-screen on value-request for filename.
perform query_filename changing filename.
****************************************************
*START-OF-SELECTION
*****************************************************
start-of-selection.
*-- Upload flat data to ITAB.
perform upload_to_itab.
*{ chg001 -- modified as per requirement
perform open_group.
loop at itab_program.
perform upload_programs.
endloop.
perform close_group.
----
FORM UPLOAD_TO_ITAB *
----
........ *
----
form upload_to_itab.
call function 'WS_UPLOAD'
exporting
CODEPAGE = ' '
filename = filename
filetype = 'DAT'
HEADLEN = ' '
LINE_EXIT = ' '
TRUNCLEN = ' '
USER_FORM = ' '
USER_PROG = ' '
DAT_D_FORMAT = ' '
IMPORTING
FILELENGTH =
tables
data_tab = itab_program
EXCEPTIONS
CONVERSION_ERROR = 1
FILE_OPEN_ERROR = 2
FILE_READ_ERROR = 3
INVALID_TYPE = 4
NO_BATCH = 5
UNKNOWN_ERROR = 6
INVALID_TABLE_WIDTH = 7
GUI_REFUSE_FILETRANSFER = 8
CUSTOMER_ERROR = 9
OTHERS = 10
.
if sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
write : 'File opening error.'.
endif.
endform.
----
FORM QUERY_FILENAME *
----
........ *
----
--> P_FILENAME *
----
form query_filename changing p_filename.
data : tmp_filename like filename.
call function 'WS_FILENAME_GET'
exporting
def_filename = filename
mask = ',.txt,.txt.'
mode = 'O'
title = 'Select the file to Upload'
importing
filename = tmp_filename
exceptions
inv_winsys = 01
no_batch = 02
selection_cancel = 03
selection_error = 04.
if sy-subrc = 0.
filename = tmp_filename.
endif.
endform.
*******************************************
*perform open_group.
&----
*& Form UPLOAD_programs
&----
text
----
--> p1 text
<-- p2 text
----
form upload_programs.
perform bdc_dynpro using 'SAPLBAS0' '0300'.
perform bdc_field using 'BDC_CURSOR'
'ASMD-ASNUM'.
perform bdc_field using 'BDC_OKCODE'
'=NEW'.
perform bdc_field using 'RM63T-SPRAS'
'EN'.
perform bdc_dynpro using 'SAPLBAS0' '0300'.
perform bdc_field using 'BDC_CURSOR'
'ASMD-MATKL'.
perform bdc_field using 'BDC_OKCODE'
'=POST'.
perform bdc_field using 'ASMD-ASNUM'
itab_program-ASNUM.
perform bdc_field using 'ASMDT-ASKTX'
itab_program-ASKTX.
perform bdc_field using 'ASMD-ASTYP'
itab_program-ASTYP.
perform bdc_field using 'ASMD-MEINS'
itab_program-MEINS.
perform bdc_field using 'ASMD-MATKL'
itab_program-MATKL.
perform bdc_field using 'ASMD-BKLAS'
itab_program-BKLAS.
perform bdc_dynpro using 'SAPLBAS0' '0300'.
perform bdc_field using 'BDC_OKCODE'
'/EBACK'.
perform bdc_field using 'BDC_CURSOR'
'ASMD-ASNUM'.
perform bdc_dynpro using 'SAPLSPO1' '0100'.
perform bdc_field using 'BDC_OKCODE'
'=YES'.
perform bdc_transaction using 'AC03'.
endform. " UPLOAD_programs
regards
siva
‎2007 Sep 17 5:58 AM
chk this out...
REPORT zind_bdcmm06
NO STANDARD PAGE HEADING LINE-SIZE 255.
INCLUDE bdcrecx1.
*TABLES : mara, marc.
DATA : BEGIN OF i_mara OCCURS 0,
matnr LIKE mara-matnr,
werks LIKE marc-werks,
END OF i_mara.
DATA : ERR LIKE I_MARA OCCURS 0 WITH HEADER LINE.
DATA : SUCC LIKE I_MARA OCCURS 0 WITH HEADER LINE.
*DATA : I_ERR LIKE I_MARA OCCURS 0 WITH HEADER LINE.
PARAMETERS : file LIKE rlgrap-filename OBLIGATORY,
: P_SESS(12) TYPE C OBLIGATORY.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR file.
PERFORM nav USING file.
START-OF-SELECTION.
PERFORM BDC_get.
PERFORM bdc_execute.
&----
*& Form NAV
&----
text
----
-->FILE text
----
FORM nav USING file.
CALL FUNCTION 'WS_FILENAME_GET'
EXPORTING
DEF_FILENAME = ''
DEF_PATH = ' '
MASK = ' '
MODE = ' '
TITLE = ' '
IMPORTING
filename = file
RC =
EXCEPTIONS
INV_WINSYS = 1
NO_BATCH = 2
SELECTION_CANCEL = 3
SELECTION_ERROR = 4
OTHERS = 5
.
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. "NAV
&----
*& Form BDC_GET
&----
text
----
--> p1 text
<-- p2 text
----
FORM bdc_get .
CALL FUNCTION 'WS_UPLOAD'
EXPORTING
CODEPAGE = ' '
filename = file
filetype = 'DAT'
HEADLEN = ' '
LINE_EXIT = ' '
TRUNCLEN = ' '
USER_FORM = ' '
USER_PROG = ' '
DAT_D_FORMAT = ' '
IMPORTING
FILELENGTH =
TABLES
data_tab = i_mara
EXCEPTIONS
CONVERSION_ERROR = 1
FILE_OPEN_ERROR = 2
FILE_READ_ERROR = 3
INVALID_TYPE = 4
NO_BATCH = 5
UNKNOWN_ERROR = 6
INVALID_TABLE_WIDTH = 7
GUI_REFUSE_FILETRANSFER = 8
CUSTOMER_ERROR = 9
NO_AUTHORITY = 10
OTHERS = 11
.
IF sy-subrc <> 0.
ENDIF.
ENDFORM. " BDC_GET
&----
*& Form BDC_EXECUTE
&----
text
----
--> p1 text
<-- p2 text
----
FORM bdc_execute .
PERFORM open_group.
LOOP AT i_mara.
PERFORM bdc_dynpro USING 'SAPMM03G' '0100'.
PERFORM bdc_field USING 'BDC_CURSOR' 'RM03G-WERKS'.
PERFORM bdc_field USING 'BDC_OKCODE' '/00'.
PERFORM bdc_field USING 'RM03G-MATNR' I_MARA-MATNR.
IF i_mara-werks NE ''.
PERFORM bdc_field USING 'RM03G-WERKS' I_MARA-WERKS.
ENDIF.
PERFORM bdc_dynpro USING 'SAPMM03G' '0111'.
PERFORM bdc_field USING 'BDC_CURSOR' 'RM03G-LVOMA'.
PERFORM bdc_field USING 'BDC_OKCODE' 'BACK'.
IF i_mara-werks EQ ''.
PERFORM bdc_field USING 'RM03G-LVOMA' 'X'.
ELSEIF i_mara-werks NE ''.
PERFORM bdc_field USING 'RM03G-LVOMA' ''.
PERFORM bdc_field USING 'RM03G-LVOWK' 'X'.
ENDIF.
PERFORM bdc_dynpro USING 'SAPLSPO1' '0300'.
PERFORM bdc_field USING 'BDC_OKCODE' '=YES'.
PERFORM bdc_dynpro USING 'SAPMM03G' '0111'.
PERFORM bdc_field USING 'BDC_OKCODE' '/EAEN'.
PERFORM bdc_field USING 'BDC_CURSOR' 'RM03G-LVOMA'.
PERFORM bdc_dynpro USING 'SAPMSSY0' '0120'.
PERFORM bdc_field USING 'BDC_CURSOR' '01/02'.
PERFORM bdc_field USING 'BDC_OKCODE' '=BABA'.
PERFORM bdc_dynpro USING 'SAPMM03G' '0111'.
PERFORM bdc_field USING 'BDC_OKCODE' '/EF17'.
PERFORM bdc_field USING 'BDC_CURSOR' 'RM03G-LVOMA'.
PERFORM bdc_dynpro USING 'SAPLSPO1' '0300'.
PERFORM bdc_field USING 'BDC_OKCODE' '=YES'.
PERFORM bdc_transaction USING 'MM06'.
***************************ERROR FILE***********************
IF SY-SUBRC NE 0.
MOVE-CORRESPONDING I_MARA TO ERR.
APPEND ERR.
CLEAR ERR.
IF ERR[] IS INITIAL.
WRITE ' NO ERRORS'.
ELSE.
*
*
*
ENDIF.
ELSE.
MOVE-CORRESPONDING I_MARA TO SUCC.
APPEND SUCC.
CLEAR SUCC.
ENDIF.
ENDLOOP.
read table messtab index '2'.
if messtab-msgtyp = 'E'.
move-corresponding i_mara to err.
append err.
clear err.
CALL FUNCTION 'WS_DOWNLOAD'
EXPORTING
BIN_FILESIZE = ' '
CODEPAGE = ' '
FILENAME = 'd:\error_data.txt'
FILETYPE = 'DAT'
MODE = ' '
WK1_N_FORMAT = ' '
WK1_N_SIZE = ' '
WK1_T_FORMAT = ' '
WK1_T_SIZE = ' '
COL_SELECT = ' '
COL_SELECTMASK = ' '
NO_AUTH_CHECK = ' '
IMPORTING
FILELENGTH =
TABLES
data_tab = ERR
FIELDNAMES =
EXCEPTIONS
FILE_OPEN_ERROR = 1
FILE_WRITE_ERROR = 2
INVALID_FILESIZE = 3
INVALID_TYPE = 4
NO_BATCH = 5
UNKNOWN_ERROR = 6
INVALID_TABLE_WIDTH = 7
GUI_REFUSE_FILETRANSFER = 8
CUSTOMER_ERROR = 9
NO_AUTHORITY = 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.
write 'Error'.
endif.
PERFORM close_group.
ENDFORM. " BDC_EXECUTE