REPORT ztest_create_table
.
PARAMETERS
: tabname
TYPE char32 OBLIGATORY
.
DATA
: lt_new_object
TYPE comt_gox_def_header
,
lt_old_object
LIKE lt_new_object
,
lv_dbtab1_name
TYPE char32
,
ls_new_object
LIKE
LINE
OF lt_new_object
,
ls_new_object_details
TYPE
LINE
OF comt_gox_table_entry_fields
,
lt_returntab
TYPE bapirettab
,
ls_return
LIKE
LINE
OF lt_returntab
.
ls_new_object
–object_type
=
‘TABLE’
.
ls_new_object
–object_name
= tabname
.
*TRY.
* data(lv_guid) = cl_system_uuid=>if_system_uuid_static~create_uuid_c32( ).
* CATCH cx_uuid_error .
*ENDTRY.
DATA
:lv_guid
TYPE sysuuid_c32
.
DATA
:lv_parent_guid
TYPE comt_gox_key_guid
.
TRY
.
CALL
METHOD cl_system_uuid
=>if_system_uuid_static
~create_uuid_c32
RECEIVING
uuid
= lv_guid
.
CATCH cx_uuid_error
.
ENDTRY
.
* technical setting
ls_new_object
–key_guid
= lv_guid
.
lv_parent_guid
= ls_new_object
–key_guid
.
ls_new_object_details
–fieldname
=
‘TABCLASS’
.
ls_new_object_details
–fieldvalue
=
‘TRANSP’
.
APPEND ls_new_object_details
TO ls_new_object
–details
.
CLEAR ls_new_object_details
.
ls_new_object_details
–fieldname
=
‘TABKAT’
.
ls_new_object_details
–fieldvalue
=
‘0’
.
APPEND ls_new_object_details
TO ls_new_object
–details
.
CLEAR ls_new_object_details
.
ls_new_object_details
–fieldname
=
‘TABART’
.
ls_new_object_details
–fieldvalue
=
‘APPL2’
.
APPEND ls_new_object_details
TO ls_new_object
–details
.
CLEAR ls_new_object_details
.
ls_new_object_details
–fieldname
=
‘PUFFERUNG’
.
ls_new_object_details
–fieldvalue
=
‘X’
.
APPEND ls_new_object_details
TO ls_new_object
–details
.
CLEAR ls_new_object_details
.
ls_new_object_details
–fieldname
=
‘CONTFLAG’
.
ls_new_object_details
–fieldvalue
=
‘S’
.
APPEND ls_new_object_details
TO ls_new_object
–details
.
CLEAR ls_new_object_details
.
ls_new_object_details
–fieldname
=
‘MAINFLAG’
.
ls_new_object_details
–fieldvalue
=
‘X’
.
APPEND ls_new_object_details
TO ls_new_object
–details
.
CLEAR ls_new_object_details
.
ls_new_object_details
–fieldname
=
‘BUFFALLOW’
.
ls_new_object_details
–fieldvalue
=
‘X’
.
APPEND ls_new_object_details
TO ls_new_object
–details
.
CLEAR ls_new_object_details
.
ls_new_object_details
–fieldname
=
‘SCHFELDANZ’
.
ls_new_object_details
–fieldvalue
=
‘0’
.
APPEND ls_new_object_details
TO ls_new_object
–details
.
CLEAR ls_new_object_details
.
APPEND ls_new_object
TO lt_new_object
.
CLEAR ls_new_object
.
ls_new_object
–object_type
=
‘TABLE_FIELD’
.
TRY
.
lv_guid
= cl_system_uuid
=>if_system_uuid_static
~create_uuid_c32
(
)
.
CATCH cx_uuid_error
.
ENDTRY
.
ls_new_object
–key_guid
= lv_guid
.
ls_new_object
–parent_key
= lv_parent_guid
.
lv_parent_guid
= lv_guid
.
ls_new_object
–object_name
=
‘CODE_VALUE’
.
“field name
ls_new_object_details
–fieldname
=
‘POSITION’
.
ls_new_object_details
–fieldvalue
=
‘1’
.
APPEND ls_new_object_details
TO ls_new_object
–details
.
CLEAR ls_new_object_details
.
ls_new_object_details
–fieldname
=
‘KEYFLAG’
.
“Key
ls_new_object_details
–fieldvalue
=
‘X’
.
APPEND ls_new_object_details
TO ls_new_object
–details
.
CLEAR ls_new_object_details
.
ls_new_object_details
–fieldname
=
‘NOTNULL’
.
“initial
ls_new_object_details
–fieldvalue
=
‘X’
.
APPEND ls_new_object_details
TO ls_new_object
–details
.
CLEAR ls_new_object_details
.
ls_new_object_details
–fieldname
=
‘ROLLNAME’
.
ls_new_object_details
–fieldvalue
=
‘COMT_PRODUCT_ID’
.
“data element
APPEND ls_new_object_details
TO ls_new_object
–details
.
CLEAR ls_new_object_details
.
APPEND ls_new_object
TO lt_new_object
.
CLEAR ls_new_object
.
REFRESH lt_returntab
.
CLEAR lv_parent_guid
.
lv_dbtab1_name
= tabname
.
CALL
FUNCTION
‘GOX_GEN_TABLE_STD’
EXPORTING
iv_object_name
= lv_dbtab1_name
it_object_new
= lt_new_object
it_object_old
= lt_old_object
iv_devclass
=
‘$TMP’
“local
IMPORTING
et_bapireturn
= lt_returntab
.
CHECK lt_returntab
IS
INITIAL
.
DATA
: lv_ddobjname
TYPE ddobjname
,
ls_dd02v
TYPE dd02v
.
lv_ddobjname
= lv_dbtab1_name
.
CALL
FUNCTION
‘DDIF_TABL_GET’
EXPORTING
name
= lv_ddobjname
state
=
‘A’
langu
= sy
–langu
IMPORTING
dd02v_wa
= ls_dd02v
EXCEPTIONS
illegal_input
=
1
OTHERS
=
2
.
IF sy
–subrc <>
0
.
RETURN
.
ENDIF
.
ls_dd02v
–mainflag
=
‘X’
.
CALL
FUNCTION
‘DDIF_TABL_PUT’
EXPORTING
name
= lv_ddobjname
dd02v_wa
= ls_dd02v
EXCEPTIONS
tabl_not_found
=
1
name_inconsistent
=
2
tabl_inconsistent
=
3
put_failure
=
4
put_refused
=
5
OTHERS
=
6
.
IF sy
–subrc <>
0
.
RETURN
.
ENDIF
.
* active table
CALL
FUNCTION
‘DDIF_TABL_ACTIVATE’
EXPORTING
name
= lv_ddobjname
auth_chk
=
‘ ‘
.
CHECK sy
–subrc
=
0
.
WRITE
:/
‘Table: ‘
, lv_ddobjname
,
‘ generated successfully’
.
原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/20108.html