Vous êtes sur la page 1sur 3

*&---------------------------------------------------------------------*

*& Report ZPE_BAPI_MARA


*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT ZPE_BAPI_MARA.

*BAPI declarations
DATA : WA_HEADDATA TYPE BAPIMATHEAD,
WA_CLIENTDATA TYPE BAPI_MARA,
WA_CLIENTDATAX TYPE BAPI_MARAX.

DATA : IT_MATERIALDESCRIPTION TYPE TABLE OF BAPI_MAKT,


WA_MATERIALDESCRIPTION TYPE BAPI_MAKT.

DATA : IT_RETURN TYPE TABLE OF BAPIRET2,


WA_RETURN TYPE BAPIRET2.

DATA :IT_RAW_DATA TYPE TRUXS_T_TEXT_DATA.

TYPES: BEGIN OF TY_MARA, "internal table as per flat file structure


MATNR TYPE MARA-MATNR, "material no
MBRSH TYPE MARA-MBRSH, "industry sector
MTART TYPE MARA-MTART, "material type
MATKL TYPE MARA-MATKL, "material group
MEINS TYPE MARA-MEINS, "base Unit Of measure
MAKTX TYPE MAKT-MAKTX, "material descriptions
END OF TY_MARA.

DATA : IT_MARA TYPE TABLE OF TY_MARA,


WA_MARA TYPE TY_MARA.

**selection screen
PARAMETERS: P_FILE TYPE RLGRAP-FILENAME. "file input

AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE. "f4 help for file input


PERFORM FILE_HELP.

AT SELECTION-SCREEN ON HELP-REQUEST FOR P_FILE. "F1 help for file input


MESSAGE 'Please press f4 to select file' TYPE 'I'.

START-OF-SELECTION.
DATA : LV_FILE TYPE STRING.
LV_FILE = P_FILE. "to avoid type conflict
* CALL FUNCTION 'GUI_UPLOAD' "upload flat file
* EXPORTING
* FILENAME = LV_FILE
* FILETYPE = 'ASC'
* HAS_FIELD_SEPARATOR = 'X'
*
* TABLES
* DATA_TAB = IT_MARA "internal table
*
* .
* IF SY-SUBRC <> 0.
** Implement suitable error handling here
* ENDIF.
LOOP AT IT_MARA INTO WA_MARA.
WA_HEADDATA-MATERIAL = WA_MARA-MATNR. "material no
WA_HEADDATA-IND_SECTOR = WA_MARA-MBRSH. "industry sector
WA_HEADDATA-MATL_TYPE = WA_MARA-MTART. "material type
WA_HEADDATA-BASIC_VIEW = 'X'. "basic view
WA_CLIENTDATA-MATL_GROUP = WA_MARA-MATKL. "material group
WA_CLIENTDATA-BASE_UOM = WA_MARA-MEINS. "base Unit Of measure
WA_CLIENTDATAX-MATL_GROUP = 'X'. "passing material group
WA_CLIENTDATAX-BASE_UOM = 'X'. "passing base unit of measure

WA_MATERIALDESCRIPTION-LANGU = 'EN'. "english language


WA_MATERIALDESCRIPTION-LANGU_ISO = 'EN'. "ISO language
WA_MATERIALDESCRIPTION-MATL_DESC = WA_MARA-MAKTX. "material descriptions
APPEND WA_MATERIALDESCRIPTION TO IT_MATERIALDESCRIPTION.
CLEAR WA_MATERIALDESCRIPTION.
**Create/update materials using BAPI_MATERIAL_SAVEDATA
CALL FUNCTION 'BAPI_MATERIAL_SAVEDATA'
EXPORTING
HEADDATA = WA_HEADDATA
CLIENTDATA = WA_CLIENTDATA
CLIENTDATAX = WA_CLIENTDATAX

IMPORTING
RETURN = WA_RETURN
TABLES
MATERIALDESCRIPTION = IT_MATERIALDESCRIPTION
.
IF WA_RETURN-TYPE = 'E'.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
WRITE:/ WA_HEADDATA-MATERIAL, 'is not created' COLOR 3.
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
WAIT = 'X'.
IF SY-SUBRC EQ 0.
WRITE:/ WA_HEADDATA-MATERIAL, 'is created' COLOR 5.
ENDIF.
ENDIF.
ENDLOOP.
FORM FILE_HELP .
* CALL FUNCTION 'KD_GET_FILENAME_ON_F4' "get file name on F4 help
*
* CHANGING
* FILE_NAME = P_FILE
*
* .
* IF SY-SUBRC <> 0.
* Implement suitable error handling here
* ENDIF.
CALL FUNCTION 'F4_FILENAME'
EXPORTING
PROGRAM_NAME = SYST-CPROG
DYNPRO_NUMBER = SYST-DYNNR
FIELD_NAME = ' '
IMPORTING
FILE_NAME = P_FILE
.
CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP'
EXPORTING
* I_FIELD_SEPERATOR =
I_LINE_HEADER = 'X'
I_TAB_RAW_DATA = IT_RAW_DATA
I_FILENAME = P_FILE
TABLES
I_TAB_CONVERTED_DATA = IT_MARA
* EXCEPTIONS
* CONVERSION_FAILED = 1
* OTHERS = 2
.
IF SY-SUBRC <> 0.
* Implement suitable error handling here
ENDIF.

ENDFORM. " FILE_HELP

Vous aimerez peut-être aussi