안녕하세요.
항상 막힐때마다 이곳을 찾네요..
레포트에 Line-Size 가 1101을 원하는데 1023이 최대라네요ㅜㅠ
1. Line-Size 무제한으로 할 수 있는 방법 아시는지요 ㅜㅠ
혹시 연말정산지급조서 프로그램 구현하시는분 계신가요?
지급조서 각 레코드 길이가 1100이네요..썩을 괜한 비과세분리를 해서 작년보다 300바이트 이상 길어졌어요..
alv, report 라인사이즈 최대는 1023인데..한 레코드마다 1100데이터가 필요하니..이를 어쩜 좋을지 ...
급 생각해본결과..
데이터를 약 800까지만 write 하고 그 이상은 다음줄에 찍히도록 하면 좋을꺼 같은데요..
만약 아래와 같은 테이블이 있는데
(A-1) ~ (A-4) 까지의 데이타 바이트 값을 추출하고 싶습니다.
2. 즉, 14(1+2+3+8) 란 수가 나와야하는데요. 이 14란 수는 어떻게 추출할 수 있을까요?
DATA: BEGIN OF A OCCURS 0,
1(01),
2(02) TYPE N,
3(03),
4(08) TYPE N,
5(01) TYPE N,
DATA: END OF A.
댓글 7
-
MadMax
2010.01.21 21:32
-
요요
2010.01.21 22:13
필드 일일이 길이 계산하시면 번거로우니까
1~5까지 거리를 재시면 될것 같은데요. ^^
DESCRIBE DISTANCE BETWEEN a-1 AND a-5 INTO len IN CHARACTER MODE.
-
MadMax
2010.01.22 18:26
위 방법은 처음 필드 이름과 끝 필드 이름을 알 경우 사용 가능한것 같습니다.
structure 변경이 생기면 오류 소지가 있을듯...
structure 자체도 하나의 field 이므로,,
DESCRIBE FIELD a LENGTH len in CHARACTER MODE.
하시면 structure a 가 변해도(a 내 field 추가/삭제) 변한 내용으로 반영됩니다. 참고하세요...
-
요요
2010.01.23 02:31
^^ 변하는 구조라면 어차피 필드도 변할테구요.
구조에 필드가 많다서 수십에서 수백개가 된다면 일일이
describe field ~ length ~ 로 길이 구해서 일일이 더하는 것은 좀 그럴것 같구요.
말씀처럼 구조가 변경된다면 더욱 난감해질것 같네요.
본문에서 a-1 ~ a-4 로 from ~ to 로 지정하실 수 있는 것 같아서
distance 로 쓰시는 것이 어떨까 의견을 드린것 뿐입니다.
로직만 잘 만드시면 편하실 거예요. ^^
-
bd
2010.01.23 03:19
소스 구현 해봤습니다. 동적으로 구현해 볼려다 시간관계상 후다다닥....^^
DATA: BEGIN OF A OCCURS 0,
1(01),
2(02) TYPE N,
3(03),
4(08) TYPE N,
5(01) TYPE N,
END OF A.
DATA : LV_CNT TYPE I,
LV_CNTA TYPE I,
LV_SUM TYPE I.
FIELD-SYMBOLS <FS>.
CLEAR LV_CNT.
WHILE SY-SUBRC = 0.
ASSIGN COMPONENT SY-INDEX OF STRUCTURE A TO <FS>.
IF <FS> IS ASSIGNED.
LV_CNT = LV_CNT + 1.
DESCRIBE FIELD <FS> LENGTH LV_CNTA IN CHARACTER MODE.
UNASSIGN <FS>.
** 필드 이름알지 못하지만 총합을 구할 필드에 갯수는 알수 있기 때문 '4'로 하드코딩~
IF LV_CNT LE '4'.
LV_SUM = LV_SUM + LV_CNTA.
CLEAR LV_CNTA.
ENDIF.
ENDIF.
ENDWHILE.
WRITE : LV_SUM.
소스 테클 감사하는 마음으로 대환영합니다.
-
bd
2010.01.23 03:31
흠냐....UNASSIGN <FS>, DESCRIBE FIELD <FS> LENGTH LV_CNTA IN CHARACTER MODE. 구문에 위치상에 문제가 있내용..
필드 수가 아주아주아주 많다고 가장할때 무조건 타고 들어가는 DESCRIBE문은...문제가 있을듯 @@
IF LV_CNT LE '4'. 요기 다음 으로 DESCRIBE문을 옮겨 주고
UNASSIGN 구문은 IF LV_CNT LE '4' 문이 끝나는 ENDIF뒤에다가 옮겨야 겠내용...ㅋㅋ 자문자답이였습니다. 좋은 주말되세요
전 퇴근하로 숑
-
츄리닝
2010.01.27 03:47
역시 알랍 e-abap.net 입니다!!
완소님들 넘넘넘 감사합니다.
요것조것 많이 테스트해보께요!!^-^
바뿌신데 감사합니당!!
field 의 길이를 알려면 describe field 라는 명령어 있습니다. 참고하세요.