<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    javaGrowing

      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      92 隨筆 :: 33 文章 :: 49 評論 :: 0 Trackbacks

    #

    The FI-GL table BSEG, which is one of our biggest PR1 tables, is an example of a clustered table. At the database-level, there is no table called BSEG, but instead RFBLG is being used for the BSEG data. Most of the fields known in BSEG are not known in the database table RFBLG, but are compressed in a VARDATA field of RFBLG. So tests in the WHERE clause of SELECTs agains BSEG are not used by the database (e.g. lifnr = vendor account number, hkont = G/L account, kostl = cost center). As a consequence, these tests are done after the facts similar to using the CHECK statement, and as already said in tip 1, CHECK statements are worse than tests in the WHERE-clause.

    Check this link also.
    https://forums.sdn.sap.com/thread.jspa?forumID=50&threadID=38572&messageID=373481#373481
    1) select with header information from bkpf
    2) use secondary index tables
    http://forums.sdn.sap.com/jive3/thread.jspa?forumID=50&threadID=14280&messageID=105504#105504
    1.BSAK Accounting: Secondary Index for Vendors
    2.BSAS Accounting: Secondary Index for G/L Accounts
    3.BSIK Accounting: Secondary Index for Vendors
    4.BSID Accounting: Secondary Index for Customers
    5.BSIM Secondary Index, Documents for Material
    6.BSAD Accounting: Secondary index for customers
    7.BSIS Accounting: Secondary Index for G/L Accounts
    3) use logical data base e.g.: BRF
    4)具體說明
    BSAD:應收明細(已清帳)
    BSID:應收明細(未清帳)
    BSAS:總帳明細(已清帳)
    BSIS:總帳明細(未清帳)
    BSAK:應付明細(已清帳)
    BSIK:應付明細(未清帳)
    BSEG主要通過“憑證號”“會計年度”“行號”和這六張表關聯,BKPF 是財務憑證抬頭,BSEG 是財務憑證行項目。在財務憑證記賬的時候,數據被插入 BKPF 和 BSEG,如果有必要,數據同時插入以上六張表中的一個未清表。
    一般情況下一筆業務產生的憑證都是未清的,那么:
    ?? 如果該業務行是客戶相關的,則被記錄到BSID;
    ?? 如果該業務行是供應商相關的,則被記錄到BSIK;
    ?? 無論和客戶相關還是和供應商相關,都是和總帳相關,所以也會有記錄到BSIS;
    ?? 但是如果這筆業務被清帳了,則相應的記錄會從BSI*轉移到BSA*

    一般情況下:
    ?? 應收賬款、預收賬款、其他應收款、應收匯票等科目既和客戶相關,又和未清項管理的總帳科目相關;
    ?? 應付賬款、預付賬款、其他應付款、應付匯票等科目既和供應商相關,又和未清項管理的總帳科目相關;
    ?? 其他總帳科目一般不啟用未清項管理,所以記錄一般都放在BSIS中。

    5)未清項和已清項的概念
    清項(Open Item),表示財務憑證行項目的一種掛賬的狀態,這種狀態,提示該行項目需要被清帳(Clearing)。在 FS00 設置科目的時候,有一個選項是 'Open Item Mngment',該選項選中后,表示財務憑證行項目中記賬科目為此科目時,該行項目有未清或者已清的狀態。
    已清項(Close Item),表示該行項目已經被清帳。
    具體應用中,'Open Item Mngment' 用得比較普遍的是應收(客戶)和應付(供應商)的科目。
    此外,在總帳中,也有一些應用,比如對于銀行的對賬單,也一般使用,這樣可以再對帳無誤后再做清帳。

    為什么需要使用到未清項管理?目的是為了記錄完整的業務交易。比如對客戶A有兩筆應收款 A1 與 A2,A1 因為有些商務糾紛,可能需要進一步交涉,所以客戶先針對 A2付款。如果沒有未清項管理,這一筆收款可能只能針對時間順序靠前的交易 A1 了,顯然,這樣是一種比較混亂的狀態。實際上,幾乎大部分科目理論上都可以進行未清項管理,但是,有可能這樣做不能帶來顯著的效益反而帶來管理成本的增加。

    6)未清項和已清項sap提供的TCODE
    在 SAP R/3 中,使用 FBL1N , FBL3N, FBL5N 分別可以查看供應商,總賬,客戶類型科目的未清已清項。

    posted @ 2007-04-18 14:16 javaGrowing 閱讀(795) | 評論 (0)編輯 收藏

    ?在 Strust 中,我們可能經常要在 ActionForm 中使用其他 JavaBean 作為屬性類型,這里就存在著如何使用好這些屬性與 HTML Form 之間的數據交換,下面我們就這些問題做一講解。

    如在用戶注冊界面中,我們通常會將用戶的聯系方式形成一個單獨的新的 Class ,如 Contact ,包含以下屬性:電話 (tel) ,手機(cell) , Email(email) , QQ(qq) ,通信地址 (adress) 等等,這樣條理也比較清晰,以下是這個ActionForm 的部分代碼:

    public class RegisterForm extends ActionForm

    {

    private Integer id;

    private String logonName;

    private String realName;

    private Contact contact=new Contact();

    ………..

    }

    在這里我們需要將 Contact 實例化(在 reset 函數中需要重新實例化),這主要因為 Struts 的機制:如我們將 HTML 的Form 元素(如 email )值傳給 ActionForm , Struts 需要執行的操作是getContact().setEmail(String email) ,如果這時返回的 contact 對象為空的話,那么賦值如何進行,而且Struts 也不會知道如何去實例化 Contact ,有時這些 JavaBean 的類型有可能是接口,實例化更是未知,所以關于JavaBean 類型在 ActionForm 中的實例化,你需要自行完成,而且必須完成。至于在實際操作中判斷 JavaBean是否被進行過相關操作(不再是初始狀態),你需要自行判斷,其實也很簡單,如可在 Contact 類中編寫一個函數檢驗一下即可。

    ActionForm 創建完畢后,我們需要在 Jsp Form 中引用這些 JavaBean 類型的屬性值,那就很簡單啦,只需采用“ Form 的屬性名稱”+“ . ”+“ JavaBean 中的屬性名稱”結構構成的名稱付給相關元素即可。如:

    <html:text property="contact.email">

    通過這種方式我們就可以處理好 ActionForm 中的 JavaBean 類型的屬性值了。

    實際的情況可能更復雜些,我們有時可能要提交多行數據到后退,而且行內的數據是相關的,如我們需要提交多個用戶的聯系方式,這些行內的數據,如email ,電話,手機,這些數據都是和用戶編碼相關的,現在我們修改一下 Contact 類,添加一個用戶編碼 (userId)屬性,這時我們構建的 ActionForm 中可能需要一個列表數據( List )類型來處理這種情況。以下是這個 ActionForm的部分代碼:

    public class ModifyBatchContactForm extends ActionForm

    {

    private List contact =new AutoArrayList (Contact.class);

    …..

    }

    在以上代碼中,我們同樣處理了 List 類型數據的初始化。 Struts 在給 List 中的對象賦值時,當然需要先獲取 List數據,然后在獲取 List 中某一個對象(通過 Index),最后給對象賦值。在這里想我們可以更詳細點分析瀏覽器端傳過來數據,字段值形式如下:contact[0].email= linux_china@hotmail.com , Struts 獲取 ActionForm 中的 List數據后,通過 Index (此時為 0 )來獲取 List 中封裝的 JavaBean 對象,然而此時 List是空的(盡管初始化了,但是沒有數據),是無法取得封裝的對象的,因此我們要在 Struts 獲取 List中封裝的對象的時候給它創建一個,這樣就保證對象的獲取和賦值的成功進行,所有我們新建一個 AutoArrayList 類,繼承ArrayList ,只要重寫 get(int index) 方法即可,其實很簡單,代碼如下:

    public class AutoArrayList extends ArrayList {

    private Class itemClass;

    public AutoArrayList(Class itemClass) {

    this.itemClass = itemClass;

    }

    public Object get(int index) {

    try {

    while (index &gt;= size()) {

    add( itemClass.newInstance());

    }

    } catch (Exception e) {

    e.printStackTrace();

    }

    return super.get(index);

    }

    }

    這樣我們就完成可以多行數據提交的 ActionForm設計,這里還有點提醒,如果從瀏覽器端傳過來的行索引是跳躍是的,如缺少中間行,而你不想要這些數據的話,且首尾行 index相差很大的話,這種方式可能不太適合。這種多行提交形式比較適合對固定行的數據處理。如果行數不固定的話,你可以參考使用 MapForm 方式實現。

    下面我們就看看如何在 Jsp 中使用這個 ActionForm ,其實只需要執行一個循環即可:

    <logic:iterate id=" contact " name=" FormName " property=" contact " indexid="index">

    <html:text name=" contact " property="userId" indexed="true">

    <html:text name=" contact " property="email" indexed="true">

    </html:text>

    這里我們再講解一下,代碼中出現的“ contact ”(紅色)都是 ActionForm 中的 List數據類型變量名稱,請確保一致,請不要更改名稱,這也是方便提交到后臺的數據接收。“ FormName ”為在 struts-config中聲明的 ActionForm 名稱。 indexed="true" 可以確保生成的 html 元素的名稱唯一,不要缺少這個聲明。以上的Jsp 代碼,你也可以使用 JSTL 來完成,就看你習慣如何了。

    通過以上步驟,我們完成了多行數據的提交所有環節,這樣 Struts 就會完成其他所有的事情,我們的代碼邏輯和實現也簡單多了。

    總結:通過以上兩個例子,相以信對 ActionForm 中使用 JavaBean 和 List 類型數據不會再陌生,同時使用 Map類型,這樣可創建更好的 ActionForm 設計,關于 MapForm ,請參考http://www.jetmaven.net/documents/j_mapformInStruts.php 。不過引入這種方式后,在Validator 方面你可能要花點腦筋啦(如通過 XDoclet 生成 Validator文件可能功能不全),可能你需要手寫一些代碼來完成相關工作</html:text></logic:iterate></html:text>
    posted @ 2006-12-14 09:28 javaGrowing 閱讀(620) | 評論 (0)編輯 收藏

    common.js


     //擴展String類功能
    //刪除字符串二邊空格
    ?? String.prototype.trim = function()
    ?? {
    ????return this.replace(/(^[\s]*)|([\s]*$)/g, "");
    ?? };
    ?? //刪除字符串左邊空格
    ?? String.prototype.lTrim = function()
    ?? {
    ????return this.replace(/(^[\s]*)/g, "");
    ?? };
    ?? //刪除字符串右邊空格
    ?? String.prototype.rTrim = function()
    ?? {
    ????return this.replace(/([\s]*$)/g, "");
    ?? };

    ---------------------------------------------------------------------
    chkUtil.js

     //定義一個可靜態調用方法的js類
    function ChkUtil() { }
    //校驗是否為空(先刪除二邊空格再驗證)
    ChkUtil.isNull = function (str) {
    if (null == str ||??""== str.trim()) {
    ??return true;
    } else {
    ??return false;
    }
    };
    //校驗是否全是數字
    ChkUtil.isDigit??= function (str) {
    var patrn=/^\d+$/;
    return patrn.test(str);
    };
    //校驗是否是整數
    ChkUtil.isInteger = function (str) {
    var patrn=/^([+-]?)(\d+)$/;
    return patrn.test(str);
    };
    //校驗是否為正整數
    ChkUtil.isPlusInteger = function (str) {
    var patrn=/^([+]?)(\d+)$/;
    return patrn.test(str);
    };
    //校驗是否為負整數
    ChkUtil.isMinusInteger = function (str) {
    var patrn=/^-(\d+)$/;
    return patrn.test(str);
    };
    //校驗是否為浮點數
    ChkUtil.isFloat=function(str){
    var patrn=/^([+-]?)\d*\.\d+$/;
    return patrn.test(str);
    };
    //校驗是否為正浮點數
    ChkUtil.isPlusFloat=function(str){
    ??var patrn=/^([+]?)\d*\.\d+$/;
    ??return patrn.test(str);
    };
    //校驗是否為負浮點數
    ChkUtil.isMinusFloat=function(str){
    ??var patrn=/^-\d*\.\d+$/;
    ??return patrn.test(str);
    };
    //校驗是否僅中文
    ChkUtil.isChinese=function(str){
    var patrn=/[\u4E00-\u9FA5\uF900-\uFA2D]+$/;
    return patrn.test(str);
    };
    //校驗是否僅ACSII字符
    ChkUtil.isAcsii=function(str){
    var patrn=/^[\x00-\xFF]+$/;
    return patrn.test(str);
    };
    //校驗手機號碼
    ChkUtil.isMobile = function (str) {
    var patrn = /^0?1((3[0-9]{1})|(59)){1}[0-9]{8}$/;
    return patrn.test(str);
    };
    //校驗電話號碼
    ChkUtil.isPhone = function (str) {
    var patrn = /^(0[\d]{2,3}-)?\d{6,8}(-\d{3,4})?$/;
    return patrn.test(str);
    };
    //校驗URL地址
    ChkUtil.isUrl=function(str){
    var patrn= /^http[s]?:\/\/[\w-]+(\.[\w-]+)+([\w-\.\/?%&=]*)?$/;
    return patrn.test(str);
    };
    //校驗電郵地址
    ChkUtil.isEmail = function (str) {
    var patrn = /^[\w-]+@[\w-]+(\.[\w-]+)+$/;
    return patrn.test(str);
    };
    //校驗郵編
    ChkUtil.isZipCode = function (str) {
    var patrn = /^\d{6}$/;
    return patrn.test(str);
    };
    //校驗合法時間
    ChkUtil.isDate = function (str) {
    ??if(!/\d{4}(\.|\/|\-)\d{1,2}(\.|\/|\-)\d{1,2}/.test(str)){
    ????return false;
    ??}
    ??var r = str.match(/\d{1,4}/g);
    ??if(r==null){return false;};
    ??var d= new Date(r[0], r[1]-1, r[2]);
    ??return (d.getFullYear()==r[0]&&(d.getMonth()+1)==r[1]&&d.getDate()==r[2]);
    };
    //校驗字符串:只能輸入6-20個字母、數字、下劃線(常用手校驗用戶名和密碼)
    ChkUtil.isString6_20=function(str){
    var patrn=/^(\w){6,20}$/;
    return patrn.test(str);
    };

    ------------------------------------------------------------------
    調用示例

    ??<script type='text/javascript' src='./common.js'></script>
    ??<script type='text/javascript' src='./chkUtil.js'></script>
    ??<script type='text/javascript'>
    ?? function $F(id){
    ??????if(ChkUtil.isNull(id)){alert("函數$F()的參數不能為空");return false;}
    ??????return document.getElementById(id).value;
    ?? }
    ?? function test(){
    ????var area=$F("area");
    ????if(area==false)return;
    ????alert(ChkUtil.isDate(area));//判斷是否是合法日期
    ?? }

    ????
    posted @ 2006-11-15 13:50 javaGrowing 閱讀(1705) | 評論 (0)編輯 收藏

    <span?style="border:1px?solid?green;?position:absolute;?overflow:hidden"><select?style="margin:-2px">
    <option>1111</option>
    <option>11111111111111</option>
    <option>111111111</option>
    </select></span>
    posted @ 2006-11-12 00:17 javaGrowing 閱讀(254) | 評論 (0)編輯 收藏

    一、采用RequestDispatcher的方式進行

    1、web.xml文件中增加
    ??<mime-mapping>
    ????
    <extension>doc</extension>
    ????
    <mime-type>application/vnd.ms-word</mime-type>
    ??
    </mime-mapping>



    2、程序如下:

    ???
    <%@page language="java" import="java.net.*" pageEncoding="gb2312"%>
    <%
    ?
    response.setContentType(
    "application/x-download");//設置為下載application/x-download
    ????String?filenamedownload?=?"/系統解決方案.doc";//即將下載的文件的相對路徑
    ????String?filenamedisplay?=?"系統解決方案.doc";//下載文件時顯示的文件保存名稱
    ????filenamedisplay?=?URLEncoder.encode(filenamedisplay,"UTF-8");
    ????response.addHeader(
    "Content-Disposition","attachment;filename="?+?filenamedisplay);
    ????
    ????
    try
    ????
    {
    ????????RequestDispatcher?dispatcher?
    =?application.getRequestDispatcher(filenamedownload);
    ????????
    if(dispatcher?!=?null)
    ????????
    {
    ????????????dispatcher.forward(request,response);
    ????????}

    ????????response.flushBuffer();
    ????}

    ????
    catch(Exception?e)
    ????
    {
    ????????e.printStackTrace();
    ????}

    ????
    finally
    ????
    {
    ????
    ????}

    %>



    二、采用文件流輸出的方式下載

    1、web.xml文件中增加
    ??<mime-mapping>
    ????
    <extension>doc</extension>
    ????
    <mime-type>application/vnd.ms-word</mime-type>
    ??
    </mime-mapping>



    2、程序如下:

    ???
    <%@page language="java" contentType="application/x-msdownload" import="java.io.*,java.net.*" pageEncoding="gb2312"%>
    <%

    //關于文件下載時采用文件流輸出的方式處理:
    ????
    //加上response.reset(),并且所有的%>后面不要換行,包括最后一個;
    ????
    //因為Application?Server在處理編譯jsp時對于%>和<%之間的內容一般是原樣輸出,而且默認是PrintWriter,
    ????
    //而你卻要進行流輸出:ServletOutputStream,這樣做相當于試圖在Servlet中使用兩種輸出機制,
    ????
    //就會發生:getOutputStream()?has?already?been?called?for?this?response的錯誤
    ????
    //詳細請見《More?Java?Pitfill》一書的第二部分?Web層Item?33:試圖在Servlet中使用兩種輸出機制?270
    ????
    //而且如果有換行,對于文本文件沒有什么問題,但是對于其它格式,比如AutoCAD、Word、Excel等文件
    ????
    //下載下來的文件中就會多出一些換行符0x0d和0x0a,這樣可能導致某些格式的文件無法打開,有些也可以正常打開。

    ????response.reset();
    //可以加也可以不加
    ????response.setContentType("application/x-download");//設置為下載application/x-download
    ????
    //?/../../退WEB-INF/classes兩級到應用的根目錄下去,注意Tomcat與WebLogic下面這一句得到的路徑不同,WebLogic中路徑最后沒有/
    ????System.out.println(this.getClass().getClassLoader().getResource("/").getPath());
    ????String?filenamedownload?
    =?this.getClass().getClassLoader().getResource("/").getPath()?+?"/../../系統解決方案.doc";
    ????String?filenamedisplay?
    =?"系統解決方案.doc";//系統解決方案.txt
    ????filenamedisplay?=?URLEncoder.encode(filenamedisplay,"UTF-8");
    ????response.addHeader(
    "Content-Disposition","attachment;filename="?+?filenamedisplay);

    ????OutputStream?output?
    =?null;
    ????FileInputStream?fis?
    =?null;
    ????
    try
    ????
    {
    ????????output??
    =?response.getOutputStream();
    ????????fis?
    =?new?FileInputStream(filenamedownload);

    ????????
    byte[]?b?=?new?byte[1024];
    ????????
    int?i?=?0;

    ????????
    while((i?=?fis.read(b))?>?0)
    ????????
    {
    ????????????output.write(b,?
    0,?i);
    ????????}

    ????????output.flush();
    ????}

    ????
    catch(Exception?e)
    ????
    {
    ????????System.out.println(
    "Error!");
    ????????e.printStackTrace();
    ????}

    ????
    finally
    ????
    {
    ????????
    if(fis?!=?null)
    ????????
    {
    ????????????fis.close();
    ????????????fis?
    =?null;
    ????????}

    ????????
    if(output?!=?null)
    ????????
    {
    ????????????output.close();
    ????????????output?
    =?null;
    ????????}

    ????}

    %>

    posted @ 2006-11-10 14:25 javaGrowing 閱讀(1770) | 評論 (0)編輯 收藏

    僅列出標題
    共19頁: First 上一頁 2 3 4 5 6 7 8 9 10 下一頁 Last 
    主站蜘蛛池模板: 182tv免费视频在线观看| 亚洲中文字幕无码av永久| 国产男女猛烈无遮挡免费视频| 亚洲熟妇无码爱v在线观看| 在线毛片片免费观看| 国产亚洲精品高清在线| 亚洲理论在线观看| 欧洲一级毛片免费| 2020天堂在线亚洲精品专区| 毛片a级毛片免费播放下载| 亚洲欧洲免费无码| 免费永久看黄在线观看app| 免费一级做a爰片久久毛片潮| 亚洲第一永久AV网站久久精品男人的天堂AV | 最近中文字幕大全免费版在线 | 免费乱码中文字幕网站| 国产精品久久亚洲一区二区| 污视频在线观看免费| 亚洲精品第一国产综合精品99| 亚洲人成网站日本片| 一区二区三区无码视频免费福利| 亚洲va久久久噜噜噜久久男同| 久久亚洲AV成人无码国产最大| 成年人免费的视频| 亚洲日韩AV无码一区二区三区人| 国产成人免费片在线视频观看| 全黄A免费一级毛片| 亚洲AV无码精品色午夜在线观看| 免费h片在线观看网址最新| 亚洲乱码国产乱码精华| 精品亚洲一区二区三区在线播放| 精品在线免费观看| 亚洲色成人四虎在线观看| 亚洲日本中文字幕天堂网| 久久久久亚洲精品无码网址色欲| 久久久久亚洲AV无码专区网站 | 日韩精品无码永久免费网站| 亚洲av最新在线网址| 免费a级毛片高清视频不卡| 五级黄18以上免费看| 亚洲精品人成电影网|