Steps :
- Get the flat file from the customer. Flat file might be excel .
- Screen look like this.
- Click on new recording.
- Enter the recording name and enter the transaction code (MM01).
- Create a master record without single error as per required fields.
- Ex: MM01 ..
- Enter the Material number , Industry Sector , Material Type.
- Select the View and click on Continue.
report ZMM_BDC_CALL
no standard page heading line-size 255.
TYPES : BEGIN OF TY_MAT,
MATNR(18) TYPE C,
MBRSH TYPE C,
MTART(4) TYPE C,
MAKTX(40) TYPE C,
MEINS(3) TYPE C,
END OF TY_MAT.
DATA: WA_MAT TYPE TY_MAT,
IT_MAT TYPE TABLE OF TY_MAT.
data: bdcdata like bdcdata occurs 0 with header line.
* messages of call transaction
data: messtab like bdcmsgcoll occurs 0 with header line.
PARAMETERS : FILE(120) TYPE C.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR FILE.
PERFORM SEARCH_FILE CHANGING FILE.
START-OF-SELECTION.
PERFORM GET_DATA_FROM_FILE USING FILE CHANGING IT_MAT.
*include bdcrecx1.
PERFORM BDC_OPERATION.
PERFORM DISPLAY_MESS USING messtab[].
*&---------------------------------------------------------------------*
*& Form SEARCH_FILE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* <--P_FILE text
*----------------------------------------------------------------------*
form SEARCH_FILE changing p_file.
DATA : FILE_NAME TYPE IBIPPARMS-PATH.
call function 'F4_FILENAME'
EXPORTING
PROGRAM_NAME = SY-CPROG
* DYNPRO_NUMBER = SYST-DYNNR
* FIELD_NAME = ' '
IMPORTING
FILE_NAME = FILE_NAME
.
P_FILE = FILE_NAME.
endform. " SEARCH_FILE
*&---------------------------------------------------------------------*
*& Form GET_DATA_FROM_FILE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_FILE text
* <--P_IT_MAT text
*----------------------------------------------------------------------*
form GET_DATA_FROM_FILE using p_file
changing p_it_mat LIKE IT_MAT.
DATA : I_TAB_RAW_DATA TYPE TRUXS_T_TEXT_DATA ,
I_FILENAME TYPE RLGRAP-FILENAME.
call function 'TEXT_CONVERT_XLS_TO_SAP' * To upload Excel file data.
exporting
* I_FIELD_SEPERATOR =
* I_LINE_HEADER =
i_tab_raw_data = I_TAB_RAW_DATA
i_filename = I_FILENAME
tables
i_tab_converted_data = p_it_mat
EXCEPTIONS
CONVERSION_FAILED = 1
OTHERS = 2
.
if sy-subrc <> 0.
* Implement suitable error handling here
endif.
endform. " GET_DATA_FROM_FILE
*----------------------------------------------------------------------*
* Start new screen *
*----------------------------------------------------------------------*
form bdc_dynpro using program dynpro.
clear bdcdata.
bdcdata-program = program.
bdcdata-dynpro = dynpro.
bdcdata-dynbegin = 'X'.
append bdcdata.
endform.
*----------------------------------------------------------------------*
* Insert field *
*----------------------------------------------------------------------*
form bdc_field using fnam fval.
clear bdcdata.
bdcdata-fnam = fnam.
bdcdata-fval = fval.
append bdcdata.
endform.
*&---------------------------------------------------------------------*
*& Form BDC_OPERATION
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
form BDC_OPERATION .
LOOP AT IT_MAT INTO WA_MAT.
REFRESH BDCDATA[].
perform bdc_dynpro using 'SAPLMGMM' '0060'.
perform bdc_field using 'BDC_CURSOR'
'RMMG1-MTART'.
perform bdc_field using 'BDC_OKCODE'
'=ENTR'.
perform bdc_field using 'RMMG1-MATNR'
WA_MAT-MATNR.
perform bdc_field using 'RMMG1-MBRSH'
WA_MAT-MBRSH.
perform bdc_field using 'RMMG1-MTART'
WA_MAT-MTART.
perform bdc_dynpro using 'SAPLMGMM' '0070'.
perform bdc_field using 'BDC_CURSOR'
'MSICHTAUSW-DYTXT(01)'.
perform bdc_field using 'BDC_OKCODE'
'=ENTR'.
perform bdc_field using 'MSICHTAUSW-KZSEL(01)'
'X'.
perform bdc_dynpro using 'SAPLMGMM' '4004'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'MAKT-MAKTX'
WA_MAT-MAKTX.
perform bdc_field using 'BDC_CURSOR'
'MARA-MEINS'.
perform bdc_field using 'MARA-MEINS'
WA_MAT-MEINS.
perform bdc_field using 'MARA-MTPOS_MARA'
'NORM'.
perform bdc_dynpro using 'SAPLSPO1' '0300'.
perform bdc_field using 'BDC_OKCODE'
'=YES'.
CALL TRANSACTION 'MM01' USING bdcdata[] UPDATE 'S'
MODE 'A'
MESSAGES INTO messtab.
ENDLOOP.
endform. " BDC_OPERATION
*&---------------------------------------------------------------------*
*& Form DISPLAY_MESS
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_MESSTAB text
*----------------------------------------------------------------------*
form DISPLAY_MESS using p_messtab LIKE messtab[].
DATA : MSG TYPE STRING.
DATA : WA LIKE LINE OF p_messtab.
LOOP AT p_messtab INTO WA.
call function 'FORMAT_MESSAGE'
EXPORTING
ID = WA-MSGID
LANG = SY-LANGU
NO = WA-MSGNR
V1 = WA-MSGV1
V2 = WA-MSGV2
V3 = WA-MSGV3
V4 = WA-MSGV4
IMPORTING
MSG = MSG
EXCEPTIONS
NOT_FOUND = 1
OTHERS = 2
.
if sy-subrc <> 0.
* Implement suitable error handling here
endif.
WRITE : / MSG.
CLEAR WA.
ENDLOOP.
endform. " DISPLAY_MESS
no standard page heading line-size 255.
TYPES : BEGIN OF TY_MAT,
MATNR(18) TYPE C,
MBRSH TYPE C,
MTART(4) TYPE C,
MAKTX(40) TYPE C,
MEINS(3) TYPE C,
END OF TY_MAT.
DATA: WA_MAT TYPE TY_MAT,
IT_MAT TYPE TABLE OF TY_MAT.
data: bdcdata like bdcdata occurs 0 with header line.
* messages of call transaction
data: messtab like bdcmsgcoll occurs 0 with header line.
PARAMETERS : FILE(120) TYPE C.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR FILE.
PERFORM SEARCH_FILE CHANGING FILE.
START-OF-SELECTION.
PERFORM GET_DATA_FROM_FILE USING FILE CHANGING IT_MAT.
PERFORM BDC_OPERATION.
PERFORM DISPLAY_MESS USING messtab[].
*&---------------------------------------------------------------------*
*& Form SEARCH_FILE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* <--P_FILE text
*----------------------------------------------------------------------*
form SEARCH_FILE changing p_file.
DATA : FILE_NAME TYPE IBIPPARMS-PATH.
call function 'F4_FILENAME'
EXPORTING
PROGRAM_NAME = SY-CPROG
* DYNPRO_NUMBER = SYST-DYNNR
* FIELD_NAME = ' '
IMPORTING
FILE_NAME = FILE_NAME
.
P_FILE = FILE_NAME.
endform. " SEARCH_FILE
*&---------------------------------------------------------------------*
*& Form GET_DATA_FROM_FILE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_FILE text
* <--P_IT_MAT text
*----------------------------------------------------------------------*
form GET_DATA_FROM_FILE using p_file
changing p_it_mat LIKE IT_MAT.
DATA : I_TAB_RAW_DATA TYPE TRUXS_T_TEXT_DATA ,
I_FILENAME TYPE RLGRAP-FILENAME.
call function 'TEXT_CONVERT_XLS_TO_SAP' * To upload Excel file data.
exporting
* I_FIELD_SEPERATOR =
* I_LINE_HEADER =
i_tab_raw_data = I_TAB_RAW_DATA
i_filename = I_FILENAME
tables
i_tab_converted_data = p_it_mat
EXCEPTIONS
CONVERSION_FAILED = 1
OTHERS = 2
.
if sy-subrc <> 0.
* Implement suitable error handling here
endif.
*----------------------------------------------------------------------*
* Start new screen *
*----------------------------------------------------------------------*
form bdc_dynpro using program dynpro.
clear bdcdata.
bdcdata-program = program.
bdcdata-dynpro = dynpro.
bdcdata-dynbegin = 'X'.
append bdcdata.
endform.
*----------------------------------------------------------------------*
* Insert field *
*----------------------------------------------------------------------*
form bdc_field using fnam fval.
clear bdcdata.
bdcdata-fnam = fnam.
bdcdata-fval = fval.
append bdcdata.
endform.
*&---------------------------------------------------------------------*
*& Form BDC_OPERATION
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
form BDC_OPERATION .
LOOP AT IT_MAT INTO WA_MAT.
REFRESH BDCDATA[].
perform bdc_dynpro using 'SAPLMGMM' '0060'.
perform bdc_field using 'BDC_CURSOR'
'RMMG1-MTART'.
perform bdc_field using 'BDC_OKCODE'
'=ENTR'.
perform bdc_field using 'RMMG1-MATNR'
WA_MAT-MATNR.
perform bdc_field using 'RMMG1-MBRSH'
WA_MAT-MBRSH.
perform bdc_field using 'RMMG1-MTART'
WA_MAT-MTART.
perform bdc_dynpro using 'SAPLMGMM' '0070'.
perform bdc_field using 'BDC_CURSOR'
'MSICHTAUSW-DYTXT(01)'.
perform bdc_field using 'BDC_OKCODE'
'=ENTR'.
perform bdc_field using 'MSICHTAUSW-KZSEL(01)'
'X'.
perform bdc_dynpro using 'SAPLMGMM' '4004'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'MAKT-MAKTX'
WA_MAT-MAKTX.
perform bdc_field using 'BDC_CURSOR'
'MARA-MEINS'.
perform bdc_field using 'MARA-MEINS'
WA_MAT-MEINS.
perform bdc_field using 'MARA-MTPOS_MARA'
'NORM'.
perform bdc_dynpro using 'SAPLSPO1' '0300'.
perform bdc_field using 'BDC_OKCODE'
'=YES'.
CALL TRANSACTION 'MM01' USING bdcdata[] UPDATE 'S'
MODE 'A'
MESSAGES INTO messtab.
ENDLOOP.
endform. " BDC_OPERATION
*&---------------------------------------------------------------------*
*& Form DISPLAY_MESS
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_MESSTAB text
*----------------------------------------------------------------------*
form DISPLAY_MESS using p_messtab LIKE messtab[].
DATA : MSG TYPE STRING.
DATA : WA LIKE LINE OF p_messtab.
LOOP AT p_messtab INTO WA.
call function 'FORMAT_MESSAGE'
EXPORTING
ID = WA-MSGID
LANG = SY-LANGU
NO = WA-MSGNR
V1 = WA-MSGV1
V2 = WA-MSGV2
V3 = WA-MSGV3
V4 = WA-MSGV4
IMPORTING
MSG = MSG
EXCEPTIONS
NOT_FOUND = 1
OTHERS = 2
.
if sy-subrc <> 0.
* Implement suitable error handling here
endif.
WRITE : / MSG.
CLEAR WA.
ENDLOOP.
endform. " DISPLAY_MESS
No comments:
Post a Comment