Maintain Hierarchy Using Programming in SAP MDG
Dear SAP MDG guru,
Can someone have an idea how to maintain/modify hierarchies in MDGF using a programming sequence?
we have a requirement where in cost center we have a field cost center group, after the cost center created, we build an exit program in workflow to attach/move cost center to the appropriate cost center group,
I already know how to maintain hierarchies using hierarchies processing menu, where we can remove or add cost center in cost center group, but i need to now what is the standard program/FM use to doing that,
anyone have an idea?
thanks
Hi,
there is no standard for that. You have to use collective processing.
Best regards
Michael
Similar Messages
-
How we can use help & maintain view in program
hi Gurus,
how we can use help & maintain view in program?
is it able to use in program?
thanks in advance,
Regards,
Arun.Hi
maintain view can be used in program using the function module 'VIEW_GET_DATA'.
and help view is for search help.
check this link below.
[http://help.sap.com/saphelp_nw2004s/helpdata/en/cf/21ecd2446011d189700000e8322d00/content.htm]
Regards,
Sakthi. -
Downloaded my hierarchy using the program z_sap_hierarchy_download
hi
I want download downloaded my hierarchy using the program z_sap_hierarchy_download but I have any problem when I using idoc method, I have this message:
Node [00001350, 00001580]: Leaf 'E010000000' already exists as child of node 00001501
Best regard
Francoisehi
The problem is that 2 id differents has the same description.
my program is:
begin
SAP Consulting BW Tools:
Download hierarchy into a flat file. The file has the correct format
Text elements:
P_DATES Include from/to dates
P_DATETO Valid-to date
P_FNAME File name
P_HIENM Hierarchy name
P_INTER Include from/to leaves
P_IOBJNM InfoObject
P_LANGU Language
P_VERS Hierarchy version
REPORT z_sap_hierarchy_download.
TYPE-POOLS: rs, rsdm, rrh1.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME.
PARAMETERS:
p_iobjnm TYPE rsdiobjnm MEMORY ID rsc.
SELECTION-SCREEN END OF BLOCK b1.
SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME.
PARAMETERS:
p_hienm TYPE rshiedir-hienm,
p_vers TYPE rshiedir-version,
p_dateto TYPE rshiedir-dateto,
p_langu TYPE rshiedirt-langu.
SELECTION-SCREEN END OF BLOCK b2.
SELECTION-SCREEN BEGIN OF BLOCK b3 WITH FRAME.
PARAMETERS:
p_fname LIKE rlgrap-filename,
p_dates AS CHECKBOX DEFAULT 'X',
p_inter AS CHECKBOX DEFAULT 'X'.
SELECTION-SCREEN END OF BLOCK b3.
File structure
TYPES:
No dates/intervals
BEGIN OF y_s_hierfile_1,
nodeid TYPE rshienodid,
iobjnm TYPE rsiobjnm,
nodename TYPE rsnodename,
tlevel TYPE rstlevel,
link TYPE rslink,
parentid TYPE rsparent,
childid TYPE rschild,
nextid TYPE rsnext,
langu TYPE langu,
txtsh TYPE rstxtsh,
txtmd TYPE rstxtmd,
txtlg TYPE rstxtlg,
END OF y_s_hierfile_1,
y_t_hierfile_1 TYPE STANDARD TABLE OF y_s_hierfile_1,
With dates
BEGIN OF y_s_hierfile_2,
nodeid TYPE rshienodid,
iobjnm TYPE rsiobjnm,
nodename TYPE rsnodename,
tlevel TYPE rstlevel,
link TYPE rslink,
parentid TYPE rsparent,
childid TYPE rschild,
nextid TYPE rsnext,
dateto TYPE rsdateto,
datefrom TYPE rsdatefrom,
langu TYPE langu,
txtsh TYPE rstxtsh,
txtmd TYPE rstxtmd,
txtlg TYPE rstxtlg,
END OF y_s_hierfile_2,
y_t_hierfile_2 TYPE STANDARD TABLE OF y_s_hierfile_2,
With intervals
BEGIN OF y_s_hierfile_3,
nodeid TYPE rshienodid,
iobjnm TYPE rsiobjnm,
nodename TYPE rsnodename,
tlevel TYPE rstlevel,
link TYPE rslink,
parentid TYPE rsparent,
childid TYPE rschild,
nextid TYPE rsnext,
leafto TYPE rsleafto,
leaffrom TYPE rsleaffrom,
langu TYPE langu,
txtsh TYPE rstxtsh,
txtmd TYPE rstxtmd,
txtlg TYPE rstxtlg,
END OF y_s_hierfile_3,
y_t_hierfile_3 TYPE STANDARD TABLE OF y_s_hierfile_3,
With dates/intervals
BEGIN OF y_s_hierfile_4,
nodeid TYPE rshienodid,
iobjnm TYPE rsiobjnm,
nodename TYPE rsnodename,
tlevel TYPE rstlevel,
link TYPE rslink,
parentid TYPE rsparent,
childid TYPE rschild,
nextid TYPE rsnext,
dateto TYPE rsdateto,
datefrom TYPE rsdatefrom,
leafto TYPE rsleafto,
leaffrom TYPE rsleaffrom,
langu TYPE langu,
txtsh TYPE rstxtsh,
txtmd TYPE rstxtmd,
txtlg TYPE rstxtlg,END OF y_s_hierfile_4,
y_t_hierfile_4 TYPE STANDARD TABLE OF y_s_hierfile_4.
Hierarchy definition
DATA:
g_s_hiesel TYPE rsndi_s_hiesel,
g_s_hiedir TYPE rsndi_s_hiedir,
g_subrc TYPE sy-subrc,
g_t_hiedirt TYPE TABLE OF rshiedirt,
g_s_hierstruc TYPE rssh_s_htab,
g_t_hierstruc TYPE TABLE OF rssh_s_htab,
g_s_thiernode TYPE rsthiernode,
g_t_thiernode TYPE TABLE OF rsthiernode WITH KEY langu hieid objvers
nodename,
g_s_hierintvl TYPE rssh_s_jtab,
g_t_hierintvl TYPE TABLE OF rssh_s_jtab WITH KEY hieid objvers nodeid,
g_s_message TYPE rsndi_s_message,
g_t_message TYPE TABLE OF rsndi_s_message,
g_s_chavlinfo TYPE rsdm_s_chavlinfo,
g_t_chavlinfo TYPE rsdm_t_chavlinfo.
File
DATA:
g_fname TYPE string,
g_struct_s TYPE string,
g_struct_t TYPE string,
gr_s_file TYPE REF TO data,
gr_t_file TYPE REF TO data.
FIELD-SYMBOLS:
<g_langu> TYPE ANY,
<g_s_file> TYPE ANY,
<g_t_file> TYPE STANDARD TABLE.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_iobjnm.
CALL FUNCTION 'RSD_IOBJ_F4'
EXPORTING
i_show_cha = rs_c_true
i_objvers = rs_c_objvers-active
i_hietabfl = rs_c_true
CHANGING
c_iobjnm = p_iobjnm
EXCEPTIONS
illegal_input = 1.
CHECK sy-subrc = 0.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_hienm.
DATA:
l_s_hiertxt TYPE rrh1_s_hiertxt,
l_t_hiertxt TYPE rrh1_t_hiertxt.
CALL FUNCTION 'RRH1_HIERARCHY_HELP_VALUES_GET'
EXPORTING
i_iobjnm = p_iobjnm
i_dateto = p_dateto
i_hienm = p_hienm
i_version = p_vers
IMPORTING
e_t_hiertxt = l_t_hiertxt
EXCEPTIONS
no_f4_available = 1
dialogue_canceled = 2
OTHERS = 3.
CHECK sy-subrc = 0.
READ TABLE l_t_hiertxt INTO l_s_hiertxt INDEX 1.
CHECK NOT l_s_hiertxt IS INITIAL.
p_hienm = l_s_hiertxt-hienm.
DATA:
l_s_dynpfields TYPE dynpread,
l_t_dynpfields TYPE STANDARD TABLE OF dynpread.
CLEAR: l_t_dynpfields, l_s_dynpfields.
l_s_dynpfields-fieldname = 'P_VERS'.
WRITE l_s_hiertxt-version TO l_s_dynpfields-fieldvalue.
APPEND l_s_dynpfields TO l_t_dynpfields.
l_s_dynpfields-fieldname = 'P_DATETO'.
WRITE l_s_hiertxt-dateto TO l_s_dynpfields-fieldvalue.
APPEND l_s_dynpfields TO l_t_dynpfields.
CALL FUNCTION 'DYNP_VALUES_UPDATE'
EXPORTING
dyname = sy-repid
dynumb = sy-dynnr
TABLES
dynpfields = l_t_dynpfields.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_fname.
DATA:
l_filename1 TYPE string,
l_filename2 TYPE string,
l_path TYPE string,
l_fullpath TYPE string,
l_action TYPE i.
l_filename1 = p_fname.
CALL METHOD cl_gui_frontend_services=>file_save_dialog
EXPORTING
window_title = 'Select Download File'
default_extension = 'txt'
default_file_name = l_filename1
file_filter = 'All Files (.)|.|Text files (.txt)|.txt'
CHANGING
filename = l_filename2
path = l_path
fullpath = l_fullpath
user_action = l_action
EXCEPTIONS
cntl_error = 1
OTHERS = 2. "#EC NOTEXT
CHECK sy-subrc = 0.
CALL METHOD cl_gui_cfw=>flush.
IF l_action = 0.
p_fname = l_fullpath.
ENDIF.
INITIALIZATION.
GET PARAMETER ID 'RSC' FIELD p_iobjnm.
START-OF-SELECTION.
Check input
CHECK NOT p_fname IS INITIAL.
IF p_langu IS INITIAL.
p_langu = sy-langu.
ENDIF.
IF p_dateto IS INITIAL.
p_dateto = '99991231'.
ENDIF.
Read hierarchy
CLEAR g_s_hiesel.
g_s_hiesel-objvers = rs_c_objvers-active.
g_s_hiesel-hienm = p_hienm.
g_s_hiesel-version = p_vers.
g_s_hiesel-iobjnm = p_iobjnm.
g_s_hiesel-dateto = p_dateto.
CALL FUNCTION 'RSNDI_SHIE_STRUCTURE_GET'
EXPORTING
i_s_hiesel = g_s_hiesel
i_no_nodenm_table = rs_c_true
IMPORTING
e_s_hiedir = g_s_hiedir
e_subrc = g_subrc
TABLES
e_t_hiedirt = g_t_hiedirt
e_t_hierstruc = g_t_hierstruc
e_t_thiernode = g_t_thiernode
e_t_hierintvl = g_t_hierintvl
e_t_message = g_t_message.
IF g_subrc <> 0.
READ TABLE g_t_message INTO g_s_message INDEX 1.
IF sy-subrc = 0.
MESSAGE ID g_s_message-msgid TYPE 'I' NUMBER g_s_message-msgno
WITH g_s_message-msgv1 g_s_message-msgv2
g_s_message-msgv3 g_s_message-msgv4.
ELSE.
MESSAGE ID 'RSBO' TYPE 'I' NUMBER 899
WITH 'Hierarchy read error'.
ENDIF.
EXIT.
ENDIF.
Defined output structures
IF p_dates IS INITIAL AND p_inter IS INITIAL.
g_struct_s = 'Y_S_HIERFILE_1'.
g_struct_t = 'Y_T_HIERFILE_1'.
ELSEIF p_dates = 'X' AND p_inter IS INITIAL.
g_struct_s = 'Y_S_HIERFILE_2'.
g_struct_t = 'Y_T_HIERFILE_2'.
ELSEIF p_dates IS INITIAL AND p_inter = 'X'.
g_struct_s = 'Y_S_HIERFILE_3'.
g_struct_t = 'Y_T_HIERFILE_3'.
ELSE.
g_struct_s = 'Y_S_HIERFILE_4'.
g_struct_t = 'Y_T_HIERFILE_4'.
ENDIF.
CREATE DATA gr_s_file TYPE (g_struct_s).
ASSIGN gr_s_file->* TO <g_s_file>.
CREATE DATA gr_t_file TYPE (g_struct_t).
ASSIGN gr_t_file->* TO <g_t_file>.
Nodes
REFRESH <g_t_file>.
LOOP AT g_t_hierstruc INTO g_s_hierstruc.
CLEAR <g_s_file>.
MOVE-CORRESPONDING g_s_hierstruc TO <g_s_file>.
Texts for nodes
READ TABLE g_t_thiernode INTO g_s_thiernode WITH TABLE KEY
langu = p_langu
hieid = g_s_hierstruc-hieid
objvers = rs_c_objvers-active
nodename = g_s_hierstruc-nodename.
IF sy-subrc = 0.
MOVE-CORRESPONDING g_s_thiernode TO <g_s_file>.
ELSE.
Texts for characteristic values
REFRESH g_t_chavlinfo.
CLEAR g_s_chavlinfo.
g_s_chavlinfo-c_chavl = g_s_hierstruc-nodename.
APPEND g_s_chavlinfo TO g_t_chavlinfo.
CALL FUNCTION 'RSD_CHAVL_READ_ALL'
EXPORTING
i_iobjnm = g_s_hierstruc-iobjnm
i_langu = p_langu
i_dateto = p_dateto
i_check_value = space
i_sid_in = space
i_hieid = g_s_hiedir-hieid
i_objvers = g_s_hiedir-objvers
CHANGING
c_t_chavlinfo = g_t_chavlinfo
EXCEPTIONS
info_object_not_found = 1
routines_generation_error = 2
check_table_not_existing = 3
text_table_not_existing = 4
OTHERS = 5.
IF sy-subrc = 0.
READ TABLE g_t_chavlinfo INTO g_s_chavlinfo INDEX 1.
IF sy-subrc = 0.
MOVE-CORRESPONDING g_s_chavlinfo-e_chatexts TO <g_s_file>.
ASSIGN COMPONENT 'LANGU' OF STRUCTURE <g_s_file> TO <g_langu>.
IF sy-subrc = 0.
<g_langu> = p_langu.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
Intervals
IF g_s_hierstruc-intervl = 'X' AND p_inter = 'X'.
READ TABLE g_t_hierintvl INTO g_s_hierintvl WITH TABLE KEY
hieid = g_s_hierstruc-hieid
objvers = rs_c_objvers-active
nodeid = g_s_hierstruc-nodeid.
IF sy-subrc = 0.
MOVE-CORRESPONDING g_s_hierintvl TO <g_s_file>.
ENDIF.
ENDIF.
APPEND <g_s_file> TO <g_t_file>.
ENDLOOP.
Download output table
g_fname = p_fname.
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
filename = g_fname
write_field_separator = space
TABLES
data_tab = <g_t_file>
EXCEPTIONS
file_write_error = 1
no_batch = 2
gui_refuse_filetransfer = 3
invalid_type = 4
no_authority = 5
unknown_error = 6
header_not_allowed = 7
separator_not_allowed = 8
filesize_not_allowed = 9
header_too_long = 10
dp_error_create = 11
dp_error_send = 12
dp_error_write = 13
unknown_dp_error = 14
access_denied = 15
dp_out_of_memory = 16
disk_full = 17
dp_timeout = 18
file_not_found = 19
dataprovider_exception = 20
control_flush_error = 21
OTHERS = 22.
IF sy-subrc = 0.
MESSAGE ID 'RSBO' TYPE 'I' NUMBER 899
WITH 'Hierarchy download successful!'.
ELSE.
MESSAGE ID sy-msgid TYPE 'I' NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
end -
Creating SAP users using Program RHPROFL0
Hi Experts,
I want to create SAP users and assign authorisation using program RHPROFL0.
Whenever I execute this program Generate new user field is greyed out. I can not select it to create users.
I have already activated switch 'ORGPD' for Structural Authorisation check.
Is there any additional setting/config I am missing.
Pls helpHi, Syed!
As I can see from the source code in my system, this field is grayed out according to the following rule: "not a central system, no user generation".
Thus, it is likely that your system is a child CUA system, so logins are supposed to be created by CUA. -
Building Tree hierarchy Using nested loops and class cl_gui_column_tree
Hello gurus,
I want to create a tree report using custom container and class cl_gui_column_tree. I have read and understood the standard demo report which SAP has provided i.e. SAPCOLUMN_TREE_CONTROL_DEMO. But in this report all the levels nodes are created as constants and hardcoded. I want to create hierarchy using nested loops. For this i took one example of a hierarchy of VBAK-VBELN->VBAP-POSNR Like One sales order has many line items and each line item can have number of line items in billing plan.
I have done some coding for it.
FORM build_tree USING node_table TYPE treev_ntab
item_table TYPE zitem_table. " i created the zitem_table table type of mtreeitm in SE11.
DATA: node TYPE treev_node,
item TYPE mtreeitm.
node-node_key = root.
CLEAR node-relatkey.
CLEAR node-relatship.
node-hidden = ' '.
node-disabled = ' '.
CLEAR node-n_image.
CLEAR node-exp_image.
node-isfolder = 'X'.
node-expander = 'X'.
APPEND node TO node_table.
item-node_key = root.
item-item_name = colm1.
item-class = cl_gui_column_tree=>item_class_text.
item-text = 'Root'.
APPEND item TO item_table.
item-node_key = root.
item-item_name = colm2.
item-class = cl_gui_column_tree=>item_class_text.
item-text = 'Amount'.
APPEND item TO item_table.
LOOP AT it_vbeln INTO wa_vbeln.
node-node_key = wa_vbeln-vbeln.
node-relatkey = root.
node-relatship = cl_gui_column_tree=>relat_last_child.
node-hidden = ' '.
node-disabled = ' '.
CLEAR node-n_image.
CLEAR node-exp_image.
node-isfolder = 'X'.
node-expander = 'X'.
APPEND node TO node_table.
item-node_key = wa_vbeln-vbeln.
item-item_name = colm1.
item-class = cl_gui_column_tree=>item_class_text.
item-text = wa_vbeln-vbeln.
APPEND item TO item_table.
item-node_key = wa_vbeln-vbeln.
item-item_name = colm2.
item-class = cl_gui_column_tree=>item_class_text.
item-text = wa_vbeln-netwr.
APPEND item TO item_table.
LOOP AT it_posnr INTO wa_posnr.
node-node_key = wa_posnr-posnr.
node-relatkey = wa_vbeln-vbeln.
node-relatship = cl_gui_column_tree=>relat_last_child.
node-hidden = ' '.
node-disabled = ' '.
CLEAR node-n_image.
CLEAR node-exp_image.
node-isfolder = ' '.
node-expander = ' '.
APPEND node TO node_table.
item-node_key = wa_posnr-posnr.
item-item_name = colm1.
item-class = cl_gui_column_tree=>item_class_text.
item-text = wa_posnr-posnr.
APPEND item TO item_table.
item-node_key = wa_posnr-posnr.
item-item_name = colm2.
item-class = cl_gui_column_tree=>item_class_text.
item-text = wa_posnr-netpr.
APPEND item TO item_table.
ENDLOOP.
ENDLOOP.
ENDFORM.
Now this program compiles fine and runs till there is only one level. That is root->vbeln. But when i add one more loop of it_posnr it gives me runtime error of message type 'X'. The problem i found was uniqueness of item-item_name as all the sales order have posnr = 0010. What could be done? I tried giving item_name unique hierarchy level using counters just like stufe field in prps eg. 10.10.10, 10.10.20,10.20.10,10.20.20,20.10.10 etc.. etc.. but still i am getting runtime error when i add one more hierarchy using nested loop. Plz guide.
Edited by: Yayati6260 on Jul 14, 2011 7:25 AMHello all,
Thanks the issue is solved. The node key was not getting a unique identification as nodekey. I resolved the issue by generating unique identification for each level. Thanks all,
Regards
Yayati Ekbote -
Hi all,
I have developed a program for ALV Tree Hierarchy using OOPs.I followed the SAP demo program.I am not able to get the values in the output.Please can anyone guide me where to correct my program. I am placing the entire code so that you all can also debug and see what is wrong.
*& Report ZZHIERARCHY_TEST1
REPORT zzhierarchy_test1.
DATA : alv_container TYPE REF TO cl_gui_custom_container,
alv_tree TYPE REF TO cl_gui_alv_tree,
gt_fcat TYPE lvc_t_fcat,
gt_vbrk TYPE vbrk OCCURS 0. "Output Table
DATA : gs_hirarchy_header TYPE treev_hhdr.
START-OF-SELECTION.
END-OF-SELECTION.
CALL SCREEN 9100.
*& Module STATUS_9100 OUTPUT
MODULE status_9100 OUTPUT.
SET PF-STATUS 'ALV_TREE'.
IF alv_container IS INITIAL.
PERFORM tree_dev.
ENDIF.
ENDMODULE. " STATUS_9100 OUTPUT
*& Form tree_dev
text
FORM tree_dev .
DATA lv_container_name(20) TYPE c.
lv_container_name = 'ALV_TREE'.
CREATE OBJECT alv_container
EXPORTING
container_name = lv_container_name
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
create_error = 3
lifetime_error = 4
lifetime_dynpro_dynpro_link = 5
OTHERS = 6.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
CREATE OBJECT alv_tree
EXPORTING
parent = alv_container
node_selection_mode = cl_gui_column_tree=>node_sel_mode_single
item_selection = 'X'
no_toolbar = ''
no_html_header = 'X'
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
create_error = 3
lifetime_error = 4
illegal_node_selection_mode = 5
failed = 6
illegal_column_name = 7
OTHERS = 8.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
PERFORM build_hirarchy_header CHANGING gs_hirarchy_header.
PERFORM buid_fieldcatalog.
CALL METHOD alv_tree->set_table_for_first_display
EXPORTING
is_hierarchy_header = gs_hirarchy_header
CHANGING
it_outtab = gt_vbrk "Table Must be Empty
it_fieldcatalog = gt_fcat.
PERFORM create_hierarchy.
CALL METHOD alv_tree->frontend_update.
ENDFORM. " tree_dev
*& Form build_hirarchy_header
<--P_GS_HIRARCHY_HEADER text
FORM build_hirarchy_header CHANGING p_gs_hirarchy_header TYPE treev_hhdr.
p_gs_hirarchy_header-heading = 'Company Code'(001).
p_gs_hirarchy_header-tooltip = 'Comapny Code'(002).
p_gs_hirarchy_header-width = 35.
p_gs_hirarchy_header-width_pix = ''.
ENDFORM. " build_hirarchy_header
*& Form buid_fieldcatalog
FORM buid_fieldcatalog .
DATA ls_fcat TYPE lvc_s_fcat.
CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
EXPORTING
i_structure_name = 'VBRK'
CHANGING
ct_fieldcat = gt_fcat
EXCEPTIONS
inconsistent_interface = 1
program_error = 2
OTHERS = 3.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
LOOP AT gt_fcat INTO ls_fcat.
CASE ls_fcat-fieldname.
WHEN 'NETWR'.
ls_fcat-do_sum = 'X'.
ls_fcat-h_ftype = 'MAX'.
ENDCASE.
MODIFY gt_fcat FROM ls_fcat.
ENDLOOP.
ENDFORM. " buid_fieldcatalog
*& Form create_hierarchy
FORM create_hierarchy .
DATA : lt_vbrk TYPE TABLE OF vbrk,
ls_vbrk TYPE vbrk.
DATA : top_key TYPE lvc_nkey,
company_key TYPE lvc_nkey,
bzirk_key TYPE lvc_nkey.
DATA : lv_bukrs TYPE bukrs,
lv_bukrs_prv TYPE bukrs,
lv_bzirk TYPE bzirk,
lv_bzirk_prv TYPE bzirk.
SELECT * FROM vbrk INTO TABLE lt_vbrk UP TO 500 ROWS.
SORT lt_vbrk BY bukrs .
CALL METHOD alv_tree->add_node
EXPORTING
i_relat_node_key = ''
i_relationship = cl_gui_column_tree=>relat_last_child
i_node_text = 'Company Code'
IMPORTING
e_new_node_key = top_key
EXCEPTIONS
relat_node_not_found = 1
node_not_found = 2
OTHERS = 3.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
LOOP AT lt_vbrk INTO ls_vbrk.
lv_bukrs = ls_vbrk-bukrs .
lv_bzirk = ls_vbrk-bzirk .
IF lv_bukrs <> lv_bukrs_prv.
lv_bukrs_prv = lv_bukrs.
PERFORM add_node USING lv_bukrs
top_key
CHANGING company_key.
ENDIF.
IF lv_bzirk <> lv_bzirk_prv.
lv_bzirk_prv = lv_bzirk.
PERFORM add_posnr USING lv_bzirk
company_key
CHANGING bzirk_key.
ENDIF.
ENDLOOP.
ENDFORM. " create_hierarchy
*& Form add_node
-->P_LV_BUKRS text
-->P_TOP_KEY text
<--P_COMPANY_KEY text
FORM add_node USING p_lv_bukrs TYPE bukrs
p_top_key TYPE lvc_nkey
CHANGING p_company_key TYPE lvc_nkey .
DATA: l_node_text TYPE lvc_value,
ls_vbrk TYPE vbrk.
l_node_text = 'Company' .
CALL METHOD alv_tree->add_node
EXPORTING
i_relat_node_key = p_top_key
i_relationship = cl_gui_column_tree=>relat_last_child
is_outtab_line = ls_vbrk
i_node_text = l_node_text
IMPORTING
e_new_node_key = p_company_key
EXCEPTIONS
relat_node_not_found = 1
node_not_found = 2
OTHERS = 3.
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. " add_node
*& Form add_posnr
text
-->P_LV_POSNR text
-->P_COMPANY_KEY text
<--P_POSNR_KEY text
FORM add_posnr USING p_lv_bzirk TYPE bzirk
p_company_key TYPE lvc_nkey
CHANGING p_bzirk_key TYPE lvc_nkey.
DATA ls_vbrk TYPE vbrk.
CALL METHOD alv_tree->add_node
EXPORTING
i_relat_node_key = p_company_key
i_relationship = cl_gui_column_tree=>relat_last_child
is_outtab_line = ls_vbrk
i_node_text = 'Sales District'
IMPORTING
e_new_node_key = p_bzirk_key
EXCEPTIONS
relat_node_not_found = 1
node_not_found = 2
OTHERS = 3.
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. " add_posnr
*& Module USER_COMMAND_9100 INPUT
MODULE user_command_9100 INPUT.
CASE sy-ucomm.
WHEN 'BACK' OR 'EXIT' OR 'CANCEL'.
CALL METHOD alv_container->free.
LEAVE PROGRAM.
ENDCASE.
ENDMODULE. " USER_COMMAND_9100 INPUTCheck this forum there are many threads on this.
-
Hierarchies in SAP MDG data model
Hello Gurus,
Could any one please let me know how to create hierarchies in SAP MDG Data models..I have gone though the SAP Help document and but couldn't understand it..If any one has worked on this , please let me know.
Regards,
Raghu.Hi Jose,
I'll start with simple hierarchy demo containing HIERARCHY NAME, GROUP and OBJECT.[HIERARCHY NAME is the top node, GROUP is the middle node and OBJECT is the end node]
1.In data model, you have to create all the as 3 entity types.
2.In the middle node,i.e. GROUP here, choose the hierarchy option as version dependent or Non-version dependent as per your requirement.
3.In the middlle node,i.e. GROUP here, build hierarchy by assigning
Entity Type for hierarchies ->Entity Type of Node , Use
Here the top node,i.e. HIERARCHY NAME ,will be assigned use as Hierarchy names
You can find related documentation by using F1 help on specific field.
4.Your hierarchy model is now ready.
Regards,
Vkanc9 -
Upload hierarchy using flatfile
Hi,
I need to upload the HR hierarchy from PeopleSoft. PeopleSoft delivers the hierarchy as a flatfile, but not in the BW structure.
The file is delivered as follows:
Level1 Level2 Level3 Level4 Level5
NCC_002100 NCC_002101 NCC_002102 NCC_002103 NCC_002104
NCC_002100 NCC_002101 NCC_002102 NCC_002103 NCC_002105
NCC_002100 NCC_002200 NCC_002202 NCC_002203 NCC_002204
NCC_002100 NCC_002200 NCC_002210 NCC_002211 NCC_002212
NCC_002100 NCC_002200 NCC_002210 NCC_002211 NCC_002213
NCC_002100 NCC_002300 NCC_002310 NCC_002311 NCC_002312
How can I get this into the right BW structure for a Hierarchy upload.
Thanks.
Regards,
PaulHello,
Please go through the following links : http://help.sap.com/saphelp_nw70ehp1/helpdata/en/0e/fd4e3c97f6bb3ee10000000a114084/frameset.htm http://help.sap.com/saphelp_nw70/helpdata/en/b0/ab8e3cb4340b14e10000000a114084/content.htm Pls refer the following link, it will explain step by step with screen. /people/prakash.bagali/blog/2006/02/07/hierarchy-upload-from-flat-files Procedure to create Hierarchies: 1. In the Data Warehousing Workbench under Modeling, choose the InfoObject tree. 2. If you have assigned the hierarchy basic characteristic to an InfoObject catalog, select the corresponding InfoObject catalog for an InfoArea. If the hierarchy basic characteristic does not belong to an InfoObject catalog, choose the InfoArea Non-Assigned Nodes and the InfoObject Catalog Non-Assigned Characteristics. 3. Select the characteristic for which you want to create a hierarchy and choose Create Hierarchy from the context menu. The Create Hierarchy dialog box appears. The InfoObject name appears by default. 4. Enter a hierarchy name and description (short, medium, long). Other fields may be displayed, depending on which hierarchy properties were selected for the hierarchy basic characteristics Fields used to enter the Validity (valid to, valid from) for the hierarchy property Total Hierarchy Time-Dependent Fields used to specify the Hierarchy Version for the hierarchy property Hierarchies Version-Dependent. 5. Confirm your entries. The Maintain Hierarchy screen appears. You can define the structure of a hierarchy here. 6. To create a hierarchy node, you first need to choose an insertion mode: Insert as First Child or Insert As Next Neighbor (see Hierarchy Editing Functions). 7. Choose the type of node you want to create: Text Node, Characteristic Node, or Interval (see Hierarchy Nodes) 8. Repeat this procedure until the hierarchy structure has been set. For more information, see Modeling Nodes and Leaves. A hierarchy can contain 50,000-100,000 leaves at most. If your hierarchy is larger, you should insert a level that is used as a navigation attribute or preferably as a separate characteristic in the dimension table. 9. You can use Level Maintenance and Hierarchy Attributes to set how the hierarchy is to be displayed and processed in reporting (see Level Maintenance and Hierarchy Attributes). 10. Save the hierarchy. 11. Activate the hierarchy. See Editing Hierarchies. For more info http://help.sap.com/saphelp_nw70/helpdata/EN/80/1a6736e07211d2acb80000e829fbfe/content.htm http://help.sap.com/saphelp_nw70/helpdata/EN/e6/951d102a6c11d5b2e40050da4c74dc/content.htm http://help.sap.com/saphelp_nw04/helpdata/en/3d/320e3d89195c59e10000000a114084/frameset.htm Thanks. With regards, Anand Kumar Edited by: kur5rt on Oct 13, 2009 10:47 AM Edited by: kur5rt on Oct 13, 2009 10:49 AM -
Hi,
Can anybody provide me the list of Direct Input programs available in SAP.
Thanks,
Sunil.hI,
Direct Input:
A recent technique to input data safely. An alternative to batch input.
With direct input, the SAP function modules execute the consistency checks. However with batch input, these consistency checks are executed with help of the screens. This means that direct input has considerable performance advantages. But there are a few programs for direct input, you can use them if it accomplishes your goal. Direct Input programs work like that they update database tables directly. As you know that it is forbidden to update SAP database tables directly, since consistency and security should be considered. Exceptions are these direct input programs. So you are not able to write custom ABAP direct input programs. But of course you can write ABAP programs to update custom database tables (Z tables), if you are sure all about consistency.
SAP has created direct input programs because SAP wanted to enhance the batch input procedure, since batch input is slower. SAP offers the direct input technique, especially for transferring large amount of data. In contrast to batch input, this technique does not create sessions, but stores, updates, inserts data directly. To enter the data into the corresponding database tables directly, the system calls a number of function modules that execute any necessary checks. In case of errors, the direct input technique provides a restart mechanism. However, to able to activate the restart mechanism, direct input programs must be executed in the background only. To maintain and start these programs, use program RBMVSHOW or transaction BMV0.
Examples for direct input programs are:
RFBIBL00 - FI
RMDATIND - MM
RVAFSS00 - SD
RAALTD11 - AM
RKEVEXTO - CO-PA
Regards
Kiran Sure -
BAPI_PROJECT_MAINTAIN : Maintain Hierarchy
Hi ,
If anybody used above mentioned bapi and created program for hierarchy maintenance, Please send me code.
I will be creating program and is tough to maintain hierarchy logic for certain scenarios.
I have below scenario for reference:
WBS_ELEMENT PROJECT_DEFINITION
GTRAIN1 PD-GTRAIN
GTRAIN1.1 PD-GTRAIN
GTRAIN1.2 PD-GTRAIN
GTRAIN1.1-001 PD-GTRAIN
GTRAIN1.1-002 PD-GTRAIN
GTRAIN1.1-003 PD-GTRAIN
GTRAIN1.2-001 PD-GTRAIN
GTRAIN1.2-002 PD-GTRAIN
GTRAIN1.2-003 PD-GTRAIN
GTRAIN1.2-004 PD-GTRAIN
awaiting for help at earliest
Regards
ManishHi,
Try to use
CALL FUNCTION 'BAPI_PROJECT_GETINFO'
EXPORTING
PROJECT_DEFINITION = PROJECT_DEFINITION-PROJECT_DEFINITION
IMPORTING
RETURN = RETURN
TABLES
E_WBS_HIERARCHIE_TABLE = WBS_HIERARCHIE_TABLE.
in order to obtain hierarchy from already existing project. Then you can look at WBS_HIERARCHIE_TABLE to see how to create your own hierarchy...
Krzys -
Crystal report using ABAP from SAP ECC6.0 EHP 3.0
Hi Gurus,
Can i create crystal report using ABAP in SAP ECC 6.0 EHP 3 . as i am not able to see this link in SPRO.
IMG > SAP NetWeaver > Application Server > SAP List Viewer > Maintain SAP GUI Specific Settings.
Kindly guide me urgently.http://help.sap.com/saphelp_slc/helpdata/en/27/c9ee1951fc4fb9ac322ac7e6fa7372/content.htm
If I understood your question correctly.
Have a look in the link above.
It is possible to use Crystal Reports from ALV.
Tammy Powlas also has some good guides on how to do this.
The ABAP however is not covered that much.
Best Regards
Ingrid -
Purpose of RSTXTRAN program for SAP-Script ?? ??
Purpose of RSTXTRAN program for SAP-Script ?? ??
when it is required to run that program ?Hi sarit,
Purpose of RSTXTRAN program for SAP-Script Transfer of SAP script Texts to a Correction.
The report RSTXTRAN allows a set of SAP script texts (or the text key) to be transferred to a correction or repair of the transport system. The name of the correction/repair can either be transferred as a report parameter, or the correction/repair can be selected later in a selection window. The text key can be qualified generically using the asterisk character (*).
When the report has been executed, the list of selected texts appears. Individual texts can be deselected in this list. When the function "Continue" is executed, the final list of texts which are to be transferred is displayed. The transfer of texts to the correction/repair can now be activated by the appropriate function, and must be confirmed in a dialog box.The requirements for this as follows.
There is a correction/repair in which the selected text keys can be entered, if it is not being processed. The report can only insert text keys in corrections or repairs, not however in transport requests. However, the objects contained in a correction can be transferred to a transport request with the correction and transport system transaction.
It should also be noted that the report selects texts in the current client, but that the transport system generally exports texts from client 000.
When the report has been executed,the output can be a list of the selected texts. Information about whether transfer to the correction/repair was possible is displayed for each text key.
Reasons for failed transfer include
o the correction/repair is currently being processed
o the correction/repair does not exist
For Example
All German standard texts with the ID ST, whose names begin with SAPSCRIPT, are to be entered in the correction B20K009999. The report parameters are then assigned values as follows:
o Correction: B20K009999
o Text object: TEXT
o Text name: SAPSCRIPT*
Thanks,
Usha -
JCO.Server Error while trying to execute a RFC program from SAP
Hi,
We are connecting to an external registered server program from SAP via Web Methods.
The external server program is registered with the SAP Gateway. We have created a TCP/IP RFC destination and are able to connect to the destination successfully via SM59.
An RFC function is created in SAP and is called using the syntax CALL FUNCTION "/NGN/BAPI_STRE_SEARCH_PROCESS" DESTINATION 'PRDB2B'. We have also handled the COMM_FALIURE and SYSTEM_FALIURE exceptions in the function call.
We are monitoring the gateway via SMGW and see a connection log to the RFC destination as below
Number - 10
LUname - dev01
TPName - sapgw00
User - KRAORANE
Status - CONNECTED
Symbolic - PRDB2B
Conversation - 86520353
Prot - REG
SAP return code - 0
CPIC rtn code - 0
The external program returns results as expected.
However sometimes the RFC fails and returns the message JCO.Server could not create server function /NGN/BAPI_STRE_SEARCH_PROCESS.
We are not able to figure what exactly is causing this error. Any help will be highly appreciated.
-KiranHi,
Please see the below links..
JCO.Server Error while trying to execute a RFC program from SAP
Re: JCO.Servcer could not find server function
Re: JCO.Server could not find server function 'SET_SLD_DATA'
/people/kathirvel.balakrishnan2/blog/2005/07/26/remote-enable-your-rfchosttoip-to-return-host-ip-to-jco
Re: interfacing SAP with an existing java applications
http://help.sap.com/saphelp_nw04/helpdata/en/47/80f671ee6e4b41b63c0fe46bd6e4f8/content.htm
http://www.sapgenie.com/faq/jco.htm
Regards
Chilla.. -
How to know where the user exits or enhancement used in standard sap code?
Hi
I m pretty new to abap.
How can I know where the user exits or enhancement used in standard sap code?
As i have to add some functionality to the standard sap code. I m looking to search the enhancement or user exits used in this standard code wher i can add my functionality.
thanks in advance.
Moderator message : Search for available information, thread locked.
Edited by: Vinod Kumar on Oct 19, 2011 2:38 PMHi Henry,
I don't think this is the easiest way to look at the code around a particular field on the screen. Debugging standard programs also can be very tedious, if not impossbile. So, instead of this question, I would like to find out exactly what you want to do if you know the code.
If you are in a transaction and you want to know where the code of a particular field is, the fastest way to get to it is by pressing the F1 key on the field and then press the Technical info button on the help screen. In here you will typically see the same kind of information but it is very specific to the field you selected.
PROGRAM(SCREEN) tells you which program is manipulating the main screen, in which your field is embedded. Remember your field may be included in a sub-screen and that subscreen may be the one included in the main screen.
PROGRAM(SUB SCREEN) tells you which program is directly responsible for the field on the subscreen it is included in. This is where you should find the code most appropriate for the field, but not necessarily.
PROGRAM(GUI) controls how your push buttons and the menu options in the screen behave and controlled.
Srinivas -
How to retrieve data from a function module and use it in sap script??
I have a report program, which calls a function module. This function module internally calls an include program. In this program, I have a variable which is to be used in the sap script. How can I send this variable to the sap script
Hi,
In your case, Include prog is part of FM, no need to treat it as an Entity.
Now, Your Answer -
In SCRIPT - IN Page Window -->
PERFORM GET_MVAT_TIN IN PROGRAM Z_SCRIPT_PERFORMS_ABAPDB3
USING &VBDKR-KUNRE&
CHANGING &STCD1&
CHANGING &STCD2&
ENDPERFORM
IF &STCD1& <> ' '
<B>MVAT Number :</> &STCD1&
ENDIF
Then go to SE38 --> Creat prog with type - Subroutine pool
In that Write FORM statement for this PERFORM.
FORM get_mvat_tin TABLES inttab STRUCTURE itcsy
outtab STRUCTURE itcsy.
DATA : v_kunre TYPE kna1-kunnr,
v_stcd1 TYPE kna1-stcd1,
v_stcd2 TYPE kna1-stcd2.
LOOP AT outtab.
CLEAR outtab-value.
MODIFY outtab.
ENDLOOP.
READ TABLE inttab INDEX 1.
v_kunre = inttab-value.
IF v_kunre CA sy-abcde.
ELSE.
UNPACK v_kunre TO v_kunre.
ENDIF.
" Here You can take your Funcion module ***************************
SELECT SINGLE stcd1 stcd2 FROM kna1 INTO (v_stcd1, v_stcd2)
WHERE kunnr = v_kunre.
IF sy-subrc = 0.
READ TABLE outtab INDEX 1.
WRITE v_stcd1 TO outtab-value.
MODIFY outtab INDEX 1.
READ TABLE outtab INDEX 2.
WRITE v_stcd2 TO outtab-value.
MODIFY outtab INDEX 2.
ENDIF.
ENDFORM.
Maybe you are looking for
-
hi everyone, in my jsp i have to implement a functionality where user clicks browse button and selects a file and then attaches it .. how do i implement it ... are there any ready made functions
-
How do I change the order of pages in a multi page document
I used to be able to change the order of separate pages in thumbnail view, but can no longer do this in the current Pages. How do I do this? I am writing a book and need to be able to move pages around at will.
-
Hi Guys, when I enter MIRO the terms of payment(BSEG-ZTERM) are taken from Purchase Order and instead I want that they are taken by Vendor master data. Can I do this with a substitution,if yes how can you descrbe the principals steps? Thanks in advan
-
How to create a playlist in a apsx page
Hi. I have an aspx page that play a swf movie. I need to automatically play several swf in loop. How can I do that? I set the name of file in this way: quote: <param name="movie" value="filename.swf" /> Can i set multiple name in this way? Thanks
-
Header and Trailer updating the same record
Hi all I have a requirement in SQL loader in which the header should go to a header_trailer table. ( only 5 out of 10 columns are updated by the header record). All the data records go to a second table.( some xyz table) The trailer record should aga