AHMET YESEVİ ÜNİVERSİTESİ BİLİŞİM SİSTEMLERİ VE MÜHENDİSLİK FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ LİSANS UYGULAMA 2 DERSİ Proje Tasarım Raporu HAZIRLAYAN 122132151 Fahri DÖNMEZ Prof.Dr. Muhammet Ali AKÇAYOL Nisan 2014
Özet Bu rapor Uygulama 2 dersi için geliştirilmekte olan Dikiş Otomasyon Barkod Programı projesinin tasarım safhasını belgelemek amacıyla düzenlenmektedir. Daha önce hazırlanan Öneri ve Analiz raporları başlangıç noktası olarak alınmıştır. Çeşitli seviyelerde detaylandırma ile bu belgeye ulaşılmış olup, daha önce analiz belgesinde sorulan NE yapılacak sorusuna cevap teşkil eden isteklerin NASIL gerçekleştirileceği esas odak noktası olarak kabul edilmiştir. Proje Tanımı Yazılımın Hedefleri: Üretim süreçlerinin yönetilmesi için tek bir uygulama her zaman yeterli olmamaktadır. Uygulamanın biri kaynak planlama ve ürün tanımlamalarında çok verimli çalışırken, diğer bir uygulamada ürünü üzerinde işlem yapan iş merkezlerinden canlı olarak veri çekme ve işlemede üstün özelikler içermektedir. İşte bu noktada planlama ve ürün tanımlamalarının düzgün yapıldığı SAP R3 sistemi ile üretim miktarlarının iş merkezleri üzerinden otomatik alıp yöneten WINTR uygulaması arasında bir entegrasyon sağlayıp olası eksikliklerin tamamlanması ve hataların düzeltilmesi ile üretim akışının sorunsuz sağlanması. Kullanıcı İstekleri: Dikiş bölümüne üretim amacıyla gelen ürünlerin bir üretimlerinin bir barkod okutarak yürütülmesi ve üretim tamamlandıktan sonra yeni bir barkod ile üretimin sonlandırılıp ürünlerin sonraki bölüme ilerletilmesi. Tüm bunlar yapılırken SAP R3 sisteminden malzeme teknik verileri düzgün alınmalı böylece ürünler doğru iş merkezlerinde doğru aşamalarda geçerek hatasız dikilip sonraki bölüme doğru bir dikilmiş ürün barkodu ile ilerletmek. Mimari Tasarım Bu uygulamada SAP R3 sisteminden.net ortamına c# ile veri çekebilmek için ABAP ile RFC (Remote Function Call) ile hazırlamak gerekmektedir. Bu fonksiyonlar SAP R3 sisteminden barkod bilgilerini ve ürün teknik bilgilerini almak için kullanılacaktır. Ayrıca canlı olarak kullanılan WINTR veritabanı ile veri alışverişi yapılacaktır. Yeni Dikilmiş Ürün Barkodu Basma Modülü: Bu modul hem WINTR hem de SAP R3 ten veri alarak yarattığı yeni etiketin bilgilerini WINTR veritabanına işleyen moduldür. Yeni Ham Dantel veya File Barkodu Basma Modülü: Tüm malzeme verilerini SAP R3 sisteminden çekip sadece sıradaki barkod nosunu WINTR den okuyan ve yarattığı barkodu WINTR veritabanına işleyen modüldür. Dış Alım Barkodu Otomasyona Tanıtma Modülü: Dış alım ile gelen barkodlu ürünlerin bilgilerini tedarikçide erişim izni olan bir hesabı olan SQL veritabanıan bağlanarak verileri çekip WINTR veritabanına işleyen modül. Dikilmiş Ürün Barkodu Düzeltme : WINTR veritabanındaki dikilmiş ürün barkod kaydının düzenlenmesi. Ham Ürün Barkodu Düzeltme: WINTR veritabanındaki hamürün barkod kaydının düzenlenmesi. Kullanıcı Düzenleme: Program kullanıcılarının şifre kayıtları. 2
Dikiş Otomasyon Barkod Programı Ham Ürün Barkodu Dikilmiş Ürün Barkodu Kullanıcı Kaydı Ham Ürün Barkodu Yarat Ham Ürün Barkodu Düzelt Ham Ürün Barkodu Tanıt Dikilmiş Ürün Barkodu Yarat Dikilmiş Ürün Barkodu Düzelt Sistem ve Modulleri Veri Tasarımı WINTR de mevcut veritabanı ve tablolar kullanılmıştır. Hiçbir veritabanı veya tablo bu proje için yaratılmamıştır. Bu projede işlem yapılan tablolar aşağıda verilmektedir. Kullanıcı tablosu: Veritabanı:Penti Tablo: DikisUser Alan Adı Tip Açıklama ID int Sıra No USERNAME nvarchar(10) Kullanıcı adı NAME nvarchar(20) Tam adı SURNAME nvarchar(30) Soyadı MAIL nvarchar(30) mail adresi BOLUM nvarchar(10) Çalıştığı bölüm ADMIN int Yönetici yetkisi var mı 1-0 PASSWORD nvarchar(10) şifresi 3
Ham ürün barkod tablosu: Veritabanı:IAS Tablo: TBLORGU Alan Adı Tip Açıklama MATERIAL varchar(25) ürün adı BEDEN varchar(3) beden bilgisi BATCHNUM varchar(16) parti bilgisi QUANTITY numeric(20, 8) miktar QUNIT varchar(3) birim PROJECT varchar(16) lot bilgisi WORKCENTER varchar(8) üretildiği iş merkezi CONFIRMATION varchar(8) barkod 1.kısım CONFIRMPOS int barkod 2.kısım CREATEDAT datetime yaratma tarihi PRODORDTYPE varchar(2) iş meri tipi PRODORDNUM varchar(8) iş emri no AGBILGISI varchar(25) üretim ek verisi DIKISKODU varchar(25) üretim ek verisi OTOKLAV varchar(25) üretim ek verisi IPRENGI varchar(25) üretim ek verisi CARPAN numeric(20, 10) üretim ek verisi BURUNBILGISI varchar(25) üretim ek verisi PANELBILGISI varchar(25) üretim ek verisi ETIKETBILGISI varchar(25) üretim ek verisi KONTROL int üretim onay kontrol KONTROL2 int iptal kontrol TORBA_IPTAL_SAATI datetime iptal saati FORMA nchar(5) üretim ek verisi CYCLE int üretim ek verisi CYCLEREZ int üretim ek verisi CYCLEGIO int üretim ek verisi SAP varchar(1) sap transfer bilgisi 4
Dikilmiş Ürün Barkod tablosu: Veritabanı: WINTR_BARCODE_16_12 Tablo: Table1 Alan Adı Tip Açıklama LastValue bigint barkod sıra no DateTime datetime yaratma tarihi NotSet smallint otomasyon alanı UBARCODE varchar(256) Barkod no HAT_NUMARASI varchar(256) üretim hattı BARCODE varchar(256) kaynak barkod no MATERIAL varchar(256) ürün adı PROJECT varchar(256) lot bilgisi BEDEN varchar(256) beden bilgisi IPRENGI varchar(256) üretim ek verisi QUANTITY varchar(256) miktar KONTROL int teyit kontrol CREATEDAT datetime üretim teyit tarihi CREATEDBY varchar(12) teyit veren kullanıcı CHANGEDAT datetime düzenleme tarihi CHANGEDBY varchar(12) düzeleyen kullanıcı STOCKPLACE varchar(10) giriş adresi TRTYPE varchar(10) gitiş tipi ELEMAN varchar(20) kontrol personeli DIKISKODU varchar(5) üretim ek verisi ONAYMAK1 nchar(10) 1.opersyon teyit merkezi ONAYSICIL1 varchar(5) 1.opersyon teyit sicil ONAYTARIH1 datetime 1.opersyon teyit tarihi ONAYMAK2 nchar(10) 2.opersyon teyit merkezi ONAYSICIL2 varchar(5) 2.opersyon teyit sicil ONAYTARIH2 datetime 2.opersyon teyit tarihi BKODDAT datetime verimlilik ek veri BKODBY varchar(12) verimlilik ek veri ONAYMAK3 nchar(10) 3.opersyon teyit merkezi ONAYSICIL3 varchar(5) 3.opersyon teyit sicil ONAYTARIH3 datetime 3.opersyon teyit tarihi ONAYMAK4 nchar(10) 4.opersyon teyit merkezi ONAYSICIL4 varchar(5) 4.opersyon teyit sicil ONAYTARIH4 datetime 4.opersyon teyit tarihi ONAYMAK5 nchar(10) 5.opersyon teyit merkezi ONAYSICIL5 varchar(5) 5.opersyon teyit sicil ONAYTARIH5 datetime 5.opersyon teyit tarihi ONAYMAK6 nchar(10) 6.opersyon teyit merkezi ONAYSICIL6 varchar(5) 6.opersyon teyit sicil ONAYTARIH6 datetime 6.opersyon teyit tarihi 5
Bu uygulama bir masaüstü uygulamasıdır. Visual Studio 2013.net framework 4 c# kullanılarak hazırlanacaktır..net framework 4 kullanılmasının amacı hem eski hem de yeni Windows işletim sistemi ile uyum sorunu yaşamayıp ayrıca SAP R3 bağlantısı için kullanılacak aracın bu versiyonu desteklemesidir. Uygulama forumlardan ve menüler ile erişilecek alt forumlardan oluşmaktadır. Ağırlıklı olarak yapılacak işem veritabanı işlemleri olduğunda DataGridView nesnesi sık sık kullanılacaktır. Arayüz Tasarımı Program Kullanıcı giriş formu ile başlar şifre ile giriş yapılır. Şifre doğru girilirse ana form açılır ve formun en üstünde modulleri açacak menüler vardır. 6
Modül formları alt formlardır ve standart kontroller etiket ve metin kutularının dışında tablolar için DataGridView kontrolleri kullanılmıştır. Uygulamanın ana görevlerinden olan etiket basma işlemi için PrintDocument ve PrintPreviewDialog kontrolleri kullanılmaktadır. 7
Prosedürel Tasarım Yapısal programlamada üç temel yapı kullanılmaktadır. Bunlar, ardışıl (sequence), şartlı (selection) ve tekrarlı (repetition) yapılardır. Herşey bunların birbirlerine içiçe geçmeleri ve kombinasyonları ile ifade edilmektedir. Program akışında yönlendirme if, switch vb. yapılarla sağlanacaktır goto'nun kullanıldığı ifadelerden kaçınılacaktır. // kullanıcı adı ve şifre kontrol textbox1.text.toupper(); bool kontrol = clsveri.parolakontrol(textbox1.text.tostring(), textbox2.text.tostring()); if (kontrol == true) else clsveri.kull = textbox1.text.tostring(); frmana frm = new frmana(); frm.show(); this.hide(); MessageBox.Show("Giriş Başarısız"); SAP tan veri çekmek için SAPConnectionManager referansı kullanılmaktadır. MS-SQL bağlantıları için System.Data.SQLClinet kullanılmıştır. Veri çekme işlemleri için bir class yaratılmış, sql bağlantı bilgileri App.Config içine girilmiştir. public RfcConfigParameters BaglanSAP() RfcConfigParameters rfc = new RfcConfigParameters(); rfc.add(rfcconfigparameters.name, "PEC"); rfc.add(rfcconfigparameters.appserverhost, "sunucu_ip"); rfc.add(rfcconfigparameters.client, "500"); rfc.add(rfcconfigparameters.user, "FAHRID"); rfc.add(rfcconfigparameters.password, "şifre"); rfc.add(rfcconfigparameters.systemnumber, "01"); rfc.add(rfcconfigparameters.language, "TR"); rfc.add(rfcconfigparameters.poolsize, "5"); rfc.add(rfcconfigparameters.idletimeout, "10"); return rfc; //SAP RFC ile barkod verisi çekme public DataTable BarkodGetirSAP (string barkod) RfcDestination rfcdest = RfcDestinationManager.GetDestination(BaglanSAP()); RfcRepository rfcrep = rfcdest.repository; IRfcFunction function = null; function = rfcrep.createfunction("zpp_rfc_barkod"); 8
IRfcTable tblreturn = function.gettable("t_barkod"); function.setvalue("i_barkodno", barkod.trim()); function.invoke(rfcdest); DataTable saptable = new DataTable(); for (int lielement = 0; lielement < tblreturn.elementcount; lielement++) RfcElementMetadata metadata = tblreturn.getelementmetadata(lielement); saptable.columns.add(metadata.name); foreach (IRfcStructure row in tblreturn) DataRow sapdr = saptable.newrow(); for (int lielement = 0; lielement < tblreturn.elementcount; lielement++) RfcElementMetadata metadata = tblreturn.getelementmetadata(lielement); sapdr[metadata.name] = row.getstring(metadata.name); saptable.rows.add(sapdr); return saptable; public DataTable EkVeriGetirSAP(string urun, string beden) RfcDestination rfcdest = RfcDestinationManager.GetDestination(BaglanSAP()); RfcRepository rfcrep = rfcdest.repository; //SAP EK VERI CEKME IRfcFunction function2 = null; function2 = rfcrep.createfunction("zpp_rfc_malzeme_ekveri"); IRfcTable tblreturn2 = function2.gettable("t_ekveri"); string strm = urun.trim(); string strb = beden.trim(); function2.setvalue("i_matnr", strm); function2.setvalue("i_beden", strb); function2.invoke(rfcdest); DataTable saptable3 = new DataTable(); for (int lielement = 0; lielement < tblreturn2.elementcount; lielement++) RfcElementMetadata metadata = tblreturn2.getelementmetadata(lielement); saptable3.columns.add(metadata.name); foreach (IRfcStructure row3 in tblreturn2) DataRow sapdr = saptable3.newrow(); for (int lielement = 0; lielement < tblreturn2.elementcount; lielement++) 9
RfcElementMetadata metadata = tblreturn2.getelementmetadata(lielement); sapdr[metadata.name] = row3.getstring(metadata.name); saptable3.rows.add(sapdr); return saptable3; <appsettings> <add key="dbconpenti" value="server=dikisotomasyon\wintr; database=penti;user=canli_kullanici;password=canli_sifre;"> </add> <add key="xdbconpenti" value="server=localhost; database=penti;user=sa;password=6519045;"> </add> </appsettings> Analiz ve Tasarım safhaları tamamlanmıştır. Gerçekleştirim ve kodlama safhasına geçilmiştir. Gerçekleştirimde eğer ihtiyaç görülürse tasarım raporu için geri besleme yolları açık tutulacak gerekli görüldüğü takdirde tasarım raporunda gerekli yenilikler eklenecek ve ikinci versiyonu hazırlanacaktır. Gerçekleştirim safhası ile test ve hata giderme safhaları paralel olarak yapılacaktır. Tasarım esnasında mevcut sistem test edilmiştir. Proje Aşamaları Takvim Bilgisi Çalışma Planlanan Başlangıç Tarihi Planlanan Bitiş Tarihi Analiz Çalışması 17.03.2014 23.03.2014 Tasarım Çalışması 24.03.2014 30.03.2014 Gerçekleştirim Çalışması 31.03.2014 13.05.2014 Test Çalışması (*) 14.05.2014 19.05.2014 Danışman Teslimi (**) 19.05.2014 20.05.2014 Projenin Sunumu (***) 28.04.2014 04.05.2014 10