public BomOutputParameter GetBillOfMaterial(string materialCode, string plantCode)
        {
            using IRfcConnection connection = _serviceProvider.GetService <IRfcConnection>();
            connection.Connect();

            var inputParameter = new BomInputParameter
            {
                Aumgb = "0",
                Capid = "PP01",
                Datuv = DateTime.Now,
                Emeng = "1",
                Mktls = "x",
                Mehrs = "x",
                Stpst = "0",
                Svwvo = "x",
                Werks = plantCode,
                Vrsvo = "x",
                Stlal = "1",
                Stlan = "1",
                Mtnrv = materialCode
            };

            using IReadRfc rfcFunction = _serviceProvider.GetService <IReadRfc>();
            BomOutputParameter bomResult = rfcFunction.GetRfc <BomOutputParameter, BomInputParameter>(connection, "CS_BOM_EXPL_MAT_V2_RFC", inputParameter);

            return(bomResult);
        }
        public async Task <BomOutputParameter> GetBillOfMaterialAsync(string materialCode, string plantCode, string alias = null)
        {
            var inputParameter = new BomInputParameter
            {
                Aumgb = "0",
                Capid = "PP01",
                Datuv = DateTime.Now,
                Emeng = "1",
                Mktls = "x",
                Mehrs = "x",
                Stpst = "0",
                Svwvo = "x",
                Werks = plantCode,
                Vrsvo = "x",
                Stlal = "1",
                Stlan = "1",
                Mtnrv = materialCode
            };

            using IRfcClient client = _serviceProvider.GetRequiredService <IRfcClient>();
            if (!string.IsNullOrWhiteSpace(alias))
            {
                client.UseServer(alias);
            }
            BomOutputParameter bomResult = await client.ExecuteRfcAsync <BomInputParameter, BomOutputParameter>("CS_BOM_EXPL_MAT_V2_RFC", inputParameter);

            return(bomResult);
        }