java sap rfc

来源:互联网 发布:纹身遮盖膏 防水 知乎 编辑:程序博客网 时间:2024/04/27 06:55

java 的设置:

从 http://www.cnblogs.com/Files/byfhd/jco.rar 下载JCo,解压后将librfc32.dllsapjcorfc.dll拷贝到WINNT"SYSTEM32下,将sapjco.jar加入项目的classpath中。

package JOC;

import com.sap.mw.jco.*;
import com.sap.mw.jco.JCO;
import com.sap.mw.jco.IFunctionTemplate;

public class JOC {

 public void getTest()
 {  
       JCO.Client mConnection;
          JCO.Client client ;
          try {          
             mConnection = JCO.createClient("811", // SAP client
                                                      "***",     // userid
                                                      "***",     // password
                                                      "***",    // language
                                                      "***",    // server host name
                                                      "***");    //system ber         
         mConnection.connect();
         JCO.Repository mRepository;
         mRepository = new JCO.Repository("ARAsoft", mConnection);
         IFunctionTemplate ft = mRepository.getFunctionTemplate("Function name");  
         JCO.Function function = ft.getFunction();
         JCO.ParameterList input = function.getImportParameterList();            
             //设置参数,参数名为第二个参数,参数值为第一个参数,
//             input.setValue("SAP", "EXTCOMPANY");
//             input.setValue("TEST", "EXTPRODUCT");
//             input.setValue("XBP","INTERFACE");
//             input.setValue("1.0","IVERSION");
//             input.setValue("Z_QQ_TEST", "JOBNAME");
//             input.setValue("TEST", "EXTERNAL_USER_NAME");
//             client.execute(function);         
             mConnection.execute(function);
             JCO.ParameterList export = function.getExportParameterList(); 
             //得到传出参数
             mConnection.disconnect();
          } catch (Exception ex) {
           System.out.print(ex);
          }
 }     
 
 public static void main(String[] args) {
  // TODO Auto-generated method stub
    JOC t = new JOC();
    t.getTest();
 }

}

sap 端: 建FUNCTION MODULE

FUNCTION ZQQ_RFC.
*"----------------------------------------------------------------------
*"*"Local interface:
*"  TABLES
*"      RELOG STRUCTURE  TBTC5 OPTIONAL
*"----------------------------------------------------------------------

*??????
DATA:jobname           TYPE bapixmjob-jobname,
     jobcount          TYPE bapixmjob-jobcount,
     sessionid         TYPE bapixmlogr-sessionid,
     return            TYPE bapiret2,
     stepcount         TYPE bapixmjob-stepcount,
     jobhead           TYPE bapixmjob,
     steptable         TYPE bapixmstep OCCURS 0.

DATA:g_stamp TYPE timestampl.


*????????Job???
  GET TIME STAMP FIELD g_stamp.
  jobname = 'TEST1'.

login xMI,
  CALL FUNCTION 'BAPI_XMI_LOGON' DESTINATION 'NONE'
    EXPORTING
      extcompany            = 'SAP'
      extproduct            = 'TEST' "extProduct
      interface             = 'XBP' "Interface
      version               = '1.0' "IVersion
    IMPORTING
      sessionid             = sessionid
      return                = return
    EXCEPTIONS
      system_failure        = 1
      communication_failure = 2
      OTHERS                = 99.
  IF sy-subrc NE 0.
    MESSAGE a002(sy) WITH 'BAPI_XMI_LOGON is failure'.
  ENDIF.


create jOB
  CALL FUNCTION 'BAPI_XBP_JOB_OPEN' DESTINATION 'NONE'
    EXPORTING
      jobname            = jobname
      external_user_name = 'TEST'
    IMPORTING
      jobcount           = jobcount
      return             = return.
  IF sy-subrc NE 0.
    MESSAGE a002(sy) WITH 'BAPI_XBP_JOB_OPEN is failure'.
  ENDIF.

(add ABAP PROGRAM  to JOB)
  CALL FUNCTION 'BAPI_XBP_JOB_ADD_ABAP_STEP' DESTINATION 'NONE'

    EXPORTING
      jobname                  = jobname
      jobcount                 = jobcount
      external_user_name       = 'TEST'
      abap_program_name        = 'ZTEST_2'
*      abap_variant_name        = 'V1'
*     SAP_USER_NAME            = SY-UNAME
*     LANGUAGE                 = SY-LANGU
*     PRINT_PARAMETERS         =
*     ARCHIVE_PARAMETERS       = ' '
*   IMPORTING
     step_number              = stepcount
     return                   = return
            .

  IF sy-subrc NE 0.
    MESSAGE a002(sy) WITH 'BAPI_XBP_JOB_ADD_ABAP_STEP is failure'.
  ENDIF.


CREATE JOB  OVER
  CALL FUNCTION 'BAPI_XBP_JOB_CLOSE' DESTINATION 'NONE'
    EXPORTING
      jobname                  = jobname
      jobcount                 = jobcount
      external_user_name       = 'TEST'
*   TARGET_SERVER            =
   IMPORTING
     return                   = return
            .
  IF sy-subrc NE 0.
    MESSAGE a002(sy) WITH 'BAPI_XBP_JOB_CLOSE is failure'.
  ENDIF.


EXECUTE JOB
  CALL FUNCTION 'BAPI_XBP_JOB_START_IMMEDIATELY' DESTINATION 'NONE'
    EXPORTING
      jobname                  = jobname
      jobcount                 = jobcount
      external_user_name       = 'TEST'
*      TARGET_SERVER            = ''
   IMPORTING
     return                   = return
            .
  IF sy-subrc NE 0.
    MESSAGE a002(sy) WITH 'BAPI_XBP_JOB_START_IMMEDIATELY is failure'.
  ENDIF.

GET JOB INFORMATION
  CALL FUNCTION 'BAPI_XBP_JOB_DEFINITION_GET' DESTINATION 'NONE'
    EXPORTING
      jobname            = jobname
      jobcount           = jobcount
      external_user_name = 'TEST'
    IMPORTING
      job_head           = jobhead
      return             = return
    TABLES
      step_tbl           = steptable.
*

LOGOUT XMI.

  call function 'BAPI_XMI_LOGOFF'
    exporting
      interface = 'XBP'
    importing
      return    = return.

  if sy-subrc ne 0.
    message a002(sy) with 'BAPI_XMI_LOGOFF is failure'.
  endif.

**** GET JOB LOG    要和这个FUNCTION MODULE 分开写
   CALL FUNCTION 'BP_JOBLOG_READ'
     EXPORTING
       CLIENT                      = SY-MANDT
       JOBCOUNT                    = jobcount
       JOBLOG                      = ' '
       JOBNAME                     = jobname
      TABLES
       joblogtbl                   = RELOG
     EXCEPTIONS
       CANT_READ_JOBLOG            = 1
       JOBCOUNT_MISSING            = 2
       JOBLOG_DOES_NOT_EXIST       = 3
       JOBLOG_IS_EMPTY             = 4
       JOBLOG_NAME_MISSING         = 5
       JOBNAME_MISSING             = 6
       JOB_DOES_NOT_EXIST          = 7
       OTHERS                      = 8
              .
    IF sy-subrc <> 0.
*     MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*             WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.

 

ENDFUNCTION. 

原创粉丝点击