Application Development 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: 

BDC program

Former Member
0 Kudos

Dear All,

I want a sample BDC program urgently.

so pls help me.

Thank you

1 ACCEPTED SOLUTION

Former Member
0 Kudos

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

4 REPLIES 4

Former Member
0 Kudos

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

Former Member
0 Kudos

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

former_member416164
Participant
0 Kudos

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

Former Member
0 Kudos

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