04-15-2008 8:15 AM
Dear All,
I want a sample BDC program urgently.
so pls help me.
Thank you
04-15-2008 8:18 AM
hi,,,
*TABLES:
*
PARAMETERS: P_IPFILE LIKE RLGRAP-FILENAME.
*-BDC Related Data Decleration
DATA: IT_BDCDATA LIKE BDCDATA OCCURS 0 WITH HEADER LINE,
IT_MESSTAB LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE.
DATA: BEGIN OF IT_VENDORS OCCURS 10,
KTOKK LIKE RF02K-KTOKK,
NAME1 LIKE LFA1-NAME1,
SORTL LIKE LFA1-SORTL,
STRAS LIKE LFA1-STRAS,
ORT01 LIKE LFA1-ORT01,
PSTLZ LIKE LFA1-PSTLZ,
LAND1 LIKE LFA1-LAND1,
REGIO LIKE LFA1-REGIO,
TELF1 LIKE LFA1-TELF1,
KONZS LIKE LFA1-KONZS,
STCD1 LIKE LFA1-STCD1,
STKZA LIKE LFA1-STKZA,
STZKU LIKE LFA1-STKZU,
BANKS LIKE LFBK-BANKS,
BANKL LIKE LFBK-BANKL,
BANKN LIKE LFBK-BANKN,
KOINH LIKE LFBK-KOINH,
END OF IT_VENDORS.
DATA: BEGIN OF IT_ERROR OCCURS 10,
LINENO TYPE I,
MESSAGE TYPE STRING,
END OF IT_ERROR.
DATA: BEGIN OF IT_SUCCESS OCCURS 10,
LIFNR LIKE LFA1-LIFNR,
NAME1 LIKE LFA1-NAME1,
END OF IT_SUCCESS.
DATA: V_MODE TYPE C VALUE 'A',
V_IP_REC_COUNT TYPE I,
V_ERRORS TYPE I,
V_SUCCESS TYPE I,
V_INDEX LIKE SY-TABIX.
START-OF-SELECTION.
PERFORM READ_INPUT_FILE.
LOOP AT IT_VENDORS.
ADD 1 TO V_IP_REC_COUNT.
PERFORM LOAD_BDCDATA.
PERFORM CALL_TRANSACTION.
ENDLOOP.
END-OF-SELECTION.
&----
*& Form load_bdcdata
&----
FORM LOAD_BDCDATA.
PERFORM APPEND_BDC_TABLE
USING: 'X' 'SAPMF02K' '0100',
' ' 'BDC_OKCODE' '/00',
' ' 'RF02K-KTOKK' '1010',
'X' 'SAPMF02K' '0110',
' ' 'BDC_OKCODE' '/00',
' ' 'LFA1-NAME1' 'Name1',
' ' 'LFA1-SORTL' 'NM1',
' ' 'LFA1-STRAS' '1234 Main st',
' ' 'LFA1-ORT01' 'Fresno',
' ' 'LFA1-PSTLZ' '94539',
' ' 'LFA1-LAND1' 'us',
' ' 'LFA1-REGIO' 'ca',
' ' 'LFA1-TELF1' '111-111-1112',
'X' 'SAPMF02K' '0120',
' ' 'BDC_OKCODE' '/00',
' ' 'LFA1-KONZS' '2222',
' ' 'LFA1-STCD1' '111-111-333',
' ' 'LFA1-STKZA' 'X',
' ' 'LFA1-STKZU' 'X',
'X' 'SAPMF02K' '0130',
' ' 'BDC_OKCODE' '=UPDA',
' ' 'LFBK-BANKS(01)' 'US',
' ' 'LFBK-BANKL(01)' '083000315',
' ' 'LFBK-BANKN(01)' '123455432',
' ' 'LFBK-KOINH(01)' 'John Doe'.
ENDFORM. " load_bdcdata
&----
*& Form append_bdc_table
&----
FORM APPEND_BDC_TABLE USING P_FLAG P_FNAME P_FVALUE.
CLEAR IT_BDCDATA.
IF P_FLAG = 'X'.
IT_BDCDATA-PROGRAM = P_FNAME.
IT_BDCDATA-DYNPRO = P_FVALUE.
IT_BDCDATA-DYNBEGIN = 'X'.
APPEND IT_BDCDATA.
ELSEIF NOT P_FVALUE IS INITIAL.
IT_BDCDATA-FNAM = P_FNAME.
IT_BDCDATA-FVAL = P_FVALUE.
APPEND IT_BDCDATA.
ENDIF.
ENDFORM. " append_bdc_table
&----
*& Form read_input_file
&----
FORM READ_INPUT_FILE.
DATA: L_IPFILE TYPE STRING.
L_IPFILE = P_IPFILE.
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
FILENAME = L_IPFILE
FILETYPE = 'ASC'
HAS_FIELD_SEPARATOR = 'X'
TABLES
DATA_TAB = IT_VENDORS
EXCEPTIONS
OTHERS = 0.
ENDFORM. " read_input_file
&----
*& Form call_transaction
&----
FORM CALL_TRANSACTION.
CALL TRANSACTION 'XK01' USING IT_BDCDATA
MODE V_MODE
UPDATE 'S'
MESSAGES INTO IT_MESSTAB.
IF SY-SUBRC = 0.
READ TABLE IT_MESSTAB WITH KEY MSGTYP = 'S'.
IF SY-SUBRC = 0.
IT_SUCCESS-LIFNR = IT_MESSTAB-MSGV1.
IT_SUCCESS-NAME1 = IT_VENDORS-NAME1.
APPEND IT_SUCCESS.
ADD 1 TO V_SUCCESS.
ENDIF.
ELSE.
READ TABLE IT_MESSTAB WITH KEY MSGTYP = 'E'.
IF SY-SUBRC = 0.
CALL FUNCTION 'FORMAT_MESSAGE'
EXPORTING
ID = SY-MSGID
NO = IT_MESSTAB-MSGNR
V1 = IT_MESSTAB-MSGV1
V2 = IT_MESSTAB-MSGV2
V3 = IT_MESSTAB-MSGV3
V4 = IT_MESSTAB-MSGV4
IMPORTING
MSG = IT_ERROR-MESSAGE
EXCEPTIONS
NOT_FOUND = 1
OTHERS = 2.
IT_ERROR-LINENO = V_INDEX.
APPEND IT_ERROR.
ADD 1 TO V_ERRORS.
ENDIF.
ENDIF.
CLEAR: IT_BDCDATA, IT_MESSTAB.
REFRESH: IT_BDCDATA, IT_MESSTAB.
ENDFORM. " call_transaction
pls reward if useful
regards,
rekha
04-15-2008 8:18 AM
hi,,,
*TABLES:
*
PARAMETERS: P_IPFILE LIKE RLGRAP-FILENAME.
*-BDC Related Data Decleration
DATA: IT_BDCDATA LIKE BDCDATA OCCURS 0 WITH HEADER LINE,
IT_MESSTAB LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE.
DATA: BEGIN OF IT_VENDORS OCCURS 10,
KTOKK LIKE RF02K-KTOKK,
NAME1 LIKE LFA1-NAME1,
SORTL LIKE LFA1-SORTL,
STRAS LIKE LFA1-STRAS,
ORT01 LIKE LFA1-ORT01,
PSTLZ LIKE LFA1-PSTLZ,
LAND1 LIKE LFA1-LAND1,
REGIO LIKE LFA1-REGIO,
TELF1 LIKE LFA1-TELF1,
KONZS LIKE LFA1-KONZS,
STCD1 LIKE LFA1-STCD1,
STKZA LIKE LFA1-STKZA,
STZKU LIKE LFA1-STKZU,
BANKS LIKE LFBK-BANKS,
BANKL LIKE LFBK-BANKL,
BANKN LIKE LFBK-BANKN,
KOINH LIKE LFBK-KOINH,
END OF IT_VENDORS.
DATA: BEGIN OF IT_ERROR OCCURS 10,
LINENO TYPE I,
MESSAGE TYPE STRING,
END OF IT_ERROR.
DATA: BEGIN OF IT_SUCCESS OCCURS 10,
LIFNR LIKE LFA1-LIFNR,
NAME1 LIKE LFA1-NAME1,
END OF IT_SUCCESS.
DATA: V_MODE TYPE C VALUE 'A',
V_IP_REC_COUNT TYPE I,
V_ERRORS TYPE I,
V_SUCCESS TYPE I,
V_INDEX LIKE SY-TABIX.
START-OF-SELECTION.
PERFORM READ_INPUT_FILE.
LOOP AT IT_VENDORS.
ADD 1 TO V_IP_REC_COUNT.
PERFORM LOAD_BDCDATA.
PERFORM CALL_TRANSACTION.
ENDLOOP.
END-OF-SELECTION.
&----
*& Form load_bdcdata
&----
FORM LOAD_BDCDATA.
PERFORM APPEND_BDC_TABLE
USING: 'X' 'SAPMF02K' '0100',
' ' 'BDC_OKCODE' '/00',
' ' 'RF02K-KTOKK' '1010',
'X' 'SAPMF02K' '0110',
' ' 'BDC_OKCODE' '/00',
' ' 'LFA1-NAME1' 'Name1',
' ' 'LFA1-SORTL' 'NM1',
' ' 'LFA1-STRAS' '1234 Main st',
' ' 'LFA1-ORT01' 'Fresno',
' ' 'LFA1-PSTLZ' '94539',
' ' 'LFA1-LAND1' 'us',
' ' 'LFA1-REGIO' 'ca',
' ' 'LFA1-TELF1' '111-111-1112',
'X' 'SAPMF02K' '0120',
' ' 'BDC_OKCODE' '/00',
' ' 'LFA1-KONZS' '2222',
' ' 'LFA1-STCD1' '111-111-333',
' ' 'LFA1-STKZA' 'X',
' ' 'LFA1-STKZU' 'X',
'X' 'SAPMF02K' '0130',
' ' 'BDC_OKCODE' '=UPDA',
' ' 'LFBK-BANKS(01)' 'US',
' ' 'LFBK-BANKL(01)' '083000315',
' ' 'LFBK-BANKN(01)' '123455432',
' ' 'LFBK-KOINH(01)' 'John Doe'.
ENDFORM. " load_bdcdata
&----
*& Form append_bdc_table
&----
FORM APPEND_BDC_TABLE USING P_FLAG P_FNAME P_FVALUE.
CLEAR IT_BDCDATA.
IF P_FLAG = 'X'.
IT_BDCDATA-PROGRAM = P_FNAME.
IT_BDCDATA-DYNPRO = P_FVALUE.
IT_BDCDATA-DYNBEGIN = 'X'.
APPEND IT_BDCDATA.
ELSEIF NOT P_FVALUE IS INITIAL.
IT_BDCDATA-FNAM = P_FNAME.
IT_BDCDATA-FVAL = P_FVALUE.
APPEND IT_BDCDATA.
ENDIF.
ENDFORM. " append_bdc_table
&----
*& Form read_input_file
&----
FORM READ_INPUT_FILE.
DATA: L_IPFILE TYPE STRING.
L_IPFILE = P_IPFILE.
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
FILENAME = L_IPFILE
FILETYPE = 'ASC'
HAS_FIELD_SEPARATOR = 'X'
TABLES
DATA_TAB = IT_VENDORS
EXCEPTIONS
OTHERS = 0.
ENDFORM. " read_input_file
&----
*& Form call_transaction
&----
FORM CALL_TRANSACTION.
CALL TRANSACTION 'XK01' USING IT_BDCDATA
MODE V_MODE
UPDATE 'S'
MESSAGES INTO IT_MESSTAB.
IF SY-SUBRC = 0.
READ TABLE IT_MESSTAB WITH KEY MSGTYP = 'S'.
IF SY-SUBRC = 0.
IT_SUCCESS-LIFNR = IT_MESSTAB-MSGV1.
IT_SUCCESS-NAME1 = IT_VENDORS-NAME1.
APPEND IT_SUCCESS.
ADD 1 TO V_SUCCESS.
ENDIF.
ELSE.
READ TABLE IT_MESSTAB WITH KEY MSGTYP = 'E'.
IF SY-SUBRC = 0.
CALL FUNCTION 'FORMAT_MESSAGE'
EXPORTING
ID = SY-MSGID
NO = IT_MESSTAB-MSGNR
V1 = IT_MESSTAB-MSGV1
V2 = IT_MESSTAB-MSGV2
V3 = IT_MESSTAB-MSGV3
V4 = IT_MESSTAB-MSGV4
IMPORTING
MSG = IT_ERROR-MESSAGE
EXCEPTIONS
NOT_FOUND = 1
OTHERS = 2.
IT_ERROR-LINENO = V_INDEX.
APPEND IT_ERROR.
ADD 1 TO V_ERRORS.
ENDIF.
ENDIF.
CLEAR: IT_BDCDATA, IT_MESSTAB.
REFRESH: IT_BDCDATA, IT_MESSTAB.
ENDFORM. " call_transaction
pls reward if useful
regards,
rekha
04-15-2008 8:18 AM
Hi,
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
04-15-2008 8:18 AM
Hello,
I can give you an example but maybe it would be better to generate it directly from transaction SHDB. With this transaction you'll be able to generate a batch-input program.
Hope this help
Jean-Michel
04-15-2008 8:35 AM
Hi,
1.Call transaction method
DATA: BEGIN OF itab OCCURS 0,
str(255),
END OF itab.
DATA: BEGIN OF itab1 OCCURS 0,
lifnr LIKE lfa1-lifnr,
name1 LIKE lfa1-name1,
ort01 LIKE lfa1-ort01,
END OF itab1.
DATA: jtab LIKE bdcdata OCCURS 0 WITH HEADER LINE.
DATA: ktab TYPE TABLE OF bdcmsgcoll,
wa TYPE bdcmsgcoll.
CALL FUNCTION 'WS_UPLOAD'
EXPORTING
filename = 'D:\ABAP EVE\ffile4.txt'
filetype = 'ASC'
TABLES
data_tab = itab
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.
WRITE:/ 'no file exist'.
ENDIF.
LOOP AT itab.
SPLIT itab-str AT ',' INTO itab1-lifnr itab1-name1 itab1-ort01.
APPEND itab1.
ENDLOOP.
LOOP AT itab1.
PERFORM prginfo USING 'SAPMZBDCCT' '123'.
PERFORM fldinfo USING 'i01' itab1-lifnr.
PERFORM fldinfo USING 'i02' itab1-name1.
PERFORM fldinfo USING 'i03' itab1-ort01.
CALL TRANSACTION 'ZCSBDCCT' USING jtab
MODE 'N'
MESSAGES INTO ktab.
ENDLOOP.
--- Display the Status messages ---
LOOP AT ktab INTO wa WHERE msgtyp = 'E'.
WRITE:/ wa.
ENDLOOP.
&----
*& Form prginfo
&----
text
----
-->PRGNAME text
-->SCRNUMBER text
----
FORM prginfo USING prgname scrnumber.
CLEAR jtab.
REFRESH jtab.
jtab-program = prgname.
jtab-dynpro = scrnumber.
jtab-dynbegin = 'X'.
APPEND jtab.
ENDFORM. "prginfo
&----
*& Form fldinfo
&----
text
----
-->FLDNM text
-->FLDVAL text
----
FORM fldinfo USING fldnm fldval.
CLEAR jtab.
jtab-fnam = fldnm.
jtab-fval = fldval.
APPEND jtab.
ENDFORM. "fldinfo
MPP CODE.
TOP-INCLUDE.
DATA: OK_CODE TYPE SY-UCOMM.
DATA: I01(10),I02(20),I03(26).
DATA: WA TYPE LFA1.
PAI
CASE OK_CODE.
WHEN 'INSERT'.
MOVE I01 TO WA-LIFNR.
MOVE I02 TO WA-NAME1.
MOVE I03 TO WA-ORT01.
INSERT INTO LFA1 VALUES WA.
IF SY-SUBRC = 0.
MESSAGE I001(ZCSMSG).
ELSE.
MESSAGE I002(ZCSMSG).
ENDIF.
WHEN 'EXIT'.
LEAVE PROGRAM.
ENDCASE.
Flat file:
200001,Yogesh,Hyderabad
220003,Wreline,Calfornia
321224,Alexme,Sandiago
2.Session method
DATA: BEGIN OF itab OCCURS 0,
str(255),
END OF itab.
DATA: BEGIN OF itab1 OCCURS 0,
lifnr LIKE lfa1-lifnr,
name1 LIKE lfa1-name1,
ort01 LIKE lfa1-ort01,
END OF itab1.
DATA: jtab LIKE bdcdata OCCURS 0 WITH HEADER LINE.
CALL FUNCTION 'WS_UPLOAD'
EXPORTING
filename = 'D:\ABAP EVE\ffile5.txt'
filetype = 'ASC'
TABLES
data_tab = itab
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.
WRITE:/ 'no file exist'.
ENDIF.
LOOP AT itab.
SPLIT itab-str AT ',' INTO itab1-lifnr itab1-name1 itab1-ort01.
APPEND itab1.
ENDLOOP.
CALL FUNCTION 'BDC_OPEN_GROUP'
EXPORTING
client = sy-mandt
DEST = FILLER8
group = 'ZCSSESSIONM1'
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.
LOOP AT itab1.
PERFORM prginfo USING 'SAPMZBDCCT' '123'.
PERFORM fldinfo USING 'i01' itab1-lifnr.
PERFORM fldinfo USING 'i02' itab1-name1.
PERFORM fldinfo USING 'i03' itab1-ort01.
CALL TRANSACTION 'ZCSBDCCT' USING jtab.
CALL FUNCTION 'BDC_INSERT'
EXPORTING
tcode = 'ZCSBDCCT'
POST_LOCAL = NOVBLOCAL
PRINTING = NOPRINT
SIMUBATCH = ' '
CTUPARAMS = ' '
TABLES
dynprotab = jtab
EXCEPTIONS
internal_error = 1
not_open = 2
queue_error = 3
tcode_invalid = 4
printing_invalid = 5
posting_invalid = 6
OTHERS = 7.
ENDLOOP.
CALL FUNCTION 'BDC_CLOSE_GROUP'.
&----
*& Form prginfo
&----
text
----
-->PRGNAME text
-->SCRNUMBER text
----
FORM prginfo USING prgname scrnumber.
CLEAR jtab.
REFRESH jtab.
jtab-program = prgname.
jtab-dynpro = scrnumber.
jtab-dynbegin = 'X'.
APPEND jtab.
ENDFORM. "prginfo
&----
*& Form fldinfo
&----
text
----
-->FLDNM text
-->FLDVAL text
----
FORM fldinfo USING fldnm fldval.
CLEAR jtab.
jtab-fnam = fldnm.
jtab-fval = fldval.
APPEND jtab.
ENDFORM. "fldinfo
MPP CODE.
TOP-INCLUDE.
DATA: OK_CODE TYPE SY-UCOMM.
DATA: I01(10),I02(20),I03(26).
DATA: WA TYPE LFA1.
PAI
CASE OK_CODE.
WHEN 'INSERT'.
MOVE I01 TO WA-LIFNR.
MOVE I02 TO WA-NAME1.
MOVE I03 TO WA-ORT01.
INSERT INTO LFA1 VALUES WA.
IF SY-SUBRC = 0.
MESSAGE I001(ZCSMSG).
ELSE.
MESSAGE I002(ZCSMSG).
ENDIF.
WHEN 'EXIT'.
LEAVE PROGRAM.
ENDCASE.
Open SM35 TCode -> select the session -> Click on "Process" from application toolbar
-> select mode of execution(foreground/background) -> click on "process".
Flat file:
300001,Yogesh,Secundrabad
320003,Wreline,Mexico
320004,Alexme,New York
Reward,if useful.
Thanks,
Chandu