Exemple #1
0
        /// <summary>
        /// Metoda wyfocująca kontener z bufora stacji.
        /// </summary>
        /// <param name="mode">Tryb pracy (PROD/DEV)</param>
        /// <param name="userName">Nazwa uzytkownika</param>
        /// <param name="idUser_NUM8">ID uzytkownika z SAP</param>
        /// <param name="FVI_VLPLA">Numer kontenera</param>
        /// <param name="FVI_NO_LAGP">Ignoruje czy kontener istnieje w SAPie (CHAR1 X - tak; spacja - nie) </param>
        /// <param name="bc">Zmienna pomocnicza, zapisywane sa do niej zwracane kody i informacje przez SAP</param>
        /// <returns>Zwraca prawde/falsz zaleznie od tego czy udalo sie wykonac akcje.</returns>
        public bool BackContainerBuffor(string userName, string FVI_VLPLA, char FVI_NO_LAGP, BackContainerBufforReturn bc)
        {
            bool success = false;

            try
            {
                RfcDestination dest = RfcDestinationManager.GetDestination(AppMode);
                RfcRepository  repo = dest.Repository;

                // Informacja o kontenerze
                // FUNCTION z_mfcs_info.
                IRfcFunction Z_MFCS_DEL_FROM_ST = repo.CreateFunction("Z_MFCS_DEL_FROM_ST");

                // IMPORTING
                // VALUE(FVI_VLPLA) TYPE  LTAP_VLPLA
                // VALUE(FVI_PERNR) TYPE  PERNR_D

                // FVI_VLPLA - nr kontenera (CHAR10)
                Z_MFCS_DEL_FROM_ST.SetValue("FVI_VLPLA", FVI_VLPLA);

                // FVI_PERNR - id użytkownika (NUM8)
                Z_MFCS_DEL_FROM_ST.SetValue("FVI_PERNR", PerNBR);

                // Ignoruje czy kontener istnieje w SAPie (CHAR1 X - tak; spacja - nie)
                Z_MFCS_DEL_FROM_ST.SetValue("FVI_NO_LAGP", FVI_NO_LAGP);

                // call
                Z_MFCS_DEL_FROM_ST.Invoke(dest);

                bc.FVO_RETURN = Z_MFCS_DEL_FROM_ST.GetValue("FVO_RETURN").ToString();
                bc.ReturnCode = Convert.ToInt32(Z_MFCS_DEL_FROM_ST.GetValue("FVO_RETURN"));

                // EXPORTING
                // VALUE(FVO_RETURN) TYPE  NUM03
                //* return codes
                //* 100 - OK
                //* 101 - Błąd
                //* 333 - błąd komunikacji z serwerem układnicy
                //* 666 - brak uprawnień

                switch (bc.ReturnCode)
                {
                case 100:
                    bc.Error = "OK";
                    success  = true;
                    break;

                case 101:
                    bc.Error = $"Kontener [{FVI_VLPLA}] nie istnieje.";     // zmiana komunikatu: 11/02/16
                    break;

                case 333:
                    bc.Error = "Błąd komunikacji z serwerem układnicy.";
                    break;

                case 666:
                    bc.Error = "Brak uprawnień.";
                    break;

                default:
                    bc.Error = "Nieznany komunikat błędu: " + bc.ReturnCode;
                    break;
                }

                try
                {
                    DatabaseController.AddingLogData(FVI_VLPLA, "Usuwanie kontenera z buforu stacji ", PerNBR, userName, "Z_MFCS_DEL_FROM_ST", bc.ReturnCode);
                }
                catch (Exception ex)
                {
                    Messenger.Default.Send(new LogMessage(ex.Message, LogType.DATABASELOG), "Log");
                }
            }
            catch (Exception ex)
            {
                Messenger.Default.Send(new LogMessage(ex.Message, LogType.ERROR_SAP), "Log");
                return(false);
            }

            return(success);
        }
Exemple #2
0
        /// <summary>
        /// Metoda wysylajaca kontener na ukladnice.
        /// </summary>
        /// <param name="mode">Tryb pracy (PROD/DEV)</param>
        /// <param name="userName">Nazwa uzytkownika</param>
        /// <param name="idUser_NUM8">ID uzytkownika z SAP</param>
        /// <param name="idContainer_CHAR10">Numer kontenera</param>
        /// <param name="FVI_EMPTY">czy pusty kontener (CHAR1 X - tak; spacja - nie)</param>
        /// <param name="FVI_NO_LAGP">Ignoruje czy kontener istnieje w SAPie (CHAR1 X - tak; spacja - nie) </param>
        /// <param name="FVI_ABC">Wskazniki ABC</param>
        /// <param name="sc">Zmienna pomocnicza, zapisywane sa do niej zwracane kody i informacje przez SAP<</param>
        /// <returns>Zwraca prawde/falsz zaleznie od tego czy udalo sie wykonac akcje.</returns>
        public bool SendingContainer(string userName, string idContainer_CHAR10, char FVI_EMPTY, char FVI_NO_LAGP, char FVI_ABC, SendingContainerReturn sc)
        {
            // char FVI_NO_LQUA_CHK, domyślny 'X'
            bool success = false;

            try
            {
                // Get a destination object from the destination manager
                // To connect to sap and extract data from it you must create an instance of SAP.Middleware.Connector.RfcDestination
                RfcDestination dest = RfcDestinationManager.GetDestination(AppMode);

                // Now that we have a valid RfcDestination object, we need access to the SAP Repository.
                // The repository contains information about the BAPI calls we are going to make.

                // Using the RfcRepository object, acquire a reference to the SAP BAPI by calling method RfcRepository.CreateFunction() method.
                // Pass in the name of the desired function as a string parameter to CreateFunction().
                // This method returns an object we can use to setup parameters, invoke the function, and retrieve results.
                RfcRepository repo = dest.Repository;

                // function: Z_MFCS_SEND
                IRfcFunction z_mfcs_send = repo.CreateFunction("Z_MFCS_SEND");

                // IMPORTING
                // VALUE(FVI_VLPLA) TYPE  LTAP_VLPLA
                // VALUE(FVI_PERNR) TYPE  PERNR_D
                // VALUE(FVI_EMPTY) TYPE  FLAG_X
                // VALUE(FVI_NO_LQUA_CHK) TYPE  FLAG_X
                // FVI_NO_LAGP CHAR(1) - nowy 11/02/16
                // FVI_ABC CHAR(1) [A,B,C] - Wskaźnik ABC - nowy 11/02/16

                // FVI_VLPLA - nr kontenera (CHAR10)
                z_mfcs_send.SetValue("FVI_VLPLA", idContainer_CHAR10);

                // FVI_PERNR - id użytkownika (NUM 8)
                z_mfcs_send.SetValue("FVI_PERNR", PerNBR);

                // czy pusty kontener (CHAR1 X - tak; spacja - nie)
                z_mfcs_send.SetValue("FVI_EMPTY", FVI_EMPTY);

                // FVI_NO_LQUA_CHK - brak kontroli ilosci (CHAR1 X - tak; spacja - nie)
                z_mfcs_send.SetValue("FVI_NO_LQUA_CHK", 'X'); // X

                // Ignoruje czy kontener istnieje w SAPie (CHAR1 X - tak; spacja - nie)
                z_mfcs_send.SetValue("FVI_NO_LAGP", FVI_NO_LAGP);

                // Wskaźnik ABC (CHAR1 A,B,C)
                if (FVI_ABC != FALSE) // domyślny parametr C
                {
                    z_mfcs_send.SetValue("FVI_ABC", FVI_ABC);
                }

                // call
                z_mfcs_send.Invoke(dest);

                // EXPORTING
                // VALUE(FVO_RETURN) TYPE  NUM03
                //* 100 - OK
                //* 101 - Błąd  (FVI_NO_LAGP, 'X') -> testowy błedy numer kontenera | (FVI_NO_LAGP, ' ') -> Kontener nie istnieje.
                //* 102 - Pusta lokalizacja w SAP
                //* 103 - Nie należy przyjmować -> istnieje zlecenie wydania
                //* 333 - błąd komunikacji z serwerem układnicy
                //* 666 - brak uprawnień
                sc.FVO_RETURN = z_mfcs_send.GetValue("FVO_RETURN").ToString();
                sc.ReturnCode = Convert.ToInt32(z_mfcs_send.GetValue("FVO_RETURN"));

                switch (sc.ReturnCode)
                {
                case 100:
                    sc.Error = "OK";
                    success  = true;
                    break;

                case 101:
                    if (FVI_NO_LAGP == FALSE)     // zmiana komunikatu: 11/02/16
                    {
                        sc.Error = $"Kontener [{idContainer_CHAR10}] nie istnieje.";
                    }
                    else
                    {
                        sc.Error = $"Błedny numer kontenera.";
                    }
                    break;

                case 102:
                    sc.Error = "Pusta lokalizacja w SAP.";
                    break;

                case 103:
                    sc.Error = "Istnieje zlecenie wydania.";
                    break;

                case 333:
                    sc.Error = "Błąd komunikacji z serwerem układnicy.";
                    break;

                case 666:
                    sc.Error = "Brak uprawnień.";
                    break;

                default:
                    sc.Error = "Nieznany komunikat błędu: " + sc.ReturnCode;
                    break;
                }

                try
                {
                    DatabaseController.AddingLogData(idContainer_CHAR10, "Wysłanie kontenera na układnicę ", PerNBR, userName, "Z_MFCS_SEND", sc.ReturnCode);
                }
                catch (Exception ex)
                {
                    Messenger.Default.Send(new LogMessage(ex.Message, LogType.DATABASELOG), "Log");
                }
            }
            catch (Exception ex)
            {
                if (ex is RfcAbapRuntimeException || ex is RfcAbapBaseException || ex is RfcBaseException)
                {
                    Messenger.Default.Send(new LogMessage(ex.Message, LogType.ERROR_SAP), "Log");
                    return(false);
                }
            }

            return(success);
        }
Exemple #3
0
        /// <summary>
        /// Metoda pobierajaca kontener z malej ukladnicy.
        /// </summary>
        /// <param name="mode">Tryb pracy (PROD/DEV)</param>
        /// <param name="userName">Nazwa uzytkownika</param>
        /// <param name="FVI_PERNR">ID uzytkownika z SAP</param>
        /// <param name="FVI_VLPLA">Numer kontenera</param>
        /// <param name="FVI_EMPTY">Czy pusty kontener ( X - tak; spacja - nie)</param>
        /// <param name="FVI_DEST">Miejsce docelowe kontenera </param>
        /// <param name="FVI_NO_LAGP">Ignoruje czy kontener istnieje w SAPie (CHAR1 X - tak; spacja - nie) </param>
        /// <param name="FVI_PRIORITY">Czy akcja jest priorytetowa ( X - tak; spacja - nie)(</param>
        /// <param name="error">Zmienna pomocnicza, zapisywane sa do niej zwracane kody i informacje przez SAP<</param>
        /// <returns>Zwraca prawde/falsz zaleznie od tego czy udalo sie wykonac akcje.</returns>
        public int Z_MFCS_SEND_HT(string userName, string FVI_VLPLA, char FVI_EMPTY, string FVI_DEST, char FVI_NO_LAGP, int FVI_PRIORITY, out string error)
        {
            error = string.Empty;
            int ret = -1;

            try
            {
                RfcDestination dest = RfcDestinationManager.GetDestination(AppMode);
                RfcRepository  repo = dest.Repository;

                // Informacja o kontenerze
                // FUNCTION z_mfcs_info.
                IRfcFunction z_MFCS_SEND_HT = repo.CreateFunction("Z_MFCS_SEND_HT");

                // IMPORTING
                // VALUE(FVI_VLPLA) TYPE  LTAP_VLPLA
                // VALUE(FVI_PERNR) TYPE  PERNR_D

                // FVI_VLPLA - nr kontenera (CHAR10)
                z_MFCS_SEND_HT.SetValue("FVI_VLPLA", FVI_VLPLA);

                // FVI_PERNR - id użytkownika (NUM8)
                z_MFCS_SEND_HT.SetValue("FVI_PERNR", PerNBR);

                // FVI_EMPTY
                z_MFCS_SEND_HT.SetValue("FVI_EMPTY", ' ');

                // FVI_DEST
                z_MFCS_SEND_HT.SetValue("FVI_DEST", FVI_DEST);

                // Ignoruje czy kontener istnieje w SAPie (CHAR1 X - tak; spacja - nie)
                z_MFCS_SEND_HT.SetValue("FVI_NO_LAGP", FVI_NO_LAGP);

                // Priorytet
                z_MFCS_SEND_HT.SetValue("FVI_PRIORITY", FVI_PRIORITY);

                // call
                z_MFCS_SEND_HT.Invoke(dest);

                var FVO_RETURN = z_MFCS_SEND_HT.GetValue("FVO_RETURN").ToString();
                ret = Convert.ToInt32(FVO_RETURN);
                // bc.ReturnCode = Convert.ToInt32(Z_MFCS_DEL_FROM_ST.GetValue("FVO_RETURN"));

                switch (ret)
                {
                case 100:
                    error = "OK";
                    break;

                case 101:
                    error = $"Kontener [{FVI_VLPLA}] nie istnieje.";
                    break;

                case 333:
                    error = "Błąd komunikacji z serwerem układnicy.";
                    break;

                case 666:
                    error = "Brak uprawnień.";
                    break;

                default:
                    error = "Nieznany komunikat błędu: " + ret;
                    break;
                }

                // EXPORTING
                // VALUE(FVO_RETURN) TYPE  NUM03
                //* return codes
                //* 100 - OK
                //* 101 - Błąd
                //* 333 - błąd komunikacji z serwerem układnicy
                //* 666 - brak uprawnień
                try
                {
                    DatabaseController.AddingLogData(FVI_VLPLA, "Pobranie kontenera " + FVI_DEST + " ", PerNBR, userName, "Z_MFCS_SEND_HT", ret);
                }
                catch (Exception ex)
                {
                    Messenger.Default.Send(new LogMessage(ex.Message, LogType.DATABASELOG), "Log");
                }
            }
            catch (Exception ex)
            {
                Messenger.Default.Send(new LogMessage(ex.Message, LogType.ERROR_SAP), "Log");
                return(-1);
            }

            return(ret);
        }
Exemple #4
0
        /// <summary>
        /// Metoda zwracająca informacje o kontenerze.
        /// </summary>
        /// <param name="mode">Tryb pracy (PROD/DEV)</param>
        /// <param name="userName">Nazwa uzytkownika</param>
        /// <param name="idUser_NUM8">ID uzytkownika z SAP</param>
        /// <param name="FVI_VLPLA">Numer kontenera</param>
        /// <param name="FVI_NO_LAGP">Ignoruje czy kontener istnieje w SAPie (CHAR1 X - tak; spacja - nie) </param>
        /// <param name="_containerInfoReturn">Zmienna pomocnicza, zapisywane sa do niej zwracane kody i informacje przez SAP<</param>
        /// <returns>Zwraca prawde/falsz zaleznie od tego czy udalo sie wykonac akcje.</returns>
        public bool ContainerInfo(string userName, string FVI_VLPLA, char FVI_NO_LAGP, ContainerInfoReturn _containerInfoReturn) // idUser - HR id
        {
            bool success = false;

            try
            {
                RfcDestination dest = RfcDestinationManager.GetDestination(AppMode);
                RfcRepository  repo = dest.Repository;

                // Informacja o kontenerze
                // FUNCTION z_mfcs_info.
                IRfcFunction z_mfcs_info = repo.CreateFunction("Z_MFCS_INFO");

                // IMPORTING
                // VALUE(FVI_VLPLA) TYPE  LTAP_VLPLA
                // VALUE(FVI_PERNR) TYPE  PERNR_D

                // FVI_VLPLA - nr kontenera (CHAR10)
                z_mfcs_info.SetValue("FVI_VLPLA", FVI_VLPLA);

                // FVI_PERNR - id użytkownika (NUM8)
                z_mfcs_info.SetValue("FVI_PERNR", PerNBR);

                // Ignoruje czy kontener istnieje w SAPie (CHAR1 X - tak; spacja - nie)
                z_mfcs_info.SetValue("FVI_NO_LAGP", FVI_NO_LAGP);

                // call
                z_mfcs_info.Invoke(dest);

                //var FVO_RETURN = z_mfcs_info.GetValue("FVO_RETURN").ToString();
                //var FVO_LOC = z_mfcs_info.GetValue("FVO_LOC").ToString();
                //var FVO_ER = z_mfcs_info.GetValue("FVO_ER").ToString();

                _containerInfoReturn.ReturnCode = Convert.ToInt32(z_mfcs_info.GetValue("FVO_RETURN"));
                _containerInfoReturn.FVO_RETURN = z_mfcs_info.GetValue("FVO_RETURN").ToString();
                _containerInfoReturn.FVO_LOC    = z_mfcs_info.GetValue("FVO_LOC").ToString();
                _containerInfoReturn.FVO_ER     = z_mfcs_info.GetValue("FVO_ER").ToString();

                // EXPORTING
                // VALUE(FVO_RETURN) TYPE  NUM03
                //* return codes
                //* 100 - OK
                //* 101 - Błąd
                //* 102 - Odpytaj jeszcze raz
                //* 333 - błąd komunikacji z serwerem układnicy
                //* 666 - brak uprawnień
                // VALUE(FVO_LOC) TYPE  CHAR12 - kod błędu otrzymany Z MFCS
                // VALUE(FVO_ER) TYPE  INT4  - ostatnia lokalizacja kontenera

                switch (_containerInfoReturn.ReturnCode)
                {
                case 100:
                    _containerInfoReturn.Error = "OK";
                    success = true;
                    break;

                case 101:
                    _containerInfoReturn.Error = $"Kontener [{FVI_VLPLA}] nie istnieje.";     // zmiana komunikatu: 11/02/16
                    break;

                case 102:
                    _containerInfoReturn.Error = "Odpytaj jeszcze raz.";
                    break;

                case 333:
                    _containerInfoReturn.Error = "Błąd komunikacji z serwerem układnicy.";
                    break;

                case 666:
                    _containerInfoReturn.Error = "Brak uprawnień.";
                    break;

                default:
                    _containerInfoReturn.Error = "Nieznany komunikat błędu: " + _containerInfoReturn.ReturnCode;
                    break;
                }

                try
                {
                    DatabaseController.AddingLogData(FVI_VLPLA, "Informacje o kontenerze ", PerNBR, userName, "Z_MFCS_INFO", _containerInfoReturn.ReturnCode);
                }
                catch (Exception ex)
                {
                    Messenger.Default.Send(new LogMessage(ex.Message, LogType.DATABASELOG), "Log");
                }
            }
            catch (Exception ex)
            {
                _containerInfoReturn.Error = ex.Message;
                Messenger.Default.Send(new LogMessage(ex.Message, LogType.ERROR_SAP), "Log");
                return(false);
            }

            return(success);
        }