ASAP

[SAP/ABAP] 엑셀 업로드 데이터 자릿수 이상 이슈 해결 (자재/코스트센터) 본문

SAP(ABAP)/이슈

[SAP/ABAP] 엑셀 업로드 데이터 자릿수 이상 이슈 해결 (자재/코스트센터)

에이SAP 2022. 12. 21. 15:18
728x90

SAP 에서 엑셀을 업로드 했는데, 

ALV에 DISPLAY되는 인터널테이블의 값이 자릿수가 맞지 않는 경우가 있다. 

예를 들어 코스트센터 값을 1111111 입력했는데, 이 숫자 그대로 들어가는 경우이다. 

실제로 코스트센터의 자릿수는 10자리라 0001111111이 인터널테이블에 들어가야 한다.

 

나는 필드카탈로그 속성에 REF_TABLE, REF_FIELD도 다 줬는데 왜 적용이 안되냐? 

라는 의문이 들 수 있는데, 그래도 업로드 시에는 꼭 Conversion을 해줘야 한다... 

 

업로드를 하고 data들을 하단 코드를 사용해 다시 수정해주자. 

입력한 코스트센터 값 1111111 이 0001111111로 인터널테이블에 잘 들어갈 것이다. 

  CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
    EXPORTING
      input  = pa_value
    IMPORTING
      output = pa_value.

 

추가로, 필드카탈로그에서 데이터 display 관련된 속성들을 살펴보자.

 

1. lzero 

LS_FIELDCAT-LZERO = ''

 

LS_FIELDCAT-LZERO = 'X'


앞에 '0' 출력 여부를 정하는 필드 카탈로그 속성.
예로, ALV에 matnr을 표시할 때 앞에 0을 살리고 싶을 때, lzero = 'X' 를 하면 앞에 0이 나타난다.
=> 즉, 저장 시 관련이 없고, alv 출력에만 영향을 준다.



2. ref_table, ref_field

LS_FIELDCAT-REF_TABLE = '테이블이름'
LS_FIELDCAT-REF_FIELD = '필드이름'

 

 

LS_FIELDCAT-REF_TABLE = ''
LS_FIELDCAT-REF_FIELD = ''


이걸 적용하게 되면 
예로, 코스트센터 0001111111 은 alv에 출력될 때 1111111으로 알아서 앞에 0을 제거해서 데이터를 정제해서 alv에 출력한다.


728x90