03-08-2010 6:48 AM
Hi,
I want to upload data into CA01 using 'BAPI_ROUTING_CREATE' , and passing the parameters :
task ,materialtaskallocation, operation , suboperation and after running BAPI I am getting success message 'S' and also I am getting Groupcounter in export parameter. but don't create routing.
CALL FUNCTION 'BAPI_ROUTING_CREATE'
EXPORTING
bomusage = p_stlan
IMPORTING
group = z_group
groupcounter = z_groupctn
TABLES
task = it_task
materialtaskallocation = it_mattasklocate
operation = it_operation
componentallocation = it_compalocate
return = it_return
.
bapi_return] = it_return[.
READ TABLE it_return WITH KEY type = 'S'.
IF sy-subrc EQ 0.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'
IMPORTING
return = commit_return.
WAIT UP TO 30 SECONDS.
03-08-2010 6:58 AM
03-08-2010 6:59 AM
Hi,
Did u check in table MAPL, PLKO and PLPO. Whether the group number is exists.
If you are checking through CA02 . make sure that Key date is between VALID_FROM and VALID_TO date.
Regards,
Shanmugavel Chandrasekaran
03-08-2010 7:01 AM
Hi Pornchai,
Debug your code and check weather your code
READ TABLE it_return WITH KEY type = 'S'.
IF sy-subrc EQ 0.
This condition get true or not ..
03-08-2010 7:31 AM
Result is true it_return contain message type S and ID 000 Message N/50001479/1.
N = Task list type
50001479 = Group
1 = Group Counter
03-08-2010 7:02 AM
Hi,
Even though Group Counter Created,
Try to Check the Internal Table IT_RETURN.
It should be Free From Errors,if error is there try to correct all the errors, then only active Routing will be Created.
Thanks and Regards,
Sathish
03-08-2010 7:27 AM
I'm do Debug already but it_return result message type S .
I try check CA03 data dose not exits and check in table PLKO have not data in this table. Please help me.
Edited by: Pornchai on Mar 8, 2010 8:27 AM
03-08-2010 7:40 AM
hi,
try like below mentioned.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = space " dont pass X
IMPORTING
return = commit_return.
dont use WAIT UP TO 30 SECONDS.
03-08-2010 7:44 AM
Hi ,
First test the BAPI in SE37 with the Same Parameteres, in the test sequence along with the BAPI Commit.
If it is working Fine then the Program also should work fine, as per the advise of the previous reply, try to remove the wait statement also.
Thanks and Regards,
Sathish
03-08-2010 8:14 AM
Hi,
*--
DATA: BEGIN OF T_TASK1 OCCURS 0,
MATERIAL LIKE T_MATERIAL-MATERIAL,
PLANT LIKE T_TASK-PLANT,
VALID_FROM(10) TYPE C,
GROUP_COUNTER LIKE T_TASK-GROUP_COUNTER,
GROUP LIKE T_TASK-TASK_LIST_GROUP,
DESCRIPTION_T LIKE T_TASK-DESCRIPTION,
TASK_LIST_USAGE LIKE T_TASK-TASK_LIST_USAGE,
TASK_LIST_STATUS LIKE T_TASK-TASK_LIST_STATUS,
LOT_SIZE_FROM LIKE T_TASK-LOT_SIZE_FROM,
LOT_SIZE_TO LIKE T_TASK-LOT_SIZE_TO,
TASK_MEASURE_UNIT LIKE T_TASK-TASK_MEASURE_UNIT,
ACTIVITY LIKE T_OPERATION-ACTIVITY,
WORK_CNTR LIKE T_OPERATION-WORK_CNTR,
CONTROL_KEY LIKE T_OPERATION-CONTROL_KEY,
DESCRIPTION LIKE T_OPERATION-DESCRIPTION,
BASE_QUANTITY LIKE T_OPERATION-BASE_QUANTITY,
OPERATION_MEASURE_UNIT LIKE T_OPERATION-OPERATION_MEASURE_UNIT,
PURCH_ORG LIKE T_OPERATION-PURCH_ORG,
MATL_GROUP LIKE T_OPERATION-MATL_GROUP,
PRICE_UNIT LIKE T_OPERATION-PRICE_UNIT,
INFO_REC_NET_PRICE LIKE T_OPERATION-INFO_REC_NET_PRICE,
COST_ELEM LIKE T_OPERATION-COST_ELEM,
CURRENCY LIKE T_OPERATION-CURRENCY,
NOMINATOR LIKE T_OPERATION-NOMINATOR,
STD_VALUE_01 LIKE T_OPERATION-STD_VALUE_01,
STD_UNIT_01 LIKE T_OPERATION-STD_UNIT_01,
FREE_GRID LIKE T_OPERATION-FREE_GRID,
INSP_POINT_COMPLT_FLOW_VARIANT LIKE T_OPERATION-INSP_POINT_COMPLT_FLOW_VARIANT,
END OF T_TASK1.
*--
DATA: BEGIN OF T_HEADER OCCURS 0,
MATERIAL LIKE T_MATERIAL-MATERIAL,
PLANT LIKE T_TASK-PLANT,
VALID_FROM(10) TYPE C,
GROUP_COUNTER LIKE T_TASK-GROUP_COUNTER,
GROUP LIKE T_TASK-TASK_LIST_GROUP,
DESCRIPTION_T LIKE T_TASK-DESCRIPTION,
TASK_LIST_USAGE LIKE T_TASK-TASK_LIST_USAGE,
TASK_LIST_STATUS LIKE T_TASK-TASK_LIST_STATUS,
LOT_SIZE_FROM LIKE T_TASK-LOT_SIZE_FROM,
LOT_SIZE_TO LIKE T_TASK-LOT_SIZE_TO,
IDENT_KEY LIKE T_TASK-IDENT_KEY,
END OF T_HEADER.
*----
internal table for item -
DATA: BEGIN OF T_ITEM OCCURS 0,
MATERIAL LIKE T_MATERIAL-MATERIAL,
PLANT LIKE T_TASK-PLANT,
GROUP_COUNTER LIKE T_TASK-GROUP_COUNTER,
GROUP LIKE T_TASK-TASK_LIST_GROUP,
VALID_FROM(10) TYPE C,
WORK_CNTR LIKE T_OPERATION-WORK_CNTR,
CONTROL_KEY LIKE T_OPERATION-CONTROL_KEY,
DESCRIPTION LIKE T_OPERATION-DESCRIPTION,
OPERATION_MEASURE_UNIT LIKE T_OPERATION-OPERATION_MEASURE_UNIT,
NOMINATOR LIKE T_OPERATION-NOMINATOR,
BASE_QUANTITY LIKE T_OPERATION-BASE_QUANTITY,
INFO_REC_NET_PRICE LIKE T_OPERATION-INFO_REC_NET_PRICE,
PRICE_UNIT LIKE T_OPERATION-PRICE_UNIT,
COST_ELEM LIKE T_OPERATION-COST_ELEM,
CURRENCY LIKE T_OPERATION-CURRENCY,
PURCH_ORG LIKE T_OPERATION-PURCH_ORG,
MATL_GROUP LIKE T_OPERATION-MATL_GROUP,
ACTIVITY LIKE T_OPERATION-ACTIVITY,
STD_VALUE_01 LIKE T_OPERATION-STD_VALUE_01,
STD_UNIT_01 LIKE T_OPERATION-STD_UNIT_01,
FREE_GRID LIKE T_OPERATION-FREE_GRID,
INSP_POINT_COMPLT_FLOW_VARIANT LIKE T_OPERATION-INSP_POINT_COMPLT_FLOW_VARIANT,
END OF T_ITEM.
----
WORK AREA DECLARATION
----
DATA : GROUPCOUNTER LIKE BAPI1012_TSK_C-GROUP_COUNTER,
GROUP LIKE BAPI1012_TSK_C-TASK_LIST_GROUP.
----
VARIABLE DECLARATION
----
DATA : WA_TASK1 LIKE T_TASK1,
WA_HEADER LIKE T_HEADER,
WA_ITEM LIKE T_ITEM,
V_DATE(10) TYPE C,
V_FNAME TYPE STRING.
----
Selection-screen
----
SELECTION-SCREEN :BEGIN OF BLOCK BL1 WITH FRAME TITLE TEXT-001.
PARAMETERS : P_FNAME TYPE RLGRAP-FILENAME.
SELECTION-SCREEN END OF BLOCK BL1.
----
At selection screen
----
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FNAME.
CALL FUNCTION 'KD_GET_FILENAME_ON_F4'
EXPORTING
PROGRAM_NAME = 'ZDEMOBAPI_ROUTING'
DYNPRO_NUMBER = '1000'
FIELD_NAME = 'P_FNAME'
CHANGING
FILE_NAME = P_FNAME.
----
start of selection
----
START-OF-SELECTION.
PERFORM CHECK_FILE.
PERFORM READ_FILE.
PERFORM UPLOAD.
&----
*& Form CHECK_FILE
&----
FORM CHECK_FILE .
IF P_FNAME IS INITIAL.
MESSAGE I016(RP) WITH 'Please enter a file name'.
LEAVE LIST-PROCESSING.
ELSE.
MOVE P_FNAME TO V_FNAME.
ENDIF.
ENDFORM. "CHECK_FILE
&----
*& Form READ_FILE
&----
FORM READ_FILE.
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
FILETYPE = 'ASC'
FILENAME = V_FNAME
HAS_FIELD_SEPARATOR = 'X'
TABLES
DATA_TAB = T_TASK1.
ENDFORM. " READ_FILE
&----
*& Form UPLOAD
&----
FORM UPLOAD .
LOOP AT T_TASK1 INTO WA_TASK1.
CALL FUNCTION 'CONVERSION_EXIT_CUNIT_INPUT'
EXPORTING
INPUT = WA_TASK1-STD_UNIT_01
LANGUAGE = SY-LANGU
IMPORTING
OUTPUT = WA_TASK1-STD_UNIT_01
EXCEPTIONS
UNIT_NOT_FOUND = 1
OTHERS = 2.
BREAK SHAILAJAA.
V_DATE = WA_TASK1-VALID_FROM.
IF NOT V_DATE IS INITIAL.
CALL FUNCTION 'CONVERT_DATE_TO_INTERNAL'
EXPORTING
DATE_EXTERNAL = V_DATE
IMPORTING
DATE_INTERNAL = V_DATE.
ENDIF.
IF WA_TASK1-DESCRIPTION_T NE ' ' .
WA_HEADER-VALID_FROM = V_DATE.
WA_HEADER-PLANT = WA_TASK1-PLANT.
WA_HEADER-GROUP_COUNTER = WA_TASK1-GROUP_COUNTER.
WA_HEADER-GROUP = WA_TASK1-GROUP.
WA_HEADER-IDENT_KEY = 'A03'.
CALL FUNCTION 'CONVERSION_EXIT_CCMAT_INPUT'
EXPORTING
INPUT = WA_TASK1-MATERIAL
IMPORTING
OUTPUT = WA_TASK1-MATERIAL.
WA_HEADER-MATERIAL = WA_TASK1-MATERIAL.
WA_HEADER-DESCRIPTION_T = WA_TASK1-DESCRIPTION_T.
WA_HEADER-TASK_LIST_USAGE = WA_TASK1-TASK_LIST_USAGE.
WA_HEADER-TASK_LIST_STATUS = WA_TASK1-TASK_LIST_STATUS.
WA_HEADER-LOT_SIZE_FROM = WA_TASK1-LOT_SIZE_FROM.
WA_HEADER-LOT_SIZE_TO = WA_TASK1-LOT_SIZE_TO.
APPEND WA_HEADER TO T_HEADER.
ENDIF.
WA_ITEM-PLANT = WA_TASK1-PLANT.
WA_ITEM-VALID_FROM = V_DATE.
WA_ITEM-GROUP = WA_TASK1-GROUP.
WA_ITEM-GROUP_COUNTER = WA_TASK1-GROUP_COUNTER.
CALL FUNCTION 'CONVERSION_EXIT_CCMAT_INPUT'
EXPORTING
INPUT = WA_TASK1-MATERIAL
IMPORTING
OUTPUT = WA_TASK1-MATERIAL.
WA_ITEM-MATERIAL = WA_TASK1-MATERIAL.
WA_ITEM-WORK_CNTR = WA_TASK1-WORK_CNTR.
WA_ITEM-CONTROL_KEY = WA_TASK1-CONTROL_KEY.
WA_ITEM-DESCRIPTION = WA_TASK1-DESCRIPTION.
WA_ITEM-BASE_QUANTITY = WA_TASK1-BASE_QUANTITY.
WA_ITEM-OPERATION_MEASURE_UNIT = WA_TASK1-OPERATION_MEASURE_UNIT.
WA_ITEM-STD_VALUE_01 = WA_TASK1-STD_VALUE_01.
WA_ITEM-NOMINATOR = WA_TASK1-NOMINATOR.
WA_ITEM-INFO_REC_NET_PRICE = WA_TASK1-INFO_REC_NET_PRICE.
WA_ITEM-PRICE_UNIT = WA_TASK1-PRICE_UNIT.
WA_ITEM-COST_ELEM = WA_TASK1-COST_ELEM.
WA_ITEM-CURRENCY = WA_TASK1-CURRENCY.
WA_ITEM-PURCH_ORG = WA_TASK1-PURCH_ORG.
WA_ITEM-MATL_GROUP = WA_TASK1-MATL_GROUP.
WA_ITEM-ACTIVITY = WA_TASK1-ACTIVITY.
WA_ITEM-STD_VALUE_01 = WA_TASK1-STD_VALUE_01.
WA_ITEM-STD_UNIT_01 = WA_TASK1-STD_UNIT_01.
WA_ITEM-FREE_GRID = WA_TASK1-FREE_GRID.
WA_ITEM-INSP_POINT_COMPLT_FLOW_VARIANT = WA_TASK1-INSP_POINT_COMPLT_FLOW_VARIANT.
APPEND WA_ITEM TO T_ITEM.
ENDLOOP.
PUTTING DATA INTO TASK, MATERIAL AND OPERATIONS AND APPENDING IT INTO BAPI_ROUTING_CREATE AND COMMITING USING BAPI_TRANSACTION_COMMIT.
IF THERE IS ANY ERROR WE ARE DISPLAYING.
LOOP AT T_HEADER INTO WA_HEADER.
T_TASK-PLANT = WA_HEADER-PLANT.
T_TASK-VALID_FROM = WA_HEADER-VALID_FROM.
T_TASK-GROUP_COUNTER = WA_HEADER-GROUP_COUNTER.
T_TASK-TASK_LIST_GROUP = WA_HEADER-GROUP.
T_TASK-DESCRIPTION = WA_HEADER-DESCRIPTION_T.
T_TASK-TASK_LIST_USAGE = WA_HEADER-TASK_LIST_USAGE.
T_TASK-TASK_LIST_STATUS = WA_HEADER-TASK_LIST_STATUS.
T_TASK-LOT_SIZE_FROM = WA_HEADER-LOT_SIZE_FROM.
T_TASK-LOT_SIZE_TO = WA_HEADER-LOT_SIZE_TO.
T_TASK-TASK_MEASURE_UNIT = 'KG'.
T_TASK-IDENT_KEY = 'A03'.
T_MATERIAL-MATERIAL = WA_HEADER-MATERIAL.
T_MATERIAL-PLANT = WA_HEADER-PLANT.
T_MATERIAL-GROUP_COUNTER = WA_HEADER-GROUP_COUNTER.
T_MATERIAL-TASK_LIST_GROUP = WA_HEADER-GROUP.
T_MATERIAL-VALID_FROM = WA_HEADER-VALID_FROM.
APPEND T_TASK.
APPEND T_MATERIAL.
LOOP AT T_ITEM INTO WA_ITEM WHERE MATERIAL = WA_HEADER-MATERIAL
AND VALID_FROM = WA_HEADER-VALID_FROM
AND GROUP = WA_HEADER-GROUP
AND GROUP_COUNTER = WA_HEADER-GROUP_COUNTER
AND PLANT = WA_HEADER-PLANT.
T_OPERATION-PLANT = WA_ITEM-PLANT.
T_OPERATION-WORK_CNTR = WA_ITEM-WORK_CNTR.
T_OPERATION-CONTROL_KEY = WA_ITEM-CONTROL_KEY.
T_OPERATION-DESCRIPTION = WA_ITEM-DESCRIPTION.
T_OPERATION-OPERATION_MEASURE_UNIT = WA_ITEM-OPERATION_MEASURE_UNIT.
T_OPERATION-BASE_QUANTITY = WA_ITEM-BASE_QUANTITY.
T_OPERATION-GROUP_COUNTER = WA_ITEM-GROUP_COUNTER.
T_OPERATION-TASK_LIST_GROUP = WA_ITEM-GROUP.
T_OPERATION-VALID_FROM = WA_ITEM-VALID_FROM.
T_OPERATION-STD_VALUE_01 = WA_ITEM-STD_VALUE_01.
T_OPERATION-STD_UNIT_01 = WA_ITEM-STD_UNIT_01.
T_OPERATION-DENOMINATOR = '1'.
T_OPERATION-NOMINATOR = WA_ITEM-NOMINATOR.
T_OPERATION-INFO_REC_NET_PRICE = WA_ITEM-INFO_REC_NET_PRICE.
T_OPERATION-PRICE_UNIT = WA_ITEM-PRICE_UNIT.
T_OPERATION-COST_ELEM = WA_ITEM-COST_ELEM.
T_OPERATION-CURRENCY = WA_ITEM-CURRENCY.
T_OPERATION-PURCH_ORG = WA_ITEM-PURCH_ORG.
T_OPERATION-MATL_GROUP = WA_ITEM-MATL_GROUP.
T_OPERATION-ACTIVITY = WA_ITEM-ACTIVITY.
T_OPERATION-FREE_GRID = WA_ITEM-FREE_GRID.
T_OPERATION-INSP_POINT_COMPLT_FLOW_VARIANT = WA_ITEM-INSP_POINT_COMPLT_FLOW_VARIANT.
APPEND T_OPERATION.
ENDLOOP.
CALL FUNCTION 'BAPI_ROUTING_CREATE'
IMPORTING
GROUP = GROUP
GROUPCOUNTER = GROUPCOUNTER
TABLES
TASK = T_TASK
MATERIALTASKALLOCATION = T_MATERIAL
OPERATION = T_OPERATION
RETURN = T_RETURN.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.
LOOP AT T_RETURN .
IF T_RETURN-TYPE = 'S'.
WRITE 😕 T_RETURN-MESSAGE_V2 ,'Has been created'.
ELSEIF T_RETURN-TYPE = 'A' OR T_RETURN-TYPE = 'E'.
WRITE 😕 T_RETURN-MESSAGE.
ENDIF.
ENDLOOP.
CLEAR: WA_HEADER,WA_ITEM.
REFRESH: T_TASK, T_MATERIAL, T_OPERATION.
ENDLOOP.
ENDFORM. " UPLOAD
03-09-2010 5:07 AM
I meet problem for BAPI_ROUTING_CREATE because i do debug be deep Function BAPI_ROUTING_CREATE I meet that Line 219 and debug deep to CALL FUNCTION 'CP_CC_S_SAVE'. meet PERFORM cp_check_tsk_at_save for check error before to save but perform this have function
CALL FUNCTION 'CP_CC_P_PROVIDE_REF_TO_BADI'
EXPORTING
i_name = ewb_badi-cewb_tsk_update
CHANGING
c_instance = exit_cewb_tsk_update <<<<< result this equal initial
EXCEPTIONS
name_required = 1
OTHERS = 2.
IF exit_cewb_tsk_update IS NOT INITIAL. <<<<<<< " exit_cewb_tsk_update is initial do have to exit don't save and create routing.
03-09-2010 5:07 AM
I meet problem for BAPI_ROUTING_CREATE because i do debug be deep Function BAPI_ROUTING_CREATE I meet that Line 219 and debug deep to CALL FUNCTION 'CP_CC_S_SAVE'. meet PERFORM cp_check_tsk_at_save for check error before to save but perform this have function
CALL FUNCTION 'CP_CC_P_PROVIDE_REF_TO_BADI'
EXPORTING
i_name = ewb_badi-cewb_tsk_update
CHANGING
c_instance = exit_cewb_tsk_update <<<<< result this equal initial
EXCEPTIONS
name_required = 1
OTHERS = 2.
IF exit_cewb_tsk_update IS NOT INITIAL. <<<<<<< " exit_cewb_tsk_update is initial do have to exit don't save and create routing.
11-03-2011 5:16 PM