各位谁有用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;
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;
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货