2057 lines
65 KiB
ABAP
2057 lines
65 KiB
ABAP
class ZCL_COPA_TOPDOWN_INSTALL definition
|
|
public
|
|
create public .
|
|
|
|
public section.
|
|
|
|
types:
|
|
BEGIN OF ty_bpsel,
|
|
sort TYPE rke_lfd4,
|
|
fnam TYPE fieldname,
|
|
sign TYPE raldb_sign,
|
|
option TYPE raldb_opti,
|
|
low TYPE rke_low_l,
|
|
high TYPE rke_high_l,
|
|
END OF ty_bpsel .
|
|
types:
|
|
* types:
|
|
* ty_zcotd_tab TYPE STANDARD TABLE OF zcotd1200 WITH EMPTY KEY .
|
|
ty_bpsel_tab TYPE STANDARD TABLE OF ty_bpsel WITH EMPTY KEY .
|
|
|
|
methods CONSTRUCTOR .
|
|
methods CREATE_INIT_TABLE
|
|
importing
|
|
!ERKRS type ERKRS .
|
|
methods START_PACKAGE_INSTALL
|
|
importing
|
|
value(ERKRS) type ERKRS
|
|
value(TABNAME) type TABNAME default 'ZCOTD1000'
|
|
value(FUNCTION_GROUP) type RS38L_AREA
|
|
value(CREATE_ELEMENT_YN) type BOE_BOOL default 'X'
|
|
value(CREATE_TABLE_YN) type BOE_BOOL default 'X'
|
|
value(CREATE_FUNCTION_YN) type BOE_BOOL default 'X'
|
|
exporting
|
|
!RESULT type BAPIRET2 .
|
|
PROTECTED SECTION.
|
|
|
|
private section.
|
|
|
|
types:
|
|
BEGIN OF ty_mng_table,
|
|
type TYPE db2type,
|
|
tb_name TYPE tabname,
|
|
text TYPE mssviewortable,
|
|
END OF ty_mng_table .
|
|
types:
|
|
tt_dfies TYPE STANDARD TABLE OF dfies WITH DEFAULT KEY .
|
|
types:
|
|
tt_bdcdata TYPE STANDARD TABLE OF bdcdata WITH DEFAULT KEY .
|
|
types:
|
|
" 클래스내에서 필요한 기본 정보
|
|
BEGIN OF ty_working_info,
|
|
perio TYPE jahrper,
|
|
variant TYPE covariant,
|
|
END OF ty_working_info .
|
|
types:
|
|
BEGIN OF ty_key_map,
|
|
key_string TYPE string,
|
|
dist_id TYPE PBR_SEQRE,
|
|
END OF ty_key_map .
|
|
types:
|
|
tt_key_map TYPE HASHED TABLE OF ty_key_map
|
|
WITH UNIQUE KEY key_string .
|
|
types:
|
|
tt_dd03p TYPE STANDARD TABLE OF dd03p WITH DEFAULT KEY .
|
|
|
|
data:
|
|
gt_mng_table TYPE TABLE OF ty_mng_table .
|
|
data MT_SENDER_KEYS type TT_KEY_MAP .
|
|
data:
|
|
gv_dist_counter TYPE n LENGTH 9 value '000000000' ##NO_TEXT.
|
|
data GV_TABNAME type COVAD-TABNAME .
|
|
data GV_MESSAGE type STRING .
|
|
data GV_SOURCE type TABNAME .
|
|
data GV_MANAGER type TABNAME .
|
|
data GV_VARIANT type TABNAME .
|
|
data GV_SENDER type TABNAME .
|
|
data GV_RECEIVER type TABNAME .
|
|
data GV_RESULT type TABNAME .
|
|
data GV_TARGET type TABNAME .
|
|
data GV_DISTINFO type TABNAME .
|
|
data GV_DISTRULE type TABNAME .
|
|
data WORKING_INFO type TY_WORKING_INFO .
|
|
|
|
methods CREATE_INIT_DATA_ELEMENTS
|
|
returning
|
|
value(RESULT) type BAPIRET2 .
|
|
methods CREATE_INIT_DATA_TABLE
|
|
importing
|
|
value(ERKRS) type ERKRS
|
|
value(TABNAME) type TABNAME
|
|
returning
|
|
value(RESULT) type BAPIRET2 .
|
|
methods CREATE_INIT_FUNCTION
|
|
importing
|
|
value(FUNCTION_GROUP) type RS38L_AREA
|
|
value(TABNAME) type TABNAME
|
|
returning
|
|
value(RESULT) type BAPIRET2 .
|
|
methods GET_PACKAGE_INFO
|
|
importing
|
|
value(ERKRS) type ERKRS
|
|
returning
|
|
value(RESULT) type BAPIRET2 .
|
|
methods GENERATE_TABLE_FIELD
|
|
importing
|
|
value(TABNAME) type TABNAME
|
|
value(TYPE) type DB2TYPE
|
|
value(POSITION_START) type TABFDPOS
|
|
exporting
|
|
!CBO_DD03P type TT_DD03P
|
|
!FIELD_EXCEPTS type TT_DD03P
|
|
returning
|
|
value(POSITION) type TABFDPOS .
|
|
methods CREATE_INIT_STRUCTURE
|
|
importing
|
|
!ERKRS type ERKRS .
|
|
methods CREATE_INIT_STRUCTURE_EX_MANDT
|
|
importing
|
|
!ERKRS type ERKRS .
|
|
ENDCLASS.
|
|
|
|
|
|
|
|
CLASS ZCL_COPA_TOPDOWN_INSTALL IMPLEMENTATION.
|
|
|
|
|
|
METHOD constructor.
|
|
CALL FUNCTION 'POPUP_TO_DISPLAY_TEXT'
|
|
EXPORTING
|
|
titel = '주의'
|
|
textline1 = TEXT-017
|
|
textline2 = TEXT-018.
|
|
ENDMETHOD.
|
|
|
|
|
|
METHOD create_init_data_elements.
|
|
DATA: ls_domain TYPE dd01v,
|
|
ls_element TYPE dd04v,
|
|
lt_domain_values TYPE TABLE OF dd07v,
|
|
ls_domain_value TYPE dd07v,
|
|
lv_message TYPE string,
|
|
lx_error TYPE REF TO cx_root.
|
|
|
|
DATA : iv_domain_name TYPE dom_ref VALUE 'ZTBLS',
|
|
iv_elemnt_name TYPE rollname VALUE 'ZTBLS'.
|
|
* DATA : iv_domain_name TYPE dom_ref VALUE 'ZTST', "테스트
|
|
* iv_elemnt_name TYPE rollname VALUE 'ZTST'. "테스트
|
|
|
|
* 1. Domain 생성
|
|
|
|
" Domain 속성 정의
|
|
* ls_domain-domname = iv_domain_name.
|
|
* ls_domain-ddlanguage = sy-langu.
|
|
* ls_domain-datatype = 'CHAR'.
|
|
* ls_domain-leng = 1.
|
|
* ls_domain-ddtext = '테이블 유형'.
|
|
|
|
ls_domain = VALUE #(
|
|
domname = iv_domain_name
|
|
ddlanguage = sy-langu
|
|
datatype = 'CHAR'
|
|
leng = '1'
|
|
ddtext = '테이블 유형'
|
|
).
|
|
|
|
" 값 범위 설정
|
|
ls_domain_value = VALUE #(
|
|
domname = iv_domain_name valpos = '0001' ddlanguage = sy-langu
|
|
domvalue_l = '1' ddtext = 'CBO 테이블 관리 테이블' ).
|
|
APPEND ls_domain_value TO lt_domain_values.
|
|
|
|
ls_domain_value = VALUE #(
|
|
domname = iv_domain_name valpos = '0002' ddlanguage = sy-langu
|
|
domvalue_l = '2' ddtext = '배부 기준 정보(월별)' ).
|
|
APPEND ls_domain_value TO lt_domain_values.
|
|
|
|
ls_domain_value = VALUE #(
|
|
domname = iv_domain_name valpos = '0003' ddlanguage = sy-langu
|
|
domvalue_l = '3' ddtext = '배부 대상 테이블' ).
|
|
APPEND ls_domain_value TO lt_domain_values.
|
|
|
|
ls_domain_value = VALUE #(
|
|
domname = iv_domain_name valpos = '0004' ddlanguage = sy-langu
|
|
domvalue_l = '4' ddtext = '배부 기준 테이블' ).
|
|
APPEND ls_domain_value TO lt_domain_values.
|
|
|
|
ls_domain_value = VALUE #(
|
|
domname = iv_domain_name valpos = '0005' ddlanguage = sy-langu
|
|
domvalue_l = '5' ddtext = '배부 결과 테이블' ).
|
|
APPEND ls_domain_value TO lt_domain_values.
|
|
|
|
ls_domain_value = VALUE #(
|
|
domname = iv_domain_name valpos = '0006' ddlanguage = sy-langu
|
|
domvalue_l = '6' ddtext = '전표 발행 테이블' ).
|
|
APPEND ls_domain_value TO lt_domain_values.
|
|
|
|
ls_domain_value = VALUE #(
|
|
domname = iv_domain_name valpos = '0007' ddlanguage = sy-langu
|
|
domvalue_l = '7' ddtext = '배부 조건 세부 정보' ).
|
|
APPEND ls_domain_value TO lt_domain_values.
|
|
|
|
ls_domain_value = VALUE #(
|
|
domname = iv_domain_name valpos = '0008' ddlanguage = sy-langu
|
|
domvalue_l = '8' ddtext = '배부 조건 Customizing' ).
|
|
APPEND ls_domain_value TO lt_domain_values.
|
|
|
|
" 도메인 생성
|
|
CALL FUNCTION 'DDIF_DOMA_PUT'
|
|
EXPORTING
|
|
name = ls_domain-domname
|
|
dd01v_wa = ls_domain
|
|
TABLES
|
|
dd07v_tab = lt_domain_values.
|
|
|
|
IF sy-subrc <> 0.
|
|
" 실패 메시지 추가
|
|
result = VALUE #(
|
|
type = 'E'
|
|
id = 'FAIL'
|
|
number = '000'
|
|
message = 'Domain 생성 중 오류가 발생하였습니다.' ).
|
|
EXIT.
|
|
ENDIF.
|
|
|
|
" 도메인 활성화
|
|
CALL FUNCTION 'DDIF_DOMA_ACTIVATE'
|
|
EXPORTING
|
|
name = ls_domain-domname.
|
|
|
|
IF sy-subrc <> 0.
|
|
" 실패 메시지 추가
|
|
result = VALUE #(
|
|
type = 'E'
|
|
id = 'FAIL'
|
|
number = '000'
|
|
message = 'Domain 활성화 과정에서 오류가 발생하였습니다.' ).
|
|
EXIT.
|
|
ENDIF.
|
|
|
|
|
|
|
|
|
|
* 2. Data Elements 생성
|
|
|
|
" 데이터 엘리먼트 속성 정의
|
|
ls_element = VALUE #(
|
|
rollname = iv_elemnt_name
|
|
domname = iv_domain_name
|
|
ddlanguage = sy-langu
|
|
ddtext = '유형'
|
|
headlen = 55
|
|
scrlen1 = 10
|
|
scrlen2 = 20
|
|
scrlen3 = 40 ).
|
|
|
|
" 데이터 엘리먼트 생성/업데이트
|
|
CALL FUNCTION 'DDIF_DTEL_PUT'
|
|
EXPORTING
|
|
name = ls_element-rollname
|
|
dd04v_wa = ls_element
|
|
EXCEPTIONS
|
|
element_not_found = 1
|
|
illegal_action = 2
|
|
OTHERS = 3.
|
|
|
|
IF sy-subrc <> 0.
|
|
" 실패 메시지 추가
|
|
result = VALUE #(
|
|
type = 'E'
|
|
id = 'FAIL'
|
|
number = '000'
|
|
message = 'Data Elements 생성 중 오류가 발생하였습니다.' ).
|
|
EXIT.
|
|
ENDIF.
|
|
|
|
" 데이터 엘리먼트 활성화
|
|
CALL FUNCTION 'DDIF_DTEL_ACTIVATE'
|
|
EXPORTING
|
|
name = ls_element-rollname
|
|
EXCEPTIONS
|
|
not_found = 1
|
|
put_failure = 2
|
|
OTHERS = 3.
|
|
|
|
IF sy-subrc <> 0.
|
|
" 실패 메시지 추가
|
|
result = VALUE #(
|
|
type = 'E'
|
|
id = 'FAIL'
|
|
number = '000'
|
|
message = 'Data Elements 활성화 과정에서 오류가 발생하였습니다.' ).
|
|
EXIT.
|
|
ENDIF.
|
|
|
|
" 성공 메시지 추가
|
|
result = VALUE #(
|
|
type = 'S'
|
|
id = 'SUCCESS'
|
|
number = '000'
|
|
message = 'Domain과 Data Element가 성공적으로 생성되었습니다' ).
|
|
|
|
|
|
|
|
ENDMETHOD.
|
|
|
|
|
|
METHOD create_init_data_table.
|
|
" 데이터 선언
|
|
DATA: lt_dd02v TYPE TABLE OF dd02v,
|
|
ls_dd02v TYPE dd02v,
|
|
lt_dd03p TYPE TABLE OF dd03p,
|
|
ls_dd03p TYPE dd03p,
|
|
lv_rc TYPE sy-subrc,
|
|
ls_dd09v TYPE dd09v. " 기술 설정 구조체 추가.
|
|
|
|
DATA : lv_tbtext TYPE as4text VALUE 'CO-PA Top-Down 배부 관련 테이블'.
|
|
|
|
" 테이블 헤더 정보 설정
|
|
ls_dd02v = VALUE #(
|
|
tabname = tabname
|
|
ddlanguage = sy-langu
|
|
tabclass = 'TRANSP'
|
|
clidep = 'X' " 클라이언트 종속
|
|
ddtext = lv_tbtext
|
|
contflag = 'A' " 활성
|
|
mainflag = 'X' " 메인 테이블
|
|
).
|
|
APPEND ls_dd02v TO lt_dd02v.
|
|
|
|
" 테이블 필드 정보 설정
|
|
CLEAR ls_dd03p.
|
|
ls_dd03p = VALUE #(
|
|
tabname = tabname
|
|
fieldname = 'MANDT'
|
|
keyflag = 'X'
|
|
notnull = 'X'
|
|
rollname = 'MANDT'
|
|
ddlanguage = sy-langu
|
|
position = '0001'
|
|
ddtext = '클라이언트'
|
|
).
|
|
APPEND ls_dd03p TO lt_dd03p.
|
|
|
|
ls_dd03p = VALUE #(
|
|
tabname = tabname
|
|
fieldname = 'ERKRS'
|
|
keyflag = 'X'
|
|
notnull = 'X'
|
|
rollname = 'ERKRS'
|
|
ddlanguage = sy-langu
|
|
position = '0002'
|
|
ddtext = '경영단위'
|
|
).
|
|
APPEND ls_dd03p TO lt_dd03p.
|
|
|
|
ls_dd03p = VALUE #(
|
|
tabname = tabname
|
|
fieldname = 'TYPE'
|
|
keyflag = 'X'
|
|
notnull = 'X'
|
|
rollname = 'ZTBLS'
|
|
ddlanguage = sy-langu
|
|
position = '0003'
|
|
ddtext = '유형'
|
|
).
|
|
APPEND ls_dd03p TO lt_dd03p.
|
|
|
|
ls_dd03p = VALUE #(
|
|
tabname = tabname
|
|
fieldname = 'TBNAME'
|
|
* keyflag = 'X'
|
|
* notnull = 'X'
|
|
rollname = 'P15_ORIGT'
|
|
ddlanguage = sy-langu
|
|
position = '0004'
|
|
ddtext = 'Source table'
|
|
).
|
|
APPEND ls_dd03p TO lt_dd03p.
|
|
|
|
|
|
ls_dd03p = VALUE #(
|
|
tabname = tabname
|
|
fieldname = 'TEXT'
|
|
* keyflag = 'X'
|
|
* notnull = 'X'
|
|
rollname = 'MSSVIEWORTABLE'
|
|
ddlanguage = sy-langu
|
|
position = '0005'
|
|
ddtext = 'View or table name'
|
|
).
|
|
APPEND ls_dd03p TO lt_dd03p.
|
|
|
|
" 기술 설정(DD09L) 정보 설정
|
|
CLEAR ls_dd09v.
|
|
ls_dd09v-tabname = tabname.
|
|
ls_dd09v-as4local = 'A'. " 활성화 상태
|
|
ls_dd09v-tabkat = '3'. " 일반 테이블
|
|
ls_dd09v-tabart = 'APPL1'. " 응용 프로그램 테이블
|
|
|
|
" DDIC 함수를 사용하여 테이블 생성
|
|
CALL FUNCTION 'DDIF_TABL_PUT'
|
|
EXPORTING
|
|
name = tabname
|
|
dd02v_wa = ls_dd02v
|
|
TABLES
|
|
dd03p_tab = lt_dd03p
|
|
EXCEPTIONS
|
|
tabl_not_found = 1
|
|
name_inconsistent = 2
|
|
tabl_inconsistent = 3
|
|
put_failure = 4
|
|
put_refused = 5
|
|
OTHERS = 6.
|
|
|
|
IF sy-subrc <> 0.
|
|
" 실패 메시지 추가
|
|
result = VALUE #(
|
|
type = 'E'
|
|
id = 'FAIL'
|
|
number = '000'
|
|
message = 'TABLE 생성 중 오류가 발생하였습니다.' ).
|
|
EXIT.
|
|
ENDIF.
|
|
|
|
" 테이블 활성화
|
|
DATA: lv_as4local TYPE dd02l-as4local.
|
|
|
|
" DDIF_TABL_ACTIVATE 함수 사용하여 테이블 활성화
|
|
CALL FUNCTION 'DDIF_TABL_ACTIVATE'
|
|
EXPORTING
|
|
name = tabname
|
|
auth_chk = 'X'
|
|
EXCEPTIONS
|
|
not_found = 1
|
|
put_failure = 2
|
|
OTHERS = 3.
|
|
|
|
IF sy-subrc <> 0.
|
|
" 실패 메시지 추가
|
|
result = VALUE #(
|
|
type = 'E'
|
|
id = 'FAIL'
|
|
number = '000'
|
|
message = 'TABLE 활성화 과정에서 오류가 발생하였습니다.' ).
|
|
EXIT.
|
|
ENDIF.
|
|
|
|
|
|
* 관리테이블의 기본 데이타를 등록한다.
|
|
DATA : wa_ref TYPE REF TO data, " 동적 워크에어리어
|
|
tab_ref TYPE REF TO data, " 동적 테이블 참조
|
|
lt_fcat TYPE lvc_t_fcat, " 필드카탈로그
|
|
ls_fcat TYPE lvc_s_fcat.
|
|
|
|
FIELD-SYMBOLS: <itab> TYPE STANDARD TABLE, " 동적 테이블용 필드심볼
|
|
<wa> TYPE any, " 동적 워크에어리어 필드심볼
|
|
<field> TYPE any. " 필드값 세팅용
|
|
|
|
* 1. 테이블 구조 메타데이터 가져오기
|
|
CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
|
|
EXPORTING
|
|
i_structure_name = tabname
|
|
CHANGING
|
|
ct_fieldcat = lt_fcat.
|
|
|
|
* 2. 동적 내부테이블과 워크에어리어 생성
|
|
CALL METHOD cl_alv_table_create=>create_dynamic_table
|
|
EXPORTING
|
|
it_fieldcatalog = lt_fcat
|
|
IMPORTING
|
|
ep_table = tab_ref.
|
|
|
|
ASSIGN tab_ref->* TO <itab>.
|
|
|
|
CREATE DATA wa_ref LIKE LINE OF <itab>.
|
|
ASSIGN wa_ref->* TO <wa>.
|
|
|
|
* 3. 필드값 세팅
|
|
ASSIGN COMPONENT 'ERKRS' OF STRUCTURE <wa> TO <field>.
|
|
IF sy-subrc = 0. <field> = erkrs. ENDIF.
|
|
|
|
ASSIGN COMPONENT 'TYPE' OF STRUCTURE <wa> TO <field>.
|
|
IF sy-subrc = 0. <field> = '1'. ENDIF.
|
|
|
|
ASSIGN COMPONENT 'TBNAME' OF STRUCTURE <wa> TO <field>.
|
|
IF sy-subrc = 0. <field> = tabname. ENDIF.
|
|
|
|
ASSIGN COMPONENT 'TEXT' OF STRUCTURE <wa> TO <field>.
|
|
IF sy-subrc = 0. <field> = 'CBO테이블관리'. ENDIF.
|
|
|
|
** 4. 동적 테이블에 데이터 삽입
|
|
INSERT (tabname) FROM <wa>.
|
|
|
|
IF sy-subrc NE 0.
|
|
gv_message = TEXT-005.
|
|
" 실패 메시지 추가
|
|
result = VALUE #(
|
|
type = 'E'
|
|
id = 'FAIL'
|
|
number = '005'
|
|
message = gv_message ).
|
|
EXIT.
|
|
ELSE.
|
|
" 성공 메시지 추가
|
|
result = VALUE #(
|
|
type = 'S'
|
|
id = 'SUCCESS'
|
|
number = '000'
|
|
message = '관리용 TABLE이 성공적으로 생성되었습니다' ).
|
|
|
|
ENDIF.
|
|
ENDMETHOD.
|
|
|
|
|
|
METHOD create_init_function.
|
|
TYPES: ty_rssource TYPE TABLE OF rssource.
|
|
|
|
DATA: lv_function_group TYPE rs38l-area,
|
|
lv_function_name TYPE rs38l-name VALUE 'ZTOPDOWN_ENV',
|
|
lv_short_text TYPE tftit-stext VALUE '테이블명 반환 함수',
|
|
lt_source TYPE ty_rssource,
|
|
lt_export TYPE TABLE OF rsexp.
|
|
|
|
DATA:
|
|
ls_export TYPE rsexp, " RSEXP 구조체 사용
|
|
lv_include TYPE rs38l-include.
|
|
DATA: ls_source TYPE rssource.
|
|
|
|
LV_function_group = function_group.
|
|
|
|
"function 그룹 존재 여부 확인
|
|
SELECT SINGLE area FROM tlibg INTO @DATA(lv_exists)
|
|
WHERE area = @function_group.
|
|
|
|
IF sy-subrc <> 0.
|
|
" 실패 메시지 추가
|
|
result = VALUE #(
|
|
type = 'E'
|
|
id = 'FAIL'
|
|
number = '000'
|
|
message = 'Function 그룹이 존재하지 않습니다.' ).
|
|
EXIT.
|
|
ENDIF.
|
|
|
|
|
|
" Export 파라미터 정의 (정확한 RSEXP 구조체 필드만 사용)
|
|
CLEAR ls_export.
|
|
ls_export-parameter = 'TB_NAME'. " 파라미터명
|
|
ls_export-typ = 'TABNAME'. " DB 필드명 (필수)
|
|
|
|
" OPTIONAL/DEFAULT 필드 제거 (RSEXP 구조체에 없음)
|
|
APPEND ls_export TO lt_export.
|
|
|
|
"생성할 function 소스
|
|
ls_source-line = | tb_name = '{ tabname }'.|.
|
|
APPEND ls_source TO lt_source.
|
|
|
|
" 함수 모듈 생성
|
|
CALL FUNCTION 'RS_FUNCTIONMODULE_INSERT'
|
|
EXPORTING
|
|
funcname = lv_function_name
|
|
function_pool = lv_function_group
|
|
short_text = lv_short_text
|
|
TABLES
|
|
export_parameter = lt_export
|
|
source = lt_source
|
|
EXCEPTIONS
|
|
function_already_exists = 1
|
|
OTHERS = 2.
|
|
|
|
IF sy-subrc <> 0.
|
|
" 실패 메시지 추가
|
|
result = VALUE #(
|
|
type = 'E'
|
|
id = 'FAIL'
|
|
number = '000'
|
|
message = 'Function 생성 중 오류가 발생하였습니다.' ).
|
|
EXIT.
|
|
ENDIF.
|
|
|
|
|
|
|
|
" 성공 메시지 추가
|
|
result = VALUE #(
|
|
type = 'S'
|
|
id = 'SUCCESS'
|
|
number = '000'
|
|
message = '성공적으로 Function이 생성되었습니다.' ).
|
|
|
|
ENDMETHOD.
|
|
|
|
|
|
METHOD create_init_structure.
|
|
|
|
DATA : result TYPE bapiret2,
|
|
lt_dfies TYPE TABLE OF dfies.
|
|
|
|
" 데이터 선언
|
|
DATA: lt_dd02v TYPE TABLE OF dd02v,
|
|
ls_dd02v TYPE dd02v,
|
|
lt_dd03p TYPE TABLE OF dd03p, "MANDT 포함한 구조(Table과 일치)
|
|
ls_dd03p TYPE dd03p,
|
|
|
|
lv_position TYPE tabfdpos VALUE '0000'. "필드 순번
|
|
|
|
|
|
LOOP AT gt_mng_table INTO DATA(ls_struct) WHERE type <> 1. "관리테이블은 생성 제외
|
|
CLEAR : ls_dd02v, lt_dd03p.
|
|
|
|
" 1. 소스 구조 조회
|
|
CALL FUNCTION 'DDIF_FIELDINFO_GET'
|
|
EXPORTING
|
|
tabname = ls_struct-tb_name
|
|
TABLES
|
|
dfies_tab = lt_dfies
|
|
EXCEPTIONS
|
|
not_found = 1
|
|
OTHERS = 2.
|
|
|
|
"타입별로 패키지 내부 고정 명 지정(Rename)
|
|
CASE ls_struct-type.
|
|
WHEN '2'.
|
|
ls_struct-tb_name = 'ZSTOP_VARIANT'.
|
|
WHEN '3'.
|
|
ls_struct-tb_name = 'ZSTOP_SENDER'.
|
|
WHEN '4'.
|
|
ls_struct-tb_name = 'ZSTOP_RECEIVER'.
|
|
WHEN '5'.
|
|
ls_struct-tb_name = 'ZSTOP_RESULT'.
|
|
WHEN '6'.
|
|
ls_struct-tb_name = 'ZSTOP_TARGET'.
|
|
WHEN '7'.
|
|
ls_struct-tb_name = 'ZSTOP_DISTINFO'.
|
|
WHEN '8'.
|
|
ls_struct-tb_name = 'ZSTOP_DISTRULE'.
|
|
ENDCASE.
|
|
|
|
CONCATENATE ls_struct-text '(구조)' INTO ls_struct-text.
|
|
|
|
" 1. 구조 헤더 정보 설정
|
|
ls_dd02v = VALUE #(
|
|
tabname = ls_struct-tb_name
|
|
ddlanguage = sy-langu
|
|
tabclass = 'INTTAB' " 구조체
|
|
clidep = 'X' " 클라이언트 종속
|
|
ddtext = ls_struct-text
|
|
contflag = 'A' " 활성
|
|
mainflag = 'X' " 메인 테이블
|
|
).
|
|
|
|
LOOP AT lt_dfies INTO DATA(dfies).
|
|
CLEAR ls_dd03p.
|
|
lv_position = lv_position + 1.
|
|
|
|
ls_dd03p = VALUE #(
|
|
tabname = ls_struct-tb_name
|
|
fieldname = dfies-fieldname
|
|
rollname = dfies-rollname
|
|
|
|
datatype = dfies-datatype
|
|
leng = dfies-leng
|
|
|
|
reftable = SWITCH #( dfies-reftable WHEN '' THEN ''
|
|
ELSE ls_struct-tb_name )
|
|
reffield = dfies-reffield
|
|
ddlanguage = sy-langu
|
|
position = lv_position
|
|
ddtext = dfies-fieldtext
|
|
).
|
|
APPEND ls_dd03p TO lt_dd03p.
|
|
|
|
ENDLOOP.
|
|
|
|
"1. DDIC 함수를 사용하여 테이블 생성(MANDT 포함 - CRUD시 주요 사용)
|
|
CALL FUNCTION 'DDIF_TABL_PUT'
|
|
EXPORTING
|
|
name = ls_struct-tb_name
|
|
dd02v_wa = ls_dd02v
|
|
TABLES
|
|
dd03p_tab = lt_dd03p
|
|
EXCEPTIONS
|
|
tabl_not_found = 1
|
|
name_inconsistent = 2
|
|
tabl_inconsistent = 3
|
|
put_failure = 4
|
|
put_refused = 5
|
|
OTHERS = 6.
|
|
|
|
IF sy-subrc <> 0.
|
|
"오류 메시지
|
|
gv_message = TEXT-016.
|
|
MESSAGE gv_message TYPE 'E'.
|
|
ENDIF.
|
|
|
|
" 테이블 활성화
|
|
CALL FUNCTION 'DDIF_TABL_ACTIVATE'
|
|
EXPORTING
|
|
name = ls_struct-tb_name
|
|
auth_chk = 'X'
|
|
EXCEPTIONS
|
|
not_found = 1
|
|
put_failure = 2
|
|
OTHERS = 3.
|
|
|
|
IF sy-subrc <> 0.
|
|
"오류 메시지
|
|
gv_message = TEXT-016.
|
|
MESSAGE gv_message TYPE 'E'.
|
|
ENDIF.
|
|
|
|
ENDLOOP.
|
|
|
|
ENDMETHOD.
|
|
|
|
|
|
METHOD create_init_structure_ex_mandt.
|
|
DATA : result TYPE bapiret2,
|
|
lt_dfies TYPE TABLE OF dfies.
|
|
|
|
" 데이터 선언
|
|
DATA: lt_dd02v TYPE TABLE OF dd02v,
|
|
ls_dd02v TYPE dd02v,
|
|
lt_dd03p TYPE TABLE OF dd03p, "MANDT 포함한 구조(Table과 일치)
|
|
ls_dd03p TYPE dd03p,
|
|
|
|
lv_position TYPE tabfdpos VALUE '0000'. "필드 순번
|
|
|
|
|
|
LOOP AT gt_mng_table INTO DATA(ls_struct) WHERE type <> 1. "관리테이블은 생성 제외
|
|
CLEAR : ls_dd02v, lt_dd03p.
|
|
|
|
" 1. 소스 구조 조회
|
|
CALL FUNCTION 'DDIF_FIELDINFO_GET'
|
|
EXPORTING
|
|
tabname = ls_struct-tb_name
|
|
TABLES
|
|
dfies_tab = lt_dfies
|
|
EXCEPTIONS
|
|
not_found = 1
|
|
OTHERS = 2.
|
|
|
|
"타입별로 패키지 내부 고정 명 지정(Rename)
|
|
CASE ls_struct-type.
|
|
WHEN '2'.
|
|
ls_struct-tb_name = 'ZSTOP_VARIANT_M'.
|
|
WHEN '3'.
|
|
ls_struct-tb_name = 'ZSTOP_SENDER_M'.
|
|
WHEN '4'.
|
|
ls_struct-tb_name = 'ZSTOP_RECEIVER_M'.
|
|
WHEN '5'.
|
|
ls_struct-tb_name = 'ZSTOP_RESULT_M'.
|
|
WHEN '6'.
|
|
ls_struct-tb_name = 'ZSTOP_TARGET_M'.
|
|
WHEN '7'.
|
|
ls_struct-tb_name = 'ZSTOP_DISTINFO_M'.
|
|
WHEN '8'.
|
|
ls_struct-tb_name = 'ZSTOP_DISTRULE_M'.
|
|
ENDCASE.
|
|
|
|
CONCATENATE ls_struct-text '(구조-MANDT제외)' INTO ls_struct-text.
|
|
|
|
" 1. 구조 헤더 정보 설정
|
|
ls_dd02v = VALUE #(
|
|
tabname = ls_struct-tb_name
|
|
ddlanguage = sy-langu
|
|
tabclass = 'INTTAB' " 구조체
|
|
clidep = 'X' " 클라이언트 종속
|
|
ddtext = ls_struct-text
|
|
contflag = 'A' " 활성
|
|
mainflag = 'X' " 메인 테이블
|
|
).
|
|
|
|
LOOP AT lt_dfies INTO DATA(dfies).
|
|
CHECK dfies-fieldname NE 'MANDT'. "클라이언트 필드 제외
|
|
|
|
CLEAR ls_dd03p.
|
|
lv_position = lv_position + 1.
|
|
|
|
ls_dd03p = VALUE #(
|
|
tabname = ls_struct-tb_name
|
|
fieldname = dfies-fieldname
|
|
rollname = dfies-rollname
|
|
|
|
datatype = dfies-datatype
|
|
leng = dfies-leng
|
|
|
|
reftable = SWITCH #( dfies-reftable WHEN '' THEN ''
|
|
ELSE ls_struct-tb_name )
|
|
reffield = dfies-reffield
|
|
ddlanguage = sy-langu
|
|
position = lv_position
|
|
ddtext = dfies-fieldtext
|
|
).
|
|
APPEND ls_dd03p TO lt_dd03p.
|
|
|
|
ENDLOOP.
|
|
|
|
"1. DDIC 함수를 사용하여 테이블 생성(MANDT 포함 - CRUD시 주요 사용)
|
|
CALL FUNCTION 'DDIF_TABL_PUT'
|
|
EXPORTING
|
|
name = ls_struct-tb_name
|
|
dd02v_wa = ls_dd02v
|
|
TABLES
|
|
dd03p_tab = lt_dd03p
|
|
EXCEPTIONS
|
|
tabl_not_found = 1
|
|
name_inconsistent = 2
|
|
tabl_inconsistent = 3
|
|
put_failure = 4
|
|
put_refused = 5
|
|
OTHERS = 6.
|
|
|
|
IF sy-subrc <> 0.
|
|
"오류 메시지
|
|
gv_message = TEXT-016.
|
|
MESSAGE gv_message TYPE 'E'.
|
|
ENDIF.
|
|
|
|
" 테이블 활성화
|
|
CALL FUNCTION 'DDIF_TABL_ACTIVATE'
|
|
EXPORTING
|
|
name = ls_struct-tb_name
|
|
auth_chk = 'X'
|
|
EXCEPTIONS
|
|
not_found = 1
|
|
put_failure = 2
|
|
OTHERS = 3.
|
|
|
|
IF sy-subrc <> 0.
|
|
"오류 메시지
|
|
gv_message = TEXT-016.
|
|
MESSAGE gv_message TYPE 'E'.
|
|
ENDIF.
|
|
|
|
ENDLOOP.
|
|
ENDMETHOD.
|
|
|
|
|
|
METHOD create_init_table.
|
|
DATA: lv_source_table TYPE tabname,
|
|
lt_dfies TYPE TABLE OF dfies.
|
|
|
|
DATA : result TYPE bapiret2.
|
|
|
|
" 데이터 선언
|
|
DATA: lt_dd02v TYPE TABLE OF dd02v,
|
|
ls_dd02v TYPE dd02v,
|
|
lt_dd03p TYPE TABLE OF dd03p,
|
|
ls_dd03p TYPE dd03p,
|
|
lt_exceipt TYPE TABLE OF dd03p, "제외할 필드
|
|
lv_rc TYPE sy-subrc,
|
|
ls_dd09v TYPE dd09v, " 기술 설정 구조체 추가
|
|
lv_as4local TYPE dd02l-as4local,
|
|
lv_position TYPE tabfdpos VALUE '0000'. "필드 순번
|
|
|
|
* DATA : ls_crtable-tb_name TYPE tabname VALUE 'ZCOTD1300'.
|
|
|
|
" 관리 테이블 정보를 전역 Internal 테이블(gt_mng_table)에 업데이트. (생성 테이블 목록)
|
|
CALL METHOD me->get_package_info
|
|
EXPORTING
|
|
erkrs = erkrs
|
|
RECEIVING
|
|
result = result.
|
|
|
|
IF result-type NE 'S'.
|
|
"오류 발생.
|
|
gv_message = TEXT-010.
|
|
MESSAGE gv_message TYPE 'E'.
|
|
ENDIF.
|
|
|
|
" 1. 소스 구조 조회
|
|
CALL FUNCTION 'DDIF_FIELDINFO_GET'
|
|
EXPORTING
|
|
tabname = gv_source
|
|
TABLES
|
|
dfies_tab = lt_dfies
|
|
EXCEPTIONS
|
|
not_found = 1
|
|
OTHERS = 2.
|
|
|
|
IF sy-subrc <> 0.
|
|
"오류 발생.
|
|
gv_message = TEXT-015.
|
|
MESSAGE gv_message TYPE 'E'.
|
|
ENDIF.
|
|
|
|
LOOP AT gt_mng_table INTO DATA(ls_crtable) WHERE type <> '1'. "관리테이블은 생성된 상태이므로 제외.
|
|
CLEAR : ls_dd02v, lt_dd02v[], lt_dd03p.
|
|
|
|
|
|
" 1. 테이블 헤더 정보 설정
|
|
ls_dd02v = VALUE #(
|
|
tabname = ls_crtable-tb_name
|
|
ddlanguage = sy-langu
|
|
tabclass = 'TRANSP' " 투명 테이블
|
|
clidep = 'X' " 클라이언트 종속
|
|
ddtext = ls_crtable-text
|
|
contflag = 'A' " 활성
|
|
mainflag = 'X' " 메인 테이블
|
|
).
|
|
* APPEND ls_dd02v TO lt_dd02v.
|
|
|
|
" 2. 테이블 필드 정보 설정
|
|
CLEAR : ls_dd03p, lv_position.
|
|
|
|
CALL METHOD me->generate_table_field
|
|
EXPORTING
|
|
tabname = ls_crtable-tb_name
|
|
type = ls_crtable-type
|
|
position_start = lv_position
|
|
IMPORTING
|
|
cbo_dd03p = lt_dd03p
|
|
field_excepts = lt_exceipt
|
|
RECEIVING
|
|
position = lv_position.
|
|
|
|
"배부 관련 테이블은 경영단위 구조를 참조하여 추가한다.
|
|
IF ls_crtable-type = '3' OR ls_crtable-type = '4' OR ls_crtable-type = '5' OR ls_crtable-type = '6'.
|
|
LOOP AT lt_dfies INTO DATA(dfies). "참조 테이블 필드 추가(센더/리시버/결과/전표발행 테이블 ONly)
|
|
|
|
READ TABLE lt_exceipt WITH KEY tabname = ls_crtable-tb_name
|
|
fieldname = dfies-fieldname
|
|
TRANSPORTING NO FIELDS.
|
|
CHECK sy-subrc NE 0. " 제외 필드 인 경우에는 제외.
|
|
|
|
CLEAR ls_dd03p.
|
|
lv_position = lv_position + 1.
|
|
ls_dd03p = VALUE #(
|
|
tabname = ls_crtable-tb_name
|
|
fieldname = dfies-fieldname
|
|
keyflag = dfies-keyflag
|
|
notnull = dfies-keyflag
|
|
rollname = dfies-rollname
|
|
reftable = SWITCH #( dfies-reftable WHEN '' THEN ''
|
|
ELSE ls_crtable-tb_name )
|
|
reffield = dfies-reffield
|
|
ddlanguage = sy-langu
|
|
position = lv_position
|
|
ddtext = dfies-fieldtext
|
|
).
|
|
APPEND ls_dd03p TO lt_dd03p.
|
|
ENDLOOP.
|
|
ENDIF.
|
|
|
|
" 기술 설정(DD09L) 정보 설정
|
|
CLEAR ls_dd09v.
|
|
ls_dd09v-tabname = ls_crtable-tb_name.
|
|
ls_dd09v-as4local = 'A'. " 활성화 상태
|
|
ls_dd09v-tabkat = '3'. " 일반 테이블
|
|
ls_dd09v-tabart = 'APPL1'. " 응용 프로그램 테이블
|
|
|
|
" DDIC 함수를 사용하여 테이블 생성
|
|
CALL FUNCTION 'DDIF_TABL_PUT'
|
|
EXPORTING
|
|
name = ls_crtable-tb_name
|
|
dd02v_wa = ls_dd02v
|
|
dd09l_wa = ls_dd09v " 기술설정 추가
|
|
TABLES
|
|
dd03p_tab = lt_dd03p
|
|
EXCEPTIONS
|
|
tabl_not_found = 1
|
|
name_inconsistent = 2
|
|
tabl_inconsistent = 3
|
|
put_failure = 4
|
|
put_refused = 5
|
|
OTHERS = 6.
|
|
|
|
IF sy-subrc <> 0.
|
|
"오류 메시지
|
|
gv_message = TEXT-016.
|
|
MESSAGE gv_message TYPE 'E'.
|
|
ENDIF.
|
|
|
|
" 테이블 활성화
|
|
CALL FUNCTION 'DDIF_TABL_ACTIVATE'
|
|
EXPORTING
|
|
name = ls_crtable-tb_name
|
|
auth_chk = 'X'
|
|
EXCEPTIONS
|
|
not_found = 1
|
|
put_failure = 2
|
|
OTHERS = 3.
|
|
|
|
IF sy-subrc <> 0.
|
|
"오류 메시지
|
|
gv_message = TEXT-016.
|
|
MESSAGE gv_message TYPE 'E'.
|
|
ENDIF.
|
|
|
|
|
|
ENDLOOP.
|
|
|
|
"배부 관련 테이블 구조 생성
|
|
CALL METHOD me->create_init_structure
|
|
EXPORTING
|
|
erkrs = erkrs.
|
|
|
|
"배부 관련 테이블 구조 생성(mandt 제외)
|
|
CALL METHOD me->create_init_structure_ex_mandt
|
|
EXPORTING
|
|
erkrs = erkrs.
|
|
|
|
"정상 처리 완료 메시지
|
|
gv_message = TEXT-011.
|
|
MESSAGE gv_message TYPE 'S'.
|
|
ENDMETHOD.
|
|
|
|
|
|
METHOD generate_table_field.
|
|
DATA : ls_dd03p TYPE dd03p.
|
|
|
|
position = position_start.
|
|
|
|
"공통 필드
|
|
position = position + 1.
|
|
ls_dd03p = VALUE #(
|
|
tabname = tabname
|
|
fieldname = 'MANDT'
|
|
keyflag = 'X'
|
|
notnull = 'X'
|
|
rollname = 'MANDT'
|
|
ddlanguage = sy-langu
|
|
position = '0001'
|
|
ddtext = '클라이언트'
|
|
).
|
|
APPEND ls_dd03p TO cbo_dd03p.
|
|
APPEND ls_dd03p TO field_excepts.
|
|
|
|
|
|
CASE type.
|
|
WHEN '2'. "배부 기준 정보(월별) 테이블
|
|
position = position + 1.
|
|
ls_dd03p = VALUE #(
|
|
tabname = tabname
|
|
fieldname = 'ERKRS'
|
|
keyflag = 'X'
|
|
notnull = 'X'
|
|
rollname = 'ERKRS'
|
|
ddlanguage = sy-langu
|
|
position = position
|
|
ddtext = '경영 단위'
|
|
).
|
|
APPEND ls_dd03p TO cbo_dd03p.
|
|
|
|
position = position + 1.
|
|
ls_dd03p = VALUE #(
|
|
tabname = tabname
|
|
fieldname = 'PERIO'
|
|
keyflag = 'X'
|
|
notnull = 'X'
|
|
rollname = 'JAHRPER'
|
|
ddlanguage = sy-langu
|
|
position = position
|
|
ddtext = '기간/연도'
|
|
).
|
|
APPEND ls_dd03p TO cbo_dd03p.
|
|
|
|
position = position + 1.
|
|
ls_dd03p = VALUE #(
|
|
tabname = tabname
|
|
fieldname = 'APPLCLASS'
|
|
keyflag = 'X'
|
|
notnull = 'X'
|
|
rollname = 'APPLCLASS'
|
|
ddlanguage = sy-langu
|
|
position = position
|
|
ddtext = 'DD 오브젝트에 대한 어플리케이션 클래스 (사용되지 않음)'
|
|
).
|
|
APPEND ls_dd03p TO cbo_dd03p.
|
|
|
|
position = position + 1.
|
|
ls_dd03p = VALUE #(
|
|
tabname = tabname
|
|
fieldname = 'SUBCLASS'
|
|
keyflag = 'X'
|
|
notnull = 'X'
|
|
rollname = 'SUBCLASS'
|
|
ddlanguage = sy-langu
|
|
position = position
|
|
ddtext = '어플리케이션 클래스별 하위그룹'
|
|
).
|
|
APPEND ls_dd03p TO cbo_dd03p.
|
|
|
|
position = position + 1.
|
|
ls_dd03p = VALUE #(
|
|
tabname = tabname
|
|
fieldname = 'TABNAME'
|
|
keyflag = 'X'
|
|
notnull = 'X'
|
|
rollname = 'TABNAME'
|
|
ddlanguage = sy-langu
|
|
position = position
|
|
ddtext = '테이블이름'
|
|
).
|
|
APPEND ls_dd03p TO cbo_dd03p.
|
|
|
|
position = position + 1.
|
|
ls_dd03p = VALUE #(
|
|
tabname = tabname
|
|
fieldname = 'FUNC'
|
|
keyflag = 'X'
|
|
notnull = 'X'
|
|
rollname = 'COFUNC'
|
|
ddlanguage = sy-langu
|
|
position = position
|
|
ddtext = '기능'
|
|
).
|
|
APPEND ls_dd03p TO cbo_dd03p.
|
|
|
|
position = position + 1.
|
|
ls_dd03p = VALUE #(
|
|
tabname = tabname
|
|
fieldname = 'VARIANT'
|
|
keyflag = 'X'
|
|
notnull = 'X'
|
|
rollname = 'COVARIANT'
|
|
ddlanguage = sy-langu
|
|
position = position
|
|
ddtext = '변형'
|
|
).
|
|
APPEND ls_dd03p TO cbo_dd03p.
|
|
|
|
position = position + 1.
|
|
ls_dd03p = VALUE #(
|
|
tabname = tabname
|
|
fieldname = 'VTEXT'
|
|
keyflag = ''
|
|
notnull = ''
|
|
rollname = 'COVARITXT'
|
|
ddlanguage = sy-langu
|
|
position = position
|
|
ddtext = '변형이름'
|
|
).
|
|
APPEND ls_dd03p TO cbo_dd03p.
|
|
|
|
position = position + 1.
|
|
ls_dd03p = VALUE #(
|
|
tabname = tabname
|
|
fieldname = 'SENDER'
|
|
datatype = 'CHAR'
|
|
INTTYPE = 'C'
|
|
* INTLEN = '1'
|
|
LENG = '1'
|
|
ddlanguage = sy-langu
|
|
position = position
|
|
ddtext = '센더 데이타 추출 진행 여부'
|
|
).
|
|
APPEND ls_dd03p TO cbo_dd03p.
|
|
|
|
position = position + 1.
|
|
ls_dd03p = VALUE #(
|
|
tabname = tabname
|
|
fieldname = 'RECEIVER'
|
|
datatype = 'CHAR'
|
|
INTTYPE = 'C'
|
|
* INTLEN = '1'
|
|
LENG = '1'
|
|
ddlanguage = sy-langu
|
|
position = position
|
|
ddtext = '배부 기준 데이타 추출 진행 여부'
|
|
).
|
|
APPEND ls_dd03p TO cbo_dd03p.
|
|
|
|
position = position + 1.
|
|
ls_dd03p = VALUE #(
|
|
tabname = tabname
|
|
fieldname = 'PROC_DIST'
|
|
datatype = 'CHAR'
|
|
INTTYPE = 'C'
|
|
* INTLEN = '1'
|
|
LENG = '1'
|
|
ddlanguage = sy-langu
|
|
position = position
|
|
ddtext = '배부 수행 여부'
|
|
).
|
|
APPEND ls_dd03p TO cbo_dd03p.
|
|
|
|
position = position + 1.
|
|
ls_dd03p = VALUE #(
|
|
tabname = tabname
|
|
fieldname = 'POST'
|
|
datatype = 'CHAR'
|
|
INTTYPE = 'C'
|
|
* INTLEN = '1'
|
|
LENG = '1'
|
|
ddlanguage = sy-langu
|
|
position = position
|
|
ddtext = '전표 발행 수행 여부'
|
|
).
|
|
APPEND ls_dd03p TO cbo_dd03p.
|
|
|
|
|
|
|
|
WHEN '3'. "센더 테이블
|
|
position = position + 1.
|
|
ls_dd03p = VALUE #(
|
|
tabname = tabname
|
|
fieldname = 'VARIANT'
|
|
keyflag = 'X'
|
|
notnull = 'X'
|
|
rollname = 'COVARIANT'
|
|
ddlanguage = sy-langu
|
|
position = position
|
|
ddtext = '변형'
|
|
).
|
|
APPEND ls_dd03p TO cbo_dd03p.
|
|
APPEND ls_dd03p TO field_excepts.
|
|
|
|
position = position + 1.
|
|
ls_dd03p = VALUE #(
|
|
tabname = tabname
|
|
fieldname = 'DIST_ID'
|
|
keyflag = 'X'
|
|
notnull = 'X'
|
|
rollname = 'PBR_SEQRE'
|
|
ddlanguage = sy-langu
|
|
position = position
|
|
ddtext = '배부키'
|
|
).
|
|
APPEND ls_dd03p TO cbo_dd03p.
|
|
APPEND ls_dd03p TO field_excepts.
|
|
|
|
|
|
|
|
WHEN '4'. "리시버/배부 기준 테이블
|
|
position = position + 1.
|
|
ls_dd03p = VALUE #(
|
|
tabname = tabname
|
|
fieldname = 'VARIANT'
|
|
keyflag = 'X'
|
|
notnull = 'X'
|
|
rollname = 'COVARIANT'
|
|
ddlanguage = sy-langu
|
|
position = position
|
|
ddtext = '변형'
|
|
).
|
|
APPEND ls_dd03p TO cbo_dd03p.
|
|
APPEND ls_dd03p TO field_excepts.
|
|
|
|
position = position + 1.
|
|
ls_dd03p = VALUE #(
|
|
tabname = tabname
|
|
fieldname = 'DIST_ID'
|
|
keyflag = 'X'
|
|
notnull = 'X'
|
|
rollname = 'PBR_SEQRE'
|
|
ddlanguage = sy-langu
|
|
position = position
|
|
ddtext = '배부키'
|
|
).
|
|
APPEND ls_dd03p TO cbo_dd03p.
|
|
APPEND ls_dd03p TO field_excepts.
|
|
|
|
position = position + 1.
|
|
ls_dd03p = VALUE #(
|
|
tabname = tabname
|
|
fieldname = 'SEQ'
|
|
keyflag = 'X'
|
|
notnull = 'X'
|
|
rollname = 'PU12_SEQNR'
|
|
ddlanguage = sy-langu
|
|
position = position
|
|
ddtext = '순번'
|
|
).
|
|
APPEND ls_dd03p TO cbo_dd03p.
|
|
APPEND ls_dd03p TO field_excepts.
|
|
|
|
|
|
|
|
WHEN '5'. "배부 결과 테이블
|
|
position = position + 1.
|
|
ls_dd03p = VALUE #(
|
|
tabname = tabname
|
|
fieldname = 'VARIANT'
|
|
keyflag = 'X'
|
|
notnull = 'X'
|
|
rollname = 'COVARIANT'
|
|
ddlanguage = sy-langu
|
|
position = position
|
|
ddtext = '변형'
|
|
).
|
|
APPEND ls_dd03p TO cbo_dd03p.
|
|
APPEND ls_dd03p TO field_excepts.
|
|
|
|
position = position + 1.
|
|
ls_dd03p = VALUE #(
|
|
tabname = tabname
|
|
fieldname = 'DIST_ID'
|
|
keyflag = 'X'
|
|
notnull = 'X'
|
|
rollname = 'PBR_SEQRE'
|
|
ddlanguage = sy-langu
|
|
position = position
|
|
ddtext = '배부키'
|
|
).
|
|
APPEND ls_dd03p TO cbo_dd03p.
|
|
APPEND ls_dd03p TO field_excepts.
|
|
|
|
position = position + 1.
|
|
ls_dd03p = VALUE #(
|
|
tabname = tabname
|
|
fieldname = 'SEQ'
|
|
keyflag = 'X'
|
|
notnull = 'X'
|
|
rollname = 'PU12_SEQNR'
|
|
ddlanguage = sy-langu
|
|
position = position
|
|
ddtext = '순번'
|
|
).
|
|
APPEND ls_dd03p TO cbo_dd03p.
|
|
APPEND ls_dd03p TO field_excepts.
|
|
|
|
|
|
|
|
WHEN '6'. "전표 발행 대상 테이블
|
|
position = position + 1.
|
|
ls_dd03p = VALUE #(
|
|
tabname = tabname
|
|
fieldname = 'VARIANT'
|
|
keyflag = 'X'
|
|
notnull = 'X'
|
|
rollname = 'COVARIANT'
|
|
ddlanguage = sy-langu
|
|
position = position
|
|
ddtext = '변형'
|
|
).
|
|
APPEND ls_dd03p TO cbo_dd03p.
|
|
APPEND ls_dd03p TO field_excepts.
|
|
|
|
position = position + 1.
|
|
ls_dd03p = VALUE #(
|
|
tabname = tabname
|
|
fieldname = 'DIST_ID'
|
|
keyflag = 'X'
|
|
notnull = 'X'
|
|
rollname = 'PBR_SEQRE'
|
|
ddlanguage = sy-langu
|
|
position = position
|
|
ddtext = '배부키'
|
|
).
|
|
APPEND ls_dd03p TO cbo_dd03p.
|
|
APPEND ls_dd03p TO field_excepts.
|
|
|
|
|
|
|
|
WHEN '7'. "배부 기준 세부 정보 테이블(STD->CBO)
|
|
position = position + 1.
|
|
ls_dd03p = VALUE #(
|
|
tabname = tabname
|
|
fieldname = 'ERKRS'
|
|
keyflag = 'X'
|
|
notnull = 'X'
|
|
rollname = 'ERKRS'
|
|
ddlanguage = sy-langu
|
|
position = position
|
|
ddtext = '경영 단위'
|
|
).
|
|
APPEND ls_dd03p TO cbo_dd03p.
|
|
|
|
position = position + 1.
|
|
ls_dd03p = VALUE #(
|
|
tabname = tabname
|
|
fieldname = 'PERIO'
|
|
keyflag = 'X'
|
|
notnull = 'X'
|
|
rollname = 'JAHRPER'
|
|
ddlanguage = sy-langu
|
|
position = position
|
|
ddtext = '기간/연도'
|
|
).
|
|
APPEND ls_dd03p TO cbo_dd03p.
|
|
|
|
position = position + 1.
|
|
ls_dd03p = VALUE #(
|
|
tabname = tabname
|
|
fieldname = 'APPLCLASS'
|
|
keyflag = 'X'
|
|
notnull = 'X'
|
|
rollname = 'APPLCLASS'
|
|
ddlanguage = sy-langu
|
|
position = position
|
|
ddtext = 'DD 오브젝트에 대한 어플리케이션 클래스 (사용되지 않음)'
|
|
).
|
|
APPEND ls_dd03p TO cbo_dd03p.
|
|
|
|
position = position + 1.
|
|
ls_dd03p = VALUE #(
|
|
tabname = tabname
|
|
fieldname = 'SUBCLASS'
|
|
keyflag = 'X'
|
|
notnull = 'X'
|
|
rollname = 'SUBCLASS'
|
|
ddlanguage = sy-langu
|
|
position = position
|
|
ddtext = '어플리케이션 클래스별 하위그룹'
|
|
).
|
|
APPEND ls_dd03p TO cbo_dd03p.
|
|
|
|
position = position + 1.
|
|
ls_dd03p = VALUE #(
|
|
tabname = tabname
|
|
fieldname = 'TABNAME'
|
|
keyflag = 'X'
|
|
notnull = 'X'
|
|
rollname = 'TABNAME'
|
|
ddlanguage = sy-langu
|
|
position = position
|
|
ddtext = '테이블이름'
|
|
).
|
|
APPEND ls_dd03p TO cbo_dd03p.
|
|
|
|
position = position + 1.
|
|
ls_dd03p = VALUE #(
|
|
tabname = tabname
|
|
fieldname = 'FUNC'
|
|
keyflag = 'X'
|
|
notnull = 'X'
|
|
rollname = 'COFUNC'
|
|
ddlanguage = sy-langu
|
|
position = position
|
|
ddtext = '기능'
|
|
).
|
|
APPEND ls_dd03p TO cbo_dd03p.
|
|
|
|
position = position + 1.
|
|
ls_dd03p = VALUE #(
|
|
tabname = tabname
|
|
fieldname = 'VARIANT'
|
|
keyflag = 'X'
|
|
notnull = 'X'
|
|
rollname = 'COVARIANT'
|
|
ddlanguage = sy-langu
|
|
position = position
|
|
ddtext = '변형'
|
|
).
|
|
APPEND ls_dd03p TO cbo_dd03p.
|
|
|
|
position = position + 1.
|
|
ls_dd03p = VALUE #(
|
|
tabname = tabname
|
|
fieldname = 'SORT'
|
|
keyflag = 'X'
|
|
notnull = 'X'
|
|
rollname = 'RKE_LFD4'
|
|
ddlanguage = sy-langu
|
|
position = position
|
|
ddtext = '순번'
|
|
).
|
|
APPEND ls_dd03p TO cbo_dd03p.
|
|
|
|
position = position + 1.
|
|
ls_dd03p = VALUE #(
|
|
tabname = tabname
|
|
fieldname = 'FNAM'
|
|
keyflag = 'X'
|
|
notnull = 'X'
|
|
rollname = 'FIELDNAME'
|
|
ddlanguage = sy-langu
|
|
position = position
|
|
ddtext = '필드 이름'
|
|
).
|
|
APPEND ls_dd03p TO cbo_dd03p.
|
|
|
|
position = position + 1.
|
|
ls_dd03p = VALUE #(
|
|
tabname = tabname
|
|
fieldname = 'SIGN'
|
|
keyflag = 'X'
|
|
notnull = 'X'
|
|
rollname = 'RALDB_SIGN'
|
|
ddlanguage = sy-langu
|
|
position = position
|
|
ddtext = 'SELECT-OPTIONS 테이블생성에서 부호필드'
|
|
).
|
|
APPEND ls_dd03p TO cbo_dd03p.
|
|
|
|
position = position + 1.
|
|
ls_dd03p = VALUE #(
|
|
tabname = tabname
|
|
fieldname = 'OPTIONN'
|
|
keyflag = 'X'
|
|
notnull = 'X'
|
|
rollname = 'RALDB_OPTI'
|
|
ddlanguage = sy-langu
|
|
position = position
|
|
ddtext = 'SELECT-OPTIONS 테이블구조의 OPTION 필드'
|
|
).
|
|
APPEND ls_dd03p TO cbo_dd03p.
|
|
|
|
position = position + 1.
|
|
ls_dd03p = VALUE #(
|
|
tabname = tabname
|
|
fieldname = 'LOW'
|
|
keyflag = 'X'
|
|
notnull = 'X'
|
|
rollname = 'RKE_LOW_L'
|
|
ddlanguage = sy-langu
|
|
position = position
|
|
ddtext = '특성 값 하한'
|
|
).
|
|
APPEND ls_dd03p TO cbo_dd03p.
|
|
|
|
position = position + 1.
|
|
ls_dd03p = VALUE #(
|
|
tabname = tabname
|
|
fieldname = 'HIGH'
|
|
keyflag = 'X'
|
|
notnull = 'X'
|
|
rollname = 'RKE_HIGH_L'
|
|
ddlanguage = sy-langu
|
|
position = position
|
|
ddtext = '특성값 상한선 (간격내에서만)'
|
|
).
|
|
APPEND ls_dd03p TO cbo_dd03p.
|
|
|
|
position = position + 1.
|
|
ls_dd03p = VALUE #(
|
|
tabname = tabname
|
|
fieldname = 'LOWTX'
|
|
keyflag = ''
|
|
notnull = ''
|
|
rollname = 'SCRTEXT_M'
|
|
ddlanguage = sy-langu
|
|
position = position
|
|
ddtext = '중간 필드 레이블'
|
|
).
|
|
APPEND ls_dd03p TO cbo_dd03p.
|
|
|
|
position = position + 1.
|
|
ls_dd03p = VALUE #(
|
|
tabname = tabname
|
|
fieldname = 'HIGHTX'
|
|
keyflag = ''
|
|
notnull = ''
|
|
rollname = 'SCRTEXT_M'
|
|
ddlanguage = sy-langu
|
|
position = position
|
|
ddtext = '중간 필드 레이블'
|
|
).
|
|
APPEND ls_dd03p TO cbo_dd03p.
|
|
|
|
position = position + 1.
|
|
ls_dd03p = VALUE #(
|
|
tabname = tabname
|
|
fieldname = 'CDATE'
|
|
keyflag = ''
|
|
notnull = ''
|
|
rollname = 'CDATE'
|
|
ddlanguage = sy-langu
|
|
position = position
|
|
ddtext = '생성일'
|
|
).
|
|
APPEND ls_dd03p TO cbo_dd03p.
|
|
|
|
position = position + 1.
|
|
ls_dd03p = VALUE #(
|
|
tabname = tabname
|
|
fieldname = 'CTIME'
|
|
keyflag = ''
|
|
notnull = ''
|
|
rollname = 'CTME'
|
|
ddlanguage = sy-langu
|
|
position = position
|
|
ddtext = '생성 시간'
|
|
).
|
|
APPEND ls_dd03p TO cbo_dd03p.
|
|
|
|
position = position + 1.
|
|
ls_dd03p = VALUE #(
|
|
tabname = tabname
|
|
fieldname = 'CNAME'
|
|
keyflag = ''
|
|
notnull = ''
|
|
rollname = 'CRNAM'
|
|
ddlanguage = sy-langu
|
|
position = position
|
|
ddtext = '생성자'
|
|
).
|
|
APPEND ls_dd03p TO cbo_dd03p.
|
|
|
|
position = position + 1.
|
|
ls_dd03p = VALUE #(
|
|
tabname = tabname
|
|
fieldname = 'UDATE'
|
|
keyflag = ''
|
|
notnull = ''
|
|
rollname = 'RTC_DATE_M'
|
|
ddlanguage = sy-langu
|
|
position = position
|
|
ddtext = '수정일'
|
|
).
|
|
APPEND ls_dd03p TO cbo_dd03p.
|
|
|
|
position = position + 1.
|
|
ls_dd03p = VALUE #(
|
|
tabname = tabname
|
|
fieldname = 'UTIME'
|
|
keyflag = ''
|
|
notnull = ''
|
|
rollname = 'AEZET'
|
|
ddlanguage = sy-langu
|
|
position = position
|
|
ddtext = '최종변경시간'
|
|
).
|
|
APPEND ls_dd03p TO cbo_dd03p.
|
|
|
|
position = position + 1.
|
|
ls_dd03p = VALUE #(
|
|
tabname = tabname
|
|
fieldname = 'UNAME'
|
|
keyflag = ''
|
|
notnull = ''
|
|
rollname = 'UPNAME'
|
|
ddlanguage = sy-langu
|
|
position = position
|
|
ddtext = '최종변경인'
|
|
).
|
|
APPEND ls_dd03p TO cbo_dd03p.
|
|
|
|
|
|
|
|
|
|
WHEN '8'. "배부 조건 Custimizing 테이블
|
|
position = position + 1.
|
|
ls_dd03p = VALUE #(
|
|
tabname = tabname
|
|
fieldname = 'ERKRS'
|
|
keyflag = 'X'
|
|
notnull = 'X'
|
|
rollname = 'ERKRS'
|
|
ddlanguage = sy-langu
|
|
position = position
|
|
ddtext = '경영 단위'
|
|
).
|
|
APPEND ls_dd03p TO cbo_dd03p.
|
|
|
|
position = position + 1.
|
|
ls_dd03p = VALUE #(
|
|
tabname = tabname
|
|
fieldname = 'PERFROM'
|
|
keyflag = 'X'
|
|
notnull = 'X'
|
|
rollname = 'JAHRPER'
|
|
ddlanguage = sy-langu
|
|
position = position
|
|
ddtext = '기간/연도 FROM'
|
|
).
|
|
APPEND ls_dd03p TO cbo_dd03p.
|
|
|
|
position = position + 1.
|
|
ls_dd03p = VALUE #(
|
|
tabname = tabname
|
|
fieldname = 'PERTO'
|
|
keyflag = 'X'
|
|
notnull = 'X'
|
|
rollname = 'JAHRPER'
|
|
ddlanguage = sy-langu
|
|
position = position
|
|
ddtext = '기간/연도 TO'
|
|
).
|
|
APPEND ls_dd03p TO cbo_dd03p.
|
|
|
|
position = position + 1.
|
|
ls_dd03p = VALUE #(
|
|
tabname = tabname
|
|
fieldname = 'APPLCLASS'
|
|
keyflag = 'X'
|
|
notnull = 'X'
|
|
rollname = 'APPLCLASS'
|
|
ddlanguage = sy-langu
|
|
position = position
|
|
ddtext = 'DD 오브젝트에 대한 어플리케이션 클래스 (사용되지 않음)'
|
|
).
|
|
APPEND ls_dd03p TO cbo_dd03p.
|
|
|
|
position = position + 1.
|
|
ls_dd03p = VALUE #(
|
|
tabname = tabname
|
|
fieldname = 'SUBCLASS'
|
|
keyflag = 'X'
|
|
notnull = 'X'
|
|
rollname = 'SUBCLASS'
|
|
ddlanguage = sy-langu
|
|
position = position
|
|
ddtext = '어플리케이션 클래스별 하위그룹'
|
|
).
|
|
APPEND ls_dd03p TO cbo_dd03p.
|
|
|
|
position = position + 1.
|
|
ls_dd03p = VALUE #(
|
|
tabname = tabname
|
|
fieldname = 'TABNAME'
|
|
keyflag = 'X'
|
|
notnull = 'X'
|
|
rollname = 'TABNAME'
|
|
ddlanguage = sy-langu
|
|
position = position
|
|
ddtext = '테이블이름'
|
|
).
|
|
APPEND ls_dd03p TO cbo_dd03p.
|
|
|
|
position = position + 1.
|
|
ls_dd03p = VALUE #(
|
|
tabname = tabname
|
|
fieldname = 'FUNC'
|
|
keyflag = 'X'
|
|
notnull = 'X'
|
|
rollname = 'COFUNC'
|
|
ddlanguage = sy-langu
|
|
position = position
|
|
ddtext = '기능'
|
|
).
|
|
APPEND ls_dd03p TO cbo_dd03p.
|
|
|
|
position = position + 1.
|
|
ls_dd03p = VALUE #(
|
|
tabname = tabname
|
|
fieldname = 'VARIANT'
|
|
keyflag = 'X'
|
|
notnull = 'X'
|
|
rollname = 'COVARIANT'
|
|
ddlanguage = sy-langu
|
|
position = position
|
|
ddtext = '변형'
|
|
).
|
|
APPEND ls_dd03p TO cbo_dd03p.
|
|
|
|
position = position + 1.
|
|
ls_dd03p = VALUE #(
|
|
tabname = tabname
|
|
fieldname = 'SORT'
|
|
keyflag = 'X'
|
|
notnull = 'X'
|
|
rollname = 'RKE_LFD4'
|
|
ddlanguage = sy-langu
|
|
position = position
|
|
ddtext = '순번'
|
|
).
|
|
APPEND ls_dd03p TO cbo_dd03p.
|
|
|
|
position = position + 1.
|
|
ls_dd03p = VALUE #(
|
|
tabname = tabname
|
|
fieldname = 'FNAM'
|
|
keyflag = 'X'
|
|
notnull = 'X'
|
|
rollname = 'FIELDNAME'
|
|
ddlanguage = sy-langu
|
|
position = position
|
|
ddtext = '필드 이름'
|
|
).
|
|
APPEND ls_dd03p TO cbo_dd03p.
|
|
|
|
position = position + 1.
|
|
ls_dd03p = VALUE #(
|
|
tabname = tabname
|
|
fieldname = 'SIGN'
|
|
keyflag = 'X'
|
|
notnull = 'X'
|
|
rollname = 'RALDB_SIGN'
|
|
ddlanguage = sy-langu
|
|
position = position
|
|
ddtext = 'SELECT-OPTIONS 테이블생성에서 부호필드'
|
|
).
|
|
APPEND ls_dd03p TO cbo_dd03p.
|
|
|
|
position = position + 1.
|
|
ls_dd03p = VALUE #(
|
|
tabname = tabname
|
|
fieldname = 'OPTIONN'
|
|
keyflag = 'X'
|
|
notnull = 'X'
|
|
rollname = 'RALDB_OPTI'
|
|
ddlanguage = sy-langu
|
|
position = position
|
|
ddtext = 'SELECT-OPTIONS 테이블구조의 OPTION 필드'
|
|
).
|
|
APPEND ls_dd03p TO cbo_dd03p.
|
|
|
|
position = position + 1.
|
|
ls_dd03p = VALUE #(
|
|
tabname = tabname
|
|
fieldname = 'LOW'
|
|
keyflag = 'X'
|
|
notnull = 'X'
|
|
rollname = 'RKE_LOW_L'
|
|
ddlanguage = sy-langu
|
|
position = position
|
|
ddtext = '특성 값 하한'
|
|
).
|
|
APPEND ls_dd03p TO cbo_dd03p.
|
|
|
|
position = position + 1.
|
|
ls_dd03p = VALUE #(
|
|
tabname = tabname
|
|
fieldname = 'HIGH'
|
|
keyflag = 'X'
|
|
notnull = 'X'
|
|
rollname = 'RKE_HIGH_L'
|
|
ddlanguage = sy-langu
|
|
position = position
|
|
ddtext = '특성값 상한선 (간격내에서만)'
|
|
).
|
|
APPEND ls_dd03p TO cbo_dd03p.
|
|
|
|
position = position + 1.
|
|
ls_dd03p = VALUE #(
|
|
tabname = tabname
|
|
fieldname = 'LOWTX'
|
|
keyflag = ''
|
|
notnull = ''
|
|
rollname = 'SCRTEXT_M'
|
|
ddlanguage = sy-langu
|
|
position = position
|
|
ddtext = '중간 필드 레이블'
|
|
).
|
|
APPEND ls_dd03p TO cbo_dd03p.
|
|
|
|
position = position + 1.
|
|
ls_dd03p = VALUE #(
|
|
tabname = tabname
|
|
fieldname = 'HIGHTX'
|
|
keyflag = ''
|
|
notnull = ''
|
|
rollname = 'SCRTEXT_M'
|
|
ddlanguage = sy-langu
|
|
position = position
|
|
ddtext = '중간 필드 레이블'
|
|
).
|
|
APPEND ls_dd03p TO cbo_dd03p.
|
|
|
|
position = position + 1.
|
|
ls_dd03p = VALUE #(
|
|
tabname = tabname
|
|
fieldname = 'CDATE'
|
|
keyflag = ''
|
|
notnull = ''
|
|
rollname = 'CDATE'
|
|
ddlanguage = sy-langu
|
|
position = position
|
|
ddtext = '생성일'
|
|
).
|
|
APPEND ls_dd03p TO cbo_dd03p.
|
|
|
|
position = position + 1.
|
|
ls_dd03p = VALUE #(
|
|
tabname = tabname
|
|
fieldname = 'CTIME'
|
|
keyflag = ''
|
|
notnull = ''
|
|
rollname = 'CTME'
|
|
ddlanguage = sy-langu
|
|
position = position
|
|
ddtext = '생성 시간'
|
|
).
|
|
APPEND ls_dd03p TO cbo_dd03p.
|
|
|
|
position = position + 1.
|
|
ls_dd03p = VALUE #(
|
|
tabname = tabname
|
|
fieldname = 'CNAME'
|
|
keyflag = ''
|
|
notnull = ''
|
|
rollname = 'CRNAM'
|
|
ddlanguage = sy-langu
|
|
position = position
|
|
ddtext = '생성자'
|
|
).
|
|
APPEND ls_dd03p TO cbo_dd03p.
|
|
|
|
position = position + 1.
|
|
ls_dd03p = VALUE #(
|
|
tabname = tabname
|
|
fieldname = 'UDATE'
|
|
keyflag = ''
|
|
notnull = ''
|
|
rollname = 'RTC_DATE_M'
|
|
ddlanguage = sy-langu
|
|
position = position
|
|
ddtext = '수정일'
|
|
).
|
|
APPEND ls_dd03p TO cbo_dd03p.
|
|
|
|
position = position + 1.
|
|
ls_dd03p = VALUE #(
|
|
tabname = tabname
|
|
fieldname = 'UTIME'
|
|
keyflag = ''
|
|
notnull = ''
|
|
rollname = 'AEZET'
|
|
ddlanguage = sy-langu
|
|
position = position
|
|
ddtext = '최종변경시간'
|
|
).
|
|
APPEND ls_dd03p TO cbo_dd03p.
|
|
|
|
position = position + 1.
|
|
ls_dd03p = VALUE #(
|
|
tabname = tabname
|
|
fieldname = 'UNAME'
|
|
keyflag = ''
|
|
notnull = ''
|
|
rollname = 'UPNAME'
|
|
ddlanguage = sy-langu
|
|
position = position
|
|
ddtext = '최종변경인'
|
|
).
|
|
APPEND ls_dd03p TO cbo_dd03p.
|
|
|
|
ENDCASE.
|
|
ENDMETHOD.
|
|
|
|
|
|
METHOD get_package_info.
|
|
DATA: ls_mng_table TYPE ty_mng_table,
|
|
lv_tabname TYPE tabname.
|
|
|
|
FIELD-SYMBOLS: <lt_table> TYPE ANY TABLE.
|
|
|
|
IF erkrs IS INITIAL .
|
|
gv_message = TEXT-012.
|
|
MESSAGE gv_message TYPE 'E'.
|
|
ENDIF.
|
|
|
|
gv_source = |CE1{ erkrs }|.
|
|
|
|
CALL FUNCTION 'ZTOPDOWN_ENV'
|
|
IMPORTING
|
|
tb_name = lv_tabname.
|
|
|
|
SELECT type,
|
|
tbname,
|
|
text
|
|
FROM (lv_tabname)
|
|
WHERE erkrs = @erkrs
|
|
INTO TABLE NEW @DATA(lt_mng_table). "런타임시 구조 결정
|
|
|
|
IF sy-subrc NE 0.
|
|
" 오류 메시지 추가
|
|
result = VALUE #(
|
|
type = 'E'
|
|
id = 'FAIL'
|
|
number = '000'
|
|
message = '관리 테이블 정보 조회 오류' ).
|
|
EXIT.
|
|
ENDIF.
|
|
|
|
ASSIGN lt_mng_table->* TO <lt_table>.
|
|
|
|
FIELD-SYMBOLS : <lv_type> TYPE any,
|
|
<lv_tbname> TYPE any,
|
|
<lv_text> TYPE any.
|
|
|
|
LOOP AT <lt_table> ASSIGNING FIELD-SYMBOL(<ls_row>).
|
|
"TYPE 필드 동적 할당
|
|
ASSIGN COMPONENT 'TYPE' OF STRUCTURE <ls_row> TO <lv_type>.
|
|
ASSIGN COMPONENT 'TBNAME' OF STRUCTURE <ls_row> TO <lv_tbname>.
|
|
ASSIGN COMPONENT 'TEXT' OF STRUCTURE <ls_row> TO <lv_text>.
|
|
CASE <lv_type>.
|
|
WHEN '1'.
|
|
gv_manager = <lv_tbname>.
|
|
WHEN '2'.
|
|
gv_variant = <lv_tbname>.
|
|
WHEN '3'.
|
|
gv_sender = <lv_tbname>.
|
|
WHEN '4'.
|
|
gv_receiver = <lv_tbname>.
|
|
WHEN '5'.
|
|
gv_result = <lv_tbname>.
|
|
WHEN '6'.
|
|
gv_target = <lv_tbname>.
|
|
WHEN '7'.
|
|
gv_distinfo = <lv_tbname>.
|
|
WHEN '8'.
|
|
gv_distrule = <lv_tbname>.
|
|
ENDCASE.
|
|
|
|
ls_mng_table = VALUE #(
|
|
type = <lv_type>
|
|
tb_name = <lv_tbname>
|
|
text = <lv_text> ).
|
|
APPEND ls_mng_table TO gt_mng_table.
|
|
|
|
ENDLOOP.
|
|
|
|
" 성공 메시지 추가
|
|
gv_message = TEXT-013.
|
|
result = VALUE #(
|
|
type = 'S'
|
|
id = 'SUCCESS'
|
|
number = '000'
|
|
message = gv_message ).
|
|
ENDMETHOD.
|
|
|
|
|
|
METHOD start_package_install.
|
|
|
|
IF erkrs IS INITIAL OR tabname IS INITIAL OR function_group IS INITIAL.
|
|
gv_message = TEXT-012.
|
|
MESSAGE gv_message TYPE 'E'.
|
|
ENDIF.
|
|
|
|
|
|
|
|
* 1. Domain & Data Elements 생성
|
|
IF create_element_yn EQ 'X'.
|
|
CALL METHOD me->create_init_data_elements
|
|
RECEIVING
|
|
result = result.
|
|
|
|
IF result-type <> 'S'.
|
|
"오류 발생.
|
|
gv_message = TEXT-008.
|
|
MESSAGE gv_message TYPE 'E'.
|
|
ENDIF.
|
|
ENDIF.
|
|
|
|
* 2. 관리 테이블 생성
|
|
IF create_table_yn EQ 'X'.
|
|
CALL METHOD me->create_init_data_table
|
|
EXPORTING
|
|
erkrs = erkrs
|
|
tabname = tabname
|
|
RECEIVING
|
|
result = result.
|
|
|
|
IF result-type <> 'S'.
|
|
"오류 발생.
|
|
gv_message = TEXT-009.
|
|
MESSAGE gv_message TYPE 'E'.
|
|
ENDIF.
|
|
ENDIF.
|
|
|
|
* 3. 관리 테이블 코드값 리턴 함수 생성.
|
|
IF create_function_yn EQ 'X'.
|
|
CALL METHOD me->create_init_function
|
|
EXPORTING
|
|
function_group = function_group
|
|
tabname = tabname
|
|
RECEIVING
|
|
result = result.
|
|
|
|
IF result-type <> 'S'.
|
|
"오류 발생.
|
|
gv_message = TEXT-010.
|
|
MESSAGE gv_message TYPE 'E'.
|
|
ENDIF.
|
|
ENDIF.
|
|
|
|
|
|
|
|
"정상 처리 완료 메시지
|
|
gv_message = TEXT-011.
|
|
MESSAGE gv_message TYPE 'S'.
|
|
ENDMETHOD.
|
|
ENDCLASS.
|