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
Dikilmiş Ürün Barkodu Yarat
Ham Ürün Barkodu Düzelt
Dikilmiş Ürün Barkodu Düzelt
Ham Ürün Barkodu Tanıt
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ı
ID
USERNAME
NAME
SURNAME
MAIL
BOLUM
ADMIN
PASSWORD
Tip
int
nvarchar(10)
nvarchar(20)
nvarchar(30)
nvarchar(30)
nvarchar(10)
int
nvarchar(10)
Açıklama
Sıra No
Kullanıcı adı
Tam adı
Soyadı
mail adresi
Çalıştığı bölüm
Yönetici yetkisi var mı 1-0
şifresi
3
Ham ürün barkod tablosu: Veritabanı:IAS Tablo: TBLORGU
Alan Adı
MATERIAL
BEDEN
BATCHNUM
QUANTITY
QUNIT
PROJECT
WORKCENTER
CONFIRMATION
CONFIRMPOS
CREATEDAT
PRODORDTYPE
PRODORDNUM
AGBILGISI
DIKISKODU
OTOKLAV
IPRENGI
CARPAN
BURUNBILGISI
PANELBILGISI
ETIKETBILGISI
KONTROL
KONTROL2
TORBA_IPTAL_SAATI
FORMA
CYCLE
CYCLEREZ
CYCLEGIO
SAP
Tip
varchar(25)
varchar(3)
varchar(16)
numeric(20, 8)
varchar(3)
varchar(16)
varchar(8)
varchar(8)
int
datetime
varchar(2)
varchar(8)
varchar(25)
varchar(25)
varchar(25)
varchar(25)
numeric(20, 10)
varchar(25)
varchar(25)
varchar(25)
int
int
datetime
nchar(5)
int
int
int
varchar(1)
Açıklama
ürün adı
beden bilgisi
parti bilgisi
miktar
birim
lot bilgisi
üretildiği iş merkezi
barkod 1.kısım
barkod 2.kısım
yaratma tarihi
iş meri tipi
iş emri no
üretim ek verisi
üretim ek verisi
üretim ek verisi
üretim ek verisi
üretim ek verisi
üretim ek verisi
üretim ek verisi
üretim ek verisi
üretim onay kontrol
iptal kontrol
iptal saati
üretim ek verisi
üretim ek verisi
üretim ek verisi
üretim ek verisi
sap transfer bilgisi
4
Dikilmiş Ürün Barkod tablosu: Veritabanı: WINTR_BARCODE_16_12 Tablo: Table1
Alan Adı
LastValue
DateTime
NotSet
UBARCODE
HAT_NUMARASI
BARCODE
MATERIAL
PROJECT
BEDEN
IPRENGI
QUANTITY
KONTROL
CREATEDAT
CREATEDBY
CHANGEDAT
CHANGEDBY
STOCKPLACE
TRTYPE
ELEMAN
DIKISKODU
ONAYMAK1
ONAYSICIL1
ONAYTARIH1
ONAYMAK2
ONAYSICIL2
ONAYTARIH2
BKODDAT
BKODBY
ONAYMAK3
ONAYSICIL3
ONAYTARIH3
ONAYMAK4
ONAYSICIL4
ONAYTARIH4
ONAYMAK5
ONAYSICIL5
ONAYTARIH5
ONAYMAK6
ONAYSICIL6
ONAYTARIH6
Tip
bigint
datetime
smallint
varchar(256)
varchar(256)
varchar(256)
varchar(256)
varchar(256)
varchar(256)
varchar(256)
varchar(256)
int
datetime
varchar(12)
datetime
varchar(12)
varchar(10)
varchar(10)
varchar(20)
varchar(5)
nchar(10)
varchar(5)
datetime
nchar(10)
varchar(5)
datetime
datetime
varchar(12)
nchar(10)
varchar(5)
datetime
nchar(10)
varchar(5)
datetime
nchar(10)
varchar(5)
datetime
nchar(10)
varchar(5)
datetime
Açıklama
barkod sıra no
yaratma tarihi
otomasyon alanı
Barkod no
üretim hattı
kaynak barkod no
ürün adı
lot bilgisi
beden bilgisi
üretim ek verisi
miktar
teyit kontrol
üretim teyit tarihi
teyit veren kullanıcı
düzenleme tarihi
düzeleyen kullanıcı
giriş adresi
gitiş tipi
kontrol personeli
üretim ek verisi
1.opersyon teyit merkezi
1.opersyon teyit sicil
1.opersyon teyit tarihi
2.opersyon teyit merkezi
2.opersyon teyit sicil
2.opersyon teyit tarihi
verimlilik ek veri
verimlilik ek veri
3.opersyon teyit merkezi
3.opersyon teyit sicil
3.opersyon teyit tarihi
4.opersyon teyit merkezi
4.opersyon teyit sicil
4.opersyon teyit tarihi
5.opersyon teyit merkezi
5.opersyon teyit sicil
5.opersyon teyit tarihi
6.opersyon teyit merkezi
6.opersyon teyit sicil
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)
{
clsVeri.Kull = textBox1.Text.ToString();
frmAna frm = new frmAna();
frm.Show();
this.Hide();
}
else
{
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
Download

03_Tasarım_Raporu