Migrating Material Data Using
Methods and BAPI
In the previous part, we discussed how we can transfer data to SAP using
BAPI.
In this part we will see the implementation part step by step using BAPI.
In this part we will file_open_dialog and GUI_UPLOAD method of
CL_GUI_FRONTEND_SERVICES
We will migrate Material Master data through BAPI.
Suppose, I have this above material data and I want to transfer it to my SAP
and store it in the database using BAPI.
Solution :-
Step 1 :- Create a executable program in ABAP Editor ( SE38 ).
Migrating Material Data Using Methods and BAPI 1
Step 2 :- Create a type for the above file and a corresponding internal table
and work area for the file.
Step 4 :- In Start Of Selection we can use FILE_OPWN_DIALOG method of
CL_GUI_FRONTEND_SERVICES to navigate to local system and select the file.
Migrating Material Data Using Methods and BAPI 2
Step 5 :- In Start Of Selection, we will use GUI_UPLOAD method of
CL_GUI_FRONTEND_SERVICES to upload data into our SAP system.
Now, Our data from our local file is stored into LT_MATERIAL internal table. So,
we will pass our each record one at a time into the
BAPI_MATERIAL_SAVEDATA.
We will pass the data into the parameters of this BAPI.
Migrating Material Data Using Methods and BAPI 3
then we will mark them as true that we have passed them.
At last BAPI will return a message which will be of type BAPIRET2, we will
stored it.
Migrating Material Data Using Methods and BAPI 4
step 6 :- Now we can display the return table in form of ALV using
CL_SALV_TABLE class.
Code :-
*&--------------------------------------------------------------
*& Report ZAR_BAPI_MATERIAL_SAVE
*&--------------------------------------------------------------
*&
Migrating Material Data Using Methods and BAPI 5
*&--------------------------------------------------------------
REPORT ZAR_BAPI_MATERIAL_SAVE_DET.
TYPES : begin of ty_material,
MATNR type matnr,
MBRSH type MBRSH,
MTART type MTART,
maktx type maktx,
MEINS type meins,
end of ty_material.
DATA : lt_material type table of ty_material,
ls_material type ty_material.
DATA : lv_file type string.
DATA : ls_header type BAPIMATHEAD.
DATA : lt_material_desc type table of BAPI_MAKT,
ls_material_desc type BAPI_MAKT.
DATA : ls_clientdata type BAPI_MARA.
DATA : ls_clientdatax type BAPI_MARAX.
DATA : lt_return type table of BAPIRET2,
ls_Return type BAPIRET2.
DATA : lt_table type table of FILE_TABLE.
DATA : lo_rc type i.
START-OF-SELECTION.
CALL METHOD cl_gui_frontend_services=>file_open_dialog
CHANGING
file_table = lt_table
rc = lo_rc
Migrating Material Data Using Methods and BAPI 6
* user_action =
* file_encoding =
EXCEPTIONS
file_open_dialog_failed = 1
cntl_error = 2
error_no_gui = 3
not_supported_by_gui = 4
others = 5
.
DATA : lo_file type string.
Read table lt_table into data(ls_table) index 1.
if sy-subrc eq 0.
lo_file = ls_table-FILENAME.
endif.
lv_file = lo_file.
CALL METHOD cl_gui_frontend_services=>gui_upload
EXPORTING
filename = lv_file
* filetype = 'ASC'
has_field_separator = 'X'
CHANGING
data_tab = lt_material
* isscanperformed = SPACE
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
Migrating Material Data Using Methods and BAPI 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
not_supported_by_gui = 17
error_no_gui = 18
others = 19
.
Loop at lt_material into ls_material.
ls_header-material = ls_material-matnr.
ls_header-IND_SECTOR = ls_material-mbrsh.
ls_header-MATL_TYPE = ls_material-mtart.
ls_header-BASIC_VIEW = 'X'.
ls_material_desc-MATL_DESC = ls_material-maktx.
ls_material_desc-langu = sy-langu.
append ls_material_desc to lt_material_Desc.
clear ls_material_desc.
ls_clientdata-BASE_UOM = ls_material-meins.
ls_clientdatax-BASE_UOM = 'X'.
CALL FUNCTION 'BAPI_MATERIAL_SAVEDATA'
EXPORTING
Migrating Material Data Using Methods and BAPI 8
headdata = ls_header
CLIENTDATA = ls_clientdata
CLIENTDATAX = ls_clientdatax
* PLANTDATA =
* PLANTDATAX =
* FORECASTPARAMETERS =
* FORECASTPARAMETERSX =
* PLANNINGDATA =
* PLANNINGDATAX =
* STORAGELOCATIONDATA =
* STORAGELOCATIONDATAX =
* VALUATIONDATA =
* VALUATIONDATAX =
* WAREHOUSENUMBERDATA =
* WAREHOUSENUMBERDATAX =
* SALESDATA =
* SALESDATAX =
* STORAGETYPEDATA =
* STORAGETYPEDATAX =
* FLAG_ONLINE = ' '
* FLAG_CAD_CALL = ' '
* NO_DEQUEUE = ' '
* NO_ROLLBACK_WORK = ' '
* CLIENTDATACWM =
* CLIENTDATACWMX =
* VALUATIONDATACWM =
* VALUATIONDATACWMX =
IMPORTING
RETURN = ls_return
TABLES
MATERIALDESCRIPTION = lt_material_desc
* UNITSOFMEASURE =
* UNITSOFMEASUREX =
* INTERNATIONALARTNOS =
* MATERIALLONGTEXT =
* TAXCLASSIFICATIONS =
Migrating Material Data Using Methods and BAPI 9
* RETURNMESSAGES =
* PRTDATA =
* PRTDATAX =
* EXTENSIONIN =
* EXTENSIONINX =
* UNITSOFMEASURECWM =
* UNITSOFMEASURECWMX =
* SEGMRPGENERALDATA =
* SEGMRPGENERALDATAX =
* SEGMRPQUANTITYDATA =
* SEGMRPQUANTITYDATAX =
* SEGVALUATIONTYPE =
* SEGVALUATIONTYPEX =
* SEGSALESSTATUS =
* SEGSALESSTATUSX =
* SEGWEIGHTVOLUME =
* SEGWEIGHTVOLUMEX =
* NFMCHARGEWEIGHTS =
* NFMCHARGEWEIGHTSX =
* NFMSTRUCTURALWEIGHTS =
* NFMSTRUCTURALWEIGHTSX =
.
refresh : lt_material_desc.
append ls_return to lt_return.
clear : ls_return, ls_clientdata, ls_clientdatax, ls_header.
ENDLOOP.
TRY.
CALL METHOD cl_salv_table=>factory
EXPORTING
list_display = IF_SALV_C_BOOL_SAP=>FALSE
* r_container =
Migrating Material Data Using Methods and BAPI 10
* container_name =
IMPORTING
r_salv_table = data(lo_alv)
CHANGING
t_table = lt_Return
.
CATCH cx_salv_msg.
ENDTRY.
lo_alv->display( ).
Execute the Code :-
Select the file from your desktop.
click on allow.
Now, we can go to MARA table to see the contents for these material numbers.
Migrating Material Data Using Methods and BAPI 11
Migrating Material Data Using Methods and BAPI 12