MSC2N 에서 볼 수 있는 Short Text를 ALV에 뿌려주려면 어떻게 해야하나요?
Short Text가 text object 형태라서 그냥 뿌려줄 수는 없더군요.
찾아보니
INCLUDE LCHRGF03. 부분에 아래처럼 read_text 가 있는데
어떻게 사용해야하는지 모르겠습니다.
----------------------------------------
DATA: BEGIN OF HTEXT.
INCLUDE STRUCTURE THEAD.
DATA: END OF HTEXT.
DATA: BEGIN OF TXT_LINES OCCURS 100.
INCLUDE STRUCTURE TLINE.
DATA: END OF TXT_LINES.
DATA: BEGIN OF TXT_INLINES OCCURS 100.
INCLUDE STRUCTURE TLINE.
DATA: END OF TXT_INLINES.
이렇게 data 선언하구요...
LOOP AT gt_data.
PERFORM read_text.
move txt_lines to gt_data-KZTXT.
MODIFY gt_data TRANSPORTING KZTXT.
CLEAR gt_data.
ENDLOOP.
루프돌면서 KZTXT에 할당하했는데...............화면에 빈칸으로 나옵니다..
FORM read_text.
REFRESH: txt_lines.
CLEAR: txt_lines.
CALL FUNCTION 'READ_TEXT_INLINE'
EXPORTING
id = 'VERM'
inline_count = 1
language = sy-langu
name = 'TDNAME'
object = 'CHARGE'
IMPORTING
header = HTEXT
TABLES
inlines = txt_inlines
lines = txt_lines
EXCEPTIONS
id = 1
language = 2
name = 3
not_found = 4
object = 5
reference_check = 6
OTHERS = 99.
IF NOT sy-subrc IS INITIAL AND
NOT sy-subrc EQ 4.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDFORM.
----------------------------------------
댓글 4
-
버미!
2010.05.31 17:13
-
모포
2010.05.31 17:19
text 들이 100자 이하로 모두 들어가있고 앞으로도 그럴 예정이라 ALV로 우선 뿌려보려합니다. -
버미!
2010.05.31 17:34
자료실에 텍스트로 올라와 있네요. Long Text 함 읽어보시고요..
웬만한 것은 다있다
https://www.sdn.sap.com/irj/sdn
저두 초보일때는 하루에 수십번씩 SDN에서 검색하고 읽어보고,,,,물론 지금도 매일 몇번씩 들어가고 잇고요..
-
맑은하늘
2010.05.31 18:08
txt_lines 는 internal table 이고 perform read_text. 후에 move 에서 txt_lines 는
internal table txt_lines 의 header line 일 것 같군요.
function READ_TEXT_INLINE 에서 읽어온 텍스트는 internal table txt_lines 에
들어오기 때문에 이 내용을 모두 필드형태로 변경시켜서 kztext 로 옮겨주셔야 할
것 같네요.
----------------------
선언부
...
data txt_string type string.
...
----------------------
perform 내 텍스트 변환
....
loop at txt_lines.
concatenate txt_string txt_lines into txt_string.
endloop.
...
----------------------
gt_data-kztext 로 이동
...
perform read_text.
move txt_string to gt_data-kztext.
....
-----------
이런식이 되야 할 것 같습니다. 수고하세요
Read Text 펑션은 Long Text를 읽어오는 펑션으로 해당 ID,NAME,LANG.,OBJECT를 파라미터로 넘기면 값을 읽어올수 있습니다.
위의 구문은 찾아보셨다니, 디버깅모드로 하면 ID,NAME,LANG.,OBJECT값을 알수 잇을 것입니다.
그럼 Read Text 펑션을 이용하여 파라미터를 주어 실행하면 Long Text 값을 읽어올 수가 있는 데,
이를 ALV에 뿌려주려고 하는 데, 이건 좀 아니라고 생각되는데요..
이유는 Long Text를 ALV에 뿌려준다면 예를 들어 Read Text로 가져온 값이 1,000자가 넘는 경우도 생각해 보셔야 할것입니다. 내용이 짧다면 상관없겠지만...
저라면 ALV에 라인별 버튼을 만들던지 아니면 더블클릭시 Long Text를 보여주는 방법으로 유도를 하고 싶네요..
자세한 것은 SDN에서 혹은 이지아밥 책에서 Long Text 챕터를 찾아보세요...
자료실에도 있을 법한데...