Professional Documents
Culture Documents
How To Download To Hiearchy To A Flat File
How To Download To Hiearchy To A Flat File
SAP NetWeaver 04
How to
Download a
Hierarchy to a
Flat File
Version 1.00 May 2004
Applicable Releases:
SAP NetWeaver 04
(SAP BW 3.5)
1 Business Scenario
This document describes the how to download a master data hierarchy to a flat file. The file format
matches the hierarchy upload format for sorted and time-depended hierarchies (IDOC).
2 Introduction
A custom program is being provided that can be used to easily download any master data hierarchy.
-1-
Note: If the file exists already, it will be overwritten with the current hierarchy.
If the download was successful, then a popup is displayed:
-2-
-3-
Select the options Sorted hierarchy, Interval, and Time-dependent. The structure will then match
the download format.
-4-
-5-
4 Comments
Please note that Open Hub licenses are required if data is to be extracted and transferred from mySAP BI
to third party target systems.
5 Appendix
************************************************************************
* SAP Consulting BW Tools:
* -----------------------* Download hierarchy into a flat file. The file has the correct format
* for uploading into BW via a hierarchy InfoSource (IDOC).
*
* (c) SAP AG 2003-2004
MFB, SAP Labs LLC
* created:
2003-07-23
* last update: 2004-05-02
************************************************************************
* 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,
-6-
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,
-7-
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
g_s_hiedir
TYPE
g_subrc
TYPE
g_t_hiedirt
TYPE
g_s_hierstruc
TYPE
g_t_hierstruc
TYPE
g_s_thiernode
TYPE
g_t_thiernode
TYPE
nodename,
g_s_hierintvl
TYPE
g_t_hierintvl
TYPE
g_s_message
TYPE
g_t_message
TYPE
g_s_chavlinfo
TYPE
g_t_chavlinfo
TYPE
rsndi_s_hiesel,
rsndi_s_hiedir,
sy-subrc,
TABLE OF rshiedirt,
rssh_s_htab,
TABLE OF rssh_s_htab,
rsthiernode,
TABLE OF rsthiernode WITH KEY langu hieid objvers
rssh_s_jtab,
TABLE OF rssh_s_jtab WITH KEY hieid objvers nodeid,
rsndi_s_message,
TABLE OF rsndi_s_message,
rsdm_s_chavlinfo,
rsdm_t_chavlinfo.
* File
DATA:
g_fname
g_struct_s
g_struct_t
gr_s_file
gr_t_file
TYPE
TYPE
TYPE
TYPE
TYPE
FIELD-SYMBOLS:
<g_langu>
<g_s_file>
<g_t_file>
TYPE ANY,
TYPE ANY,
TYPE STANDARD TABLE.
string,
string,
string,
REF TO data,
REF TO data.
TYPE rrh1_s_hiertxt,
TYPE rrh1_t_hiertxt.
-8-
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
l_filename2
l_path
l_fullpath
l_action
TYPE
TYPE
TYPE
TYPE
TYPE
string,
string,
string,
string,
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.
-9-
* 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
g_s_hiesel-hienm
g_s_hiesel-version
g_s_hiesel-iobjnm
g_s_hiesel-dateto
=
=
=
=
=
rs_c_objvers-active.
p_hienm.
p_vers.
p_iobjnm.
p_dateto.
- 10 -
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.
- 11 -
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.
- 12 -
www.sdn.sap.com/irj/sdn/howtoguides