TYPES: BEGIN OF ty_str,
matnr TYPE mara-matnr,
mbrsh TYPE mara-mbrsh,
mtart TYPE mara-mtart,
maktx TYPE makt-maktx,
meins TYPE mara-meins,
END OF ty_str.
TYPES : BEGIN OF ty_color,
msgid TYPE string,
msgnr TYPE string,
msgv1 TYPE string,
lights TYPE icon_d,
END OF ty_color.
DATA: it_color TYPE TABLE OF ty_color,
wa_color TYPE ty_color.
DATA: it_data TYPE TABLE OF ty_str,
wa_data TYPE ty_str.
DATA: lv_input TYPE string.
DATA: it_fldcat TYPE slis_t_fieldcat_alv,
wa_fldcat TYPE slis_fieldcat_alv.
DATA: lv_headdata TYPE bapimathead.
DATA: lv_clientdata TYPE bapi_mara.
DATA: lv_clientdatax TYPE bapi_marax.
DATA: it_return TYPE TABLE OF bapiret2,
wa_return TYPE bapiret2.
DATA: it_des TYPE TABLE OF bapi_makt,
wa_des TYPE bapi_makt.
DATA: lv_msg TYPE string.
DATA: wa_layout TYPE slis_layout_alv.
SELECTION-SCREEN: BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-001.
PARAMETERS: p_input TYPE localfile.
SELECTION-SCREEN: END OF BLOCK b1.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_input.
CALL FUNCTION 'F4_FILENAME'
EXPORTING
program_name = syst-cprog
dynpro_number = syst-dynnr
field_name = ' '
IMPORTING
file_name = p_input.
START-OF-SELECTION.
lv_input = p_input.
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
filename = lv_input
* FILETYPE = 'ASC'
has_field_separator = 'X'
* HEADER_LENGTH = 0
* READ_BY_LINE = 'X'
* DAT_MODE = ' '
* CODEPAGE = ' '
* IGNORE_CERR = ABAP_TRUE
* REPLACEMENT = '#'
* CHECK_BOM = ' '
* VIRUS_SCAN_PROFILE =
* NO_AUTH_CHECK = ' '
* IMPORTING
* FILELENGTH =
* HEADER =
TABLES
data_tab = it_data
* CHANGING
* ISSCANPERFORMED = ' '
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.
* Implement suitable error handling here
ENDIF.
LOOP AT it_data INTO wa_data.
lv_headdata-material = wa_data-matnr.
lv_headdata-ind_sector = wa_data-mbrsh.
lv_headdata-matl_type = wa_data-mtart.
lv_headdata-basic_view = 'X'.
lv_clientdata-base_uom = wa_data-meins.
lv_clientdatax-base_uom = 'X'.
wa_des-langu = sy-langu.
wa_des-matl_desc = wa_data-maktx.
APPEND wa_des TO it_des.
CLEAR: wa_des.
CALL FUNCTION 'BAPI_MATERIAL_SAVEDATA'
EXPORTING
headdata = lv_headdata
clientdata = lv_clientdata
clientdatax = lv_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 =
* MATPLSTADATA =
* MATPLSTADATAX =
* MARC_APS_EXTDATA =
* MARC_APS_EXTDATAX =
* IMPORTING
* return = wa_return
TABLES
materialdescription = it_des
* UNITSOFMEASURE =
* UNITSOFMEASUREX =
* INTERNATIONALARTNOS =
* MATERIALLONGTEXT =
* TAXCLASSIFICATIONS =
RETURNMESSAGES = IT_RETURN
* PRTDATA =
* PRTDATAX =
* EXTENSIONIN =
* EXTENSIONINX =
* UNITSOFMEASURECWM =
* UNITSOFMEASURECWMX =
* SEGMRPGENERALDATA =
* SEGMRPGENERALDATAX =
* SEGMRPQUANTITYDATA =
* SEGMRPQUANTITYDATAX =
* SEGVALUATIONTYPE =
* SEGVALUATIONTYPEX =
* SEGSALESSTATUS =
* SEGSALESSTATUSX =
* SEGWEIGHTVOLUME =
* SEGWEIGHTVOLUMEX =
* DEMAND_PENALTYDATA =
* DEMAND_PENALTYDATAX =
* NFMCHARGEWEIGHTS =
* NFMCHARGEWEIGHTSX =
* NFMSTRUCTURALWEIGHTS =
* NFMSTRUCTURALWEIGHTSX =
.
* APPEND wa_return TO it_return.
CLEAR: lv_headdata, lv_clientdata, lv_clientdatax.
REFRESH: it_des.
endloop.
LOOP AT it_return INTO wa_return.
CALL FUNCTION 'MESSAGE_TEXT_BUILD'
EXPORTING
msgid = wa_RETURN-ID
msgnr = wa_RETURN-NUMBER
msgv1 = wa_RETURN-MESSAGE_V1
msgv2 = wa_RETURN-MESSAGE_V2
msgv3 = wa_RETURN-MESSAGE_V3
msgv4 = wa_RETURN-MESSAGE_V4
IMPORTING
message_text_output = lv_msg.
wa_color-msgid = wa_RETURN-id.
wa_color-msgnr = wa_RETURN-NUMBER.
wa_color-msgv1 = lv_msg.
IF wa_COLOR-msgnr = '800'.
wa_color-lights = icon_green_light.
ELSE.
wa_color-lights = icon_red_light.
ENDIF.
APPEND wa_color TO it_color.
ENDLOOP.
CLEAR wa_fldcat.
wa_fldcat-col_pos = 1.
wa_fldcat-fieldname = 'MSGID'.
wa_fldcat-seltext_L = 'Messsage Id'.
APPEND wa_fldcat TO it_fldcat.
CLEAR wa_fldcat.
wa_fldcat-col_pos = 2.
wa_fldcat-fieldname = 'MSGNR'.
wa_fldcat-seltext_L = 'Messsage Number'.
APPEND wa_fldcat TO it_fldcat.
CLEAR wa_fldcat.
wa_fldcat-col_pos = 3.
wa_fldcat-fieldname = 'MSGV1'.
wa_fldcat-seltext_L = 'Variable1'.
APPEND wa_fldcat TO it_fldcat.
CLEAR wa_fldcat.
wa_fldcat-col_pos = 4.
wa_fldcat-fieldname = 'LIGHTS'.
wa_fldcat-seltext_l = 'status'.
wa_fldcat-icon = 'X'.
APPEND wa_fldcat TO it_fldcat.
CLEAR: wa_fldcat.
CLEAR: wa_layout.
wa_layout-zebra = 'X'.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = sy-repid
IS_LAYOUT = wa_layout
it_fieldcat = it_fldcat
TABLES
t_outtab = it_color
EXCEPTIONS
program_error = 1
OTHERS = 2.
IF sy-subrc <> 0.
*MESSAGE 'upload correct file' TYPE 'E'.
ENDIF.