各位谁有用DELPHI做过SAP相关的接口.关于SAP收发货有点问题请教,望不吝赐教!我的测试代码:
var
  MLDText: string;
  Funct, Header, oImItem, oImCode, oImCode2, ItemsRow,
    ImItemRow, Commit, CommitRBack, HEADER_TXT: Variant;
begin
  try
    if not SapConnState then
    begin
      MessageDlg('Not Connected to Sap Rfc, Moving Failed.', MTInformation, [mbOK], 0);
      Exit;
    end;
    //Funct := sapFunctions1.add('ZBCD_GoodsMvt_Create');
    Funct := sapFunctions1.add('Bapi_GoodsMvt_Create');
    Header := funct.exports('GOODSMVT_HEADER');
    Header_Txt := funct.tables.item('HEADER_TXT'); //*凭证抬头文本
    oImItem := funct.tables.item('GOODSMVT_ITEM');
    oImCode := funct.tables.item('GOODSMVT_CODE');
    oImCode2 := funct.tables.item('BAPI2017_GM_CODE');    Header.Value('PSTNG_DATE') := Date; //*凭证中的过帐日期
    Header.Value('DOC_DATE') := Date; //*凭证中的凭证日期
    //Header.Value('REF_DOC_NO') := 'xxxxxxxxxx';
    //Header.Value('PR_UNAME') := 'xxx';
    //oImCode2.Value('GM_CODE') := '01';  //报错部分.困惑了好几天的错误 
    //oImCode.Value('GOODSMVT_CODE') := oImCode2; //*为 BAPI 货物移动分配事务代码    oImCode.Value(1,'GM_CODE') := '01'; //*为 BAPI 货物移动分配事务代码
    ImItemRow := oImItem.rows.add;
    ImItemRow.Value(2,'MATERIAL') := 'xxxxxxx'; //*(必)物料号 18
    ImItemRow.Value(2,'PLANT') := 'xxxx'; //*(必)工厂 4
    ImItemRow.Value(2,'STGE_LOC') := 'xxxx'; //*(必)库存地点 4
    ImItemRow.Value(2,'BATCH') := 'xxxx'; //*(必)批号 10
    ImItemRow.Value(2,'MOVE_TYPE') := '105'; //*(必)移动类型(库存管理) 3
    ImItemRow.Value(2,'SPEC_STOCK') := 'abc'; //*特殊库存标识 1
    ImItemRow.Value(2,'STCK_TYPE') := 'F';
    ImItemRow.Value(2,'VENDOR') := 'xxx'; //*(必)供应商帐户号 10
    ImItemRow.Value(2,'MOVE_PLANT') := 'xxx'; //*收货工厂
    ImItemRow.Value(2,'ENTRY_QNT') := 'xxxxx'; //*(必)以输入单位计的数量 13
    ImItemRow.Value(2,'ENTRY_UOM') := 'PC'; //*条目单位 3
    ImItemRow.Value(2,'PO_NUMBER') := 'xxxxxxxxxx'; //*采购订单编号 10
    ImItemRow.Value(2,'PO_ITEM') := '10'; //*采购凭证的项目编号 5
    ImItemRow.Value(2,'GR_RCPT') := 'xxx'; //*(必)收货方/运达方 中文姓名 12
    ImItemRow.Value(2,'MOVE_REAS') := 'B'; //* 移动原因 4
    //ImItemRow.Value('MVT_IND') := 'B';    if not funct.call then
    begin
      Commit := sapFunctions1.add('BAPI_TRANSACTION_ROLLBACK');
      Commit.Call;
      MLDText := funct.imports('PURCHASEORDER');
      MessageDlg('Purcaseorder ' + MLDText + ' Moving Failed.', MTInformation, [mbOK], 0);
    end
    else if funct.call then
    begin
      showMessage(Funct.exception);
      CommitRBack := sapFunctions1.add('BAPI_TRANSACTION_COMMIT');
      CommitRBack.Call;
      MLDText := funct.imports('PURCHASEORDER');
      MessageDlg('Purcaseorder ' + MLDText + ' Moving Succ.', MTInformation, [mbOK], 0);
    end;
  except
  end;