본문 바로가기
ABAP

RFC 4

by clode 2023. 2. 14.
728x90
반응형

과제

[Dictionary]

구조

테이블 유형

[Fucntion builder]

유형은 RFC타입. 회사코드/플랜트/저장위치가 아닌 플랜트/저장위치/제품군이다. ㅎㅎ 마이 미슼테잌

IMPORT

EXPORT

TABLES


[Source Code]

FUNCTION zs1dfm11_06.

DATA: lt_t001w TYPE TABLE OF t001w,
      lt_tspat TYPE TABLE OF tspat,
      ls_tspat TYPE tspat.

  "플랜트
  SELECT * FROM t001w
    INTO CORRESPONDING FIELDS OF TABLE lt_t001w
    WHERE werks = i_werks.

     IF sy-subrc ne 0.
       return-type = 'E'.
       return-message = '해당 플랜트가 없습니다'.
       EXIT. "에러가 있을때 빠져나간다
     ENDIF.

  "저장위치
IF lt_t001w IS NOT INITIAL.
  SELECT * FROM t001l
    INTO CORRESPONDING FIELDS OF TABLE tab1
    FOR ALL ENTRIES IN lt_t001w
    WHERE werks = lt_t001w-werks.

    IF sy-subrc NE 0.
      return-type = 'E'.
      return-message = '해당 저장위치가 없습니다.'.
      EXIT.
    ELSE.
      return-type = 'S'.
      return-message = '조회하였습니다'.
    ENDIF.
ENDIF.


  "제품군
  SELECT * FROM tspa AS a
    INNER JOIN tspat AS b
    ON a~spart = b~spart
    INTO CORRESPONDING FIELDS OF TABLE lt_tspat
    WHERE b~spras = sy-langu.

    LOOP AT tab1.
      READ TABLE lt_tspat INTO ls_tspat WITH KEY spart = tab1-spart.
      IF sy-subrc = 0. "read table에 값이 있을때.
        tab1-vtext = ls_tspat-vtext.
      ENDIF.
      MODIFY tab1.
      CLEAR tab1.
    ENDLOOP.

      IF sy-subrc = 0.
       return-type = 'S'.
       return-message = '성공'.
     ELSE.
       return-type = 'E'.
       return-message = '에러'.
       EXIT.
     ENDIF.

ENDFUCNTION.

[실행 테스트]

플랜트 I_WERKS에 2101 (본사창고)를 입력한뒤 실행해보면

DB에 2101 플랜트를 가지고 있는 데이터를 가져온다.


728x90
반응형

'ABAP' 카테고리의 다른 글

RFC 6  (0) 2023.02.16
RFC 5  (0) 2023.02.16
RFC 3  (0) 2023.02.14
RFC 2  (0) 2023.02.14
RFC 1  (0) 2023.02.14

댓글