2014 Jun 24 1:14 PM
by using BAPI_ROUTING_CREATE bapi i created group counters and group . but work center are not updated .
and operation table have records .
2014 Jun 24 1:26 PM
Hi Ram,
Please find the below code..
REPORT zp_rpp_routing_master_upload LINE-SIZE 200 .
************************************************************************
* SELECTION-SCREEN Declaration *
************************************************************************
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE t1.
PARAMETERS : p_path TYPE "File Path
ibipparms-path
OBLIGATORY.
SELECTION-SCREEN END OF BLOCK b1.
************************************************************************
* Types Declaration *
************************************************************************
*TYPES for Flat file Structure..........................................
TYPES : BEGIN OF gs_record,
* plnnr TYPE plnnr, "Key for Task List Group
matnr TYPE matnr, "Material Number
plnal TYPE plnal, "Group Counter
werks TYPE werks_d, "Plant
verwe TYPE pln_verwe, "Task list usage
statu TYPE plnst, "Status
losvn TYPE losvn, "From Lot Size
losbs TYPE losbs, "To Lot Size
plnme TYPE plnme, "Task list unit of measure
vornr TYPE vornr, "Operation/Activity Number
uvorn TYPE vornr, "Sub-Operation/Activity Number
arbpl TYPE arbpl, "Work center
steus TYPE steus, "Control key
ltxa1 TYPE ltxa1, "Operation short text
bmsch TYPE bmsch, "Base Quantity
cp_umren TYPE cp_umren, "Denominator for converting rtg.....
value1 type VGWRT,
value2 type VGWRT,
value3 type VGWRT,
value4 type VGWRT,
value5 type VGWRT,
value6 type VGWRT,
END OF gs_record.
************************************************************************
* Tables Declaration *
************************************************************************
*Table for upload file..................................................
DATA: gt_raw TYPE truxs_t_text_data,
*Table for Retriving data from Flat File................................
gt_record TYPE STANDARD TABLE OF gs_record
INITIAL SIZE 0,
* Table for Operation item data.........................................
gt_operation TYPE STANDARD TABLE OF bapi1012_opr_c
INITIAL SIZE 0,
* Table for Material Header data........................................
gt_material TYPE STANDARD TABLE OF bapi1012_mtk_c
INITIAL SIZE 0,
* Table for Sub-Operation data..........................................
gt_suboperation TYPE STANDARD TABLE OF bapi1012_sub_opr_c
INITIAL SIZE 0,
* Table for Task Header data............................................
gt_task TYPE STANDARD TABLE OF bapi1012_tsk_c
INITIAL SIZE 0,
* Table for Return Message data.........................................
gt_return TYPE STANDARD TABLE OF bapiret2
INITIAL SIZE 0,
* Table for sequence Header data........................................
gt_sequence TYPE STANDARD TABLE OF bapi1012_seq_c
INITIAL SIZE 0.
************************************************************************
* Work Area Declaration *
************************************************************************
* Work Area for Retriving data from Flat File...........................
DATA : gw_record TYPE gs_record,
* Work Area for Task Header data........................................
gw_task TYPE bapi1012_tsk_c,
* Work Area for Material Header data....................................
gw_material TYPE bapi1012_mtk_c,
* Work Area for Operation item data.....................................
gw_operation TYPE bapi1012_opr_c,
* Work Area for Sub-Operation data......................................
gw_suboperation TYPE bapi1012_sub_opr_c,
* Work Area for Return Message
gw_return TYPE bapiret2.
************************************************************************
* Global variables *
************************************************************************
DATA: gv_group TYPE "Group
bapi1012_tsk_c-task_list_group,
gv_groupcounter TYPE " "Groupcounter
bapi1012_tsk_c-group_counter.
************************************************************************
* Constants Declaration *
************************************************************************
CONSTANTS : c_wait TYPE BAPITA-WAIT
VALUE 'X', "wait
c_x(1) TYPE c
VALUE 'X', "x
c_e TYPE BAPI_MTYPE
VALUE 'E', "error
c_s TYPE BAPI_MTYPE
VALUE 'S', "sucess
c_w TYPE BAPI_MTYPE
VALUE 'W', "Warning
c_A TYPE BAPI_MTYPE
VALUE 'A', "abort
c_i TYPE BAPI_MTYPE
VALUE 'I', "Info
c_icon_red TYPE icon-name
VALUE 'ICON_MESSAGE_ERROR_SMALL',
c_icon_yellow TYPE icon-name
VALUE 'ICON_MESSAGE_WARNING_SMALL',
c_icon_green TYPE icon-name
VALUE 'ICON_SYSTEM_OKAY',
c_icon_blue TYPE icon-name
VALUE 'ICON_MESSAGE_INFORMATION_SMALL',
c_icon_red1 TYPE icon-name
VALUE 'ICON_LED_RED'.
*&**********************************************************************
*& I N I T I A L I Z T I O N *
*&**********************************************************************
INITIALIZATION.
t1 = text-001.
************************************************************************
*& AT SELECTION-SCREEN to fetch flat file *
************************************************************************
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_path.
* Function module is used F4 for filename..............................
CALL FUNCTION 'F4_FILENAME'
EXPORTING
program_name = syst-cprog
dynpro_number = syst-dynnr
field_name = ' '
IMPORTING
file_name = p_path.
*&**********************************************************************
*& S E L E C T I O N - S C R E E N *
*&**********************************************************************
START-OF-SELECTION.
* Perform to upload data from flat file.................................
PERFORM sub_upload.
* Perform to BAPI update................................................
PERFORM sub_bapi_update.
*&**********************************************************************
*& Form SUB_UPLOAD *
*&**********************************************************************
* This routine is used to upload recordes from flat file *
*&**********************************************************************
* No Parameters are required *
*&**********************************************************************
FORM sub_upload .
DATA : lcl_filename TYPE localfile. "local file.
lcl_filename = p_path.
* Function Module is used to upload flat file...........................
CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP'
EXPORTING
i_field_seperator = c_x
i_line_header = c_x
i_tab_raw_data = gt_raw
i_filename = lcl_filename
TABLES
i_tab_converted_data = gt_record
EXCEPTIONS
conversion_failed = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE e000(38)
WITH 'PC-file could not be read.'(t04)
'ErrorCode (SUBRC):'(t05)
sy-subrc.
ENDIF. "IF sy-subrc <> 0.
ENDFORM. "SUB_UPLOAD.
*&**********************************************************************
*& Form SUB_BAPI_UPDATA
*&**********************************************************************
* This routine is used to Pass records into Bapi
*&**********************************************************************
* No Parameters are required
*&**********************************************************************
FORM sub_bapi_update.
DATA : lw_icon TYPE icon, "icon work area.
lv_check, "Check.
ls_return TYPE bapiret2. "return stru...
SORT gt_record BY matnr plnal vornr uvorn .
* To map the fields from internal table into coresponding tables........
LOOP AT gt_record INTO gw_record.
** To convert List Group to system format...............................
* CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
* EXPORTING
* input = gw_record-plnnr
* IMPORTING
* output = gw_record-plnnr.
* To convert Group Counter to system format.............................
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = gw_record-plnal
IMPORTING
output = gw_record-plnal.
* To convert material No to system format...............................
CALL FUNCTION 'CONVERSION_EXIT_MATN1_INPUT'
EXPORTING
input = gw_record-matnr
IMPORTING
output = gw_record-matnr
EXCEPTIONS
length_error = 1
OTHERS = 2.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
* To convert Operation to system format................................
CALL FUNCTION 'CONVERSION_EXIT_NUMCV_INPUT'
EXPORTING
input = gw_record-vornr
IMPORTING
output = gw_record-vornr.
* To convert Sub-Operation to system format............................
CALL FUNCTION 'CONVERSION_EXIT_NUMCV_INPUT'
EXPORTING
input = gw_record-uvorn
IMPORTING
output = gw_record-uvorn.
* gw_task-task_list_group = gw_record-plnnr.
gw_task-group_counter = gw_record-plnal.
gw_task-plant = gw_record-werks.
gw_task-task_list_usage = gw_record-verwe.
gw_task-task_list_status = gw_record-statu.
gw_task-lot_size_from = gw_record-losvn.
gw_task-lot_size_to = gw_record-losbs.
gw_task-task_measure_unit = gw_record-plnme.
APPEND gw_task TO gt_task. "passing to task header..
CLEAR gw_task.
gw_material-group_counter = gw_record-plnal.
gw_material-material = gw_record-matnr.
gw_material-plant = gw_record-werks.
* gw_material-task_list_group = gw_record-plnnr.
APPEND gw_material TO gt_material. "passing to material h...
CLEAR gw_material.
* To check wether Operation.............................................
IF gw_record-uvorn IS INITIAL.
* gw_operation-task_list_group = gw_record-plnnr.
gw_operation-group_counter = gw_record-plnal.
gw_operation-activity = gw_record-vornr.
gw_operation-work_cntr = gw_record-arbpl.
gw_operation-control_key = gw_record-steus.
gw_operation-plant = gw_record-werks.
gw_operation-description = gw_record-ltxa1.
gw_operation-base_quantity = gw_record-bmsch.
gw_operation-denominator = gw_record-cp_umren.
* Changed by VENKAT....
IF gw_record-value1 EQ '' OR
gw_record-value2 EQ ''.
IF gw_record-value1 NE ''.
gw_operation-std_value_01 = gw_record-value1.
ELSEIF gw_record-value2 NE ''.
gw_operation-std_value_01 = gw_record-value2.
ENDIF.
ELSEIF gw_record-value1 NE '' AND
gw_record-value2 NE ''.
gw_operation-std_value_01 = gw_record-value1.
gw_operation-std_value_02 = gw_record-value2.
ENDIF.
***********************************************************************
gw_operation-std_value_03 = gw_record-value3.
gw_operation-std_value_04 = gw_record-value4.
gw_operation-std_value_05 = gw_record-value5.
gw_operation-std_value_06 = gw_record-value6.
APPEND gw_operation TO gt_operation. "passing to opertion it..
CLEAR gw_operation.
* To check wether Sub-Operation.........................................
ELSE. "IF gw_record-uvorn IS...
* gw_suboperation-task_list_group = gw_record-plnnr.
gw_suboperation-group_counter = gw_record-plnal.
gw_suboperation-sub_activity = gw_record-uvorn.
gw_suboperation-activity = gw_record-vornr.
gw_suboperation-work_cntr = gw_record-arbpl.
gw_suboperation-control_key = gw_record-steus.
gw_suboperation-plant = gw_record-werks.
gw_suboperation-description = gw_record-ltxa1.
gw_suboperation-base_quantity = gw_record-bmsch.
gw_suboperation-denominator = gw_record-cp_umren.
APPEND gw_suboperation "passing to sub-operti...
TO gt_suboperation.
CLEAR : gw_suboperation.
ENDIF. "IF gw_record-uvorn IS...
* To update at end of Group counter.....................................
AT END OF plnal.
lv_check = 'X'.
ENDAT. "AT END OF plnal.........
* To update at end of Material..........................................
AT END OF matnr.
lv_check = 'X'.
ENDAT. "AT END OF matnr.........
* to check wether its data is reday to upadte...........................
IF lv_check IS NOT INITIAL.
DELETE ADJACENT DUPLICATES FROM gt_task.
DELETE ADJACENT DUPLICATES FROM gt_material.
* To Upadate Routing Master using bapi..................................
CALL FUNCTION 'BAPI_ROUTING_CREATE'
IMPORTING
group = gv_group
groupcounter = gv_groupcounter
TABLES
task = gt_task
sequence = gt_sequence
materialtaskallocation = gt_material
operation = gt_operation
suboperation = gt_suboperation
return = gt_return.
* To Commit work........................................................
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = c_wait
IMPORTING
return = ls_return.
SKIP.
WRITE 😕 text-003,
gv_group. "group
WRITE 😕 text-004
,gv_groupcounter. "group counter
* To display Messages
LOOP AT gt_return INTO gw_return.
IF gw_return-type EQ c_e.
SELECT SINGLE *
FROM icon
INTO lw_icon
WHERE name EQ c_icon_red.
WRITE : lw_icon-internal,
gw_return-message.
ELSEIF gw_return-type EQ c_w. "IF gw_return-type EQ ...
SELECT SINGLE *
FROM icon
INTO lw_icon
WHERE name EQ c_icon_yellow.
WRITE : lw_icon-internal,
gw_return-message.
ELSEIF gw_return-type EQ c_s. "IF gw_return-type EQ ...
SELECT SINGLE *
FROM icon
INTO lw_icon
WHERE name EQ c_icon_green.
WRITE : lw_icon-internal,
gw_return-message.
ELSEIF gw_return-type EQ c_i. "IF gw_return-type EQ ...
SELECT SINGLE *
FROM icon
INTO lw_icon
WHERE name EQ c_icon_blue.
WRITE : lw_icon-internal,
gw_return-message.
ELSEIF gw_return-type EQ c_a. "IF gw_return-type EQ ...
SELECT SINGLE *
FROM icon
INTO lw_icon
WHERE name EQ c_icon_red1.
WRITE : lw_icon-internal,
gw_return-message.
ENDIF. "IF gw_return-type EQ ...
CLEAR :gw_return,
lw_icon.
ENDLOOP. "LOOP AT gt_return INT...
* to commit message's
IF ls_return-type EQ c_e.
SELECT SINGLE *
FROM icon
INTO lw_icon
WHERE name EQ c_icon_red.
WRITE : lw_icon-internal,
gw_return-message.
ELSEIF ls_return-type EQ c_w. "IF ls_return-type EQ ...
SELECT SINGLE *
FROM icon
INTO lw_icon
WHERE name EQ c_icon_yellow.
WRITE : lw_icon-internal,
ls_return-message.
ELSEIF ls_return-type EQ c_s. "IF ls_return-type EQ ...
SELECT SINGLE *
FROM icon
INTO lw_icon
WHERE name EQ c_icon_green.
WRITE : lw_icon-internal,
ls_return-message.
ELSEIF ls_return-type EQ c_i. "IF ls_return-type EQ ...
SELECT SINGLE *
FROM icon
INTO lw_icon
WHERE name EQ c_icon_blue.
WRITE : lw_icon-internal,
ls_return-message.
ELSEIF ls_return-type EQ c_a. "IF ls_return-type EQ ...
SELECT SINGLE *
FROM icon
INTO lw_icon
WHERE name EQ c_icon_red1.
WRITE : lw_icon-internal,
ls_return-message.
ENDIF. "IF ls_return-type EQ ...
CLEAR :lw_icon,
ls_return.
CLEAR :lv_check,gv_group,
gv_groupcounter.
REFRESH :gt_return,gt_task,
gt_material,
gt_operation,
gt_suboperation.
ENDIF. "IF lv_check IS NOT IN...
ENDLOOP. "LOOP AT gt_record INTO..
ENDFORM. " SUB_BAPI_UPDATE
Regards,
Venkat.