메뉴 건너뛰기

SAP 한국 커뮤니티



function에 참조 타입 선언 안하기

정군 2009.04.16 00:12 조회 수 : 3384

제가 abap con.이 아니다 보니 부족한게 많습니다.


나중에 고수분께서 좀 글을 고쳐주셨으면 좋겠습니다.


 


첨부로 올리면 화면 캡쳐가 쉬워서 좋겠지만...


점수가 깎이실테니들.. 그냥 글로 씁니다.


 


 


일단, function에 참조타입을 선언하지 않으면 function을 호출할 때 자동으로 타입을 설정하게 됩니다.


예를 들어서 아래에 선보인 코드를 조금 손봐서..


 


 


[program source]


REPORT  z_range                                 .


TABLES: mara.


TYPES: BEGIN OF ty_itab,
       matnr  LIKE  mara-matnr,
       END OF ty_itab.


DATA: itab TYPE STANDARD TABLE OF ty_itab.


SELECTION-SCREEN BEGIN OF BLOCK group1.


SELECT-OPTIONS: s_matnr FOR mara-matnr.


SELECTION-SCREEN END OF BLOCK group1.



START-OF-SELECTION.


  SELECT matnr INTO TABLE itab UP TO 10 ROWS
  FROM mara
  WHERE matnr IN s_matnr
  .


  BREAK-POINT.


  DATA: lv_data TYPE char1,
        lt_table LIKE itab,
        lo_object TYPE REF TO cl_abap_char_utilities.


  CALL FUNCTION 'Z_NOT_DECLARE'
    EXPORTING
      p_data   = lv_data
      p_table  = lt_table
      p_object = lo_object.


 


 


라고 하고


 


[function import parameter]


P_DATA
P_TABLE
P_OBJECT


 


[function source code]


break-point.


 


 


라고 할 때.


실행해 보시면 자동으로 P_DATA,P_TABLE,P_OBJECT에 프로그램에서 선언한 타입과 동일한 값을 가지는 것을 볼 수 있습니다. 편리하죠. 하지만 compile time에서 문제가 생길수도 있어서.. 잘 선택하셔야 합니다.


 


 


이제 이야기 하고 싶은 것은.. 그러면 저게 정말로 타입이 없는 것인가 입니다.


결론은 그렇지 않다 입니다. JAVA에서 object라는 최상위 객체가 있듯, ABAP에도 (용어는 정확히 모르겠으나) general type이 있습니다.


 


위의 fucntion을 다시 정의하면 아래와 같이 import paramter를 선언할 수 있습니다.


 

P_DATA     TYPE             DATA
P_TABLE   TYPE             TABLE
P_OBJECT TYPE REF TO OBJECT

 


이해가 되시는지?