Application Development Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 

BAPI_PROJECT_MAINTAIN - Problem with i_wbs_hierarchie_table

Former Member
0 Kudos

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

2 REPLIES 2

krzysztof_konitz4
Contributor
0 Kudos

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

Former Member
0 Kudos

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