예를 들면 10 이라는 값을 입력을 했을때
data : value(10).
이런식으로 데이터를 선언 할수 있는 방법이 없을까요???
이방법 저방법 써보고 있지만 도통 답이 안나오내요...
멋진 힌트 부탁 드림니다. 선배님들.
댓글 4
-
초보bsp/abap
2008.02.23 18:47
-
bd
2008.02.24 23:03
답글이 늦었네요...동적으로 데이터를 선언 하는 부분을 말씀드린건데;; 다시보니 그냥 데이터 를 선언하는 방법에
대해 질문하는것처럼 보이내요 ^^ . 언제나좋은 답글 감사 드림니다.
-
모모
2008.02.25 18:38
매크로나 필드심볼을 사용해보시는 것을 어떨까요?
정확한 상황을 몰라서 일반적이 이야기 한줄 적고 갑니다. ^^;
-
activeman
2008.02.25 19:11
도움이 될런지 모르겠습니다만 인터널테이블을 동적으로 생성하는 예제입니다.
참고하셔서 좋은 프로그램 개발하십시요...
FUNCTION y_create_dynamic_table.
*"----------------------------------------------------------------------
*"*"Local interface:
*" IMPORTING
*" REFERENCE(I_STRUCT_NAME) TYPE DD02L-TABNAME
*" REFERENCE(I_ALV_CLEAR_KEY) TYPE FLAG OPTIONAL
*" EXPORTING
*" REFERENCE(E_TOTAL_LENGTH) TYPE I
*" TABLES
*" CTBL_ALV_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV OPTIONAL
*" CTBL_DYN_CATALOG STRUCTURE LVC_S_FCAT OPTIONAL
*" CHANGING
*" REFERENCE(DYN_WA) TYPE REF TO DATA
*" REFERENCE(DYN_TABLE) TYPE REF TO DATA
*"----------------------------------------------------------------------
FIELD-SYMBOLS : <tbl_output> TYPE STANDARD TABLE,
<wa_output> TYPE ANY.
DATA: new_line TYPE REF TO data, " dereference <fs>
new_table TYPE REF TO data.
* Dynamic field description of a structure
DATA: ref_descr TYPE REF TO cl_abap_structdescr,
wa_comp TYPE abap_compdescr.
* cl_alv_table_create=>create_dynamic_table METHOD
DATA: it_fieldcat TYPE lvc_t_fcat,
is_fieldcat LIKE LINE OF it_fieldcat.
* REUSE_ALV FM
DATA: ct_fieldcat TYPE slis_t_fieldcat_alv,
wa_fc LIKE LINE OF ct_fieldcat.
** create working area according to selection
CREATE DATA new_line TYPE (i_struct_name).
ASSIGN new_line->* TO <wa_output>.
* create table-> fill catalog
ref_descr ?= cl_abap_typedescr=>describe_by_data( <wa_output> ).
LOOP AT ref_descr->components INTO wa_comp.
MOVE:
wa_comp-name TO is_fieldcat-fieldname,
wa_comp-name TO is_fieldcat-ref_field,
i_struct_name TO is_fieldcat-ref_table.
APPEND is_fieldcat TO it_fieldcat.
ADD wa_comp-length TO e_total_length.
* Catalog for REUSE_ALV_GRID_DISPLAY
MOVE-CORRESPONDING is_fieldcat TO wa_fc.
wa_fc-fieldname = is_fieldcat-fieldname.
wa_fc-fieldname = is_fieldcat-ref_field.
wa_fc-ref_tabname = is_fieldcat-ref_table.
* If the key is cleared, the order of columns are not changed
IF NOT i_alv_clear_key IS INITIAL.
CLEAR wa_fc-key.
ENDIF.
APPEND wa_fc TO ct_fieldcat.
ENDLOOP.
CALL METHOD cl_alv_table_create=>create_dynamic_table
EXPORTING
it_fieldcatalog = it_fieldcat
IMPORTING
ep_table = new_table.
ASSIGN new_table->* TO <tbl_output>.
* Return
ctbl_alv_fieldcat[] = ct_fieldcat[]. " ALV use
ctbl_dyn_catalog[] = it_fieldcat[]. " create_dynamic_table reuse
* dyn_table[] = <tbl_output>. " generates a dump, <fs> not assigned
* dyn_wa = <wa_output>. " when calling the FM
dyn_table = new_table.
dyn_wa = new_line.
ENDFUNCTION.
In the calling program:
*------------
* F I E L D ? S Y M B O L S
*------------
FIELD-SYMBOLS : <tbl> TYPE STANDARD TABLE,
<wa> TYPE ANY.
*--------------
* D A T A
*--------------
DATA: new_line TYPE REF TO data, " dereference <fs>
new_table TYPE REF TO data.
CALL FUNCTION 'Y_CREATE_DYNAMIC_TABLE'
EXPORTING
i_struct_name = p_tab
i_alv_clear_key = 'X'
TABLES
ctbl_alv_fieldcat = ct_fieldcat
CHANGING
dyn_wa = new_line
dyn_table = new_table.
* Dereference to field symbol
ASSIGN new_table->* TO <tb>.
ASSIGN new_line->* TO <wa>.
데이터 선언은
숫자 문자
DATA: INT TYPE I. DATA: CHAR(10) TYPE C.
위와 같이 선언을 하심이....
그리고 문자 한자리면 DATA: CHAR. 만 쓰셔도 가능 합니다.