wa_fldcat-fieldname = 'CLABS'.
wa_fldcat-seltext_l = 'Unrestricted'.
APPEND wa_fldcat TO i_fldcat.
CLEAR: wa_fldcat.
wa_fldcat-fieldname = 'CINSM'.
wa_fldcat-seltext_l = 'Inspection'.
APPEND wa_fldcat TO i_fldcat.
CLEAR: wa_fldcat.
wa_fldcat-fieldname = 'CSPEM'.
wa_fldcat-seltext_l = 'Blocked'.
APPEND wa_fldcat TO i_fldcat.
CLEAR: wa_fldcat.
이런식으로 CLABS, CINSM, CSPEM 세군데를 세팅했고 이 세개를 합한 새로운 필드를
만들에 ALV에 추가하고 싶습니다.
LOOP를 돌려야할 것 같은데 쉽지가 않네요..
댓글 5
-
애불래
2010.05.27 18:01
-
모포
2010.05.27 19:28
TYPES: BEGIN OF ty_data,
CLABS TYPE MCHB-CLABS,
CINSM TYPE MCHB-CINSM,
CSPEM TYPE MCHB-CSPEM,
VERPR TYPE MBEW-VERPR,
WAERS TYPE T001-WAERS,
MEINS TYPE MARA-MEINS,
TOTAL TYPE MCHB-CLABS,
END OF ty_data.
DATA: gt_data TYPE STANDARD TABLE OF ty_data,
i_fldcat TYPE slis_t_fieldcat_alv,
wa_fldcat TYPE slis_fieldcat_alv.
LOOP AT i_fldcat.
i_fldcat-TOTAL = i_fldcat-CLABS + i_fldcat-CINSM + i_fldcat-CSPEM.
MODIFY i_fldcat TRANSPORTING TOTAL.
CLEAR i_fldcat.
ENDLOOP.
위와같이 했더니
Internal table "I_FLDCAT" has no Header line - specification of one of
the additions "INTO wa", "ASSIGNING", "REFERENCE INTO", "TRANSPORTING NO FIELDS" is req
라는 에러가 납니다.
-
애불래
2010.05.27 22:13
위에 i_fldcat은 ALV 필드카탈로그용 인터널테이블이네요.
db에서 가져온 데이터를 가지고 있는 인터널테이블(alv로 뿌려줄)에 total 필드를 추가적으로 선언 하신 뒤
위의 loop를 돌리셔야합니다. 만약 출력할 데이터가 있는 인터널테이블이 gt_data라면 gt_Data를 loop 돌리셔야 하지요.
alv 출력 펑션, 메소드 자체에서 필드값을 더해서 출력하는게 아니고, alv 출력하려는 인터널 테이블에서 미리 loop로 해당 필드
값을 구한 뒤 출력하는 부분으로 인터널테이블 전체를 넘겨줘야 한다는 얘깁니다.
-
버미!
2010.05.27 22:16
Internal Table 선언 및 활용에 대해서 찾아보셔야 겠네요..그러면 해결 될겁니다.
-
모포
2010.05.27 22:26
감사합니다 여러분
애불래님의 방법대로 하니 아주 잘나옵니다. 감사요~~
일단 인터널 테이블에 세개 필드를 합한 값을 넣어줄 필드를 선언하시고 ( 예를 들어 total) 인터널테이블에 헤더라인이 있다는 가정하에
loop at (인터널테이블).
(인터널테이블)-total = (인터널테이블)- CLABS + (인터널테이블)- CINSM + (인터널테이블)- CSPEM.
MODIFY (인터널테이블) TRANSPORTING TOTAL.
CLEAR (인터널테이블).
endloop.
이런 식으로 하시면 됩니다. 노파심에 드리는 말씀이지만
위에 괄호( ) 까지 쓰시면 안되고 괄호안에 선언된 인터널 테이블 명을 쓰세요.