1,593
社区成员
发帖
与我相关
我的任务
分享
procedure TFrmMain.MM001Click(Sender: TObject);
var
v_MT_MM_001_GenGoodsMvt:MT_MM_001_GenGoodsMvt;
service:MI_LES_MM_001_GenGoodsMvt;
v_Info:array of MI_LES_MM_001_GenGoodsMvt_DEV.Info;
v_DT_COMMON_HEADER:MI_LES_MM_001_GenGoodsMvt_DEV.DT_COMMON_HEADER;
a:TXSDecimal;
i,k:integer;
ADOCON:TADOConnection;
ADOQUE:TADOQuery;
DSP: TDataSetProvider;
CDS: TClientDataSet;
sql,msgid:string;
begin
try
ADOCON:=TADOConnection.Create(self);
ADOCON.ConnectionString:=DBLink.Text;
ADOCON.Provider:='OraOLEDB.Oracle.1';
ADOCON.LoginPrompt:=false;
ADOCON.KeepConnection:=true;
ADOQUE:=TADOQuery.Create(self);
ADOQUE.Connection:=ADOCON;
DSP:= TDataSetProvider.Create(self);
DSP.DataSet:=ADOQUE;
CDS:= TClientDataSet.Create(self);
sql:='select * from ZXIT_MM001 a where a.msgid = '''+mm001msgid.Text+''' ';
ADOQUE.Close;
ADOQUE.SQL.Clear;
ADOQUE.SQL.Add(sql);
ADOQUE.Open;
CDS.Close;
CDS.Data:=DSP.Data;
CDS.Open;
i:=CDS.RecordCount;
if i>=1 then
begin
v_MT_MM_001_GenGoodsMvt:=MT_MM_001_GenGoodsMvt.Create;
v_DT_COMMON_HEADER:=MI_LES_MM_001_GenGoodsMvt_DEV.DT_COMMON_HEADER.Create;
v_DT_COMMON_HEADER.INTERID:='MM001';
v_DT_COMMON_HEADER.DTSEND:=FormatDateTime('yyyymmddHHMMss',now);
v_DT_COMMON_HEADER.SENDER:='FGSLES';
v_DT_COMMON_HEADER.RECEIVER:='ERP';
SetLength(v_Info,i);
CDS.First;
k:=0;
while not CDS.Eof do
begin
v_Info[k]:=MI_LES_MM_001_GenGoodsMvt_DEV.Info.Create;
msgid:=CDS.FieldByName('MSGID').AsString;
v_Info[k].MSGID:=CDS.FieldByName('MSGID').AsString;
v_Info[k].BUDAT:=CDS.FieldByName('BUDAT').AsString;
v_Info[k].BLDAT:=CDS.FieldByName('BLDAT').AsString;
v_Info[k].XBLNR:=CDS.FieldByName('XBLNR').AsString;
v_Info[k].BKTXT:=CDS.FieldByName('BKTXT').AsString;
v_Info[k].MATNR:=CDS.FieldByName('MATNR').AsString;
v_Info[k].ITEM :=CDS.FieldByName('ITEM').AsString;
v_Info[k].BWART:=CDS.FieldByName('BWART').AsString;
v_Info[k].WERKS:=CDS.FieldByName('WERKS').AsString;
v_Info[k].LGORT:=CDS.FieldByName('LGORT').AsString;
v_Info[k].BWTAR:=CDS.FieldByName('BWTAR').AsString;
v_Info[k].CHARG:=CDS.FieldByName('CHARG').AsString;
v_Info[k].SOBKZ:=CDS.FieldByName('SOBKZ').AsString;
v_Info[k].STOCK_TYP:=CDS.FieldByName('STOCK_TYP').AsString;
a:=TXSDecimal.Create;
a.AsBcd:=TBcd(CDS.FieldByName('MENGE').AsFloat);
v_Info[k].MENGE:=MENGE(a);
v_Info[k].ERFME:=CDS.FieldByName('ERFME').AsString;
v_Info[k].UMMAT:=CDS.FieldByName('UMMAT').AsString;
v_Info[k].UMWRK:=CDS.FieldByName('UMWRK').AsString;
v_Info[k].UMLGO:=CDS.FieldByName('UMLGO').AsString;
v_Info[k].UMBAR:=CDS.FieldByName('UMBAR').AsString;
v_Info[k].UMCHA:=CDS.FieldByName('UMCHA').AsString;
v_Info[k].GSBER:=CDS.FieldByName('GSBER').AsString;
v_Info[k].KOKRS:=CDS.FieldByName('KOKRS').AsString;
v_Info[k].SALES_ORD:=CDS.FieldByName('SALES_ORD').AsString;
v_Info[k].KOSTL:=CDS.FieldByName('KOSTL').AsString;
v_Info[k].AUFNR:=CDS.FieldByName('AUFNR').AsString;
v_Info[k].COST_OBJ:=CDS.FieldByName('COST_OBJ').AsString;
v_Info[k].LIFNR:=CDS.FieldByName('LIFNR').AsString;
v_Info[k].SGTXT:=CDS.FieldByName('SGTXT').AsString;
v_Info[k].GRUND:=CDS.FieldByName('GRUND').AsString;
v_Info[k].ADP1 :=CDS.FieldByName('ADP1').AsString;
v_Info[k].ADP2 :=CDS.FieldByName('ADP2').AsString;
k:=k+1;
CDS.Next;
end;
v_MT_MM_001_GenGoodsMvt.header:=v_DT_COMMON_HEADER;
v_MT_MM_001_GenGoodsMvt.Info:=MI_LES_MM_001_GenGoodsMvt_DEV.Array_Of_Info(v_Info);
try
service:=MI_LES_MM_001_GenGoodsMvt_DEV.GetMI_LES_MM_001_GenGoodsMvt(true,'',nil);
service.MI_LES_MM_001_GenGoodsMvt(v_MT_MM_001_GenGoodsMvt);
log4info('Send ZXIT_MM001 MSGID = '+msgid+' sucess');
Memo1.Lines.Append(FormatDateTime('yyyy-mm-dd HH:MM:ss',now)
+' Send ZXIT_MM001 MSGID = '+msgid+' sucess');
sql:='update ZXIT_MM001 a set a.op_flag=''1'',a.dattim=to_char(sysdate,''yyyy-MM-dd HH24:mi:ss'') where a.msgid='''
+msgid+'''';
ADOQUE.Close;
ADOQUE.SQL.Clear;
ADOQUE.SQL.Add(sql);
ADOQUE.ExecSQL;
except
on e:exception do
begin
log4error('Send ZXIT_MM001 MSGID = '+msgid+' error : '+e.Message);
Memo1.Lines.Append(FormatDateTime('yyyy-mm-dd HH:MM:ss',now)
+'Send ZXIT_MM001 MSGID = '+msgid+' error : '+e.Message);
exit;
end;
end;
end
else exit;
finally
if Memo1.Lines.Count>500 then
begin
Memo1.Lines.Clear;
end;
ADOCON.Close;
ADOQUE.Close;
ADOCON.FreeOnRelease;
ADOQUE.FreeOnRelease;
DSP.FreeOnRelease;
CDS.FreeOnRelease;
if Assigned(a) then a.Free;
if Assigned(v_DT_COMMON_HEADER) then v_DT_COMMON_HEADER.Free;
if Assigned(v_Info) then
begin
for I := High(v_Info) downto low(v_Info) do
begin
v_Info[i].FreeInstance;
end;
end;
if Assigned(v_MT_MM_001_GenGoodsMvt) then v_MT_MM_001_GenGoodsMvt.FreeInstance;
end;
end;