‎2010 Jun 30 7:45 AM
Hi,
I'm using the below code to create a structure at runtime. This creates the structure at runtime succesfully but instead of inserting that in the child request (task), it inserts the same into partent request (transport request).PLease help.
&----
*& Report ZTEST_CREATE_DBTABLE
*&
&----
*&
*&
&----
REPORT ZCREATE_DBTABLE11.
constants:
c_reqtext TYPE e07t-as4text
VALUE 'ODI Transport Request',
c_request TYPE e070-trfunction
VALUE 'K',
c_task TYPE e070-trfunction
VALUE 'S'.
DATA : BEGIN OF struct OCCURS 0,
tabname TYPE dd02v-tabname,
END OF struct.
DATA:
wa_headerstruct LIKE dd02v,
t_structure TYPE STANDARD TABLE OF dd03p
WITH HEADER LINE,
trans_req_no TYPE e070-trkorr,
task_number TYPE e070-trkorr,
wa_struct LIKE LINE OF struct,
obj_name TYPE tadir-obj_name,
es_tadir TYPE tadir,
et_log TYPE sprot_u_tab,
e071 TYPE STANDARD TABLE OF e071,
lv_sysid TYPE srcsystem,
wa_e071 TYPE e071.
START-OF-SELECTION.
CLEAR trans_req_no.
CALL FUNCTION 'IW_C_CREATE_TRANSPORT_REQUEST'
EXPORTING
description = c_reqtext
transport_kind = c_request
langu = sy-langu
IMPORTING
commfile = trans_req_no
EXCEPTIONS
language_missing = 1
number_range_full = 2
unallowed_trfunction = 3
no_authorization = 4
create_transport_error = 5
OTHERS = 6.
IF sy-subrc <> 0.
CLEAR trans_req_no.
ENDIF.
CLEAR task_number.
CALL FUNCTION 'TRINT_INSERT_NEW_COMM'
EXPORTING
wi_kurztext = c_reqtext
wi_trfunction = c_task
iv_username = sy-uname
wi_strkorr = trans_req_no
wi_client = sy-mandt
IMPORTING
we_trkorr = task_number.
IF sy-subrc <> 0.
CLEAR task_number.
ENDIF.
CLEAR t_structure.
REFRESH t_structure.
wa_headerstruct-tabname = 'ZTEST_DBTAA'.
wa_headerstruct-ddlanguage = sy-langu.
wa_headerstruct-tabclass = 'INTTAB'.
wa_headerstruct-ddtext = 'ODI GET SAP MODULES '.
t_structure-tabname = wa_headerstruct-tabname.
t_structure-fieldname = 'FIELD1'.
t_structure-position = '1'.
t_structure-rollname = 'CHAR20'.
APPEND t_structure.
CLEAR t_structure.
t_structure-tabname = wa_headerstruct-tabname.
t_structure-fieldname = 'SHORT_TEXT'.
t_structure-position = '2'.
t_structure-rollname = 'CHAR40'.
APPEND t_structure.
CLEAR t_structure.
struct-tabname = wa_headerstruct-tabname.
APPEND struct.
CLEAR struct.
CALL FUNCTION 'DDIF_TABL_PUT'
EXPORTING
name = wa_headerstruct-tabname
dd02v_wa = wa_headerstruct
TABLES
dd03p_tab = t_structure
EXCEPTIONS
tabl_not_found = 1
name_inconsistent = 2
tabl_inconsistent = 3
put_failure = 4
put_refused = 5
OTHERS = 6.
CALL FUNCTION 'DDIF_TABL_ACTIVATE'
EXPORTING
name = wa_headerstruct-tabname
auth_chk = space
EXCEPTIONS
not_found = 1
put_failure = 2
OTHERS = 3.
LOOP AT struct INTO wa_struct.
obj_name = wa_struct-tabname.
lv_sysid = sy-sysid.
CALL FUNCTION 'TRINT_TADIR_INSERT'
EXPORTING
author = sy-uname
masterlang = sy-langu
devclass = 'ZODI_DEVCLASS'
genflag = ' '
object = 'TABL'
obj_name = obj_name
pgmid = 'R3TR'
srcsystem = lv_sysid
IMPORTING
es_tadir = es_tadir
EXCEPTIONS
object_exists_global = 1
object_exists_local = 2
OTHERS = 3.
wa_e071-trkorr = trans_req_no.
wa_e071-as4pos = '1'.
wa_e071-pgmid = 'R3TR'.
wa_e071-object = 'TABL'.
wa_e071-obj_name = obj_name.
wa_e071-lockflag = 'X'.
APPEND wa_e071 TO e071.
CLEAR wa_e071.
wa_e071-trkorr = trans_req_no.
wa_e071-as4pos = '2'.
wa_e071-pgmid = 'LIMU'.
wa_e071-object = 'TABD'.
wa_e071-obj_name = obj_name.
wa_e071-lockflag = 'X'.
APPEND wa_e071 TO e071.
CLEAR wa_e071.
CALL FUNCTION 'TRINT_REQUEST_CHOICE'
EXPORTING
iv_suppress_dialog = 'X'
iv_request_types = 'KL'
iv_request = trans_req_no
IMPORTING
et_log = et_log
TABLES
it_e071 = e071.
ENDLOOP.
‎2010 Jul 29 10:45 AM
Hi,
The code provided here puts your object inside the task instead of the request. As you see, you only have to populate the structure WA_E071 for the object TABL. You don't need the internal table.
I have tested this and it seems to work properly.
Hope it helps,
Tom.
wa_e071-trkorr = task_number. "trans_req_no.
wa_e071-as4pos = '1'.
wa_e071-pgmid = 'R3TR'.
wa_e071-object = 'TABL'.
wa_e071-obj_name = obj_name.
wa_e071-lockflag = 'X'.
* APPEND wa_e071 TO e071.
* CLEAR wa_e071.
* wa_e071-trkorr = trans_req_no.
* wa_e071-as4pos = '2'.
* wa_e071-pgmid = 'LIMU'.
* wa_e071-object = 'TABD'.
* wa_e071-obj_name = obj_name.
* wa_e071-lockflag = 'X'.
* APPEND wa_e071 TO e071.
* CLEAR wa_e071.
* CALL FUNCTION 'TRINT_REQUEST_CHOICE'
* EXPORTING
* iv_suppress_dialog = 'X'
* iv_request_types = 'KL'
* iv_request = trans_req_no
* IMPORTING
* et_log = et_log
* TABLES
* it_e071 = e071.
CALL FUNCTION 'TR_APPEND_TO_COMM'
EXPORTING
pi_korrnum = task_number
wi_e071 = wa_e071
EXCEPTIONS
no_authorization = 1
no_systemname = 2
no_systemtype = 3
tr_check_keysyntax_error = 4
tr_check_obj_error = 5
tr_enqueue_failed = 6
tr_ill_korrnum = 7
tr_key_without_header = 8
tr_lockmod_failed = 9
tr_lock_enqueue_failed = 10
tr_modif_only_in_modif_order = 11
tr_not_owner = 12
tr_no_append_of_corr_entry = 13
tr_no_append_of_c_member = 14
tr_no_shared_repairs = 15
tr_order_not_exist = 16
tr_order_released = 17
tr_order_update_error = 18
tr_repair_only_in_repair_order = 19
tr_wrong_order_type = 20
wrong_client = 21
OTHERS = 22.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.