메뉴 건너뛰기

SAP 한국 커뮤니티



가변 itab 관련

정군 2009.04.23 12:18 조회 수 : 62247

=====================================================


Looking for a way to create a dynamic internal table? In release WAS 620, you can, by using :
CREATE DATA new_line TYPE table of (p_tab).


This syntax was not allowed in earlier releases. The FM Y_CREATE_DYNAMIC_TABLE can help you to achieve this goal.


Code


 


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>.


 

번호 제목 글쓴이 날짜 조회 수
24 SAP NetWeaver Application Server ABAP 7.4 Overview and Product Highlight file sapjoy 2015.11.12 4047
23 ABAP 7.40 Quick Reference [5] sapjoy 2015.11.19 8506
22 ALV with IDA(Integrated Data Access ) 설명 및 한글 자료 있으신 분 있으신가요 ? [1] miss841 2016.01.19 5042
21 ABAP Debugging Tips and Tricks [4] file 아밥뽀 2016.03.31 5535
20 LSMW example (FK01 - vendor master create ) [2] file cupycopy2000 2016.04.30 4308
19 모든 CBO 테이블 엑셀 업로드 프로그램 [1] sapjoy 2016.08.17 8151
18 Excel Macro 이용한 Table Layout file 아네사 2016.08.19 4717
17 PI/XI 7.1 Troubleshooting Guide - 영문 file cry6 2016.09.01 3550
16 PI/XI 7.0 Alert Config 영문 file cry6 2016.09.01 3900
15 Graphical Form Painter could not be called (FORMPAINTER_CREATE_WINDOW, ) [1] sapjoy 2016.11.22 4174
14 Next Generation ABAP Development (2007 영문 PDF) file 대략나 2016.12.20 4400
13 GRID 밤의화신 2017.04.04 4372
12 User Exit 질문 [3] 푸딩딩 2017.04.17 5688
11 Transaction code naming [2] sapjoy 2018.02.12 4542
10 S4 HANA IDES 설치 따라하기 [2] sapjoy 2018.07.14 3370
9 개발자 가이드 for SAP HANA STUDIO [4] file 얀웬리 2018.08.10 3803
8 NEPTUNE 솔루션 SAP 데이터를 FIORI로 보여주는 솔루션입니다. sapjoy 2018.09.07 2112
7 S/4 HANA 1809 소개자료(주요변화사항) [5] file sapjoy 2019.02.25 3475
6 S/4 HANA 소개자료 Simplication [3] file sapjoy 2019.02.27 19462
5 엑셀 파일을 동적으로 테이블에 업데이트 하는 프로그램 file sapabap 2019.10.22 4031