08-05-2005 9:47 PM
Hi,
Below is my code to upload Project Systems data from an EXCEL spreadsheet using the BAPI_PROJECT_MAINTAIN. All is going well except when I try & include the i_wbs_hierarchie_table data I get the error message 'A reference object cannot be entered for the method 'Update''. However, I am specifying 'CREATE' in the METHOD parameter of the i_method_project table. The data seems fine (although the problem may lie here), but can anyone see where I'm going wrong?
All help will be appreciated.
Thanks,
Richard
&----
*& Report ZPS_PROJECT_UPLD *
*& *
&----
*& *
*& *
&----
REPORT zps_project_upld.
TYPE-POOLS: truxs, vrm.
FIELD-SYMBOLS : <itab_fs> TYPE STANDARD TABLE.
*-- Tables
DATA: gt_dir_tab TYPE STANDARD TABLE OF file_info.
*-- For EXCEL files upload
DATA: g_text_data TYPE truxs_t_text_data,
g_folder TYPE string,
g_count TYPE i.
*-- BAPI Data
*-- 1. Structures
DATA: gs_project TYPE bapi_project_definition,
gs_project_update TYPE bapi_project_definition_up,
gs_method_project TYPE bapi_method_project,
gs_return TYPE bapireturn1,
gs_message_table TYPE bapi_meth_message.
*-- 2. Tables
DATA: gt_project TYPE bapi_project_definition OCCURS 0,
gt_project_update TYPE bapi_project_definition_up OCCURS 1,
gt_method_project TYPE TABLE OF bapi_method_project,
gt_wbs_element_table_update TYPE TABLE OF bapi_wbs_element_update,
gt_wbs_element_table TYPE TABLE OF bapi_wbs_element,
gt_wbs_milestone_table TYPE TABLE OF bapi_wbs_milestone,
gt_wbs_milestone_table_update TYPE TABLE OF bapi_wbs_milestone_upd,
gt_wbs_hierarchie_table TYPE TABLE OF bapi_wbs_hierarchie,
gt_network TYPE TABLE OF bapi_network,
gt_network_update TYPE TABLE OF bapi_network_update,
gt_activity TYPE TABLE OF bapi_network_activity,
gt_activity_update TYPE TABLE OF bapi_network_activity_up,
gt_relation TYPE TABLE OF bapi_network_relation,
gt_relation_update TYPE TABLE OF bapi_network_relation_up,
gt_message_table TYPE TABLE OF bapi_meth_message,
gt_activity_element TYPE TABLE OF bapi_act_element,
gt_activity_element_update TYPE TABLE OF bapi_act_element_upd,
gt_activity_milestone TYPE TABLE OF bapi_act_milestone,
gt_activity_milestone_update TYPE TABLE OF bapi_act_milestone_upd.
*-- 3. Temp tables for the BAPI parameters
DATA: gt_method_project_temp TYPE TABLE OF bapi_method_project,
gt_wbs_element_table_temp TYPE TABLE OF bapi_wbs_element,
gt_wbs_milestone_table_temp TYPE TABLE OF bapi_wbs_milestone,
gt_wbs_hierarchie_table_temp TYPE TABLE OF bapi_wbs_hierarchie,
gt_network_temp TYPE TABLE OF bapi_network,
gt_activity_temp TYPE TABLE OF bapi_network_activity,
gt_relation_temp TYPE TABLE OF bapi_network_relation,
gt_message_table_temp TYPE TABLE OF bapi_meth_message,
gt_activity_element_temp TYPE TABLE OF bapi_act_element,
gt_activity_milestone_temp TYPE TABLE OF bapi_act_milestone.
*-- For dropdown listbox
DATA: gv_name TYPE vrm_id,
gt_list TYPE vrm_values,
gv_value LIKE LINE OF gt_list,
gv_command1(6),
gv_command2(6),
gv_command3(6),
gv_command4(6).
----
INITIALIZATION
----
INITIALIZATION.
----
SELECTION SCREEN
----
SELECTION-SCREEN BEGIN OF BLOCK path WITH FRAME TITLE text-002.
PARAMETER p_path(40) OBLIGATORY DEFAULT 'C:\PS Upload Testing'.
SELECTION-SCREEN END OF BLOCK path .
SELECTION-SCREEN SKIP.
SELECTION-SCREEN BEGIN OF BLOCK parm WITH FRAME TITLE text-001.
PARAMETER p_parm1(6) AS LISTBOX VISIBLE LENGTH 8 OBLIGATORY MEMORY ID pp1.
PARAMETER p_parm2(6) AS LISTBOX VISIBLE LENGTH 8 OBLIGATORY MEMORY ID pp2.
PARAMETER p_parm3(6) AS LISTBOX VISIBLE LENGTH 8 OBLIGATORY MEMORY ID pp3.
PARAMETER p_parm4(6) AS LISTBOX VISIBLE LENGTH 8 OBLIGATORY MEMORY ID pp4.
SELECTION-SCREEN END OF BLOCK parm .
----
AT SELECTION-SCREEN OUTPUT
----
AT SELECTION-SCREEN OUTPUT.
*-- Set our values
gv_name = 'P_PARM1'.
PERFORM dropdown.
gv_name = 'P_PARM2'.
PERFORM dropdown.
gv_name = 'P_PARM3'.
PERFORM dropdown.
gv_name = 'P_PARM4'.
PERFORM dropdown.
----
AT SELECTION-SCREEN ON VALUE-REQUEST
----
Display file selection dialog
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_path.
PERFORM locate_folder.
----
START-OF-SELECTION
----
START-OF-SELECTION.
PERFORM command_text.
PERFORM list_files.
PERFORM upld_files.
----
END-OF-SELECTION
----
END-OF-SELECTION.
PERFORM bapi.
&----
*& Form locate_folder
&----
text
----
--> p1 text
<-- p2 text
----
FORM locate_folder .
CALL METHOD
cl_gui_frontend_services=>directory_browse
EXPORTING
WINDOW_TITLE =
initial_folder = 'C:\PS Project Upload'
CHANGING
selected_folder = g_folder
EXCEPTIONS
cntl_error = 1
error_no_gui = 2
not_supported_by_gui = 3
OTHERS = 4.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
*-- Assign the selected value
p_path = g_folder.
ENDFORM. " locate_folder
&----
*& Form list_files
&----
text
----
--> p1 text
<-- p2 text
----
FORM list_files .
IF g_folder IS INITIAL.
g_folder = p_path.
ENDIF.
*-- Fetch all files from directory, use *.xls as mask
CALL METHOD
cl_gui_frontend_services=>directory_list_files
EXPORTING
directory = g_folder
filter = '*.xls'
files_only = 'X'
*-- DIRECTORIES_ONLY =
CHANGING
file_table = gt_dir_tab
count = g_count
EXCEPTIONS
cntl_error = 1
directory_list_files_failed = 2
wrong_parameter = 3
error_no_gui = 4
not_supported_by_gui = 5
OTHERS = 6.
ENDFORM. " list_files
&----
*& Form upld_files
&----
text
----
--> p1 text
<-- p2 text
----
FORM upld_files .
*-- File upload
DATA: l_dir_entry(100),
l_filename TYPE string.
LOOP AT gt_dir_tab INTO l_dir_entry.
*-- Build filename
TRANSLATE l_dir_entry TO UPPER CASE.
CONCATENATE p_path '\' l_dir_entry INTO l_filename.
g_filename_string = p_file.
CALL METHOD cl_gui_frontend_services=>gui_upload
EXPORTING
filename = l_filename
filetype = 'ASC'
has_field_separator = 'X'
HEADER_LENGTH = 0
READ_BY_LINE = 'X'
dat_mode = ''
CODEPAGE = SPACE
IGNORE_CERR = ABAP_TRUE
REPLACEMENT = '#'
IMPORTING
FILELENGTH =
HEADER =
CHANGING
data_tab = g_text_data
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
not_supported_by_gui = 17
error_no_gui = 18
OTHERS = 19
.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ELSE.
*-- Assign the internal table to be uploaded into
PERFORM assign_file USING l_dir_entry
l_filename.
ENDIF.
ENDLOOP.
ENDFORM. " upld_files
&----
*& Form conv_files
&----
text
----
--> p1 text
<-- p2 text
----
FORM conv_files USING p_l_filename.
DATA: l_file LIKE rlgrap-filename.
*-- For parameter compatibility purposes
l_file = p_l_filename.
CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP'
EXPORTING
i_field_seperator = 'X'
I_LINE_HEADER =
i_tab_raw_data = g_text_data
i_filename = l_file
TABLES
i_tab_converted_data = <itab_fs>
EXCEPTIONS
conversion_failed = 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. " conv_files
&----
*& Form assign_file
&----
text
----
-->P_P_L_FILENAME text
----
FORM assign_file USING p_l_dir_entry
p_l_filename.
*-- Dynamically assign our upload table
CASE p_l_dir_entry.
*-- Alphabetical order
WHEN 'ACTIVITY.XLS'.
ASSIGN gt_activity[] TO <itab_fs>.
-- Dynamically convert from raw text to internal table format
PERFORM conv_files USING p_l_filename.
gt_activity[] = <itab_fs>[].
WHEN 'ACTIVITY_ELEMENT.XLS'.
ASSIGN gt_activity_element[] TO <itab_fs>.
PERFORM conv_files USING p_l_filename.
gt_activity_element[] = <itab_fs>[].
WHEN 'ACTIVITY_ELEMENT_UPDATE.XLS'.
ASSIGN gt_activity_element_update[] TO <itab_fs>.
PERFORM conv_files USING p_l_filename.
gt_activity_element_update[] = <itab_fs>[].
Convert any small 'x' to 'X'
PERFORM upper_case CHANGING gt_activity_element_update[].
WHEN 'ACTIVITY_MILESTONE.XLS'.
ASSIGN gt_activity_milestone[] TO <itab_fs>.
PERFORM conv_files USING p_l_filename.
gt_activity_milestone[] = <itab_fs>[].
WHEN 'ACTIVITY_MILESTONE_UPDATE.XLS'.
ASSIGN gt_activity_milestone_update[] TO <itab_fs>.
PERFORM conv_files USING p_l_filename.
gt_activity_milestone_update[] = <itab_fs>[].
PERFORM upper_case CHANGING gt_activity_milestone_update[].
WHEN 'ACTIVITY_UPDATE.XLS'.
ASSIGN gt_activity_update[] TO <itab_fs>.
PERFORM conv_files USING p_l_filename.
gt_activity_update[] = <itab_fs>[].
PERFORM upper_case CHANGING gt_activity_update[].
WHEN 'MESSAGE.XLS'.
ASSIGN gt_message_table[] TO <itab_fs>.
PERFORM conv_files USING p_l_filename.
gt_message_table[] = <itab_fs>[].
WHEN 'METHOD.XLS'.
ASSIGN gt_method_project[] TO <itab_fs>.
PERFORM conv_files USING p_l_filename.
gt_method_project[] = <itab_fs>[].
WHEN 'NETWORK.XLS'.
ASSIGN gt_network[] TO <itab_fs>.
PERFORM conv_files USING p_l_filename.
gt_network[] = <itab_fs>[].
WHEN 'NETWORK_UPDATE.XLS'.
ASSIGN gt_network_update[] TO <itab_fs>.
PERFORM conv_files USING p_l_filename.
gt_network_update[] = <itab_fs>[].
PERFORM upper_case CHANGING gt_network_update[].
WHEN 'PROJECT.XLS'.
ASSIGN gt_project[] TO <itab_fs>.
PERFORM conv_files USING p_l_filename.
gt_project[] = <itab_fs>[].
WHEN 'PROJECT_UPDATE.XLS'.
ASSIGN gt_project_update[] TO <itab_fs>.
PERFORM conv_files USING p_l_filename.
gt_project_update[] = <itab_fs>[].
PERFORM upper_case CHANGING gt_project_update[].
Change to TYPE Structure for BAPI parameter compatibility
LOOP AT gt_project_update INTO gs_project_update.
ENDLOOP.
WHEN 'RELATION.XLS'.
ASSIGN gt_relation[] TO <itab_fs>.
PERFORM conv_files USING p_l_filename.
gt_relation[] = <itab_fs>[].
WHEN 'RELATION_UPDATE.XLS'.
ASSIGN gt_relation_update[] TO <itab_fs>.
PERFORM conv_files USING p_l_filename.
gt_relation_update[] = <itab_fs>[].
PERFORM upper_case CHANGING gt_relation_update[].
WHEN 'WBS_ELEMENT.XLS'.
ASSIGN gt_wbs_element_table[] TO <itab_fs>.
PERFORM conv_files USING p_l_filename.
gt_wbs_element_table[] = <itab_fs>[].
WHEN 'WBS_ELEMENT_UPDATE.XLS'.
ASSIGN gt_wbs_element_table_update[] TO <itab_fs>.
PERFORM conv_files USING p_l_filename.
gt_wbs_element_table_update[] = <itab_fs>[].
PERFORM upper_case CHANGING gt_wbs_element_table_update[].
WHEN 'WBS_HIERARCHIE.XLS'.
ASSIGN gt_wbs_hierarchie_table[] TO <itab_fs>.
PERFORM conv_files USING p_l_filename.
gt_wbs_hierarchie_table[] = <itab_fs>[].
WHEN 'WBS_MILESTONE.XLS'.
ASSIGN gt_wbs_milestone_table[] TO <itab_fs>.
PERFORM conv_files USING p_l_filename.
gt_wbs_milestone_table[] = <itab_fs>[].
WHEN 'WBS_MILESTONE_UPDATE.XLS'.
ASSIGN gt_wbs_milestone_table_update[] TO <itab_fs>.
PERFORM conv_files USING p_l_filename.
gt_wbs_milestone_table_update[] = <itab_fs>[].
PERFORM upper_case CHANGING gt_wbs_milestone_table_update[].
WHEN OTHERS.
CLEAR p_l_filename.
ENDCASE.
ENDFORM. " assign_file
&----
*& Form bapi
&----
text
----
--> p1 text
<-- p2 text
----
FORM bapi.
*-- Change to type Structure for BAPI parameter compatibility
LOOP AT gt_project INTO gs_project.
*-- Get the associated data per Project Definition
PERFORM extract_project_data.
*-- Call the BAPI
CALL FUNCTION 'BAPI_PROJECT_MAINTAIN'
EXPORTING
i_project_definition = gs_project
i_project_definition_upd = gs_project_update
IMPORTING
return = gs_return
TABLES
i_method_project = gt_method_project
i_wbs_element_table_update = gt_wbs_element_table_update
i_wbs_element_table = gt_wbs_element_table_temp
i_wbs_milestone_table = gt_wbs_milestone_table_temp
i_wbs_milestone_table_update = gt_wbs_milestone_table_update
i_wbs_hierarchie_table = gt_wbs_hierarchie_table_temp
i_network = gt_network_temp
i_network_update = gt_network_update
i_activity = gt_activity_temp
i_activity_update = gt_activity_update
i_relation = gt_relation_temp
i_relation_update = gt_relation_update
e_message_table = gt_message_table
i_activity_element = gt_activity_element_temp
i_activity_element_update = gt_activity_element_update
i_activity_milestone = gt_activity_milestone_temp
i_activity_milestone_update = gt_activity_milestone_update.
*-- Output a report of the return code
PERFORM bapi_report.
ENDLOOP.
ENDFORM. " bapi
&----
*& Form bapi_report
&----
text
----
--> p1 text
<-- p2 text
----
FORM bapi_report .
WRITE AT: /1 'Project Definition:',
21 gs_project-project_definition.
LOOP AT gt_message_table INTO gs_message_table.
CASE gs_message_table-message_type.
WHEN 'E'.
WRITE AT: /1 gs_message_table-message_type COLOR COL_NEGATIVE,
5 gs_message_table-message_text COLOR COL_NEGATIVE.
WHEN OTHERS.
WRITE AT: /1 gs_message_table-message_type COLOR OFF,
5 gs_message_table-message_text.
ENDCASE.
ENDLOOP.
SKIP.
ENDFORM. " bapi_report
&----
*& Form upper_case
&----
text
----
<--P_GT_ACTIVITY_ELEMENT_UPDATE[] text
----
FORM upper_case CHANGING p_table TYPE STANDARD TABLE.
*-- Local data
FIELD-SYMBOLS: <lfs_line> TYPE ANY,
<lfs_field> TYPE ANY.
*-- Loop and translate to upper case
LOOP AT p_table ASSIGNING <lfs_line>.
DO.
ASSIGN COMPONENT sy-index OF STRUCTURE <lfs_line> TO <lfs_field>.
IF sy-subrc EQ 0 AND NOT <lfs_field> IS INITIAL.
*-- Convert to upper case
TRANSLATE <lfs_line> TO UPPER CASE.
*-- Modify the table
MODIFY p_table FROM <lfs_line>.
*-- Exit the routine - only 1 entry per table
EXIT.
ENDIF.
ENDDO.
ENDLOOP.
ENDFORM. " upper_case
&----
*& Form extract_project_data
&----
text
----
--> p1 text
<-- p2 text
----
FORM extract_project_data.
*-- Local data structures
DATA: ls_activity TYPE bapi_network_activity,
ls_network TYPE bapi_network,
ls_wbs_element_table TYPE bapi_wbs_element,
ls_wbs_hierarchie_table TYPE bapi_wbs_hierarchie.
DATA: lv_refnumber(6) TYPE n.
*-- Clear & Refresh
CLEAR: gt_activity_temp, gt_network_temp,
gt_wbs_element_table_temp, gt_wbs_hierarchie_table_temp.
REFRESH: gt_method_project, gt_activity_temp, gt_network_temp,
gt_wbs_element_table_temp, gt_wbs_hierarchie_table_temp.
*-- 1. Build the Method Project table
PERFORM method_project_create.
*-- 2. Activity
LOOP AT gt_activity INTO ls_activity
WHERE project_definition EQ gs_project-project_definition.
*-- Build our temp table
APPEND ls_activity TO gt_activity_temp.
ENDLOOP.
*-- 3. Network
CLEAR lv_refnumber.
LOOP AT gt_network INTO ls_network
WHERE project_definition EQ gs_project-project_definition.
*-- Build the Method Project table - Network
lv_refnumber = lv_refnumber + 1.
PERFORM method_project_create_network USING ls_network
lv_refnumber.
*-- Build our temp table
APPEND ls_network TO gt_network_temp.
ENDLOOP.
*-- 4. WBS Element
CLEAR lv_refnumber.
LOOP AT gt_wbs_element_table INTO ls_wbs_element_table
WHERE project_definition EQ gs_project-project_definition.
*-- Build the Method Project table - WBS Number
lv_refnumber = lv_refnumber + 1.
PERFORM meth_proj_cr_wbs_element USING ls_wbs_element_table-wbs_element
lv_refnumber.
*-- Build our temp table
APPEND ls_wbs_element_table TO gt_wbs_element_table_temp.
ENDLOOP.
*-- 5. WBS Hierarchie
CLEAR lv_refnumber.
LOOP AT gt_wbs_hierarchie_table INTO ls_wbs_hierarchie_table
WHERE project_definition EQ gs_project-project_definition.
*-- Build the Method Project table - WBS Hierarchie
lv_refnumber = lv_refnumber + 1.
PERFORM meth_proj_cr_wbs_element_hier USING ls_wbs_hierarchie_table-wbs_element
lv_refnumber.
*-- Build our temp table
APPEND ls_wbs_hierarchie_table TO gt_wbs_hierarchie_table_temp.
ENDLOOP.
*-- Check to see if we have added new entries - if so, 'SAVE'
IF NOT gt_method_project[] IS INITIAL.
CLEAR gs_method_project.
gs_method_project-method = 'SAVE'.
*-- Append
APPEND gs_method_project TO gt_method_project.
ENDIF.
ENDFORM. " extract_project_data
&----
*& Form method_project_create
&----
text
----
--> p1 text
<-- p2 text
----
FORM method_project_create .
CLEAR gs_method_project.
gs_method_project-refnumber = '000001'.
gs_method_project-objecttype = 'ProjectDefinition'.
gs_method_project-method = gv_command1.
gs_method_project-objectkey = gs_project-project_definition.
*-- Append
APPEND gs_method_project TO gt_method_project.
ENDFORM. " method_project_create
&----
*& Form method_project_create_network
&----
text
----
-->P_LS_NETWORK text
----
FORM method_project_create_network USING p_ls_network TYPE bapi_network
p_lv_refnumber.
CLEAR gs_method_project.
gs_method_project-refnumber = p_lv_refnumber.
gs_method_project-objecttype = 'Network'.
gs_method_project-method = gv_command4.
gs_method_project-objectkey = p_ls_network-network.
*-- Append
APPEND gs_method_project TO gt_method_project.
ENDFORM. " method_project_create_network
&----
*& Form command_text
&----
text
----
--> p1 text
<-- p2 text
----
FORM command_text .
*-- Project
CASE p_parm1.
WHEN 1.
gv_command1 = 'Create'.
WHEN 2.
gv_command1 = 'Update'.
WHEN 3.
gv_command1 = 'Delete'.
ENDCASE.
*-- WBS Element
CASE p_parm2.
WHEN 1.
gv_command2 = 'Create'.
WHEN 2.
gv_command2 = 'Update'.
WHEN 3.
gv_command2 = 'Delete'.
ENDCASE.
*-- WBS Hierarchy
CASE p_parm3.
WHEN 1.
gv_command3 = 'Create'.
WHEN 2.
gv_command3 = 'Update'.
WHEN 3.
gv_command3 = 'Delete'.
ENDCASE.
*-- Network
CASE p_parm4.
WHEN 1.
gv_command4 = 'Create'.
WHEN 2.
gv_command4 = 'Update'.
WHEN 3.
gv_command4 = 'Delete'.
ENDCASE.
ENDFORM. " command_text
&----
*& Form meth_proj_cr_wbs_element
&----
text
----
-->P_LS_WBS_ELEMENT_TABLE_WBS_ELEME text
-->P_LV_REFNUMBER text
----
FORM meth_proj_cr_wbs_element USING p_ls_wbs_element
p_lv_refnumber.
CLEAR gs_method_project.
gs_method_project-refnumber = p_lv_refnumber.
gs_method_project-objecttype = 'WBS-Element'.
gs_method_project-method = gv_command2.
gs_method_project-objectkey = p_ls_wbs_element.
*-- Append
APPEND gs_method_project TO gt_method_project.
ENDFORM. " meth_proj_cr_wbs_element
&----
*& Form meth_proj_cr_wbs_element_hier
&----
text
----
-->P_LS_WBS_HIERARCHIE_TABLE_WBS_EL text
-->P_LV_REFNUMBER text
----
FORM meth_proj_cr_wbs_element_hier USING p_ls_wbs_hierarchie
p_lv_refnumber.
CLEAR gs_method_project.
gs_method_project-refnumber = p_lv_refnumber.
gs_method_project-objecttype = 'WBS Hierarchy'.
gs_method_project-method = gv_command3.
gs_method_project-objectkey = p_ls_wbs_hierarchie.
*-- Append
APPEND gs_method_project TO gt_method_project.
ENDFORM. " meth_proj_cr_wbs_element_hier
&----
*& Form dropdown
&----
text
----
--> p1 text
<-- p2 text
----
FORM dropdown .
*-- Refresh table
REFRESH gt_list.
CLEAR gt_list.
*-- Load values
gv_value-key = '1'.
gv_value-text = 'Create'.
APPEND gv_value TO gt_list.
gv_value-key = '2'.
gv_value-text = 'Update'.
APPEND gv_value TO gt_list.
gv_value-key = '3'.
gv_value-text = 'Delete'.
APPEND gv_value TO gt_list.
*-- Display our values
CALL FUNCTION 'VRM_SET_VALUES'
EXPORTING
id = gv_name
values = gt_list.
ENDFORM. " dropdown
08-06-2005 9:44 PM
Hi,
I think that your WBS hierarchy structure is incorrect.
Activate error log for BAPI_PROJECT_MAINTAIN using:
METHOD_PROJECT-OBJECTTYPE = 'Trace'.
METHOD_PROJECT-METHOD = 'Create'.
METHOD_PROJECT-OBJECTKEY = FILENAME.
APPEND METHOD_PROJECT.
If you would like to see how such hierarchy structure should be coded you can first read hierarchy for existing project using:
CALL FUNCTION 'BAPI_PROJECT_GETINFO'
EXPORTING
PROJECT_DEFINITION = PROJECT_DEFINITION-PROJECT_DEFINITION
IMPORTING
RETURN = RETURN
TABLES
E_WBS_HIERARCHIE_TABLE = WBS_HIERARCHIE_TABLE.
Krzys
12-10-2005 8:39 PM
Hi Marjo,
Probably you found out what was wrong. If not notice that you can use create wbs hierarchy only once.
In your loop no. 5 you call many times form where you fill method with create wbs hier.
At least you should build hierarchy table and after that put only one create method like save method.
It's solution for you question )
more info : http://help.sap.com/saphelp_45b/helpdata/en/d0/1980a3fbae11d1a5ee0000e82de7c3/content.htm
Pablo