SAP joy

캐릭터 타입 필드 뒤에 공란 추가

[레벨:4]arén- 2017.11.28 17:41
DATA: L_CODES(10) TYPE C.
L_CODES = ‘12345’.

위와 같이 Type char에 10 Length인 필드에 값이 들어온 자리 뒷부분에 Space를 입력하고자 합니다.
(L_CODES = ‘12345_____’ _부분을 space로)

RFC로 데이터 전송 시 L_CODES값이 10byte로 전송하기로 해서 뒤에 공란을 채우려고 합니다.

Char 필드라 필드 뒤 공란이 Auto trim 되는거 같은데요.
공란을 뒤에 붙이는 방법이 없을까요??
구글 검색해서 나오는 방법을 적용 해봐도 적용되는게 없네요..;;

RFC로 전송 시 ref type의 length를 10인 변수로 선언하고 ‘12345’로 보내면 선언된 입력된 값 이외 자릿수가 공란으로 인식되어 총 10 length만큼 레거시 시스템에서 인식 될지요..ㅠ

혹시 경험있으신 분의 답변 부탁드립니다.
의견 (1)

답변등록

현재 답변들 2
[레벨:5]재곤 2017.11.28 18:48

안녕하세요,


아밥보다는 일반 프로그램 상식으로 생각을 해보는건 어떨까요

물론 아밥에서 write '12345' to l_codes left-justified 로 왼쪽으로 밀어서 변수를 저장하실 수 있지만,

받는 프로그램에서 결국 RFC로 전송하는 문장을 길이에 맞게 잘라서 읽지 않으면, 결국 10자리로 선언해서 넘기셔도 5자리로 잘라서 받을 테니까요

실험으로 write to left-justified 와 move 12345 to l_codes 를 디버깅해보시면 아실 수 있을거에요


물론 진짜 저런 인터페이스 설정을 바꿀수 없다면, 레거시 프로그램을 바꿔서 10자리로 마스킹해주는(공란을 억지로 채워주는) 방법을 택해도 좋구요

어떻게 보내든지 간에 받는쪽에서 똑바로 못받으면 그걸 바꿔야 하는건 보내는쪽이 아닌 받는쪽이죠.

의견 (0)
[레벨:9]Brisky 2017.11.29 16:53

답글 달려고 했는데, ClearB님이 먼저 댓글 올려주셨네요.

ClearB님의 링크하고, 하기의 링크 참조해 보세요.


http://www.saptechnical.com/Tips/ABAP/TrailingSpaces/place.htm
------------------------------------------------------------------------------------------------
CONSTANTS: c_space TYPE syhex02 VALUE '00a0'. " Value for space

DATA: g_space TYPE string,
             l_pos type i.

TYPES: BEGIN OF ty_data,
        field1(8) TYPE c,
       END OF ty_data.

DATA: wa_data TYPE ty_data.
DATA: i_data TYPE STANDARD TABLE OF ty_data.

* Get the value of a space
g_space = cl_abap_conv_in_ce=>uccp( c_space ).

wa_data-field1 = 'Joy'.
L_pos = strlen( wa_data-field1 ).
Do 5 times.

wa_data-field1+l_pos(1) = g_space.
L_pos = l_pos + 1.
Enddo.

APPEND wa_data TO i_data.

CALL METHOD cl_gui_frontend_services=>gui_download
  EXPORTING
    filename                  = 'C:\trailing_space_demo.txt'
  CHANGING
    data_tab                  = i_data
  EXCEPTIONS
    FILE_WRITE_ERROR          = 1
    NO_BATCH                  = 2
    GUI_REFUSE_FILETRANSFER   = 3
    INVALID_TYPE              = 4
    NO_AUTHORITY              = 5
    UNKNOWN_ERROR             = 6
    HEADER_NOT_ALLOWED        = 7
    SEPARATOR_NOT_ALLOWED     = 8
    FILESIZE_NOT_ALLOWED      = 9
    HEADER_TOO_LONG           = 10
    DP_ERROR_CREATE           = 11
    DP_ERROR_SEND             = 12
    DP_ERROR_WRITE            = 13
    UNKNOWN_DP_ERROR          = 14
    ACCESS_DENIED             = 15
    DP_OUT_OF_MEMORY          = 16
    DISK_FULL                 = 17
    DP_TIMEOUT                = 18
    FILE_NOT_FOUND            = 19
    DATAPROVIDER_EXCEPTION    = 20
    CONTROL_FLUSH_ERROR       = 21
    NOT_SUPPORTED_BY_GUI      = 22
    ERROR_NO_GUI              = 23
    others                    = 24
        .
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.

------------------------------------------------------------------------------------------------

의견 (0)

서비스 링크

X
Login

브라우저를 닫더라도 로그인이 계속 유지될 수 있습니다. 로그인 유지 기능을 사용할 경우 다음 접속부터는 로그인을 하실 필요가 없습니다. 단, 게임방, 학교 등 공공장소에서 이용 시 개인정보가 유출될 수 있으니 꼭 로그아웃을 해주세요.

X