Вы находитесь на странице: 1из 4

REPORT ZBDC_CALL_TRANSACTION

NO STANDARD PAGE HEADING LINE-SIZE 255.


TYPES: BEGIN OF TY_SOURCE,
MATNR TYPE RMMG1-MATNR,
MAKTX TYPE MAKT-MAKTX,
MEINS TYPE MARA-MEINS,
MBRSH TYPE RMMG1-MBRSH,
MTART TYPE RMMG1-MTART,

END OF TY_SOURCE.

DATA IT_SOURCE TYPE TABLE OF TY_SOURCE.


DATA WA_SOURCE TYPE TY_SOURCE.

DATA WA_BDCDATA TYPE BDCDATA.


DATA IT_BDCDATA TYPE TABLE OF BDCDATA.
DATA IT_BDCMSGCOLL TYPE TABLE OF BDCMSGCOLL.
DATA WA_BDCMSGCOLL TYPE BDCMSGCOLL.
DATA WA_T100 TYPE T100.
PARAMETERS: P_FILE TYPE STRING.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE.


DATA LV_RC TYPE I.
DATA IT_FILE TYPE FILETABLE.

CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG


EXPORTING
WINDOW_TITLE = 'Select the file '
* DEFAULT_EXTENSION =
* DEFAULT_FILENAME =
* FILE_FILTER =
* WITH_ENCODING =
* INITIAL_DIRECTORY =
* MULTISELECTION =
CHANGING
FILE_TABLE = IT_FILE
RC = LV_RC
* USER_ACTION =
* FILE_ENCODING =
EXCEPTIONS
FILE_OPEN_DIALOG_FAILED = 1
CNTL_ERROR = 2
ERROR_NO_GUI = 3
NOT_SUPPORTED_BY_GUI = 4
OTHERS = 5.
IF SY-SUBRC IS INITIAL.
DATA WA LIKE LINE OF IT_FILE.
READ TABLE IT_FILE INTO WA INDEX 1.
P_FILE = WA.
ENDIF.

START-OF-SELECTION.
DATA LV_FILENAME TYPE RLGRAP-FILENAME.
LV_FILENAME = P_FILE.
*8Upload the data from the EXCEL

DATA IT_EXCEL TYPE KCDE_INTERN.


CALL FUNCTION 'KCD_EXCEL_OLE_TO_INT_CONVERT'
EXPORTING
FILENAME = LV_FILENAME
I_BEGIN_COL = 1
I_BEGIN_ROW = 1
I_END_COL = 5
I_END_ROW = 65536
TABLES
INTERN = IT_EXCEL
EXCEPTIONS
INCONSISTENT_PARAMETERS = 1
UPLOAD_OLE = 2
OTHERS = 3.
IF SY-SUBRC IS INITIAL.
DATA WA1 LIKE LINE OF IT_EXCEL.
FIELD-SYMBOLS : <FS1> TYPE ANY.
DATA WA_SOURCE1 TYPE TY_SOURCE.
LOOP AT IT_EXCEL INTO WA1.

ASSIGN COMPONENT WA1-COL OF STRUCTURE WA_SOURCE1 TO <FS1>.


IF SY-SUBRC IS INITIAL.
<FS1> = WA1-VALUE.
ENDIF.
AT END OF ROW.
APPEND WA_SOURCE1 TO IT_SOURCE.

ENDAT.
ENDLOOP.
ENDIF.

LOOP AT IT_SOURCE INTO WA_SOURCE.


REFRESH IT_BDCDATA.
PERFORM BDC_DYNPRO USING 'SAPLMGMM' '0060'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'RMMG1-MATNR'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=ENTR'.
PERFORM BDC_FIELD USING 'RMMG1-MATNR'
WA_SOURCE-MATNR.
PERFORM BDC_FIELD USING 'RMMG1-MBRSH'
WA_SOURCE-MBRSH.
PERFORM BDC_FIELD USING 'RMMG1-MTART'
WA_SOURCE-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_SOURCE-MAKTX.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'MARA-MEINS'.
PERFORM BDC_FIELD USING 'MARA-MEINS'
WA_SOURCE-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 IT_BDCDATA


MODE 'N'
MESSAGES INTO IT_BDCMSGCOLL .
ENDLOOP.

*-------------------------------------------------------------
---------*
* Start new screen
*
*-------------------------------------------------------------
---------*
FORM BDC_DYNPRO USING PROGRAM DYNPRO.
CLEAR WA_BDCDATA.
WA_BDCDATA-PROGRAM = PROGRAM.
WA_BDCDATA-DYNPRO = DYNPRO.
WA_BDCDATA-DYNBEGIN = 'X'.
APPEND WA_BDCDATA TO IT_BDCDATA.
ENDFORM. "BDC_DYNPRO

*-------------------------------------------------------------
---------*
* Insert field
*
*-------------------------------------------------------------
---------*
FORM BDC_FIELD USING FNAM FVAL.

CLEAR WA_BDCDATA.
WA_BDCDATA-FNAM = FNAM.
WA_BDCDATA-FVAL = FVAL.
APPEND WA_BDCDATA TO IT_BDCDATA.

ENDFORM. "BDC_FIELD

Вам также может понравиться