public virtual void RFC_READ_TABLE(

            [RfcParameter(AbapName = "DELIMITER", RfcType = RFCTYPE.RFCTYPE_CHAR, Optional = true, Direction = RFCINOUT.IN, Length = 1, Length2 = 2)]
            [XmlElement("DELIMITER", IsNullable = false, Form = XmlSchemaForm.Unqualified)]
            String DELIMITER,
            [RfcParameter(AbapName = "NO_DATA", RfcType = RFCTYPE.RFCTYPE_CHAR, Optional = true, Direction = RFCINOUT.IN, Length = 1, Length2 = 2)]
            [XmlElement("NO_DATA", IsNullable = false, Form = XmlSchemaForm.Unqualified)]
            String NO_DATA,
            [RfcParameter(AbapName = "QUERY_TABLE", RfcType = RFCTYPE.RFCTYPE_CHAR, Optional = false, Direction = RFCINOUT.IN, Length = 30, Length2 = 60)]
            [XmlElement("QUERY_TABLE", IsNullable = false, Form = XmlSchemaForm.Unqualified)]
            String QUERY_TABLE,
            [RfcParameter(AbapName = "ROWCOUNT", RfcType = RFCTYPE.RFCTYPE_INT, Optional = true, Direction = RFCINOUT.IN, Length = 4, Length2 = 8)]
            [XmlElement("ROWCOUNT", IsNullable = false, Form = XmlSchemaForm.Unqualified)]
            Int32 ROWCOUNT,
            [RfcParameter(AbapName = "ROWSKIPS", RfcType = RFCTYPE.RFCTYPE_INT, Optional = true, Direction = RFCINOUT.IN, Length = 4, Length2 = 8)]
            [XmlElement("ROWSKIPS", IsNullable = false, Form = XmlSchemaForm.Unqualified)]
            Int32 ROWSKIPS,
            [RfcParameter(AbapName = "DATA", RfcType = RFCTYPE.RFCTYPE_ITAB, Optional = false, Direction = RFCINOUT.INOUT)]
            [XmlArray("DATA", IsNullable = false, Form = XmlSchemaForm.Unqualified)]
            [XmlArrayItem("item", IsNullable = false, Form = XmlSchemaForm.Unqualified)]
            ref TAB512Table DATA,
            [RfcParameter(AbapName = "FIELDS", RfcType = RFCTYPE.RFCTYPE_ITAB, Optional = false, Direction = RFCINOUT.INOUT)]
            [XmlArray("FIELDS", IsNullable = false, Form = XmlSchemaForm.Unqualified)]
            [XmlArrayItem("item", IsNullable = false, Form = XmlSchemaForm.Unqualified)]
            ref RFC_DB_FLDTable FIELDS,
            [RfcParameter(AbapName = "OPTIONS", RfcType = RFCTYPE.RFCTYPE_ITAB, Optional = false, Direction = RFCINOUT.INOUT)]
            [XmlArray("OPTIONS", IsNullable = false, Form = XmlSchemaForm.Unqualified)]
            [XmlArrayItem("item", IsNullable = false, Form = XmlSchemaForm.Unqualified)]
            ref RFC_DB_OPTTable OPTIONS
            )
        {
            object[] results = null;
            results = this.SAPInvoke("RFC_READ_TABLE", new object[] {
                DELIMITER,
                NO_DATA,
                QUERY_TABLE,
                ROWCOUNT,
                ROWSKIPS,
                DATA,
                FIELDS,
                OPTIONS
            });
            DATA    = (TAB512Table)results[0];
            FIELDS  = (RFC_DB_FLDTable)results[1];
            OPTIONS = (RFC_DB_OPTTable)results[2];
        }
Example #2
0
        public IEnumerable <String> READ_TABLE(String Tabla, String Delimitador, List <String> Campos, List <String> Consulta)
        {
            IEnumerable <String> _DATA;
            RFC_READ_TABLE_      _PROXY = null;

            try
            {
                int             ROWCOUNT = 0;
                int             ROWSKIPS = 0;
                String          NO_DATA  = String.Empty;
                TAB512Table     DATA     = new TAB512Table();
                RFC_DB_FLDTable FIELDS   = new RFC_DB_FLDTable();
                RFC_DB_OPTTable OPTIONS  = new RFC_DB_OPTTable();
                _PROXY = new RFC_READ_TABLE_(_CONFIG.STRING_CONNECT);

                foreach (String valor in Campos)
                {
                    RFC_DB_FLD _FIELD = new RFC_DB_FLD();
                    _FIELD.Fieldname = valor.ToUpper().Trim();
                    _FIELD.Fieldtext = valor.ToUpper().Trim();
                    _FIELD.Length    = "000000";
                    _FIELD.Offset    = "000000";
                    FIELDS.Add(_FIELD);
                }

                if (Consulta != null)
                {
                    foreach (String valor in Consulta)
                    {
                        RFC_DB_OPT _OPTION = new RFC_DB_OPT();
                        _OPTION.Text = valor.ToUpper().Trim();
                        OPTIONS.Add(_OPTION);
                    }
                }

                Tabla       = Tabla.ToUpper().Trim();
                Delimitador = (Delimitador == null) ? "|" : Delimitador;
                _PROXY.RFC_READ_TABLE(Delimitador, NO_DATA, Tabla, ROWCOUNT, ROWSKIPS, ref DATA, ref FIELDS, ref OPTIONS);
                _DATA = ClearDataRFC(DATA.ToADODataTable());
            }
            catch (Exception ex)
            {
                int    _code  = ex.HResult;
                String _ERROR = "RFC=READ_TABLE: {0}.";

                _DATA = null;

                if (_code.Equals(-2146232832))
                {
                    _ERROR = String.Format(_ERROR, "Algunos campos no existen en la tabla " + Tabla);
                }
                else
                {
                    Extra.RunError(ex, "READ_TABLE");
                }
            }
            finally
            {
                _PROXY.Connection.Close();
                _PROXY.Dispose();
            }

            return(_DATA);
        }