본문 바로가기
ABAP

RFC 5

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

과제

[ABAP Dictionary]

구조를 만들어주고 tables에서 like로 바로 참조해줄거기 때문에 테이블유형은 따로 만들지 않는다.

[Fucntion builder]

[Import]

[Export]

[Tables]

[Source Code]

반복적인 구문이기 때문에 매크로를 사용한다. 디버깅했을 때 매크로는 건너뛴다는 단점이 있다.

FUNCTION ZS1DFM11_07.
*"*"Local interface:
*"  IMPORTING
*"     VALUE(I_KUNNR) TYPE  KNA1-KUNNR OPTIONAL
*"     VALUE(I_BUKRS) TYPE  KNB1-BUKRS OPTIONAL
*"     VALUE(I_ERDAT) TYPE  KNB1-ERDAT OPTIONAL
*"     VALUE(I_ERNAM) TYPE  KNB1-ERNAM OPTIONAL
*"  EXPORTING
*"     VALUE(RETURN) TYPE  BAPIRETURN1
*"  TABLES
*"      TAB1 STRUCTURE  ZS1D11S_07


  DATA: lr_kunnr TYPE RANGE OF kna1-kunnr,
        ls_kunnr LIKE LINE OF lr_kunnr,
        lr_bukrs TYPE RANGE OF knb1-bukrs,
        ls_bukrs LIKE LINE OF lr_bukrs,
        lr_erdat TYPE RANGE OF knb1-erdat,
        ls_erdat LIKE LINE OF lr_erdat,
        lr_ernam TYPE RANGE OF knb1-ernam,
        ls_ernam LIKE LINE OF lr_ernam.

"매크로 사용
  DEFINE range1.
    &1-low = &2. "초기값 설정 
    &1-sign = 'I'.
    &1-option = 'EQ'.
    APPEND &1 TO &3. CLEAR &1.
  END-OF-DEFINITION.

  range1:
  ls_kunnr i_kunnr lr_kunnr,
  ls_bukrs i_bukrs lr_bukrs,
  ls_erdat i_erdat lr_erdat,
  ls_ernam i_ernam lr_ernam.

  SELECT * FROM kna1 AS a INNER JOIN knb1 AS b
      ON a~kunnr = b~kunnr
    INTO CORRESPONDING FIELDS OF TABLE tab1
   WHERE a~kunnr IN lr_kunnr
     AND b~bukrs IN lr_bukrs
     AND b~erdat IN lr_erdat
     AND b~ernam IN lr_ernam.

  IF sy-subrc = 0.
    return-type = 'S'.
    return-message = '성공'.
  ELSE.
    return-type = 'E'.
    return-message = '실패'.
  ENDIF.


ENDFUNCTION.

IF i_kunnr is INITIAL and i_bukrs is INITIAL. ~
이런식으로 initial에 여러 조건을 줘도 되지만 이러면 select 여러번 해야한다.

728x90
반응형

'ABAP' 카테고리의 다른 글

Field-symbols 1  (0) 2023.02.16
RFC 6  (0) 2023.02.16
RFC 4  (0) 2023.02.14
RFC 3  (0) 2023.02.14
RFC 2  (0) 2023.02.14

댓글