본문 바로가기
ERP-SAP/ABAP

<ABAP> 파일전송(OPEN DATASET) 시에 고정자릿수로 전송하는법(라인 일정길이 고정 유지 파일 전송)

by 행복한워니의 기록 2024. 4. 4.
728x90
반응형

1번째 라인 파일크기와 2번째 라인 파일크기를 비교해보자

1번은 142115 , 2번은 141741이다.
데이터는 동일한 상태인데 전송시에 파일길이 유지를
안해줘서 스트럭쳐의 마지막 필드값이 비어있었기에 빈값들이 안들어가서 파일이 만들어진 것이다.

즉, 라인길이를 200자 고정으로 하고싶었는데
맨 마지막 필드길이가 100자리이고 그게이
비어있어 100자만 만들어진 것이다...

그러면 스트럭쳐 필드의 길이를 모두 합산하여 라인길이를 유지하는 방법은 무엇일까?
빈칸만큼 뭐 스페이스를 넣어주거나 그래야 하나?

아니다.. 코드는 매우 심플하다.

아래처럼 각 라인들을 transfer 하면서 length 를
지정해 주면 된다...


open dataset file_path. 해서 파일만들어열고
transfer <struc> to File_path LENGTH 길이지정.
close dataset file_path.
하면된다.

그러면 각 스트럭쳐의 길이 합산은 어찌하나?
그냥 하드코딩으로 때려넣느냐?
그래도 되는데 동적 합산을 해도 된다.

이 블로그에도 있는 do enddo 사이에
assign component 해서 계속 돌면서 필드길이를 더하면 된다.
아래 처럼 코딩해보자..

아래는 헤더값 / 트레일러값 따로 구하려고
2개를 했네.... (내가 짠게 아니긴 한데.. 저런건 perfome 으로 모듈화해서 1번씩만 코딩해는게...)



그럼 get type len  폼안에 내용은?
아래 사진참조..
discribe field 해서 타입과 lenth 구하면 된다.

이상 끝!!!@@@

728x90
반응형