메뉴 건너뛰기

SAP 한국 커뮤니티

필드심볼 공부하면서 알수 없는 부분...

들아쿠라 2007.07.24 21:47 조회 수 : 2131 추천:59




REPORT  YZTEST_DYN_ITAB2.

TYPE-POOLS : ABAP.
FIELD-SYMBOLS: <DYN_TABLE> TYPE STANDARD TABLE,
               <DYN_WA>,
               <DYN_FIELD>.
DATA: DY_TABLE TYPE REF TO DATA,
      DY_LINE  TYPE REF TO DATA,
    XFC TYPE LVC_S_FCAT,
    IFC TYPE LVC_T_FCAT.
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME.
PARAMETERS: P_TABLE(30TYPE C DEFAULT 'T002'.
SELECTION-SCREEN END OF BLOCK B1.

START-OF-SELECTION.
  PERFORM GET_STRUCTURE.
  PERFORM CREATE_DYNAMIC_ITAB.
**********creates a dyanamic internal table**********
  PERFORM GET_DATA.
  PERFORM WRITE_OUT.
*&---------------------------------------------------------------------*
*&      Form  get_structure
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM GET_STRUCTURE.


 


*//////////////////////////////////////////////////


* 아래부분에서 값을 배수로 가져옴


*/////////////////////////////////////////////////
  DATA : IDETAILS TYPE ABAP_COMPDESCR_TAB,
       XDETAILS TYPE ABAP_COMPDESCR.
  DATA : REF_TABLE_DES TYPE REF TO CL_ABAP_STRUCTDESCR.
  DATA : SPTXT(20TYPE C.
* get the structure of the table.
  REF_TABLE_DES ?=
      CL_ABAP_TYPEDESCR=>DESCRIBE_BY_NAME( P_TABLE ).
  IDETAILS[] = REF_TABLE_DES->COMPONENTS[].
  LOOP AT IDETAILS INTO XDETAILS.
    CLEAR XFC.
    XFC-FIELDNAME = XDETAILS-NAME .
    XFC-DATATYPE  = XDETAILS-TYPE_KIND.
    XFC-INTTYPE   = XDETAILS-TYPE_KIND.
    XFC-INTLEN    = XDETAILS-LENGTH.
    XFC-DECIMALS  = XDETAILS-DECIMALS.
    APPEND XFC TO IFC.
  ENDLOOP.

ENDFORM.                    "get_structure
*&---------------------------------------------------------------------*
*&      Form  create_dynamic_itab
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM CREATE_DYNAMIC_ITAB.

* create dynamic internal table and assign to fs
  CALL METHOD CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE
    EXPORTING
      IT_FIELDCATALOG = IFC
    IMPORTING
      EP_TABLE        = DY_TABLE.
  ASSIGN DY_TABLE->* TO <DYN_TABLE>.
* create dynamic work area and assign to fs
  CREATE DATA DY_LINE LIKE LINE OF <DYN_TABLE>.
  ASSIGN DY_LINE->* TO <DYN_WA>.

ENDFORM.                    "create_dynamic_itab

*&---------------------------------------------------------------------*
*&      Form  get_data
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM GET_DATA.
* select data from table.
  SELECT * INTO TABLE <DYN_TABLE>
             FROM (P_TABLE) UP TO 100 ROWS.


ENDFORM.                    "get_data


*&---------------------------------------------------------------------*
*&      Form  write_out
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM WRITE_OUT .

* WRITE out data from table.
  LOOP AT <DYN_TABLE> INTO <DYN_WA>.
    DO.
      ASSIGN COMPONENT  SY-INDEX
         OF STRUCTURE <DYN_WA> TO <DYN_FIELD>.
      IF SY-SUBRC <> 0.
        EXIT.
      ENDIF.
      IF SY-INDEX = 1.
        WRITE:/ <DYN_FIELD>.
      ELSE.
        WRITE: <DYN_FIELD>.
      ENDIF.
    ENDDO.
  ENDLOOP.

ENDFORM.                    " write_out


 


 


 


전체 소스입니다. 문제가 되는 부분은 GET_STRUCTURE form 부분인데요.


값이 이상하게 나와서 디버깅 해본결과 값을 두배로 튀겨 나옵니다.


테이블의 길이는 1인데 가져오는것은 2 로 가져 옵니다. 왜 이러는 건가요?


 


또, 어떤 방법으로 해결할수 있는지요.


고수님들의 의견 부탁드립니다.

번호 제목 글쓴이 날짜 조회 수
527 <b>[완료]</b>ALV 에서 평균을 구하고 싶은데요.. [2] 강성훈 2007.08.08 2704
526 SELECT 문에 대해서 ... [2] 하늘만 2007.08.08 1752
525 ALV 삭제에 관한 질문입니다. [2] 초보생 2007.08.08 1954
524 NetWeaver에서 WebDynpro 관련 질문입니다. [3] file 신종철 2007.08.07 1641
523 자료 요청드립니다. SD 교재나 show 자료를 찾아요... 나도아밥퍼 2007.08.07 1699
522 ALV 스크린 상에서 EDIT 관련 질문입니다. 초보생 2007.08.07 1771
521 집에 지금 NetWeaver를 설치하고 있습니다.. [5] 신종철 2007.08.07 1751
520 테이블컨트롤 필드 속성을 입력가능<->출력전용 이리 변경해줄려면 구문을 어떻게 해야하나요. 노력&성장 2007.08.07 2088
519 [re] 스크린페인터의 테이블컨트롤의 필드에서 필수필드로 제약하는 필드속성이 있나요? [1] file sapjoy 2007.08.06 1809
518 스크린페인터의 테이블컨트롤의 필드에서 필수필드로 제약하는 필드속성이 있나요? [1] 노력&성장 2007.08.06 2708
517 [re] Static Method와 Instance Method의 차이 좀 알려주세요. file sapjoy 2007.08.06 4213
516 CMOD에 관한 질문입니다. file bd 2007.08.06 1670
515 Static Method와 Instance Method의 차이 좀 알려주세요. 바위 2007.08.06 2433
514 ALV 화면에서 대해서 . [4] 하늘만 2007.08.06 1717
513 임시송장 BAPI (BAPI_INCOMINGINVOICE_PARK) 질문있습니다. [1] 복마화령 2007.08.06 2844
512 날짜 관련 질문입니다. [4] ccc 2007.08.03 1907
511 ASCII -> 2바이트코드 [4] w 2007.08.02 1869
510 이거 구현하는 방법 아시는분...... [5] 나도아밥퍼 2007.08.01 1740
509 slection screen에서 선택조건 disable할수있게하는 방법 [3] 김현주 2007.08.01 2121
508 Multi Selection 버튼 색상 문의..<-제목이 흠.. file 김지성 2007.08.01 50614