Malyava написала:
Добрый день, коллеги!
Подскажите пожалуйста, как получить иерархию в продуктиве?
из Теста не переносится....
Если надо переносить, подскажите как?
Пробовала через RSA1 -> Связь с переносом -> По типам -> Другие типы -> HIER. так там выбрать иерархию нельзя, когда нажимаю "Выбрать объекты", сап говорит, что "Справка по значениям для объектов типа 'HIER'(HIER) недоступна." хоть я вовсе и не справку спрашиваю.
может что-то где-то недонастноено?
С выбором языка...
Code:
*&---------------------------------------------------------------------*
*& Report Z_BW_HIERARCHY_DOWNLOAD *
*& *
*&---------------------------------------------------------------------*
*& *
*& *
*&---------------------------------------------------------------------*
REPORT Z_BW_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,
p_langRU as CHECKBOX DEFAULT 'X',
p_langEN as CHECKBOX DEFAULT 'X'.
SELECTION-SCREEN END OF BLOCK b2.
SELECTION-SCREEN BEGIN OF BLOCK b3 WITH FRAME.
PARAMETERS:
p_fname LIKE rlgrap-filename DEFAULT 'D:\UPLOAD\Hier\'.
SELECTION-SCREEN END OF BLOCK b3.
* File structure
TYPES:
BEGIN OF Y_S_HIERFILE_L,
nodeid TYPE rshienodid,
iobjnm TYPE rsiobjnm,
nodename TYPE rsnodename,
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_L.
TYPES: BEGIN OF D_FILE,
DATA(255) TYPE C,
END OF D_FILE.
***********************************************************
DATA: G_STRUCT_S TYPE Y_S_HIERFILE_L.
DATA: Y_T_HIERFILE_L TYPE Y_S_HIERFILE_L OCCURS 1 WITH HEADER LINE.
DATA: T_FILE TYPE D_FILE OCCURS 10 WITH HEADER LINE.
DATA: T_LANG TYPE LANGU OCCURS 10 WITH HEADER LINE.
***********************************************************
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.
*-----------------------------------------------------------------------
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 = 'csv'
default_file_name = l_filename1
file_filter = 'All Files (*.*)|*.*|Text files (*.csv)|*.csv'
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.
* Lang
REFRESH T_LANG.
CLEAR T_LANG.
if p_langRU = 'X'.
T_LANG = 'R'.
Append T_LANG.
endif.
if p_langEN = 'X'.
T_LANG = 'E'.
Append T_LANG.
endif.
IF NOT p_langu IS INITIAL and p_langu <> 'R' and p_langu <> 'E'.
T_LANG = p_langu.
Append T_LANG.
ENDIF.
IF T_LANG IS INITIAL.
T_LANG = sy-langu.
Append T_LANG.
ENDIF.
* dateto
IF p_dateto IS INITIAL.
p_dateto = '99991231'.
ENDIF.
* Get hierarchy into internal tables
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.
* Process errors
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.
* Nodes
REFRESH T_FILE.
LOOP AT T_LANG.
REFRESH Y_T_HIERFILE_L.
LOOP AT g_t_hierstruc INTO g_s_hierstruc.
CLEAR Y_T_HIERFILE_L.
MOVE-CORRESPONDING g_s_hierstruc TO Y_T_HIERFILE_L.
* Texts for nodes
READ TABLE g_t_thiernode INTO g_s_thiernode WITH TABLE KEY
langu = T_LANG
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 Y_T_HIERFILE_L.
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 = T_LANG
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 Y_T_HIERFILE_L.
ENDIF.
ENDIF.
ENDIF.
Y_T_HIERFILE_L-langu = T_LANG.
IF Y_T_HIERFILE_L-txtsh EQ ''.
MOVE Y_T_HIERFILE_L-txtlg TO Y_T_HIERFILE_L-txtsh.
ENDIF.
IF Y_T_HIERFILE_L-txtmd EQ ''.
MOVE Y_T_HIERFILE_L-txtlg TO Y_T_HIERFILE_L-txtmd.
ENDIF.
*
* Модификация стандартной программы
*
CLEAR T_FILE.
CONCATENATE
Y_T_HIERFILE_L-nodeid
Y_T_HIERFILE_L-iobjnm
Y_T_HIERFILE_L-nodename
Y_T_HIERFILE_L-link
Y_T_HIERFILE_L-parentid
Y_T_HIERFILE_L-childid
Y_T_HIERFILE_L-nextid
Y_T_HIERFILE_L-langu
Y_T_HIERFILE_L-txtsh
Y_T_HIERFILE_L-txtmd
Y_T_HIERFILE_L-txtlg
INTO T_FILE-DATA SEPARATED BY ';'.
* CONDENSE T_FILE-DATA NO-GAPS.
CONDENSE T_FILE-DATA.
APPEND T_FILE.
* WRITE: / T_FILE-DATA.
ENDLOOP.
ENDLOOP.
* Download output table
DATA:
g_fname TYPE string.
g_fname = p_fname.
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
filename = g_fname
write_field_separator = space
TABLES
data_tab = 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.