‎2006 Mar 09 5:13 AM
HERE BELOW I HAVE CREATED ONE INTERNL TABLE HAVING THE DATA FROM TWO BAPISTRUCTURE
BAPI1012_TSK_C
BAPI1012_MTK_C
MY QUESTION IS DO I NEED TO DECLARE TWO INTERNAL TABLES AND POPULATE THEM AND PASS THEM IN BAPI OR I CAN PASS ONE AS I HAVE DONE.
*****************************************************************
*BAPI FOR CREATING ROUTING
*****************************************************************
REPORT zbapi_routing
NO STANDARD PAGE HEADING
LINE-SIZE 255
LINE-COUNT 62(4)
MESSAGE-ID zpp01.
************************************************************
*STRUCTURE DECLERATION
************************************************************
TABLES:
bapi1012_tsk_c , "Task list header data in CREATE-BAPI for routings
bapi1012_mtk_c , "Material task list assignment in CREATE-BAPI for
BAPIRET2 . "Return parameter
*BAPI1012_SEQ_C , "Task list sequences in CREATE-BAPI for routings
*
*BAPI1012_OPR_C , "Operations in CREATE-BAPI for routings
*
*BAPI1012_SUB_OPR_C , "Sub operations in CREATE-BAPI for routings
*
*BAPI1012_REF_OPR_C , "Reference to operation
*
*BAPI1012_WC_REF_OPR_C , "Standard tasks in CREATE-BAPI for routings
*
*BAPI1012_COM_C , "Component assignment in CREATE-BAPI for routing
*
*BAPI1012_PRT_C , "PRT assignments in CREATE-BAPI for routings
*
*BAPI1012_CHA_C , "Inspection Characteristics in CREATE-BAPI for
*
*BAPI1012_TXT_HDR_C , "Text assignment (int. format) for Direct
*Input in
*
*
*BAPI1012_TXT_C , "Long text lines in CREATE-BAPI for routings
*
*BAPIRET2 . "Return parameter
data:v_file type string .
DATA :BEGIN OF routing_create_master ,
MATNR TYPE MATNR , "Material number
WERKS_D TYPE WERKS_D , "Plant
*PLNNR TYPE PLNNR , " Key for task list group
PLNAL TYPE PLNAL , " Group counter
**TASK LIST
PLNNR TYPE PLNNR , " Key for task list group
*PLNAL TYPE PLNAL, " Group counter
DATUV(8) TYPE C , " Valid-from date
DATUB(8) TYPE C , " Valid-to date
PLN_VERWE TYPE PLN_VERWE , "task list usage
*WERKS_D TYPE WERKS_D , " Plant
PLNST TYPE PLNST , "Status
PLNME(3) TYPE C , "Task list unit of measure
ISOCD_UNIT TYPE ISOCD_UNIT , "ISO code for unit of measurement
LOSVN(13) TYPE C , "from lot size
LOSBS(13) TYPE C, "To lot size
PLANTEXT TYPE PLANTEXT , " Task list description
END OF routing_create_master .
**********************************************************************
INTERNAL TABLE DECLARATIONS *
**********************************************************************
DATA:BEGIN OF ROUTING_MASTER OCCURS 0.
INCLUDE STRUCTURE routing_create_master .
DATA :END OF ROUTING_MASTER .
DATA : BEGIN OF BAPI_TASK_LIST OCCURS 0.
INCLUDE STRUCTURE bapi1012_tsk_c .
DATA : END OF BAPI_TASK_LIST .
DATA :BEGIN OF BAPI_T_ASSGN OCCURS 0.
INCLUDE STRUCTURE bapi1012_mtk_c .
DATA :END OF BAPI_T_ASSGN.
DATA :BEGIN OF I_MESSAGE OCCURS 0.
INCLUDE STRUCTURE BAPIRET2 .
DATA :END OF I_MESSAGE.
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
PARAMETERS: P_FILE LIKE RLGRAP-FILENAME
DEFAULT '' OBLIGATORY. " File Name
SELECTION-SCREEN END OF BLOCK B1.
*******************************************************************
*rough
*******************************************************************
*******************************************************************
*FILE UPLOADING
*******************************************************************
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE.
CALL FUNCTION 'KD_GET_FILENAME_ON_F4'
EXPORTING
MASK = '*.xls'
STATIC = 'X'
CHANGING
FILE_NAME = P_FILE
EXCEPTIONS
MASK_TOO_LONG = 1
OTHERS = 2.
IF sy-subrc NE 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
Start of selection Event.............................
START-OF-SELECTION.
PERFORM UPLOAD_FILE TABLES ROUTING_MASTER
USING P_FILE.
**********************************************************************
DATA POPULATIONS *
**********************************************************************
LOOP AT ROUTING_MASTER .
*BAPI1012_TSK_C
*BAPI1012_MTK_C
BAPI1012_MTK_C = ROUTING_MASTER-MATNR .
BAPI1012_MTK_C = ROUTING_MASTER-WERKS_D .
BAPI1012_MTK_C = ROUTING_MASTER-PLNAL .
BAPI1012_MTK_C = ROUTING_MASTER-PLNNR .
BAPI1012_TSK_C = ROUTING_MASTER-PLNAL .
BAPI1012_TSK_C = ROUTING_MASTER-DATUV .
BAPI1012_TSK_C = ROUTING_MASTER-DATUB .
BAPI1012_TSK_C = ROUTING_MASTER-PLN_VERWE .
BAPI1012_TSK_C = ROUTING_MASTER-PLNST .
BAPI1012_TSK_C = ROUTING_MASTER-PLNME .
BAPI1012_TSK_C = ROUTING_MASTER-ISOCD_UNIT .
BAPI1012_TSK_C = ROUTING_MASTER-LOSVN .
BAPI1012_TSK_C = ROUTING_MASTER-LOSBS .
BAPI1012_TSK_C = ROUTING_MASTER-PLANTEXT .
*******************************************************
*CALL FUNCTION BAPI
*******************************************************
CALL FUNCTION 'BAPI_ROUTING_CREATE'
EXPORTING
TESTRUN = ' '
PROFILE =
BOMUSAGE =
APPLICATION =
IMPORTING
GROUP =
GROUPCOUNTER =
TABLES
task = BAPI1012_TSK_C
MATERIALTASKALLOCATION =
SEQUENCE =
OPERATION =
SUBOPERATION =
REFERENCEOPERATION =
WORKCENTERREFERENCE =
COMPONENTALLOCATION =
PRODUCTIONRESOURCE =
INSPCHARACTERISTIC =
TEXTALLOCATION =
TEXT =
RETURN =
.
ENDLOOP.
----
FORM UPLOAD_FILE *
----
........ *
----
--> P_TABLE *
--> P_FILE *
----
FORM UPLOAD_FILE TABLES P_TABLE
USING P_FILE.
Data Declarations.......................................
DATA : L_INTERN TYPE KCDE_CELLS OCCURS 0 WITH HEADER LINE.
DATA : L_INDEX TYPE I.
DATA : L_START_COL TYPE I VALUE '1',
L_START_ROW TYPE I VALUE '3',
L_END_COL TYPE I VALUE '256',
L_END_ROW TYPE I VALUE '65536'.
Field Symbols...........................................
FIELD-SYMBOLS : <FS>.
CALL FUNCTION 'KCD_EXCEL_OLE_TO_INT_CONVERT'
EXPORTING
FILENAME = P_FILE
I_BEGIN_COL = L_START_COL
I_BEGIN_ROW = L_START_ROW
I_END_COL = L_END_COL
I_END_ROW = L_END_ROW
TABLES
INTERN = L_INTERN
EXCEPTIONS
INCONSISTENT_PARAMETERS = 1
UPLOAD_OLE = 2
OTHERS = 3.
.
IF sy-subrc NE 0.
MESSAGE E002(ZA). " File Error
FORMAT COLOR COL_BACKGROUND INTENSIFIED.
WRITE : / 'File Error'.
EXIT.
ENDIF.
IF L_INTERN[] IS INITIAL.
MESSAGE E003(ZA). " No Data Uploaded
FORMAT COLOR COL_BACKGROUND INTENSIFIED.
WRITE : / 'No Data Uploaded'.
EXIT.
ELSE.
SORT L_INTERN BY ROW COL.
LOOP AT L_INTERN.
MOVE L_INTERN-COL TO L_INDEX.
ASSIGN COMPONENT L_INDEX OF STRUCTURE P_TABLE TO <FS>.
MOVE L_INTERN-VALUE TO <FS>.
AT END OF ROW.
APPEND P_TABLE.
CLEAR P_TABLE.
ENDAT.
ENDLOOP.
ENDIF.
ENDFORM.
‎2006 Mar 09 5:30 AM
Hi James,
You have created 2 internal tables respectively one for TASK (BAPI_TASK_LIST) and other for
MATERIALTASKALLOCATION (BAPI_T_ASSGN)
You need to populate both these tables and then use these tables respectively in the call to the BAPI.
***********************************
Data Declaration
**********************************
DATA : BEGIN OF BAPI_TASK_LIST OCCURS 0.
INCLUDE STRUCTURE bapi1012_tsk_c .
DATA : END OF BAPI_TASK_LIST .
DATA :BEGIN OF BAPI_T_ASSGN OCCURS 0.
INCLUDE STRUCTURE bapi1012_mtk_c .
DATA :END OF BAPI_T_ASSGN.
*********************************************************
* DATA POPULATIONS *
*********************************************************
LOOP AT ROUTING_MASTER .
*BAPI1012_TSK_C
*BAPI1012_MTK_C
BAPI1012_MTK_C = ROUTING_MASTER-MATNR .
BAPI1012_MTK_C = ROUTING_MASTER-WERKS_D .
BAPI1012_MTK_C = ROUTING_MASTER-PLNAL .
BAPI1012_MTK_C = ROUTING_MASTER-PLNNR .
BAPI1012_TSK_C = ROUTING_MASTER-PLNAL .
BAPI1012_TSK_C = ROUTING_MASTER-DATUV .
BAPI1012_TSK_C = ROUTING_MASTER-DATUB .
BAPI1012_TSK_C = ROUTING_MASTER-PLN_VERWE .
BAPI1012_TSK_C = ROUTING_MASTER-PLNST .
BAPI1012_TSK_C = ROUTING_MASTER-PLNME .
BAPI1012_TSK_C = ROUTING_MASTER-ISOCD_UNIT .
BAPI1012_TSK_C = ROUTING_MASTER-LOSVN .
BAPI1012_TSK_C = ROUTING_MASTER-LOSBS .
BAPI1012_TSK_C = ROUTING_MASTER-PLA
Append BAPI1012_TSK_C.
Append BAPI1012_TSK_C.
Endloop.
CALL FUNCTION 'BAPI_ROUTING_CREATE'
* EXPORTING
* TESTRUN = ' '
* PROFILE =
* BOMUSAGE =
* APPLICATION =
* IMPORTING
* GROUP =
* GROUPCOUNTER =
TABLES
task = BAPI1012_TSK_C
MATERIALTASKALLOCATION = BAPI_T_ASSGN
* SEQUENCE =
* OPERATION =
* SUBOPERATION =
* REFERENCEOPERATION =
* WORKCENTERREFERENCE =
* COMPONENTALLOCATION =
* PRODUCTIONRESOURCE =
* INSPCHARACTERISTIC =
* TEXTALLOCATION =
* TEXT =
* RETURN =
.
There is no need to call the BAPI in the loop. You can populate the internal tables in the loop and then pass them to the BAPI at one go.
Hope it helps..
Lokesh
pls. reward appropriate points
‎2006 Mar 09 5:33 AM
Hi,
Use two internal tables since values you are passing appears to be differnt.
CALL FUNCTION 'BAPI_ROUTING_CREATE'
EXPORTING
TESTRUN = ' '
PROFILE =
BOMUSAGE =
APPLICATION =
IMPORTING
GROUP =
GROUPCOUNTER =
TABLES
task = BAPI1012_TSK_C
MATERIALTASKALLOCATION = BAPI1012_MTK_C
SEQUENCE =
OPERATION =
SUBOPERATION =
REFERENCEOPERATION =
WORKCENTERREFERENCE =
COMPONENTALLOCATION =
PRODUCTIONRESOURCE =
INSPCHARACTERISTIC =
TEXTALLOCATION =
TEXT =
RETURN =
.