ABAP创建透明表

来源:互联网 发布:淘宝店微信推广 编辑:程序博客网 时间:2024/04/30 09:06
REPORT ztest_create_table.
PARAMETERStabname TYPE char32 OBLIGATORY.
DATAlt_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.

DATAlv_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'.
原创粉丝点击