‎2007 Oct 20 6:54 AM
Hi friends,
I want to create equipment record using BAPI_EQUI_CREATE. I want to pass Material and Serial number to that.
How to do that ?
‎2007 Oct 20 7:00 AM
Hi
I'm sending the total code of equipment creation through bapi. it includes class , charactries, and address details.
have look at the code it help full to you.
** pavan
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE text-001.
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS: P_INFILE LIKE rlgrap-filename obligatory.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK B1.
*-----------------------------------------------------------------------
data : gv_file_name LIKE rlgrap-filename.
DATA: BEGIN OF gt_upload OCCURS 0,
rec(3000) TYPE c,
END OF gt_upload.
DATA: BEGIN OF gt_header_fields OCCURS 0,
rec(3000) TYPE c,
END OF gt_header_fields.
data: Begin of gt_equipment_data occurs 0,
EQUI_NUMBER TYPE BAPI_ITOB_PARMS-EQUIPMENT,
VALID_DATE TYPE BAPI_ITOB_PARMS-INST_DATE,
FUNCLOC TYPE BAPI_ITOB_EQ_INSTALL-FUNCLOC,
SUPEQUI TYPE BAPI_ITOB_EQ_INSTALL-SUPEQUI,
MATERIAL TYPE BAPI_ITOB_EQ_ONLY-MATERIAL,
SERIALNO TYPE BAPI_ITOB_EQ_ONLY-SERIALNO,
EQUICATGRY TYPE BAPI_ITOB_EQ_ONLY-EQUICATGRY,
BATCH TYPE BAPI_ITOB_EQ_ONLY-BATCH,
READ_SUPEQ TYPE BAPI_ITOB_EQ_ONLY-READ_SUPEQ,
READ_FLOC TYPE BAPI_ITOB_EQ_ONLY-READ_FLOC,
OBJECTTYPE TYPE BAPI_ITOB-OBJECTTYPE,
OBJ_SIZE TYPE BAPI_ITOB-OBJ_SIZE,
OBJ_WEIGHT(16) TYPE C, "BAPI_ITOB-OBJ_WEIGHT,
UNIT_OF_WT TYPE BAPI_ITOB-UNIT_OF_WT,
MANFACTURE TYPE BAPI_ITOB-MANFACTURE,
MANCOUNTRY TYPE BAPI_ITOB-MANCOUNTRY,
COUNTR_ISO TYPE BAPI_ITOB-COUNTR_ISO,
MANSERNO TYPE BAPI_ITOB-MANSERNO,
MANMODEL TYPE BAPI_ITOB-MANMODEL,
CONSTYEAR TYPE BAPI_ITOB-CONSTYEAR,
CONSTMONTH TYPE BAPI_ITOB-CONSTMONTH,
START_FROM TYPE BAPI_ITOB-START_FROM,
PLANPLANT TYPE BAPI_ITOB-PLANPLANT,
MANPARNO TYPE BAPI_ITOB-MANPARNO,
PLANGROUP TYPE BAPI_ITOB-PLANGROUP,
CATPROFILE TYPE BAPI_ITOB-CATPROFILE,
WCTR_PLANT TYPE BAPI_ITOB-MAINTPLANT,
WORK_CTR(8) TYPE C, "BAPI_ITOB-WORK_CTR,
DESCRIPT TYPE BAPI_ITOB-DESCRIPT,
ABCINDIC TYPE BAPI_ITOB-ABCINDIC,
SORTFIELD TYPE BAPI_ITOB-SORTFIELD,
MAINTPLANT TYPE BAPI_ITOB-MAINTPLANT,
MAINTLOC TYPE BAPI_ITOB-MAINTLOC,
PP_WKCTR(8) TYPE C, "BAPI_ITOB-PP_WKCTR,
COSTCENTER TYPE BAPI_ITOB-COSTCENTER,
COMP_CODE TYPE BAPI_ITOB-COMP_CODE,
LONG_TEXT(2500) TYPE C,
end of gt_equipment_data.
data: Begin of gt_equipment_error_data occurs 0,
EQUI_NUMBER TYPE BAPI_ITOB_PARMS-EQUIPMENT,
VALID_DATE TYPE BAPI_ITOB_PARMS-INST_DATE,
FUNCLOC TYPE BAPI_ITOB_EQ_INSTALL-FUNCLOC,
SUPEQUI TYPE BAPI_ITOB_EQ_INSTALL-SUPEQUI,
MATERIAL TYPE BAPI_ITOB_EQ_ONLY-MATERIAL,
SERIALNO TYPE BAPI_ITOB_EQ_ONLY-SERIALNO,
EQUICATGRY TYPE BAPI_ITOB_EQ_ONLY-EQUICATGRY,
BATCH TYPE BAPI_ITOB_EQ_ONLY-BATCH,
READ_SUPEQ TYPE BAPI_ITOB_EQ_ONLY-READ_SUPEQ,
READ_FLOC TYPE BAPI_ITOB_EQ_ONLY-READ_FLOC,
OBJECTTYPE TYPE BAPI_ITOB-OBJECTTYPE,
OBJ_SIZE TYPE BAPI_ITOB-OBJ_SIZE,
OBJ_WEIGHT(16) TYPE C, "BAPI_ITOB-OBJ_WEIGHT,
UNIT_OF_WT TYPE BAPI_ITOB-UNIT_OF_WT,
MANFACTURE TYPE BAPI_ITOB-MANFACTURE,
MANCOUNTRY TYPE BAPI_ITOB-MANCOUNTRY,
COUNTR_ISO TYPE BAPI_ITOB-COUNTR_ISO,
MANSERNO TYPE BAPI_ITOB-MANSERNO,
MANMODEL TYPE BAPI_ITOB-MANMODEL,
CONSTYEAR TYPE BAPI_ITOB-CONSTYEAR,
CONSTMONTH TYPE BAPI_ITOB-CONSTMONTH,
START_FROM TYPE BAPI_ITOB-START_FROM,
PLANPLANT TYPE BAPI_ITOB-PLANPLANT,
MANPARNO TYPE BAPI_ITOB-MANPARNO,
PLANGROUP TYPE BAPI_ITOB-PLANGROUP,
CATPROFILE TYPE BAPI_ITOB-CATPROFILE,
WCTR_PLANT TYPE BAPI_ITOB-MAINTPLANT,
WORK_CTR(8) TYPE C, "BAPI_ITOB-WORK_CTR,
DESCRIPT TYPE BAPI_ITOB-DESCRIPT,
ABCINDIC TYPE BAPI_ITOB-ABCINDIC,
SORTFIELD TYPE BAPI_ITOB-SORTFIELD,
MAINTPLANT TYPE BAPI_ITOB-MAINTPLANT,
MAINTLOC TYPE BAPI_ITOB-MAINTLOC,
PP_WKCTR(8) TYPE C, "BAPI_ITOB-PP_WKCTR,
COSTCENTER TYPE BAPI_ITOB-COSTCENTER,
COMP_CODE TYPE BAPI_ITOB-COMP_CODE,
LONG_TEXT(2500) TYPE C,
end of gt_equipment_error_data.
data: Begin of gt_equipment_error_rep occurs 0,
EQUI_NUMBER TYPE BAPI_ITOB_PARMS-EQUIPMENT,
VALID_DATE TYPE BAPI_ITOB_PARMS-INST_DATE,
FUNCLOC TYPE BAPI_ITOB_EQ_INSTALL-FUNCLOC,
SUPEQUI TYPE BAPI_ITOB_EQ_INSTALL-SUPEQUI,
MATERIAL TYPE BAPI_ITOB_EQ_ONLY-MATERIAL,
SERIALNO TYPE BAPI_ITOB_EQ_ONLY-SERIALNO,
EQUICATGRY TYPE BAPI_ITOB_EQ_ONLY-EQUICATGRY,
BATCH TYPE BAPI_ITOB_EQ_ONLY-BATCH,
READ_SUPEQ TYPE BAPI_ITOB_EQ_ONLY-READ_SUPEQ,
READ_FLOC TYPE BAPI_ITOB_EQ_ONLY-READ_FLOC,
OBJECTTYPE TYPE BAPI_ITOB-OBJECTTYPE,
OBJ_SIZE TYPE BAPI_ITOB-OBJ_SIZE,
OBJ_WEIGHT TYPE BAPI_ITOB-OBJ_WEIGHT,
UNIT_OF_WT TYPE BAPI_ITOB-UNIT_OF_WT,
MANFACTURE TYPE BAPI_ITOB-MANFACTURE,
MANCOUNTRY TYPE BAPI_ITOB-MANCOUNTRY,
COUNTR_ISO TYPE BAPI_ITOB-COUNTR_ISO,
MANSERNO TYPE BAPI_ITOB-MANSERNO,
MANMODEL TYPE BAPI_ITOB-MANMODEL,
CONSTYEAR TYPE BAPI_ITOB-CONSTYEAR,
CONSTMONTH TYPE BAPI_ITOB-CONSTMONTH,
START_FROM TYPE BAPI_ITOB-START_FROM,
PLANPLANT TYPE BAPI_ITOB-PLANPLANT,
MANPARNO TYPE BAPI_ITOB-MANPARNO,
PLANGROUP TYPE BAPI_ITOB-PLANGROUP,
CATPROFILE TYPE BAPI_ITOB-CATPROFILE,
WCTR_PLANT TYPE BAPI_ITOB-MAINTPLANT,
WORK_CTR(8) TYPE C, "BAPI_ITOB-WORK_CTR,
DESCRIPT TYPE BAPI_ITOB-DESCRIPT,
ABCINDIC TYPE BAPI_ITOB-ABCINDIC,
SORTFIELD TYPE BAPI_ITOB-SORTFIELD,
MAINTPLANT TYPE BAPI_ITOB-MAINTPLANT,
MAINTLOC TYPE BAPI_ITOB-MAINTLOC,
PP_WKCTR(8) TYPE C, "BAPI_ITOB-PP_WKCTR,
COSTCENTER TYPE BAPI_ITOB-COSTCENTER,
COMP_CODE TYPE BAPI_ITOB-COMP_CODE,
MESSAGE TYPE bad_patch-descript,
STATUS(10) TYPE C,
RECORD TYPE i,
end of gt_equipment_error_rep.
* ALV stuff
type-pools: slis.
data: gt_fieldcat type slis_t_fieldcat_alv,
gs_layout type slis_layout_alv,
gt_sort type slis_t_sortinfo_alv.
*----------------------------------------------------------------------*
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_infile.
PERFORM authorization_check.
PERFORM get_file_name using 'P_INFILE'
changing gv_file_name.
START-OF-SELECTION.
PERFORM read_input_file_from_pc tables gt_upload
using p_infile.
PERFORM prepare_itab_data tables gt_upload
gt_equipment_data.
PERFORM call_bapi_create_equipment tables gt_equipment_data
gt_equipment_error_data
gt_equipment_error_rep.
END-OF-SELECTION.
PERFORM write_error_file_to_pc tables gt_equipment_error_data
using p_infile.
perform alv_grid.
*&---------------------------------------------------------------------*
*& Form get_file_name
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM get_file_name using x_file_field_name
changing y_file_name_with_path.
data : lv_file_path type rlgrap-filename,
lv_file_name type rlgrap-filename.
PERFORM read_screen_values USING x_file_field_name
CHANGING y_file_name_with_path.
PERFORM split_path USING y_file_name_with_path
CHANGING lv_file_path
lv_file_name.
CALL FUNCTION 'WS_FILENAME_GET'
EXPORTING
def_filename = lv_file_name
def_path = lv_file_path
mask = ',*.*,*.*.'
mode = 'O'
title = 'Directory'
IMPORTING
filename = p_infile
EXCEPTIONS
OTHERS = 1.
ENDFORM. " get_file_name
*&--------------------------------------------------------------------*
*& Form read_screen_values
*&--------------------------------------------------------------------*
* text
*---------------------------------------------------------------------*
* -->P_FIELD text
* -->P_VALUE text
*---------------------------------------------------------------------*
FORM read_screen_values USING x_field
CHANGING y_value.
DATA: lv_dynpname LIKE d020s-prog,
lv_dynpnumb LIKE d020s-dnum.
DATA: BEGIN OF lt_dynpvaluetab OCCURS 1.
INCLUDE STRUCTURE dynpread.
DATA: END OF lt_dynpvaluetab.
lv_dynpname = sy-repid.
lv_dynpnumb = sy-dynnr.
REFRESH lt_dynpvaluetab.
lt_dynpvaluetab-fieldname = x_field.
APPEND lt_dynpvaluetab.
CALL FUNCTION 'DYNP_VALUES_READ'
EXPORTING
dyname = lv_dynpname
dynumb = lv_dynpnumb
TABLES
dynpfields = lt_dynpvaluetab
EXCEPTIONS
invalid_abapworkarea = 1
invalid_dynprofield = 2
invalid_dynproname = 3
invalid_dynpronummer = 4
invalid_request = 5
no_fielddescription = 6
invalid_parameter = 7
undefind_error = 8
double_conversion = 9
OTHERS = 10.
IF sy-subrc = 0.
READ TABLE lt_dynpvaluetab INDEX 1.
MOVE: lt_dynpvaluetab-fieldvalue TO y_value.
ENDIF.
ENDFORM. " read_screen_values
*&--------------------------------------------------------------------*
*& Form split_path
*&--------------------------------------------------------------------*
* text
*---------------------------------------------------------------------*
* -->P_WHOLE text
* -->P_PATH text
* -->P_FNAME text
* -->P_SCHARS text
*---------------------------------------------------------------------*
FORM split_path USING x_file_name_with_path
CHANGING y_file_path
y_file_name.
DATA: lv_length TYPE i,
lv_cpos TYPE i.
check not x_file_name_with_path is initial.
lv_length = strlen( x_file_name_with_path ).
lv_cpos = lv_length.
DO lv_length times.
lv_cpos = lv_cpos - 1.
check x_file_name_with_path+lv_cpos(1) eq ''.
exit.
ENDDO.
y_file_path = x_file_name_with_path(lv_cpos).
lv_cpos = lv_cpos + 1.
y_file_name = x_file_name_with_path+lv_cpos(lv_length).
ENDFORM. " split_path
*&---------------------------------------------------------------------*
*& Form read_input_file_from_pc
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM read_input_file_from_pc tables yt_upload
using x_infile.
* Use WS_Upload if file is located on the local PC.
* WS_Upload only works in foreground
IF sy-batch EQ 'X'.
WRITE: text-002.
<* ERROR: Unable to upload locally stored files when running in
* background
ELSE.
CALL FUNCTION 'WS_UPLOAD'
EXPORTING
filename = x_infile
filetype = 'ASC'
TABLES
data_tab = yt_upload
EXCEPTIONS
conversion_error = 1
file_open_error = 2
file_read_error = 3
invalid_table_width = 4
invalid_type = 5
no_batch = 6
unknown_error = 7
gui_refuse_filetransfer = 8
OTHERS = 9.
* Status of upload
CASE sy-subrc.
WHEN 0.
WHEN OTHERS.
* Upload unsuccessful - error message
MESSAGE ID SY-MSGID TYPE 'E' NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDCASE.
ENDIF.
IF yt_upload[] is initial.
MESSAGE E079(z1) with x_infile.
ENDIF.
ENDFORM. " read_input_file_from_pc
*&---------------------------------------------------------------------*
*& Form prepare_itab_data
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_GT_UPLOAD text
* <--P_GT_EQUIPMENT_DATA text
*----------------------------------------------------------------------*
FORM prepare_itab_data
TABLES XT_UPLOAD STRUCTURE GT_UPLOAD
YT_EQUIPMENT_DATA STRUCTURE GT_EQUIPMENT_DATA.
constants :
lc_tab type x value '09'.
data :
lv_length type i.
loop at xt_upload.
* Skip the header line descriptions in the file.
if sy-tabix eq 1.
SPLIT XT_UPLOAD at lc_tab into table gt_header_fields.
continue.
endif.
* Populate file values to internal table.
split xt_upload at lc_tab into
yt_equipment_data-EQUI_NUMBER
yt_equipment_data-VALID_DATE
yt_equipment_data-FUNCLOC
yt_equipment_data-SUPEQUI
yt_equipment_data-MATERIAL
yt_equipment_data-SERIALNO
yt_equipment_data-EQUICATGRY
yt_equipment_data-BATCH
yt_equipment_data-READ_SUPEQ
yt_equipment_data-READ_FLOC
yt_equipment_data-OBJECTTYPE
yt_equipment_data-OBJ_SIZE
yt_equipment_data-OBJ_WEIGHT
yt_equipment_data-UNIT_OF_WT
yt_equipment_data-MANFACTURE
yt_equipment_data-MANCOUNTRY
yt_equipment_data-COUNTR_ISO
yt_equipment_data-MANSERNO
yt_equipment_data-MANMODEL
yt_equipment_data-CONSTYEAR
yt_equipment_data-CONSTMONTH
yt_equipment_data-START_FROM
yt_equipment_data-PLANPLANT
yt_equipment_data-MANPARNO
yt_equipment_data-PLANGROUP
yt_equipment_data-CATPROFILE
yt_equipment_data-WCTR_PLANT
yt_equipment_data-WORK_CTR
yt_equipment_data-DESCRIPT
yt_equipment_data-ABCINDIC
yt_equipment_data-SORTFIELD
yt_equipment_data-MAINTPLANT
yt_equipment_data-MAINTLOC
yt_equipment_data-PP_WKCTR
yt_equipment_data-COSTCENTER
yt_equipment_data-COMP_CODE
yt_equipment_data-LONG_TEXT.
lv_length = strlen( yt_equipment_data-CONSTMONTH ).
IF lv_length eq 1.
concatenate '0' yt_equipment_data-CONSTMONTH
into yt_equipment_data-CONSTMONTH.
endif.
* Populate other values ( system variables/constants - not from file )
APPEND yt_equipment_data.
endloop.
ENDFORM. " prepare_itab_data
*&---------------------------------------------------------------------*
*& Form call_bapi_create_equipment
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->XT_EQUIPMENT_DATA text
*----------------------------------------------------------------------*
FORM call_bapi_create_equipment
TABLES
XT_EQUIPMENT_DATA STRUCTURE GT_EQUIPMENT_DATA
XT_EQUIPMENT_error_DATA STRUCTURE GT_EQUIPMENT_DATA
XT_EQUIPMENT_error_rep STRUCTURE GT_EQUIPMENT_error_rep.
data :
lv_BAPI_ITOB type BAPI_ITOB,
lv_BAPI_ITOB_EQ_ONLY type BAPI_ITOB_EQ_ONLY,
lv_BAPI_ITOB_EQ_INSTALL type BAPI_ITOB_EQ_INSTALL,
lv_BAPI_ITOBX type BAPI_ITOBX,
lv_BAPI_ITOB_EQ_ONLYX type BAPI_ITOB_EQ_ONLYX,
lv_valid_date type sy-datum,
lv_return like bapiret2,
lv_record_no type sy-index,
lv_edit_type(6) type c,
lv_no_error_flag type c.
loop at XT_EQUIPMENT_DATA.
CLEAR : lv_return,
lv_BAPI_ITOB,
lv_BAPI_ITOB_EQ_ONLY,
lv_BAPI_ITOB_EQ_INSTALL,
lv_valid_date.
lv_record_no = sy-tabix.
PERFORM get_object_id_of_workcentres
tables xt_EQUIPMENT_error_DATA
xT_EQUIPMENT_error_rep
using lv_record_no
CHANGING XT_EQUIPMENT_DATA
lv_no_error_flag.
* Error encountered in work centre id determination.
IF lv_no_error_flag is initial.
continue.
ENDIF.
* Check if equipment number was specified in file.
if XT_EQUIPMENT_DATA-EQUI_NUMBER is initial.
lv_edit_type = 'CREATE'.
else.
lv_edit_type = 'CHANGE'.
endif.
PERFORM populate_bapi_structures using XT_EQUIPMENT_DATA
lv_edit_type
changing lv_BAPI_ITOB
lv_BAPI_ITOB_EQ_ONLY
lv_BAPI_ITOB_EQ_INSTALL
lv_valid_date
lv_BAPI_ITOBX
lv_BAPI_ITOB_EQ_ONLYX.
CASE lv_edit_type.
WHEN 'CREATE'.
* Create Equipment
CALL FUNCTION 'BAPI_EQUI_CREATE'
EXPORTING
EXTERNAL_NUMBER = XT_EQUIPMENT_DATA-EQUI_NUMBER
DATA_GENERAL = lv_BAPI_ITOB
DATA_SPECIFIC = lv_BAPI_ITOB_EQ_ONLY
VALID_DATE = lv_valid_date
DATA_INSTALL = lv_BAPI_ITOB_EQ_INSTALL
IMPORTING
EQUIPMENT = XT_EQUIPMENT_DATA-EQUI_NUMBER
DATA_GENERAL_EXP = lv_BAPI_ITOB
DATA_SPECIFIC_EXP = lv_BAPI_ITOB_EQ_ONLY
RETURN = lv_return.
WHEN 'CHANGE'.
SELECT SINGLE EQUNR
INTO XT_EQUIPMENT_DATA-EQUI_NUMBER
FROM EQUI
WHERE EQUNR eq XT_EQUIPMENT_DATA-EQUI_NUMBER.
if sy-subrc ne 0.
append XT_EQUIPMENT_DATA to XT_EQUIPMENT_error_DATA.
XT_EQUIPMENT_error_rep = XT_EQUIPMENT_DATA.
XT_EQUIPMENT_error_rep-MESSAGE = text-010.
XT_EQUIPMENT_error_rep-RECORD = lv_record_no.
append XT_EQUIPMENT_error_rep.
exit.
endif.
* Change Equipment
CALL FUNCTION 'BAPI_EQUI_CHANGE'
EXPORTING
EQUIPMENT = XT_EQUIPMENT_DATA-EQUI_NUMBER
DATA_GENERAL = lv_BAPI_ITOB
DATA_GENERALX = lv_BAPI_ITOBX
DATA_SPECIFIC = lv_BAPI_ITOB_EQ_ONLY
DATA_SPECIFICX = lv_BAPI_ITOB_EQ_ONLYX
IMPORTING
DATA_GENERAL_EXP = lv_BAPI_ITOB
DATA_SPECIFIC_EXP = lv_BAPI_ITOB_EQ_ONLY
RETURN = lv_return.
ENDCASE.
if lv_return-type = 'E'.
* For Error data file.
append XT_EQUIPMENT_data to XT_EQUIPMENT_error_DATA.
* For Error reporting.
XT_EQUIPMENT_error_rep = XT_EQUIPMENT_data.
PERFORM prepare_error_text
using lv_return
changing XT_EQUIPMENT_error_rep-MESSAGE.
XT_EQUIPMENT_error_rep-RECORD = lv_record_no.
XT_EQUIPMENT_error_rep-STATUS = 'Error'.
append XT_EQUIPMENT_error_rep.
else.
* Equipment created successfully.
XT_EQUIPMENT_error_rep = XT_EQUIPMENT_data.
XT_EQUIPMENT_error_rep-MESSAGE = 'Equipment created successfully'.
XT_EQUIPMENT_error_rep-RECORD = lv_record_no.
XT_EQUIPMENT_error_rep-STATUS = 'Success'.
append XT_EQUIPMENT_error_rep.
COMMIT WORK AND WAIT.
* Save Long Text for Equipment.
check not XT_EQUIPMENT_DATA-long_text is initial.
PERFORM save_long_text using XT_EQUIPMENT_DATA-equi_number
XT_EQUIPMENT_DATA-long_text.
endif.
endloop.
ENDFORM. " call_bapi_create_equipment
*&---------------------------------------------------------------------*
*& Form populate_bapi_structures
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->XT_EQUIPMENT_DATA text
* <--Y_BAPI_ITOB text
* <--Y_BAPI_ITOB_EQ_ONLY text
* <--Y_BAPI_ITOB_EQ_INSTALL text
* <--Y_VALID_DATE text
*----------------------------------------------------------------------*
FORM populate_bapi_structures
USING XT_EQUIPMENT_DATA STRUCTURE GT_EQUIPMENT_DATA
x_edit_type TYPE C
CHANGING y_BAPI_ITOB STRUCTURE BAPI_ITOB
y_BAPI_ITOB_EQ_ONLY STRUCTURE BAPI_ITOB_EQ_ONLY
y_BAPI_ITOB_EQ_INSTALL STRUCTURE BAPI_ITOB_EQ_INSTALL
y_VALID_DATE
y_BAPI_ITOBX STRUCTURE BAPI_ITOBX
y_BAPI_ITOB_EQ_ONLYX STRUCTURE BAPI_ITOB_EQ_ONLYX.
move-corresponding XT_EQUIPMENT_DATA to y_BAPI_ITOB.
move-corresponding XT_EQUIPMENT_DATA to y_BAPI_ITOB_EQ_ONLY.
move-corresponding XT_EQUIPMENT_DATA to y_BAPI_ITOB_EQ_INSTALL.
y_VALID_DATE = XT_EQUIPMENT_DATA-VALID_DATE.
IF x_edit_type eq 'CHANGE'.
Y_BAPI_ITOB_EQ_ONLYX-MATERIAL = 'X'.
Y_BAPI_ITOB_EQ_ONLYX-SERIALNO = 'X'.
Y_BAPI_ITOB_EQ_ONLYX-EQUICATGRY = 'X'.
Y_BAPI_ITOB_EQ_ONLYX-BATCH = 'X'.
Y_BAPI_ITOB_EQ_ONLYX-READ_SUPEQ = 'X'.
Y_BAPI_ITOB_EQ_ONLYX-READ_FLOC = 'X'.
Y_BAPI_ITOBX-OBJECTTYPE = 'X'.
Y_BAPI_ITOBX-OBJ_SIZE = 'X'.
Y_BAPI_ITOBX-OBJ_WEIGHT = 'X'.
Y_BAPI_ITOBX-UNIT_OF_WT = 'X'.
Y_BAPI_ITOBX-MANFACTURE = 'X'.
Y_BAPI_ITOBX-MANCOUNTRY = 'X'.
Y_BAPI_ITOBX-COUNTR_ISO = 'X'.
Y_BAPI_ITOBX-MANSERNO = 'X'.
Y_BAPI_ITOBX-MANMODEL = 'X'.
Y_BAPI_ITOBX-CONSTYEAR = 'X'.
Y_BAPI_ITOBX-CONSTMONTH = 'X'.
Y_BAPI_ITOBX-START_FROM = 'X'.
Y_BAPI_ITOBX-PLANPLANT = 'X'.
Y_BAPI_ITOBX-MANPARNO = 'X'.
Y_BAPI_ITOBX-PLANGROUP = 'X'.
Y_BAPI_ITOBX-CATPROFILE = 'X'.
Y_BAPI_ITOBX-WORK_CTR = 'X'.
Y_BAPI_ITOBX-DESCRIPT = 'X'.
Y_BAPI_ITOBX-ABCINDIC = 'X'.
Y_BAPI_ITOBX-SORTFIELD = 'X'.
Y_BAPI_ITOBX-MAINTPLANT = 'X'.
Y_BAPI_ITOBX-MAINTLOC = 'X'.
Y_BAPI_ITOBX-PP_WKCTR = 'X'.
Y_BAPI_ITOBX-COSTCENTER = 'X'.
Y_BAPI_ITOBX-COMP_CODE = 'X'.
Y_BAPI_ITOBX-READ_CRDAT = 'X'.
Y_BAPI_ITOBX-READ_CRNAM = 'X'.
Y_BAPI_ITOBX-READ_CHDAT = 'X'.
Y_BAPI_ITOBX-READ_CHNAM = 'X'.
ENDIF.
ENDFORM. " populate_bapi_structures
*&---------------------------------------------------------------------*
*& Form write_error_file_to_pc
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_GT_EQUIPMENT_ERROR_DATA text
*----------------------------------------------------------------------*
FORM write_error_file_to_pc tables xt_download
using x_infile.
check not xt_download[] is initial.
replace '.' with '.err.' into x_infile.
CALL FUNCTION 'WS_DOWNLOAD'
EXPORTING
FILENAME = x_infile
FILETYPE = 'DAT'
TABLES
DATA_TAB = xt_download
FIELDNAMES = gt_header_fields
EXCEPTIONS
FILE_OPEN_ERROR = 1
FILE_WRITE_ERROR = 2
INVALID_FILESIZE = 3
INVALID_TYPE = 4
NO_BATCH = 5
UNKNOWN_ERROR = 6
INVALID_TABLE_WIDTH = 7
GUI_REFUSE_FILETRANSFER = 8
CUSTOMER_ERROR = 9
OTHERS = 10
.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE 'W' NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. " write_error_file_to_pc
*&---------------------------------------------------------------------*
*& Form alv_grid
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
form alv_grid.
if gt_fieldcat[] is initial.
perform fieldcat_init.
perform layout_init.
perform sort_init.
endif.
perform grid_display.
endform.
*&---------------------------------------------------------------------*
*& Form layout_init
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
form layout_init.
gs_layout-zebra = 'X'.
gs_layout-cell_merge = 'X'.
gs_layout-colwidth_optimize = 'X'.
gs_layout-no_vline = ' '.
gs_layout-totals_before_items = ' '.
endform. " layout_init
*&---------------------------------------------------------------------*
*& Form fieldcat_init
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
form fieldcat_init.
data: ls_fieldcat type slis_fieldcat_alv.
clear ls_fieldcat.
ls_fieldcat-fieldname = 'RECORD'.
ls_fieldcat-key = 'X'.
ls_fieldcat-reptext_ddic = 'Record Number'.
ls_fieldcat-outputlen = 10.
* Fix for ALV print bug,
* Set type to 'N' to stop corruption of printed ALV cell.
ls_fieldcat-inttype = 'N'.
append ls_fieldcat to gt_fieldcat.
clear ls_fieldcat.
ls_fieldcat-fieldname = 'EQUI_NUMBER'.
ls_fieldcat-reptext_ddic = 'Equipment'.
ls_fieldcat-outputlen = 10.
append ls_fieldcat to gt_fieldcat.
clear ls_fieldcat.
ls_fieldcat-fieldname = 'STATUS'.
ls_fieldcat-reptext_ddic = 'Status'.
ls_fieldcat-outputlen = 10.
append ls_fieldcat to gt_fieldcat.
clear ls_fieldcat.
ls_fieldcat-fieldname = 'MESSAGE'.
ls_fieldcat-reptext_ddic = 'Message'.
ls_fieldcat-outputlen = 100.
append ls_fieldcat to gt_fieldcat.
endform.
*&---------------------------------------------------------------------*
*& Form sort_init
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
form sort_init.
data: ls_sort type slis_sortinfo_alv.
clear ls_sort.
ls_sort-fieldname = 'STATUS'.
ls_sort-spos = 1.
ls_sort-up = 'X'.
append ls_sort to gt_sort.
clear ls_sort.
ls_sort-fieldname = 'RECORD'.
ls_sort-spos = 2.
ls_sort-up = 'X'.
append ls_sort to gt_sort.
clear ls_sort.
ls_sort-fieldname = 'EQUI_NUMBER'.
ls_sort-spos = 3.
ls_sort-up = 'X'.
append ls_sort to gt_sort.
endform.
*&---------------------------------------------------------------------*
*& Form grid_display
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
form grid_display.
call function 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
is_layout = gs_layout
it_fieldcat = gt_fieldcat
it_sort = gt_sort
i_default = ' '
i_save = 'X'
TABLES
t_outtab = gt_equipment_error_rep
EXCEPTIONS
PROGRAM_ERROR = 1
OTHERS = 2.
if sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
endif.
endform.
*&---------------------------------------------------------------------*
*& Form authorization_check
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM authorization_check.
CALL FUNCTION 'AUTHORITY_CHECK_EQUI'
EXPORTING
TCODE = 'IE01'
EXCEPTIONS
NO_AUTHORITY_TCODE = 1
NO_AUTHORITY_BEGRP = 2
NO_AUTHORITY_IWERK = 3
NO_AUTHORITY_INGRP = 4
NO_AUTHORITY_SWERK = 5
NO_AUTHORITY_KOSTL = 6
NO_PROFILE_IN_USER_MASTER_DATA = 7
ERROR_IN_USER_MASTER_DATA = 8
OTHERS = 9.
IF SY-SUBRC <> 0.
message E078(z1).
ENDIF.
ENDFORM. " authorization_check
*&---------------------------------------------------------------------*
*& Form prepare_error_text
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->XT_RETURN text
* <--YT_EQUIPMENT_ERROR_REP_MESSAGE text
*----------------------------------------------------------------------*
FORM prepare_error_text USING X_RETURN TYPE BAPIRET2
CHANGING Y_MESSAGE TYPE bad_patch-descript.
* Convert the message
MOVE : x_return-id TO sy-msgid,
x_return-number TO sy-msgno,
x_return-message_v1 TO sy-msgv1,
x_return-message_v2 TO sy-msgv2,
x_return-message_v3 TO sy-msgv3,
x_return-message_v4 TO sy-msgv4.
CALL FUNCTION 'K_MESSAGE_TRANSFORM'
EXPORTING
par_langu = sy-langu
par_msgid = sy-msgid
par_msgno = sy-msgno
par_msgv1 = sy-msgv1
par_msgv2 = sy-msgv2
par_msgv3 = sy-msgv3
par_msgv4 = sy-msgv4
IMPORTING
par_msgtx = Y_MESSAGE
EXCEPTIONS
no_message_found = 1
par_msgid_missing = 2
par_msgno_missing = 3
par_msgty_missing = 4
OTHERS = 5.
ENDFORM. " prepare_error_text
*&---------------------------------------------------------------------*
*& Form save_long_text
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->x_EQUI_NUMBER text
* -->x_long_text text
*----------------------------------------------------------------------*
FORM save_long_text USING x_EQUI_NUMBER
x_long_text.
data :
lt_long_text type table of TLINE with header line,
lv_text_length type i,
lv_loop_times type i,
lv_char_pos_last type i,
lv_char_pos_curr type i,
lv_header type thead.
lv_text_length = strlen( x_long_text ).
lv_char_pos_curr = 0.
lv_char_pos_last = 0.
* Split long text into table.
lv_loop_times = lv_text_length DIV 132.
DO lv_loop_times times.
lv_char_pos_curr = lv_char_pos_curr + 132.
lt_long_text-tdline =
x_long_text+lv_char_pos_last(132).
append lt_long_text.
lv_char_pos_last = lv_char_pos_curr - 1.
ENDDO.
* Write the left-over.
lt_long_text-tdline =
x_long_text+lv_char_pos_last.
append lt_long_text.
lv_header-TDOBJECT = 'EQUI'.
lv_header-TDNAME = x_EQUI_NUMBER.
lv_header-TDID = 'LTXT'.
lv_header-TDSPRAS = 'E'.
CALL FUNCTION 'SAVE_TEXT'
EXPORTING
HEADER = lv_header
SAVEMODE_DIRECT = 'X'
TABLES
LINES = lt_long_text
EXCEPTIONS
ID = 1
LANGUAGE = 2
NAME = 3
OBJECT = 4
OTHERS = 5
.
IF SY-SUBRC <> 0.
CALL FUNCTION 'K_MESSAGE_TRANSFORM'
EXPORTING
par_langu = sy-langu
par_msgid = sy-msgid
par_msgno = sy-msgno
par_msgv1 = sy-msgv1
par_msgv2 = sy-msgv2
par_msgv3 = sy-msgv3
par_msgv4 = sy-msgv4
IMPORTING
par_msgtx = GT_EQUIPMENT_error_rep-MESSAGE
EXCEPTIONS
no_message_found = 1
par_msgid_missing = 2
par_msgno_missing = 3
par_msgty_missing = 4
OTHERS = 5.
* For Error data file.
modify gt_equipment_error_data from gt_equipment_data.
gt_equipment_error_rep-status = 'Error'.
modify GT_EQUIPMENT_error_rep transporting MESSAGE STATUS
where EQUI_NUMBER = x_EQUI_NUMBER.
ELSE.
COMMIT WORK.
ENDIF.
ENDFORM. " save_long_text
*&---------------------------------------------------------------------*
*& Form get_object_id_of_workcentres
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM get_object_id_of_workcentres
TABLES
yt_EQUIPMENT_error_DATA structure gt_equipment_error_DATA
YT_EQUIPMENT_error_rep structure gT_EQUIPMENT_error_rep
using value(x_record_no) type sy-index
CHANGING
x_equipment_data structure gt_equipment_data
y_no_error_flag type c.
data : lv_main_work_centre like gt_equipment_data-WORK_CTR,
lv_plan_work_centre like gt_equipment_data-PP_WKCTR.
y_no_error_flag = 'X'.
* Get Object ID of Work centre using work centre and plant.
IF not x_equipment_data-WORK_CTR is initial.
SELECT SINGLE OBJID
INTO lv_main_work_centre
FROM CRHD
WHERE objty = 'A'
AND arbpl = x_equipment_data-WORK_CTR
AND werks = x_equipment_data-WCTR_PLANT.
if sy-subrc <> 0.
y_no_error_flag = ' '.
* For Error data file.
append x_EQUIPMENT_data to YT_EQUIPMENT_error_DATA.
* For Error reporting.
YT_EQUIPMENT_error_rep = x_EQUIPMENT_data.
CONCATENATE
'Work Centre ID is not maintained for Maint Work center' space
x_equipment_data-WORK_CTR space ' and ' space
'Plant ' space x_equipment_data-MAINTPLANT
into YT_EQUIPMENT_error_rep-MESSAGE.
YT_EQUIPMENT_error_rep-RECORD = x_record_no.
YT_EQUIPMENT_error_rep-STATUS = 'Error'.
append YT_EQUIPMENT_error_rep.
exit.
else.
x_equipment_data-WORK_CTR = lv_main_work_centre.
endif.
endif.
if not x_equipment_data-PP_WKCTR is initial.
SELECT SINGLE OBJID
INTO lv_plan_work_centre
FROM CRHD
WHERE objty = 'A'
AND arbpl = x_equipment_data-PP_WKCTR
AND werks = x_equipment_data-WCTR_PLANT.
if sy-subrc <> 0.
y_no_error_flag = ' '.
y_no_error_flag = ' '.
* For Error data file.
append x_EQUIPMENT_data to YT_EQUIPMENT_error_DATA.
* For Error reporting.
YT_EQUIPMENT_error_rep = x_EQUIPMENT_data.
CONCATENATE
'Work Centre ID is not maintained for Plan Work center ' space
x_equipment_data-PP_WKCTR space ' and ' space
'Plant ' space x_equipment_data-PLANPLANT
into YT_EQUIPMENT_error_rep-MESSAGE.
YT_EQUIPMENT_error_rep-RECORD = x_record_no.
YT_EQUIPMENT_error_rep-STATUS = 'Error'.
append YT_EQUIPMENT_error_rep.
exit.
else.
x_equipment_data-PP_WKCTR = lv_plan_work_centre.
endif.
endif.
ENDFORM. " get_object_id_of_workcentres
Check the following links
http://www.4ap.de/abap/equipments.php
Regards
Pavan
Message was edited by:
Pavan praveen