Application Development and Automation 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: 
Read only

mm01

Former Member
0 Likes
597

hi experts,

how can we define BDC for uploading meterial master data using MM01.for this how we have to maintaine flatfile.how can we go through different views available for uploading.explane and give me the example <b>code</b> if possible

thanks in advance

hi experts,

how can we define BDC for uploading meterial master data using MM01.for this how we have to maintaine flatfile.how can we go through different views available for uploading.explane and give me the example <b>code</b> if possible

thanks in advance

3 REPLIES 3
Read only

Former Member
0 Likes
554

For MM01 rather than going with BDC recording best method to use is DI method...

u can use the RMDATIND and upload the data it will take care of everything like different views....

if you want the further information u can check..

bdc for MM01.

~~Guduri

Read only

Former Member
0 Likes
554

Hi Surendra,

Maintenance of flat file is done based on the fields which you want to upload. I have done BDC for MM01 for the basic views and then extended the material using BAPI.

Check the sample code.

&----


*& Report ZCN_MM_MATMASTER_BASICVIEW

*&

&----


*&

*&

&----


REPORT zcn_mm_matmaster_basicview.

DATA: BEGIN OF it_data OCCURS 0,

mat_type LIKE mara-mtart,

ind_sec LIKE mara-mbrsh,

plant LIKE bapi_marc-plant,

stge_loc LIKE bapi_mard-stge_loc,

mat_desc LIKE makt-maktx,

base_uom LIKE mara-meins,

old_matno LIKE mara-bismt,

matl_group LIKE mara-matkl,

document LIKE mara-zeinr,

po_unit LIKE bapi_mara-po_unit,

pur_valkey LIKE bapi_mara-pur_valkey,

mfr_no LIKE bapi_mara-mfr_no,

manu_mat LIKE bapi_mara-manu_mat,

vendor_lookup(10) TYPE c,

mrp_type LIKE bapi_marc-mrp_type,

mrp_ctrler LIKE bapi_marc-mrp_ctrler,

sm_key LIKE bapi_marc-sm_key,

proc_type LIKE bapi_marc-proc_type,

sloc_exprc LIKE bapi_marc-sloc_exprc,

stge_bin LIKE bapi_mard-stge_bin,

issue_unit LIKE bapi_marc-issue_unit,

cc_ph_inv LIKE bapi_marc-cc_ph_inv,

price_ctrl LIKE bapi_mbew-price_ctrl,

val_class LIKE bapi_mbew-val_class,

moving_pr,

price_unit,

profit_ctr LIKE bapi_marc-profit_ctr,

matnr LIKE mara-matnr,

END OF it_data,

is_data LIKE it_data.

DATA: bdc_tab LIKE bdcdata OCCURS 0 WITH HEADER LINE.

DATA : g_file TYPE string.

DATA : BEGIN OF data_mat OCCURS 0,

datastring(120),

END OF data_mat.

DATA: record(500).

*******************----SELECTION SCREEN--*************************

SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.

PARAMETERS: p_file TYPE ibipparms-path.

PARAMETERS: r_local RADIOBUTTON GROUP radi,

r_apps RADIOBUTTON GROUP radi.

SELECTION-SCREEN END OF BLOCK b1.

*******************AT SELECTION SCREEN *********************

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.

CALL FUNCTION 'F4_FILENAME'

EXPORTING

program_name = syst-cprog

dynpro_number = syst-dynnr

IMPORTING

file_name = p_file.

----


  • S T A R T O F S E L E C T I O N

----


START-OF-SELECTION.

g_file = p_file.

PERFORM upload USING g_file. "Upload takes the file from the presentation

PERFORM bdc_opengroup.

PERFORM bdc_processing.

PERFORM bdc_closegroup.

&----


*& Form upload

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM upload USING lv_file .

IF r_apps = 'X'.

OPEN DATASET lv_file

FOR INPUT IN TEXT MODE

ENCODING DEFAULT.

IF sy-subrc <> 0.

WRITE: / text-002, sy-subrc.

STOP.

ELSE.

DO.

READ DATASET lv_file INTO record.

SPLIT record AT '~' INTO

it_data-mat_type

it_data-ind_sec

it_data-plant

it_data-stge_loc

it_data-mat_desc

it_data-base_uom

it_data-old_matno

it_data-matl_group

it_data-document

it_data-po_unit

it_data-pur_valkey

it_data-mfr_no

it_data-manu_mat

it_data-vendor_lookup

it_data-mrp_type

it_data-mrp_ctrler

it_data-sm_key

it_data-proc_type

it_data-sloc_exprc

it_data-stge_bin

it_data-issue_unit

it_data-cc_ph_inv

it_data-price_ctrl

it_data-val_class

it_data-moving_pr

it_data-price_unit

it_data-profit_ctr

it_data-matnr.

APPEND it_data.

CLEAR it_data.

ENDDO.

CLOSE DATASET lv_file.

ENDIF.

ELSEIF r_local = 'X'.

CALL FUNCTION 'GUI_UPLOAD'

EXPORTING

filename = lv_file

filetype = 'ASC'

has_field_separator = '~'

header_length = 0

read_by_line = 'X'

  • DAT_MODE = ' '

  • CODEPAGE = ' '

ignore_cerr = 'X'

replacement = '#'

  • CHECK_BOM = ' '

  • VIRUS_SCAN_PROFILE =

  • NO_AUTH_CHECK = ' '

  • IMPORTING

  • FILELENGTH =

  • HEADER =

TABLES

data_tab = data_mat

  • EXCEPTIONS

  • FILE_OPEN_ERROR = 1

  • FILE_READ_ERROR = 2

  • NO_BATCH = 3

  • GUI_REFUSE_FILETRANSFER = 4

  • INVALID_TYPE = 5

  • NO_AUTHORITY = 6

  • UNKNOWN_ERROR = 7

  • BAD_DATA_FORMAT = 8

  • HEADER_NOT_ALLOWED = 9

  • SEPARATOR_NOT_ALLOWED = 10

  • HEADER_TOO_LONG = 11

  • UNKNOWN_DP_ERROR = 12

  • ACCESS_DENIED = 13

  • DP_OUT_OF_MEMORY = 14

  • DISK_FULL = 15

  • DP_TIMEOUT = 16

  • OTHERS = 17

.

IF sy-subrc <> 0.

MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno

WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

ELSE.

LOOP AT data_mat.

SPLIT data_mat-datastring AT '~' INTO

it_data-mat_type

it_data-ind_sec

it_data-plant

it_data-stge_loc

it_data-mat_desc

it_data-base_uom

it_data-old_matno

it_data-matl_group

it_data-document

it_data-po_unit

it_data-pur_valkey

it_data-mfr_no

it_data-manu_mat

it_data-vendor_lookup

it_data-mrp_type

it_data-mrp_ctrler

it_data-sm_key

it_data-proc_type

it_data-sloc_exprc

it_data-stge_bin

it_data-issue_unit

it_data-cc_ph_inv

it_data-price_ctrl

it_data-val_class

it_data-moving_pr

it_data-price_unit

it_data-profit_ctr

it_data-matnr.

APPEND it_data.

CLEAR it_data.

ENDLOOP.

ENDIF.

ENDIF.

ENDFORM. " upload

&----


*& Form bdc_opengroup

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM bdc_opengroup .

CALL FUNCTION 'BDC_OPEN_GROUP'

EXPORTING

client = sy-mandt

group = 'Z_MAT_BASIC'

  • HOLDDATE = sy-datum

keep = 'X'

user = sy-uname

  • RECORD = FILLER1

prog = sy-cprog

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

&----


*& Form bdc_processing

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM bdc_processing .

LOOP AT it_data INTO is_data.

IF is_data-document <> ' '.

PERFORM dynpro USING: 'X' 'SAPLMGMM' '0060',

' ' 'BDC_OKCODE' '/00',

' ' 'RMMG1-MBRSH' is_data-ind_sec,

' ' 'RMMG1-MTART' is_data-mat_type,

'X' 'SAPLMGMM' '0070',

' ' 'BDC_OKCODE' '=ENTR',

' ' 'MSICHTAUSW-KZSEL(01)' 'X',

' ' 'MSICHTAUSW-KZSEL(02)' 'X',

'X' 'SAPLMGMM' '5004',

' ' 'BDC_OKCODE' '=SP02',

' ' 'MAKT-MAKTX' is_data-mat_desc,

' ' 'MARA-MEINS' is_data-base_uom,

' ' 'MARA-MATKL' is_data-matl_group,

' ' 'MARA-BISMT' is_data-old_matno,

'X' 'SAPLMGMM' '5004',

' ' 'BDC_OKCODE' '=BU',

' ' 'MARA-ZEINR' is_data-document.

ELSE.

PERFORM dynpro USING: 'X' 'SAPLMGMM' '0060',

' ' 'BDC_OKCODE' '/00',

' ' 'RMMG1-MBRSH' is_data-ind_sec,

' ' 'RMMG1-MTART' is_data-mat_type,

'X' 'SAPLMGMM' '0070',

' ' 'BDC_OKCODE' '=ENTR',

' ' 'MSICHTAUSW-KZSEL(01)' 'X',

'X' 'SAPLMGMM' '5004',

' ' 'BDC_OKCODE' '=BU',

' ' 'MAKT-MAKTX' is_data-mat_desc,

' ' 'MARA-MEINS' is_data-base_uom,

' ' 'MARA-MATKL' is_data-matl_group,

' ' 'MARA-BISMT' is_data-old_matno.

ENDIF.

CALL FUNCTION 'BDC_INSERT'

EXPORTING

tcode = 'MM01'

TABLES

dynprotab = bdc_tab

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.

refresh bdc_tab.

clear is_data.

ENDLOOP.

ENDFORM. " bdc_processing

&----


*& Form dynpro

&----


  • text

----


  • -->P_0270 text

  • -->P_0271 text

  • -->P_0272 text

----


FORM dynpro USING dynbegin name value.

CLEAR bdc_tab.

IF dynbegin = 'X'.

MOVE: name TO bdc_tab-program,

value TO bdc_tab-dynpro,

'X' TO bdc_tab-dynbegin.

APPEND bdc_tab.

ELSE.

MOVE name TO bdc_tab-fnam.

MOVE value TO bdc_tab-fval.

APPEND bdc_tab.

ENDIF.

ENDFORM. " dynpro

&----


*& Form bdc_closegroup

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM bdc_closegroup .

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

Get back to me if you got any doubts.

Reward if useful.

Thanks

Aneesh.

Read only

Former Member
0 Likes
554

You need to use FM : SELECTION_VIEWS_FIND to detremine exact view based on material type..

we have BAPI so use bapi instead of BDC ...

BAPI_MATERIAL_SAVEDATA

if you want to use BDC then follow below program :

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 'MM01', " 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