2007 Mar 25 10:40 AM
 Developed a conversion program to upload information records (Me11) using call transaction and session method.
2007 Mar 26 5:47 AM
Hi Mahitha,
What do u want, cud u be more specfic abt the requirement.
regards
Gokul
2007 Mar 26 6:44 AM
2007 Mar 27 4:09 AM
i need a code how todo
conversion program to upload information records (Me11) using call transaction and session method.
2007 Mar 27 4:43 AM
hi mahitha
it is Create Purchasing Info Record
go with recording SHDB , give mandatory inputs.
keep going.....
chek sample programs
http://www.sap-img.com/bdc.htm
this is the program u need
http://www.sap-img.com/abap/bdc-program-for-purchase-info-records.htm
BDC program for Purchase Info Records
&----
*& REPORT ZMM0069 *
&----
*& Module : MM |
*& Application : The program loads the Purchasing Inforecords |
*& |
----
*| Modification Log |
*| -
|
*| Programmer Date CC# Chg.Ref Description of
*| Change |
*| -
-
-
-
-
|
*| Rajesh Singh 23-AUG-2005 Initial
*| development. |
----
REPORT zmm0069 NO STANDARD PAGE HEADING
MESSAGE-ID z0
LINE-SIZE 132
LINE-COUNT 65(2).
----
Internal Tables *
----
*Internal table for the purchasing info records fields.
DATA: BEGIN OF i_inforecord OCCURS 0,
matnr(18),
lifnr(10),
uom(3),
ekgrp(3),
planned_time(3),
under_tol(3),
over_tol(3),
qty(10),
price_cat(5),
inco(3),
designation(28),
netpr(13),
scale_qty1(10),
scale_pr1(13),
scale_qty2(10),
scale_pr2(13),
scale_qty3(13),
scale_pr3(10),
scale_qty4(13),
scale_pr4(10),
scale_qty5(13),
scale_pr5(10),
scale_qty6(13),
scale_pr6(10),
scale_qty7(13),
scale_pr7(10),
scale_qty8(13),
scale_pr8(10),
scale_qty9(13),
scale_pr9(10),
scale_qty10(13),
scale_pr10(10),
END OF i_inforecord.
Internal table for Old and New Vendor number
DATA : BEGIN OF i_lfb1 OCCURS 1,
lifnr(10),
altkn(10),
END OF i_lfb1.
Declare internal table for Call Transaction and BDC Session
DATA: i_bdc_table LIKE bdcdata OCCURS 0 WITH HEADER LINE.
----
Global Variables *
----
DATA: g_counter(2) TYPE n,
g_field_name(18) TYPE c,
zc_yes TYPE syftype VALUE 'X'.
----
Selection Screen *
----
SELECTION-SCREEN BEGIN OF BLOCK a WITH FRAME TITLE text-001.
PARAMETERS: p_fname1 TYPE localfile .
SELECTION-SCREEN SKIP 1.
SELECTION-SCREEN BEGIN OF BLOCK b WITH FRAME TITLE text-002.
PARAMETERS: p_rloc1 AS CHECKBOX DEFAULT 'X'.
SELECTION-SCREEN BEGIN OF BLOCK c WITH FRAME TITLE text-003.
PARAMETERS p_group(12) OBLIGATORY DEFAULT 'ZPURCHINFO'.
SELECTION-SCREEN END OF BLOCK c.
SELECTION-SCREEN END OF BLOCK b.
SELECTION-SCREEN END OF BLOCK a.
**WRITE the report header
TOP-OF-PAGE.
INCLUDE zheading.
----
Start of selection *
----
START-OF-SELECTION.
Load Input file
PERFORM f_load_input_file.
Create BDC records.
PERFORM create_bdc_records .
&----
*& Form Create_BDC_records
&----
Perform the BDC for the records in the internal table
----
FORM create_bdc_records .
IF NOT i_inforecord[] IS INITIAL.
Open BDC session
PERFORM open_bdc_session.
SELECT lifnr altkn FROM lfb1 INTO TABLE i_lfb1
FOR ALL ENTRIES IN i_inforecord
WHERE altkn = i_inforecord-lifnr.
Sorting the Internal table for better performance
SORT i_lfb1 BY altkn.
LOOP AT i_inforecord.
***Mapping Old Vendor number to the new Vendor number
READ TABLE i_lfb1 WITH KEY altkn = i_inforecord-lifnr BINARY
SEARCH.
IF sy-subrc EQ 0.
i_inforecord-lifnr = i_lfb1-lifnr.
ENDIF.
CLEAR i_bdc_table[].
PERFORM insert_screen_header.
call transaction 'ME11' using i_bdc_table
mode 'A'.
CLEAR i_bdc_table.
ENDLOOP.
CLEAR i_inforecord[].
PERFORM close_bdc_session.
Release the BDC sessions created
PERFORM release_bdc.
ENDIF.
ENDFORM. " open_group
&----
*& Form bdc_dynpro_start
&----
Start the screen for the transfer of fields
----
FORM bdc_dynpro_start USING p_g_program_1
p_g_screen.
CLEAR i_bdc_table.
i_bdc_table-program = p_g_program_1.
i_bdc_table-dynpro = p_g_screen.
i_bdc_table-dynbegin = 'X'.
APPEND i_bdc_table.
ENDFORM. " bdc_dynpro_start_start
&----
*& Form bdc_insert_field
&----
Insert field *
----
FORM bdc_insert_field USING f_name f_value.
IF f_value <> space.
CLEAR i_bdc_table.
i_bdc_table-fnam = f_name.
i_bdc_table-fval = f_value.
APPEND i_bdc_table.
ENDIF.
ENDFORM. "bdc_insert_field
&----
*& Form open_bdc_session
&----
Open a BDC session
----
FORM open_bdc_session .
Open BDC session and create and update records
CALL FUNCTION 'BDC_OPEN_GROUP'
EXPORTING
client = sy-mandt
DEST = FILLER8
group = p_group
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.
ENDFORM. " create_bdc_session
&----
*& Form insert_screen_header
&----
Screen flow for the transfer of fields
----
FORM insert_screen_header .
First Screen 100
PERFORM bdc_dynpro_start USING 'SAPMM06I' '0100'.
PERFORM bdc_insert_field USING:'BDC_CURSOR' 'EINA-LIFNR',
'BDC_OKCODE' '/00',
'EINA-LIFNR' i_inforecord-lifnr,
'EINA-MATNR' i_inforecord-matnr,
'EINE-EKORG' '1000',
'RM06I-NORMB' zc_yes.
****----
Next Screen 101
PERFORM bdc_dynpro_start USING 'SAPMM06I' '0101'.
PERFORM bdc_insert_field USING : 'BDC_CURSOR' 'EINA-MAHN1',
'BDC_OKCODE' '/00',
'EINA-MEINS' i_inforecord-uom.
****----
*Next Screen 102
PERFORM bdc_dynpro_start USING 'SAPMM06I' '0102'.
PERFORM bdc_insert_field USING : 'BDC_CURSOR' 'EINE-INCO2',
'EINE-APLFZ' i_inforecord-planned_time,
'EINE-EKGRP' i_inforecord-ekgrp,
'EINE-NORBM' i_inforecord-qty.
PERFORM bdc_insert USING 'EINE-UEBTK' ' '.
PERFORM bdc_insert_field USING:'EINE-PEINH' i_inforecord-scale_qty1,
'EINE-BPRME' i_inforecord-uom,
'EINE-UNTTO' '5',
'EINE-UEBTO' '25',
'EINE-MEPRF' i_inforecord-price_cat,
'EINE-NETPR' i_inforecord-netpr,
'EINE-INCO1' i_inforecord-inco,
'EINE-INCO2' i_inforecord-designation.
Checking for Scale quantities
IF i_inforecord-scale_qty2 = space.
PERFORM bdc_insert_field USING 'BDC_OKCODE' '=BU'.
PERFORM insert_bdc_new.
ELSE.
PERFORM bdc_insert_field USING 'BDC_OKCODE' '=KO'.
****----
Next Screen 201
PERFORM bdc_dynpro_start USING 'SAPMV13A' '0201'.
PERFORM bdc_insert_field USING : 'BDC_CURSOR' 'RV13A-DATAB',
'BDC_OKCODE' '=PSTF'.
****----
Next Screen 201
PERFORM bdc_dynpro_start USING 'SAPMV13A' '0201'.
PERFORM bdc_insert_field USING : 'BDC_CURSOR' 'KONP-KSCHL(01)',
'BDC_OKCODE' '=PSTF',
'RV130-SELKZ(01)' zc_yes.
****----
LAST SCREEN 303
PERFORM bdc_dynpro_start USING 'SAPMV13A' '0303'.
PERFORM bdc_insert_field USING : 'BDC_CURSOR' 'KONM-KBETR(03)',
'BDC_OKCODE' '=SICH'.
Counter to Loop the Item level entry
g_counter = 0.
PERFORM scale_entry USING i_inforecord-scale_qty2
i_inforecord-scale_pr2.
PERFORM scale_entry USING i_inforecord-scale_qty3
i_inforecord-scale_pr3.
PERFORM scale_entry USING i_inforecord-scale_qty4
i_inforecord-scale_pr4.
PERFORM scale_entry USING i_inforecord-scale_qty5
i_inforecord-scale_pr5.
PERFORM scale_entry USING i_inforecord-scale_qty6
i_inforecord-scale_pr6.
PERFORM scale_entry USING i_inforecord-scale_qty7
i_inforecord-scale_pr7.
PERFORM scale_entry USING i_inforecord-scale_qty8
i_inforecord-scale_pr8.
PERFORM scale_entry USING i_inforecord-scale_qty9
i_inforecord-scale_pr9.
PERFORM scale_entry USING i_inforecord-scale_qty10
i_inforecord-scale_pr10.
PERFORM insert_bdc_new.
ENDIF.
ENDFORM. " insert_screen_header
&----
*& Form insert_bdc
&----
Insert BDC
----
FORM insert_bdc_new .
CALL FUNCTION 'BDC_INSERT'
EXPORTING
tcode = 'ME11'
POST_LOCAL = NOVBLOCAL
PRINTING = NOPRINT
SIMUBATCH = ' '
CTUPARAMS = ' '
TABLES
dynprotab = i_bdc_table
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 i_bdc_table[].
ENDFORM. " insert_bdc
&----
*& Form close_bdc_session
&----
Close the BDC session
----
FORM close_bdc_session .
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. " close_bdc_session
&----
*& Form f_load_input_file
&----
Upload the file
----
FORM f_load_input_file.
Check always Local file for upload
IF p_rloc1 = zc_yes.
CALL FUNCTION 'WS_UPLOAD'
EXPORTING
filename = p_fname1
filetype = 'DAT'
TABLES
data_tab = i_inforecord
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.
STOP.
ENDIF.
ENDIF.
*
ENDFORM. " f_load_input_file
&----
*& Form release_bdc
&----
Release the session
----
FORM release_bdc.
SUBMIT rsbdcsub WITH mappe EQ p_group
WITH von EQ sy-datum
WITH bis EQ sy-datum
WITH fehler EQ '.'
EXPORTING LIST TO MEMORY
AND RETURN.
ENDFORM. " release_bdc
&----
*& Form scale_entry
&----
Populate the Scale quantities
----
-->P_SCALE_QTY
-->P_SCALE_PRICE
----
FORM scale_entry USING p_scale_qty
p_scale_price.
Increment the Counter
g_counter = g_counter + 1.
IF p_scale_qty <> space.
CONCATENATE 'KONM-KSTBM(' g_counter ')' INTO g_field_name.
PERFORM bdc_insert_field USING g_field_name p_scale_qty.
CONCATENATE 'KONM-KBETR(' g_counter ')' INTO g_field_name.
PERFORM bdc_insert_field USING g_field_name p_scale_price.
ENDIF.
ENDFORM.
&----
*& Form bdc_insert
&----
To uncheck the Unlimited (UEBTK)
----
FORM bdc_insert USING f_name f_value.
CLEAR i_bdc_table.
i_bdc_table-fnam = f_name.
i_bdc_table-fval = f_value.
APPEND i_bdc_table.
ENDFORM. " bdc_insert
reward if useful
regards
santhosh reddy
Message was edited by:
santhosh reddy
2007 Mar 27 4:50 AM
2007 Mar 28 4:16 AM