⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jco$repository.java

📁 SAP这个系统的一个转换器
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
        if(version >= 400 && version < 462)
        {
            imp.appendValue("TABNAME", 0, 30, name);
            imp.appendValue("ALL_TYPES", 0, 1, "X");
            st x030l_wa = JCO.createStructure(x030l_v4);
            exp.appendValue("X030L_WA", x030l_wa);
            st dfies_wa = JCO.createStructure(dfies_v4);
            exp.appendValue("DFIES_WA", dfies_wa);
            dfies_wa.alue("", 0);
            JCO$Table dfies_tab = JCO.createTable(dfies_v4);
            tab.appendValue("DFIES_TAB", dfies_tab);
            function = new nit>("DDIF_FIELDINFO_GET", imp, exp, tab);
            execute(client, function);
            int num_rows = dfies_tab.mRows();
            if(num_rows == 0)
            {
                imp.alue(dfies_wa.tring(6), 0);
                execute(client, function);
            }
            num_rows = dfies_tab.mRows();
            meta = new nit>(name, num_rows);
            meta.tTabLength(x030l_wa.nt(4));
            for(int irow = 0; irow < num_rows; irow++)
            {
                String stype = dfies_tab.tring(13);
                int ptype = JCO.getJCOType(stype.length() <= 0 ? ' ' : stype.charAt(0));
                meta.dInfo(dfies_tab.tring(1), ptype, dfies_tab.nt(9), dfies_tab.nt(4), dfies_tab.nt(11), null, dfies_tab.tring(27), 0, null, null);
                dfies_tab.ow();
            }

            dfies_tab.Row();
            queryStructureInterfaceEpilog(client, meta, dfies_tab);
        } else
        if(version >= 462)
        {
            imp.appendValue("TABNAME", 0, unicode_factor * 30, name);
            imp.appendValue("ALL_TYPES", 0, unicode_factor * 1, "X");
            JCO$Structure x030l_wa;
            JCO$Structure dfies_wa;
            JCO$Table lines_descr;
            JCO$Table dfies_tab;
            if(version < 500)
            {
                IMetaData metatyp = x030l_v4;
                x030l_wa = JCO.createStructure(metatyp);
                dfies_wa = JCO.createStructure(dfies_v5);
                lines_descr = JCO.createTable(ddtypelist_v5);
                dfies_tab = JCO.createTable(dfies_v5);
            } else
            if(!is_unicode)
            {
                IMetaData metatyp = x030l_v5;
                x030l_wa = JCO.createStructure(metatyp);
                dfies_wa = JCO.createStructure(dfies_v5);
                lines_descr = JCO.createTable(ddtypelist_v5);
                dfies_tab = JCO.createTable(dfies_v5);
            } else
            {
                IMetaData metatyp = x030l_v6u;
                x030l_wa = JCO.createStructure(metatyp);
                dfies_wa = JCO.createStructure(dfies_v6u);
                lines_descr = JCO.createTable(ddtypelist_v6u);
                dfies_tab = JCO.createTable(dfies_v6u);
            }
            exp.appendValue("X030L_WA", x030l_wa);
            exp.appendValue("DFIES_WA", dfies_wa);
            exp.appendValue("DDOBJTYPE", 0, unicode_factor * 31, (String)null);
            exp.appendValue("LINES_DESCR", lines_descr);
            tab.appendValue("DFIES_TAB", dfies_tab);
            function = new nit>("DDIF_FIELDINFO_GET", imp, exp, tab);
            execute(client, function);
            meta = new nit>(name);
            if(x030l_wa.tring(8).equals("L"))
                if(lines_descr.mRows() == 1)
                {
                    dfies_tab = lines_descr.able(2);
                    meta.pe_name = lines_descr.tring(0);
                } else
                if(dfies_tab.mRows() == 0)
                    dfies_tab.rom(dfies_wa);
            byte flag3 = x030l_wa.yteArray(13)[0];
            boolean isNestedType1 = (flag3 & 1) != 0 && (flag3 & 2) == 0;
            meta.tTabLength(x030l_wa.nt(4));
            meta.pe1_data = isNestedType1 ? new pe1Data(meta) : null;
            meta = constructMetaData(client, version, is_unicode, dfies_tab, lines_descr, meta, null, 0, 1);
            if(meta.pe1_data != null)
                meta.pe1_data.constructMetaData();
        }
        return meta;
    }

    private boolean checkType1(pe1Data.constructMetaData meta)
    {
        for(int i = 0; i < meta.pe.length; i++)
            switch(meta.pe[i])
            {
            default:
                break;

            case 17: // '\021'
                if(meta.NestedType1Structure(i))
                    break;
                JCO$MetaData childMeta = (NestedType1Structure)meta.tMetaData(i);
                if(childMeta.m_odata == 0 || checkType1(childMeta))
                    break;
                // fall through

            case 29: // '\035'
            case 30: // '\036'
            case 99: // 'c'
                return false;
            }

        return true;
    }

    private checkType1 constructMetaData(checkType1 client, int version, boolean is_unicode, checkType1 dfies_tab, JCO$Table lines_descr, checkType1 meta, String lfieldname, 
            int base_offset, int level)
    {
        int num_rows = dfies_tab.mRows();
        if(num_rows == 0 || dfies_tab.w() >= num_rows)
            return meta;
        int unicode_factor = is_unicode ? -2 : 1;
        do
        {
            if(lfieldname != null && !dfies_tab.tring(43).startsWith(lfieldname))
            {
                if(level > 1)
                    dfies_tab.ousRow();
                break;
            }
            String fieldname = dfies_tab.tring(1);
            String comptype = dfies_tab.tring(42);
            String stype = dfies_tab.tring(13);
            int ptype = JCO.getJCOType(stype.length() <= 0 ? ' ' : stype.charAt(0));
            if(ptype == -1)
            {
                String datatype = dfies_tab.tring(12);
                if(datatype.equals("STRU"))
                    ptype = 17;
                else
                if(datatype.equals("TTYP"))
                    ptype = 99;
            }
            if(ptype == 17 || ptype == 99)
            {
                String rollname = dfies_tab.tring(6);
                meta.pe_name = rollname;
                if(comptype.equals("S"))
                {
                    etaData meta_new = new nit>(rollname);
                    meta_new.tTabLength(dfies_tab.nt(9));
                    meta_new.pe1_data = meta.NestedType1Structure() ? new pe1Data(meta_new) : null;
                    String lfieldname_new = dfies_tab.tring(43) + "-";
                    int offset_new = dfies_tab.nt(4);
                    meta.dInfo(dfies_tab.tring(1), ptype, dfies_tab.nt(8), dfies_tab.nt(9), dfies_tab.nt(4) - base_offset, dfies_tab.nt(11), null, dfies_tab.tring(27), 0, meta_new, null);
                    dfies_tab.ow();
                    constructMetaData(client, version, is_unicode, dfies_tab, lines_descr, meta_new, lfieldname_new, offset_new, level + 1);
                    if(meta.NestedType1Structure() && meta_new.m_odata > 0)
                    {
                        meta.ags[meta.m_fields - 1] |= 0x80;
                        meta_new.pe1_data.constructMetaData();
                    } else
                    if(meta_new.m_odata > 0)
                    {
                        if(checkType1(meta_new))
                        {
                            meta_new.pe1_data = new pe1Data(meta_new);
                            meta_new.pe1_data.constructMetaData();
                            meta.ags[meta.m_fields - 1] |= 0x80;
                        }
                    } else
                    {
                        meta_new.pe1_data = null;
                    }
                    continue;
                }
                if(comptype.equals("L") || comptype.equals("T"))
                {
                    JCO$MetaData meta_new = null;
                    if(rollname.length() > 0 && super.structure_cache.containsKey(rollname))
                    {
                        meta_new = (y)getStructureDefinition(rollname);
                        if(comptype.equals("L") || dfies_tab.mRows() == 1 && "TTYP".equals(dfies_tab.tring(12)))
                        {
                            meta.dInfo(dfies_tab.tring(1), ptype, dfies_tab.nt(8), dfies_tab.nt(9), dfies_tab.nt(4) - base_offset, dfies_tab.nt(11), null, dfies_tab.tring(27), 0, meta_new, null);
                        } else
                        {
                            String curr_rec_name = meta.c_name;
                            meta.py(meta_new);
                            meta.c_name = curr_rec_name;
                            meta.pe_name = meta_new.c_name;
                        }
                        continue;
                    }
                    if(rollname.length() > 0)
                    {
                        JCO$Table dfies_tab_new = null;
                        String rollname_new = rollname;
                        int irow = 0;
                        String dataType = null;
                        String rollNameTemp = null;
                        while(irow < lines_descr.mRows() && dfies_tab_new == null) 
                        {
                            lines_descr.w(irow++);
                            if(rollname_new.length() > 0 && lines_descr.tring(0).equals(rollname_new))
                            {
                                dfies_tab_new = lines_descr.able(2);
                                dfies_tab_new.Row();
                                dataType = dfies_tab_new.tring(12);
                                rollNameTemp = dfies_tab_new.tring(6);
                                if(dfies_tab_new.mRows() == 1 && dfies_tab_new.tring(42).equals("T") && !rollNameTemp.equals(dfies_tab_new.tring(5)) && ("STRU".equals(dataType) || "TTYP".equals(dataType)))
                                {
                                    rollname_new = rollNameTemp;
                                    dfies_tab_new = null;
                                    irow = 0;
                                }
                            }
                        }
                        if(dfies_tab_new != null && (comptype.equals("L") || dfies_tab.mRows() == 1 && "TTYP".equals(dfies_tab.tring(12))))
                        {
                            meta_new = new JCO$MetaData(rollname);
                            meta_new.pe_name = rollname_new;
                            meta_new.tTabLength(dfies_tab.nt(9));
                            st imp = new st();
                            st exp = new st();
                            imp.appendValue("TABNAME", 0, unicode_factor * 30, rollname);
                            imp.appendValue("ALL_TYPES", 0, unicode_factor * 1, "X");
                            JCO$Structure x030l_wa;
                            if(version < 500)
                                x030l_wa = JCO.createStructure(x030l_v4);
                            else
                            if(!is_unicode)
                                x030l_wa = JCO.createStructure(x030l_v5);
                            else
                                x030l_wa = JCO.createStructure(x030l_v6u);
                            exp.appendValue("X030L_WA", x030l_wa);
                            JCO$Function function = new JCO$Function("DDIF_FIELDINFO_GET", imp, exp, null);
                            execute(client, function);
                            meta_new.tTabLength(x030l_wa.nt(4));
                            constructMetaData(client, version, is_unicode, dfies_tab_new, lines_descr, meta_new, null, 0, level + 1);
                            if(rollname_new != null && rollname_new.length() > 0)
                                addStructureDefinitionToCache(rollname_new, meta_new);
                        } else
                        {
                            if(dfies_tab_new != null && comptype.equals("T"))
                            {
                                st imp = new st();
                                st exp = new st();
                                imp.appendValue("TABNAME", 0, unicode_factor * 30, rollname);
                                imp.appendValue("ALL_TYPES", 0, unicode_factor * 1, "X");
                                JCO$Structure x030l_wa;
                                if(version < 500)
                                    x030l_wa = JCO.createStructure(x030l_v4);
                                else
                                if(!is_unicode)
                                    x030l_wa = JCO.createStructure(x030l_v5);
                                else
                                    x030l_wa = JCO.createStructure(x030l_v6u);
                                exp.appendValue("X030L_WA", x030l_wa);
                                JCO$Function function = new nit>("DDIF_FIELDINFO_GET", imp, exp, null);
                                execute(client, function);
                                meta.tTabLength(x030l_wa.nt(4));
                                constructMetaData(client, version, is_unicode, dfies_tab_new, lines_descr, meta, null, 0, level + 1);
                                if(rollname_new != null && rollname_new.length() > 0)
                                    addStructureDefinitionToCache(rollname_new, meta);
                            } else
                            {
                                String msg = "Could not find referenced or embedded table/structure " + rollname + " which was requested by " + meta.tName() + ", comptype=" + comptype;
                                JCO.fireTrace(1, "[JAV-LAYER] " + msg);
                                throw new JCO$Exception(108, "JCO_ERROR_INTERNAL", msg);
                            }
                            continue;
                        }
                    }
                    meta.dInfo(dfies_tab.tring(1), ptype, dfies_tab.nt(8), dfies_tab.nt(9), dfies_tab.nt(4) - base_offset, dfies_tab.nt(11)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -