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: 

Uploading data in MM01 for different material types

former_member687052
Participant
0 Kudos

Hi,

I have a doubt regarding uploading the data in MM01 for different material types.

Generally in MM01, we have different views for different material types. The number of views will vary depending upon the material type that we select.

I have a scenario, where in to upload the data, I have a flat file that consists of data for different message types. So, how to upload the data in such case.

Can anyone help me on the same by providing explanation or sample code...? What would be the possible ways to upload data in such scenario.

That would be of great help.

Thanks & Regards,

Pradeep.

1 ACCEPTED SOLUTION

sreeramkumar_madisetty
Active Contributor
0 Kudos

Hi

include bdcrecx1.

tables : mara.

data : begin of it_mara occurs 0,

matnr like mara-matnr,

mbrsh like mara-mbrsh,

mtart like mara-mtart,

maktx like makt-maktx,

meins like mara-meins,

end of it_mara.

start-of-selection.

perform upload_data.

perform open_group.

loop at it_mara.

perform bdc_dynpro using 'SAPLMGMM' '0060'.

perform bdc_field using 'BDC_CURSOR'

'RMMG1-MATNR'.

perform bdc_field using 'BDC_OKCODE'

'/00'.

perform bdc_field using 'RMMG1-MATNR'

it_mara-matnr.

perform bdc_field using 'RMMG1-MBRSH'

it_mara-mbrsh.

perform bdc_field using 'RMMG1-MTART'

it_mara-mtart.

perform bdc_dynpro using 'SAPLMGMM' '0070'.

perform bdc_field using 'BDC_CURSOR'

'MSICHTAUSW-DYTXT(02)'.

perform bdc_field using 'BDC_OKCODE'

'=ENTR'.

perform bdc_field using 'MSICHTAUSW-KZSEL(01)'

'X'.

perform bdc_field using 'MSICHTAUSW-KZSEL(02)'

'X'.

perform bdc_dynpro using 'SAPLMGMM' '4004'.

perform bdc_field using 'BDC_OKCODE'

'=BU'.

perform bdc_field using 'MAKT-MAKTX'

it_mara-maktx.

perform bdc_field using 'BDC_CURSOR'

'MARA-MEINS'.

perform bdc_field using 'MARA-MEINS'

it_mara-meins.

perform bdc_field using 'MARA-MTPOS_MARA'

'NORM'.

perform bdc_transaction using 'MM01'.

endloop.

perform close_group.

&----


*& Form upload_data

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM upload_data .

CALL FUNCTION 'GUI_UPLOAD'

EXPORTING

FILENAME = 'c:\mat_bdc.txt'

FILETYPE = 'ASC'

TABLES

DATA_TAB = it_mara.

IF SY-SUBRC = 0.

SORT IT_MARA BY MATNR.

ENDIF.

ENDFORM. " upload_data

flat file structure is

PRANIT_011 CCOUP This is Testing material kg

PRANIT_012 CCOUP This is Testing material kg

PRANIT_013 CCOUP This is Testing material kg

PRANIT_014 CCOUP This is Testing material kg

PRANIT_015 CCOUP This is Testing material kg

when your selecting views

this particular material will belongs to Po/Sales or some other areas .

when you select basic 1 --it gives description

select basic 2 -- it gives tax ,amount, base unit of measurement

the above will work for different Materail Types.

Regards,

Sree

5 REPLIES 5

sreeramkumar_madisetty
Active Contributor
0 Kudos

Hi

include bdcrecx1.

tables : mara.

data : begin of it_mara occurs 0,

matnr like mara-matnr,

mbrsh like mara-mbrsh,

mtart like mara-mtart,

maktx like makt-maktx,

meins like mara-meins,

end of it_mara.

start-of-selection.

perform upload_data.

perform open_group.

loop at it_mara.

perform bdc_dynpro using 'SAPLMGMM' '0060'.

perform bdc_field using 'BDC_CURSOR'

'RMMG1-MATNR'.

perform bdc_field using 'BDC_OKCODE'

'/00'.

perform bdc_field using 'RMMG1-MATNR'

it_mara-matnr.

perform bdc_field using 'RMMG1-MBRSH'

it_mara-mbrsh.

perform bdc_field using 'RMMG1-MTART'

it_mara-mtart.

perform bdc_dynpro using 'SAPLMGMM' '0070'.

perform bdc_field using 'BDC_CURSOR'

'MSICHTAUSW-DYTXT(02)'.

perform bdc_field using 'BDC_OKCODE'

'=ENTR'.

perform bdc_field using 'MSICHTAUSW-KZSEL(01)'

'X'.

perform bdc_field using 'MSICHTAUSW-KZSEL(02)'

'X'.

perform bdc_dynpro using 'SAPLMGMM' '4004'.

perform bdc_field using 'BDC_OKCODE'

'=BU'.

perform bdc_field using 'MAKT-MAKTX'

it_mara-maktx.

perform bdc_field using 'BDC_CURSOR'

'MARA-MEINS'.

perform bdc_field using 'MARA-MEINS'

it_mara-meins.

perform bdc_field using 'MARA-MTPOS_MARA'

'NORM'.

perform bdc_transaction using 'MM01'.

endloop.

perform close_group.

&----


*& Form upload_data

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM upload_data .

CALL FUNCTION 'GUI_UPLOAD'

EXPORTING

FILENAME = 'c:\mat_bdc.txt'

FILETYPE = 'ASC'

TABLES

DATA_TAB = it_mara.

IF SY-SUBRC = 0.

SORT IT_MARA BY MATNR.

ENDIF.

ENDFORM. " upload_data

flat file structure is

PRANIT_011 CCOUP This is Testing material kg

PRANIT_012 CCOUP This is Testing material kg

PRANIT_013 CCOUP This is Testing material kg

PRANIT_014 CCOUP This is Testing material kg

PRANIT_015 CCOUP This is Testing material kg

when your selecting views

this particular material will belongs to Po/Sales or some other areas .

when you select basic 1 --it gives description

select basic 2 -- it gives tax ,amount, base unit of measurement

the above will work for different Materail Types.

Regards,

Sree

Former Member
0 Kudos

See the below code and use FM SELECTION_VIEWS_FIND..

REPORT zjpmuim306 NO STANDARD PAGE HEADING LINE-SIZE 250 MESSAGE-ID

zjpm001.

&----


*& I N B O U N D V I A A B A P : Batch input Session method *

*& Development ID: IM_DD_306_LJP *

*& *

*& Report : ZJPMUIM306 *

*& *

*& The Purpose of the Object is to interface Create Input Record *

*& for SAP Migration from the Material master of BPCS All the *

*& information received at BPCS is collected into a single record. *

*& By using session method upload data from file ,one item is

*& created for one record *

*& *

&----


*& *

*& Change Log: *

*& *

*& Init Who Date Text *

*& MALIKDH1 Seshu Reddy 26-07-2003 Initial Version *

*& *

&----


----


  • Constants *

----


CONSTANTS:c_vkorg(4) type c value 'JP20', " Sales Organization

c_vtweg(2) type c value 'TR' , " Distribution Channel

c_werks(4) Type c value 'JP01' , " Plant

c_viewlist(15) VALUE 'KDEALBSZXVPCFQG'," View list

c_scm_view TYPE msichtausw-dytxt VALUE 'SCM View',

c_sd_view TYPE msichtausw-dytxt VALUE 'SD View',

c_seq_code(2) VALUE 'Z1', " Sequential Code

c_keep(1) TYPE c VALUE 'X', " Keep

c_group LIKE apqi-groupid VALUE 'IM306', " Session Name

c_tcode LIKE tstc-tcode VALUE 'MM02', " Transaction Code

c_blank(1) VALUE ' ', " Blank

c_intls(1) VALUE 'N'. " Logistic Status

----


  • Variables *

----


DATA: g_flag1(1), " Variable to hold

g_flag(1), " Variable to hold

g_file LIKE rlgrap-filename VALUE

'C:\Documents and Settings\seshur\Desktop\HCLT123.CSV'. " File name

----


  • Internal tables/ Work area *

----


  • Internal Table for Delimter

DATA : BEGIN OF t_delim OCCURS 0,

text(1000),

END OF t_delim.

  • Internal table for BDC processing

DATA : t_bdcdata LIKE bdcdata OCCURS 0 WITH HEADER LINE.

  • Internal table for holding the data which has to be uploaded.

DATA: BEGIN OF t_bpcs OCCURS 0,

matnr(15) TYPE c, " material no

dosage(40) TYPE c, " Dosage form(Local)

appearance(40) TYPE c, " Appearance

idcode(6) TYPE c, " Identification Code

prostformno(10) TYPE c, "SOP

weitab(7) TYPE c, " Weight/tablet

uom1(2) TYPE c, " UOM of Carton

uom2(2) TYPE c, " UOM of Case

carsize(14) TYPE c, " Carton size

cassize(14) TYPE c, " Case size

rupqty(11) TYPE c, " Round up

abvname(3) TYPE c, " Product short name

END OF t_bpcs.

*Internal table for t_bpcs

DATA: BEGIN OF t_mdata OCCURS 0,

matnr LIKE marc-matnr, " Material number

zzjp_dos_frm LIKE marc-zzjp_dos_frm, " Dosage form(Local)

zzjp_aprn LIKE marc-zzjp_aprn, " Appearance

zzjp_con_id LIKE marc-zzjp_con_id," Identification Code

zzjp_nyu_sop LIKE marc-zzjp_nyu_sop,"SOP

zzjp_wei_tab(10) type c , " Weight/tablet

zzjp_bio LIKE marc-zzjp_bio,"Biologics Indicator

zzjp_itf LIKE marc-zzjp_itf, " ITF code

zzjp_car(2) type c, " UOM of Carton

zzjp_cas(2) type c, " UOM of Case

zzjp_car_size(11) type c," Carton size

zzjp_cas_size(11) type c, " Case size

zzjp_rupqty(11) type c, " Round up

zzjp_init_ls LIKE marc-zzjp_init_ls, " Logistic Status

zzjp_re1 LIKE marc-zzjp_re1, "Document type(Local)

zzjp_re2 LIKE marc-zzjp_re2, "Report type

zzjp_re3 LIKE marc-zzjp_re3, "Shipping report type

zzjp_pro_id LIKE mvke-zzjp_pro_id," Product output sequence

zzjp_bu_id LIKE mvke-zzjp_bu_id, " Business unit indicator

zzjp_abv_name LIKE mvke-zzjp_abv_name," Product short name

zzjp_abv_id1 LIKE mvke-zzjp_abv_id1," Product short name output

zzjp_abv_id2 LIKE mvke-zzjp_abv_id2," Product short name internal

zzjp_spl_id LIKE mvke-zzjp_spl_id, " Sample internal order

END OF t_mdata.

  • Internal table for Mara Table

DATA: BEGIN OF t_mara OCCURS 0,

matnr LIKE mara-matnr, " material Number

vpsta LIKE mara-vpsta, " Maintenance status of complete material

pstat like mara-pstat, " Maintenance status

END OF t_mara.

  • Internal table for Material Master View Selection Screens

DATA: BEGIN OF t_bildtab OCCURS 0.

INCLUDE STRUCTURE mbildtab.

DATA: END OF t_bildtab.

  • internal table for T_bildtab

DATA: t_bildtab_dup LIKE t_bildtab OCCURS 0 WITH HEADER LINE.

*Work area for T_bildtab internal table(Views Selection)

DATA: BEGIN OF w_data,

flag1 type c,

anzd70 TYPE i,

field1(20) type c,

field2(20) type c,

field3(20) type c,

field4(20) type c,

count(2) TYPE c,

END OF w_data.

----


  • Main Processing *

----


START-OF-SELECTION.

  • Store data from file into internal table

PERFORM f_uplaod_data.

  • Transfer the uploaded data into t_mdata internal Table

PERFORM f_process_data.

  • Selecting The views based on Material number

PERFORM f_view_list.

  • Open a BDC Session

PERFORM f_bdc_open.

*Selecting the fields from mara table

SELECT matnr

vpsta

pstat

FROM mara

INTO TABLE t_mara

FOR ALL ENTRIES IN t_mdata

WHERE matnr = t_mdata-matnr.

SORT t_mara BY matnr.

SORT t_mdata BY matnr.

  • Transfer the uploaded data into BDCDATA structure

PERFORM f_process_bdc.

  • Close The BDC Session

PERFORM f_close_group.

&----


*& Form F_VIEW_LIST *

&----


  • Routine to used for Calling the function module *

  • Selection_views_find *

----


FORM f_view_list.

CALL FUNCTION 'SELECTION_VIEWS_FIND'

EXPORTING

bildsequenz = c_seq_code

pflegestatus = c_viewlist

TABLES

bildtab = t_bildtab

EXCEPTIONS

call_wrong = 1

empty_selection = 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. " F_VIEW_LIST

&----


*& Form f612_view_sort *

&----


  • Routine to used for Selecting The views based on Material Number *

----


FORM f612_view_sort.

t_bildtab_dup[] = t_bildtab[].

  • Reading the Internal table t_mara

READ TABLE t_mara WITH KEY matnr = t_mdata-matnr.

TRANSLATE t_mara-pstat USING ' $'.

CLEAR: w_data-flag1, w_data-anzd70.

LOOP AT t_bildtab_dup.

IF t_bildtab_dup-pstat CA t_mara-pstat.

w_data-anzd70 = w_data-anzd70 + 1.

IF t_bildtab_dup-kzanz IS INITIAL.

t_bildtab_dup-kzanz = 'X'.

w_data-flag1 = 'X'.

MODIFY t_bildtab_dup.

ENDIF.

ELSE.

IF NOT t_bildtab_dup-kzanz IS INITIAL.

CLEAR t_bildtab_dup-kzanz.

w_data-flag1 = 'X'.

MODIFY t_bildtab_dup.

ENDIF.

ENDIF.

ENDLOOP.

TRANSLATE t_mara-pstat USING '$ '.

IF NOT w_data-flag1 IS INITIAL.

SORT t_bildtab_dup BY kzanz DESCENDING idxbd ASCENDING.

ENDIF.

*Reading The internal table for T_bildtab_dup

READ TABLE t_bildtab_dup WITH KEY dytxt = c_scm_view.

IF t_bildtab_dup-kzanz = 'X'.

WRITE sy-tabix TO w_data-count.

w_data-count = w_data-count + 2.

IF w_data-anzd70 > 18.

w_data-count = w_data-count - 18.

ENDIF.

CONCATENATE 'MSICHTAUSW-DYTXT(' w_data-count ')' INTO w_data-field1.

CONCATENATE 'MSICHTAUSW-KZSEL(' w_data-count ')' INTO w_data-field2.

ENDIF.

READ TABLE t_bildtab_dup WITH KEY dytxt = c_sd_view.

IF t_bildtab_dup-kzanz = 'X'.

WRITE sy-tabix TO w_data-count.

IF w_data-anzd70 > 18.

w_data-count = w_data-count + 2.

w_data-count = w_data-count - 18.

ENDIF.

CONCATENATE 'MSICHTAUSW-DYTXT(' w_data-count ')' INTO w_data-field3.

CONCATENATE 'MSICHTAUSW-KZSEL(' w_data-count ')' INTO w_data-field4.

ENDIF.

ENDFORM. " f612_view_sort

&----


*& Form f_uplaod_data *

&----


  • Routine to used for Uploading the data from file to Internal table *

----


FORM f_uplaod_data.

CALL FUNCTION 'WS_UPLOAD'

EXPORTING

filename = g_file

filetype = 'DAT'

TABLES

data_tab = t_delim

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.

ENDIF.

IF t_bpcs IS INITIAL.

LOOP AT t_delim.

SPLIT t_delim-text AT ',' INTO t_bpcs-matnr

t_bpcs-dosage

t_bpcs-appearance

t_bpcs-idcode

t_bpcs-prostformno

t_bpcs-weitab

t_bpcs-uom1

t_bpcs-uom2

t_bpcs-carsize

t_bpcs-cassize

t_bpcs-rupqty

t_bpcs-abvname.

APPEND t_bpcs.

ENDLOOP.

ENDIF.

ENDFORM. " f_uplaod_data

&----


*& Form F_BDC_OPEN

&----


  • Routine to create BDC Session to be processed

----


FORM f_bdc_open.

CALL FUNCTION 'BDC_OPEN_GROUP'

EXPORTING

client = sy-mandt

group = c_group

keep = c_keep

user = sy-uname

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.

ELSE.

MESSAGE S000 WITH 'Batch input session is created successfully'(T02).

ENDIF.

ENDFORM. " F_BDC_OPEN

&----


*& Form F_PROCESS_BDC

&----


  • Processing of BDCDATA Structure

----


FORM f_process_bdc.

LOOP AT t_mdata.

PERFORM f612_view_sort.

PERFORM f_bdc_dynpro USING 'SAPLMGMM' '0060'.

PERFORM f_bdc_field USING 'BDC_CURSOR'

'RMMG1-MATNR'.

PERFORM f_bdc_field USING 'BDC_OKCODE'

'=AUSW'.

PERFORM f_bdc_field USING 'RMMG1-MATNR'

t_mdata-matnr.

PERFORM f_bdc_dynpro USING 'SAPLMGMM' '0070'.

PERFORM f_bdc_field USING 'BDC_CURSOR'

'MSICHTAUSW-DYTXT(01)'.

IF w_data-anzd70 > 18.

PERFORM f_bdc_field USING 'BDC_OKCODE'

'=P+'.

PERFORM f_bdc_dynpro USING 'SAPLMGMM' '0070'.

PERFORM f_bdc_field USING 'BDC_OKCODE' '/00'.

ENDIF.

  • reading the t_bildtab internal table

READ TABLE t_bildtab_dup WITH KEY dytxt = c_scm_view.

IF t_bildtab_dup-kzanz = 'X'.

PERFORM f_bdc_field USING 'BDC_CURSOR'

w_data-field1.

PERFORM f_bdc_field USING w_data-field2 'X'.

g_flag = 'X'.

ENDIF.

  • reading the t_bildtab internal table

READ TABLE t_bildtab_dup WITH KEY dytxt = c_sd_view.

IF sy-subrc EQ 0.

g_flag = 'X'.

ENDIF.

IF t_bildtab_dup-kzanz = 'X'.

PERFORM f_bdc_field USING 'BDC_CURSOR'

w_data-field3.

PERFORM f_bdc_field USING w_data-field4 'X'.

g_flag1 = 'X'.

ENDIF.

IF g_flag = 'X' AND g_flag1 = 'X'.

PERFORM f_bdc_dynpro USING 'SAPLMGMM' '0080'.

PERFORM f_bdc_field USING 'BDC_CURSOR'

'RMMG1-VTWEG'.

PERFORM f_bdc_field USING 'BDC_OKCODE'

'=ENTR'.

PERFORM f_bdc_field USING 'RMMG1-WERKS'

c_werks.

PERFORM f_bdc_field USING 'RMMG1-VKORG'

c_vkorg.

PERFORM f_bdc_field USING 'RMMG1-VTWEG'

c_vtweg.

CLEAR g_flag.

CLEAR g_flag1.

ELSE.

IF g_flag = 'X'.

PERFORM f_bdc_dynpro USING 'SAPLMGMM' '0080'.

PERFORM f_bdc_field USING 'RMMG1-WERKS'

c_werks.

PERFORM f_bdc_field USING 'BDC_OKCODE' '/00'.

ELSE.

IF g_flag1 = 'X'.

PERFORM f_bdc_dynpro USING 'SAPLMGMM' '0080'.

PERFORM f_bdc_field USING 'BDC_CURSOR'

'RMMG1-VTWEG'.

PERFORM f_bdc_field USING 'RMMG1-WERKS'

c_werks.

PERFORM f_bdc_field USING 'RMMG1-VKORG'

c_vkorg.

PERFORM f_bdc_field USING 'RMMG1-VTWEG'

c_vtweg.

PERFORM f_bdc_field USING 'BDC_OKCODE'

'=ENTR'.

ENDIF.

ENDIF.

ENDIF.

*Processing of SCM View

PERFORM f_bdc_dynpro USING 'SAPLMGMM' '4000'.

PERFORM f_bdc_field USING 'BDC_CURSOR' 'MARC-ZZJP_DOS_FRM'.

PERFORM f_bdc_field USING 'MARC-ZZJP_DOS_FRM'

t_mdata-zzjp_dos_frm.

PERFORM f_bdc_field USING 'MARC-ZZJP_APRN'

t_mdata-zzjp_aprn.

PERFORM f_bdc_field USING 'MARC-ZZJP_CON_ID'

t_mdata-zzjp_con_id.

PERFORM f_bdc_field USING 'MARC-ZZJP_NYU_SOP'

t_mdata-zzjp_nyu_sop.

PERFORM f_bdc_field USING 'MARC-ZZJP_WEI_TAB'

t_mdata-zzjp_wei_tab.

PERFORM f_bdc_field USING 'MARC-ZZJP_CAR'

t_mdata-zzjp_car.

PERFORM f_bdc_field USING 'MARC-ZZJP_CAS'

t_mdata-zzjp_cas.

PERFORM f_bdc_field USING 'MARC-ZZJP_CAR_SIZE'

t_mdata-ZZJP_CAR_SIZE.

PERFORM f_bdc_field USING 'MARC-ZZJP_CAS_SIZE'

t_mdata-ZZJP_CAS_SIZE.

PERFORM f_bdc_field USING 'MARC-ZZJP_RUPQTY'

t_mdata-ZZJP_RUPQTY.

PERFORM f_bdc_field USING 'MARC-ZZJP_BIO'

t_mdata-zzjp_bio.

PERFORM f_bdc_field USING 'MARC-ZZJP_ITF'

t_mdata-zzjp_itf.

PERFORM f_bdc_field USING 'MARC-ZZJP_INIT_LS'

t_mdata-zzjp_init_ls.

PERFORM f_bdc_field USING 'MARC-ZZJP_RE1'

t_mdata-zzjp_re1.

PERFORM f_bdc_field USING 'MARC-ZZJP_RE2'

t_mdata-zzjp_re2.

PERFORM f_bdc_field USING 'MARC-ZZJP_RE3'

t_mdata-zzjp_re3.

PERFORM f_bdc_field USING 'BDC_OKCODE'

'/00'.

*Processing of SD View

PERFORM f_bdc_dynpro USING 'SAPLMGMM' '4000'.

PERFORM f_bdc_field USING 'BDC_CURSOR' 'MVKE-ZZJP_PRO_ID'.

PERFORM f_bdc_field USING 'MVKE-ZZJP_PRO_ID'

t_mdata-zzjp_pro_id.

PERFORM f_bdc_field USING 'MVKE-ZZJP_BU_ID'

t_mdata-zzjp_bu_id.

PERFORM f_bdc_field USING 'MVKE-ZZJP_ABV_NAME'

t_mdata-zzjp_abv_name.

PERFORM f_bdc_field USING 'MVKE-ZZJP_ABV_ID1'

t_mdata-zzjp_abv_id1.

PERFORM f_bdc_field USING 'MVKE-ZZJP_ABV_ID2'

t_mdata-zzjp_abv_id2.

PERFORM f_bdc_field USING 'MVKE-ZZJP_SPL_ID'

t_mdata-zzjp_spl_id.

PERFORM f_bdc_field USING 'BDC_OKCODE' '/00'.

PERFORM f_bdc_dynpro USING 'SAPLSPO1' '0300'.

PERFORM f_bdc_field USING 'BDC_OKCODE'

'=YES'.

perform f_bdc_insert.

REFRESH T_BDCDATA.

ENDLOOP.

ENDFORM. " F_PROCESS_BDC

&----


*& Form f_bdc_dynpro

&----


  • p_prog is the program name to which data is passed *

  • p_dyno is the screen number to which the data is passed

**----


  • Routine for populating the BDCDATA structure with the

  • Screen related information

----


FORM f_bdc_dynpro USING p_prog

p_dyno.

t_bdcdata-program = p_prog.

t_bdcdata-dynpro = p_dyno.

t_bdcdata-dynbegin = 'X'.

APPEND t_bdcdata.

CLEAR t_bdcdata.

ENDFORM. " F_bdc_dynpro

&----


*& Form F_BDC_FIELD

&----


  • p_fnam is the field name to which value is passed

  • p_fval is the field value which is passed

----


  • p_fnam is the field name to which value is passed

  • p_fval is the field value which is passed

----


FORM f_bdc_field USING p_fnam

p_fval.

t_bdcdata-fnam = p_fnam.

t_bdcdata-fval = p_fval.

APPEND t_bdcdata.

CLEAR t_bdcdata.

ENDFORM. " F_bdc_field

&----


*& Form F_PROCESS_DATA *

&----


  • Routine to used for moving data from T_bpcs internal table to *

  • t_mdata Internal Table *

----


FORM f_process_data.

LOOP AT t_bpcs.

CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'

EXPORTING

input = t_bpcs-matnr

IMPORTING

output = t_mdata-matnr.

MOVE t_bpcs-dosage TO t_mdata-zzjp_dos_frm.

MOVE t_bpcs-appearance TO t_mdata-zzjp_aprn.

MOVE t_bpcs-idcode TO t_mdata-zzjp_con_id.

MOVE t_bpcs-prostformno TO t_mdata-zzjp_nyu_sop.

MOVE t_bpcs-weitab TO t_mdata-zzjp_wei_tab.

MOVE c_blank TO t_mdata-zzjp_bio.

MOVE c_blank TO t_mdata-zzjp_itf.

MOVE t_bpcs-uom1 TO t_mdata-zzjp_car.

MOVE t_bpcs-uom2 TO t_mdata-zzjp_cas.

MOVE t_bpcs-carsize TO t_mdata-zzjp_car_size.

MOVE t_bpcs-cassize TO t_mdata-zzjp_cas_size.

MOVE t_bpcs-rupqty TO t_mdata-zzjp_rupqty.

MOVE c_intls TO t_mdata-zzjp_init_ls.

MOVE c_blank TO t_mdata-zzjp_re1.

MOVE c_blank TO t_mdata-zzjp_re2.

MOVE c_blank TO t_mdata-zzjp_re3.

MOVE c_blank TO t_mdata-zzjp_pro_id.

MOVE c_blank TO t_mdata-zzjp_bu_id.

MOVE t_bpcs-abvname TO t_mdata-zzjp_abv_name.

MOVE c_blank TO t_mdata-zzjp_abv_id1.

MOVE c_blank TO t_mdata-zzjp_abv_id2.

MOVE c_blank TO t_mdata-zzjp_spl_id.

APPEND t_mdata.

ENDLOOP.

ENDFORM. " F_PROCESS_DATA

&----


*& Form f_bdc_close

&----


  • Routine to close the BDC Session

----


FORM f_close_group.

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. " f_close_group

&----


*& Form f_bdc_insert

&----


  • routine to input batch data into the Transaction MM02 from the

  • session created

----


FORM f_bdc_insert.

CALL FUNCTION 'BDC_INSERT'

EXPORTING

tcode = c_tcode

TABLES

dynprotab = t_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.

ENDFORM. " f_bdc_insert

Reward Points if it is useful

Thanks

Seshu

Former Member
0 Kudos

Hi Paddu,

First do recording normally means with all the views. After that modify the code with check conditions(i.e) if messagetype = 'x' then inside this block call the required views. repeat for other scenarios as well

Get back if you have any doubts.

Regards,

Younus

<b>Reward Helpful Answers:-)</b>

0 Kudos

Actually, there are more than 20 material types. so, if we have to modify the codewith check conditions and calling the required views as per the material types, it will be very difficult if there are more number of material types in the flat file. Is it the only way that i could do this..?

Former Member
0 Kudos

See, as the no of views depends upon the material types and industry sector. It is very difficult and complex to use BDC for data uploading. To select view, you can use the FM 'MATERIAL_BTCI_SELECTION_NEW'. If you have very few material type then you can use different recording for each material type.

But i think the better way is to use the BAPI 'BAPI_MATERIAL_SAVEDATA' for your purpose. It will autometically take care of the views.

Ex:

REPORT  z34332_bdc_create_material              .

data: la_headdata type BAPIMATHEAD,
      la_clientdata type BAPI_MARA,
      la_CLIENTDATAX type BAPI_MARAX,
      la_return type BAPIRET2.

data: i_materialdescription type table of BAPI_MAKT,
      wa_materialdescription like line of i_materialdescription.

la_headdata-MATERIAL = '000000000000000004'.
la_headdata-IND_SECTOR = 'M'.
la_headdata-MATL_TYPE = 'FERT'.

la_clientdata-BASE_UOM = 'FT3'.
la_CLIENTDATAX-BASE_UOM = 'X'.
la_clientdata-MATL_GROUP = '01'.
la_CLIENTDATAX-MATL_GROUP = 'X'.

wa_materialdescription = 'TEST'.
append wa_materialdescription to i_materialdescription.
clear: wa_materialdescription.

CALL FUNCTION 'BAPI_MATERIAL_SAVEDATA'
  EXPORTING
    headdata                   = la_headdata
   CLIENTDATA                 = la_clientdata
   CLIENTDATAX                = la_CLIENTDATAX
*   PLANTDATA                  =
*   PLANTDATAX                 =
*   FORECASTPARAMETERS         =
*   FORECASTPARAMETERSX        =
*   PLANNINGDATA               =
*   PLANNINGDATAX              =
*   STORAGELOCATIONDATA        =
*   STORAGELOCATIONDATAX       =
*   VALUATIONDATA              =
*   VALUATIONDATAX             =
*   WAREHOUSENUMBERDATA        =
*   WAREHOUSENUMBERDATAX       =
*   SALESDATA                  =
*   SALESDATAX                 =
*   STORAGETYPEDATA            =
*   STORAGETYPEDATAX           =
*   FLAG_ONLINE                = ' '
*   FLAG_CAD_CALL              = ' '
 IMPORTING
   RETURN                     = la_return
 TABLES
   MATERIALDESCRIPTION        = i_materialdescription
*   UNITSOFMEASURE             =
*   UNITSOFMEASUREX            =
*   INTERNATIONALARTNOS        =
*   MATERIALLONGTEXT           =
*   TAXCLASSIFICATIONS         =
*   RETURNMESSAGES             =
*   PRTDATA                    =
*   PRTDATAX                   =
*   EXTENSIONIN                =
*   EXTENSIONINX               =
          .

write: la_return-TYPE, ',', la_return-MESSAGE.
clear: la_headdata, la_return, la