Python에서 SAP RFC 모듈 호출 - 기억해야 할 사항

SAP 시스템에서 데이터를 얻는 가장 일반적인 방법 중 하나는 OData입니다. 설정하려면 최소한 ABAP 및 SAP에 대한 기본 지식이 필요합니다. 주로 Python을 사용하는 또 다른 방법이 있습니다.

여기서 function module 가 무엇인지 알아야 합니다. 이 예에서는 매우 간단하게 만들겠습니다. 입력과 출력이 있는 간단한 함수처럼 취급하십시오. 그게 다야 😉.

우리에게 필요한 것


  • SAP NetWeawer RFC SDK
  • PyRFC
  • 일부 SAP 시스템 🤷‍♀️

  • this 설치 단계를 따르십시오. 나는 그것들이 매우 유용하다는 것을 알았다. 경고합니다. Windows에서는 쉽지 않습니다 😉.

    SAP 클라이언트



    먼저 시스템과의 연결입니다. 귀하의 IP에 연결할 수 있는 권한이 있는지 확인하는 것을 잊지 마십시오.

    from pyrfc import Connection
    
    con = Connection(
        user=config["user"],
        passwd=config["password"],
        mshost=config["mshost"],
        msserv=config["msserv"],
        sysid=config["sysid"],
        group=config["group"],
        saprouter=config["saprouter"],
        client=config["client"],
    )
    


    나는 모든 구성을 사전으로 전달하고 env 변수나 다른 파일에 보관하는 것을 좋아합니다.

    데이터 가져오기



    전체 아이디어는 내가 언급한 FM(기능 모듈)을 트리거하는 것입니다. SAP 표준 라이브러리에는 RFC_READ_TABLE 라는 FM이 있습니다. 데이터베이스에 대한 select 문을 만드는 데 사용할 수 있습니다.
    call 클래스 인스턴스의 메서드 Connection를 사용합니다. 첫 번째 매개변수는 FM 이름입니다. 이 경우에는 RFC_READ_TABLE 입니다. 다음 매개변수는 FM의 인터페이스와 동일합니다. SAP의 se37 T-code에서 확인하실 수 있습니다.

    response = con.call(
        fm_name,
        QUERY_TABLE=table_name,
        DELIMITER=delimiter,
        FIELDS=fields,
        OPTIONS=options,
        ROWCOUNT=rowcount,
        ROWSKIPS=rowskips,
    )
    


    획득한 데이터를 표시하고 문자열을 조금 쪼개서 플레이 해보세요 😅.

    기억에 반가워요


  • 테이블의 모든 행은 단일 문자열입니다. 코드에 맞는 구분 기호를 사용하여 분할합니다.
  • 필드의 정확한 유형을 확인하려면 FMDDIF_FIELDINFO_GET을 사용할 수 있습니다.
  • RFC_READ_TABLE 넓은 테이블에 문제가 있습니다. DDIF_FIELDINFO_GET 를 사용하면 이러한 테이블에 키인 필드가 몇 개 있는지 확인하고 청크로 다운로드할 수 있습니다.
  • select 문의 필드를 제한하는 것은 항상 좋은 생각입니다. 뿐만 아니라 RFC_READ_TABLE . FIELDS 매개변수를 사용하여 얻으려는 필드 이름이 있는 목록을 전달하십시오.

  • PyRFC를 사용하여 사용자 정의 FM도 트리거할 수 있습니다. 예를 들어, SAP 등에서 일부 워크플로를 호출하는 일부 python 스크립트를 만들 수 있습니다.

    PyRFC를 사용합니까? Python에서 FM을 호출하는 다른 모험이 있다면 댓글에 적어주세요😉

    좋은 웹페이지 즐겨찾기