안녕하세요.
현재 저희회사에서는 SAP에 라벨프린터기(바코드 프린터)를 연결하여 사용중입니다.
그런데 현장에서 사용중인 라벨프린터기가 약 250개 까지는 한번에 출력이 되는데, 그 이상을 하면 Runtime Error가 발생한다고 연락이 왔습니다.
해당 프로그램을 보다 보니.. 라벨로 출력될 바코드양식을 테이블형태로 변환해주는 CONVERT_STRING_TO_TABLE 라는 Function이 사용되는걸 확인했고
하기 코드중에 i_tabline_length 이 255로 고정되어 있는것을 확인하였습니다.
Function상의 description으로는 'Length of the table lines' 라고 하더라구요 그래서 출력하려는 라벨 수보다 이부분이 초과되서 생기는현상인지
궁금합니다. 내용상으로는 의심이 가는데.. 이게 현장에서 계속사용하는거라 쉽게 변경해보기가 어렵습니다 ㅠ
(QA(TEST)서버에는 별도로 프린터기 연결하여 작업하기 어려운 상황입니다..)
----------------------------------------------------------------------------------------------------------
LOOP AT pt_barcode .
CLEAR : lt_barcode, lt_barcode[] .
CALL FUNCTION 'CONVERT_STRING_TO_TABLE'
EXPORTING
i_string = pt_barcode
i_tabline_length = 255 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<이 부분 의심
TABLES
et_table = lt_barcode.
LOOP AT lt_barcode.
t_barcode-barcode = lt_barcode-barcode.
APPEND t_barcode .
ENDLOOP.
ENDLOOP.
------------------------------------------------------------------------------------------------------------
혹시 Function에 대해 사용해보시거나 아시는 분 계실까요!!?
만약 저 파라미터값이 문제라면 늘리면 될지.. 이게 어떤 범위로 얼만큼 까지 늘려야 할지 의문입니다.
도움 부탁드립니다
감사합니다!!
댓글 4
-
아좀더
2019.06.20 00:19
-
버미
2019.06.20 02:42
눈팅하다 몇자 적습니다.
i_tabline_length = 255 는 문자열의 길이를 255자로 잘라서 itab에 넣으라는 얘깁니다.
즉 입력받은 itab의 문자열을 255자로 나누어서 itab으로 리턴하라..
이런 파라미터 입니다.
-
아좀더
2019.06.20 23:39
버미님//
아~ 저게 테이블 row의 길이가 아니군요ㅠ 감사합니다.
혹시 런타임오류가 나는건 그럼 시스템적으로 부하가 걸려서 그런걸까요..?
-
Mori
2019.06.29 01:35
비슷한 일이 있었는데요 (250자 4개 필드 이어붙임. 아래에서는 2개만 예를 듦. 스마트폼 예 )
1. t-code 'SO10' 에서 Standard Text 생성
- 2D Barcode 사용시 250 까지만 사용가능이므로 250자 초과일 경우 출력길이를 늘여주기 위한 목적.
생성후 해당 오브젝트을 barcode 의 general attributs 탭의 text key 로 설정함.
Ex. <BB>&BAR01&&BAR02&</> BARxx 는 변수명
2. 호출 프로그램
data lv_string type string.
data lt_barcode type table of char255. (길이는 원하시는대로)
concatenate linse of pt_barcode into lv_string in character mode.
위 펑션 이용하여 lv_string 을 lt_barcode 로 생성
3. smartForm 의 매개변수에 lt_barcode 지정
smartform 에서 program line 생성 후에
lt_barcode 를 250 자 기준으로 BAR01, BAR02 로 넣어줌
ex.
import - lt_barcode.
export - bar01, bar02
[source]
data lv_string type string.
data ls_barcode type char255.
loop at lt_barcode into ls_barcode.
lv_string = lv_string && ls_barcode.
endloop.
if strlen( lv_string ) <= 250.
bar01 = lv_string.
clear bar02.
exit.
endif.
lv_len = strlen( lv_string ) - 250.
bar01 = lv_string(250).
bar02 = lv_lv_string+250(lv_len).
대충 이런식으로 작업했었던것 같습니다.
데이터를 적당한 길이로 테이블로 올리고
이 테이블을 잘라서 다시 n 개의 필드데이터로 만든후에
standard text 를 만들어 n 개의 필드데이터를 연결해서 찍었던것 같습니다.
문제는 데이터가 많아지면 찍는 barcode나 qr 코드값이 뭉개지거나 커지거나
했던 것 같으니 이점 주의해서 작업하시면 될 것 같아요.
저도 이정도밖에 기억나지 않네요. 하시다 부족한 부분은 찾아보시면서
하시면 해결되실 것 같습니다.
추가적으로 255- > 500으로 변경해보았습니다
Overflow가 발생합니다..ㅠ Overflow when converting 400..