乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      內(nèi)存管理(SAP和ABAP內(nèi)存)緩存設(shè)定以及程序memory管理等

       一騎當千_30 2019-01-11

      內(nèi)存有兩種,一種是SAP內(nèi)存,一種是ABAP內(nèi)存:(這兩種內(nèi)存都是針對同一個用戶,如果要針對不用用戶就要使用共享object,請參考后面內(nèi)容


      他們兩者的關(guān)系如下圖:

       


      還有一個概念需要理解的:

      用戶登陸后,最多一個系統(tǒng)可以開6個窗口,這在SAP中稱為External Mode。
      而同一個窗口中,運行某程序后,可以通過CALL TRANSACTION/SUBMIT或其他代碼跳轉(zhuǎn)到其他程序,這個稱為Internal Mode。Internal Mode的調(diào)用棧最多為9層。
      那么ABAP Memory,它是屬于Internal Mode間可以共享的數(shù)據(jù),而External Mode間無法共享。SAP Memory就可以調(diào)用不同session的。


      1、ABAP內(nèi)存:

                    通過EXPORT,IMPORT實現(xiàn)。同一個session(一個窗口)才可以。如果是不同session,必須在另外一個程序通過submit,call transaction調(diào)用,然后才可以實現(xiàn)內(nèi)存?zhèn)鬏?。實現(xiàn)方法如下:


      例子. 創(chuàng)建程序A,輸入:
      DATA matnr TYPE matnr.
      IMPORT matnr FROM MEMORY ID 'YTEST_MATNR'.
      WRITE matnr.
      創(chuàng)建程序B,輸入:
      DATA matnr TYPE matnr.
      matnr = '000000000000001234'.
      EXPORT matnr TO MEMORY ID 'YTEST_MATNR'.
      SUBMIT y_program_a. '調(diào)用程序A
      直接運行B,發(fā)現(xiàn)程序A從ABAP Memory讀到了值并輸出到LIST.


      說明:
      (1)調(diào)試運行B到EXPORT語句后面,Goto-System Area-ABAP Memory,可以查看到名為YTEST_MATNR的一片內(nèi)存。
      (2)如果B和A運行在不同的窗口,則A將訪問不到數(shù)據(jù);當用戶輸入/N退出當前程序時,內(nèi)存值也將被清空。
      (3)該語句適用于CALL TRANSACTION/SUBMIT過程中的數(shù)據(jù)共享,也常用于User Exit,類似于定義全局變量的效果。


      2、SAP內(nèi)存:

            不同程序都可以讀取,通過  SET PARAMETER ID....FIELD...() 實現(xiàn):


      上面說了External Mode,那么它們之間共享數(shù)據(jù)必須通過SET/GET PARAMETER語句,不再是EXPORT/IMPORT的模式。
       
      例子. 創(chuàng)建程序A,輸入:
      DATA matnr TYPE matnr.
      GET PARAMETER ID 'YTEST' FIELD matnr.
      WRITE matnr.
      創(chuàng)建程序B,輸入:
      DATA: matnr TYPE matnr.
      matnr = '000000000000012345'.
      SET PARAMETER ID 'YTEST' FIELD matnr.
      在窗口1運行程序B并關(guān)閉后,在窗口2運行程序A,發(fā)現(xiàn)程序A仍然讀到了SAP Memory的值。
       
      說明:
      (1)調(diào)試時,可通過Goto-System Area-SAP Memory,查看到Y(jié)TEST及其對應(yīng)的值。
      (2)SET/GET PARAMETER的值與本次登陸有關(guān),當用戶注銷后才失效。在用戶登陸的時候,系統(tǒng)會根據(jù)每個用戶User Profile-Own Data-Parameter下的設(shè)置,載入到SAP Memory。
      (3)Data Element中可以看到Further Characteristics下可定義PARAMETER ID,代表該字段作為屏幕元素時,可讀取該PARAMETER ID作為默認值。比如VA03會自動顯示剛剛創(chuàng)建的訂單號。


      3、不同用戶的內(nèi)存管理SHARED MEMORY/SHARED BUFFER:

      有一個概念要理解:
      前面介紹的都是用戶內(nèi)存,那么不同用戶間如何實現(xiàn)數(shù)據(jù)共享呢?可以用SHARED MEMORY或SHARED BUFFER,它們是服務(wù)器上的某片所有用戶共享的內(nèi)存。關(guān)于SHARED MEMORY和SHARED BUFFER的區(qū)別,可以F1查看幫助。如果EXPORT SHARED BUFFER,則必須IMPORT SHARED BUFFER才能讀到,用IMPORT SHARED MEMORY是讀不到的。反過來也是。


      例子. 創(chuàng)建程序A,輸入: 
      DATA matnr TYPE matnr.
      IMPORT matnr FROM SHARED BUFFER indx(aa) ID 'YTEST_MATNR'.
      WRITE matnr.
      創(chuàng)建程序B,輸入:
      DATA: matnr TYPE matnr.
      matnr = '000000000000123456'.
      EXPORT matnr TO SHARED BUFFER indx(aa) ID 'YTEST_MATNR'.
      先在用戶1的電腦上運行程序B,然后在用戶2的電腦上運行程序A,發(fā)現(xiàn)用戶2可以讀取到值。


      說明:
      (1)既然是服務(wù)器上的所有用戶共享空間,那么該值將保存到服務(wù)器關(guān)機重啟為止,除非用戶用DELETE語句清除它。其實這個跟ENQUEUE/DEQUEUE有點相似之處。
      (2)數(shù)據(jù)庫也可共享數(shù)據(jù),不過服務(wù)器共享肯定速度快些,理論上適合網(wǎng)絡(luò)游戲,呵呵。
      (3)INDX是系統(tǒng)中存在的符合特定格式要求的表。但這不代表該EXPORT/IMPORT語句將在表INDX中增加記錄,僅僅代表服務(wù)器借用了INDX的結(jié)構(gòu)來管理該片共享內(nèi)存。


      上面說了SHARED BUFFER并不訪問數(shù)據(jù)庫,而要訪問數(shù)據(jù)庫就應(yīng)該用DATABASE。
       
      創(chuàng)建一個程序,錄入代碼:
      DATA: matnr TYPE matnr.
      matnr = '000000000000004321'.
      EXPORT matnr TO DATABASE indx(aa) ID 'YTEST_MATNR'.
       
      執(zhí)行程序,然后SE16查看表INDX,發(fā)現(xiàn)新增了一條RELID = AA, SRTFD = YTEST_MATNR的記錄。如果EXPORT的數(shù)據(jù)量比較大,則新增的將是多條,這些條目的字段值SRTF2從0遞增。所以EXPORT DATABASE與普通數(shù)據(jù)庫操作的不同之處是,它適合大數(shù)據(jù)量的操作,系統(tǒng)自動將其拆分成多條記錄并存儲到數(shù)據(jù)庫中,比如圖片或文檔。而用IMPORT DATABASE的過程則相反,系統(tǒng)將把這些條相關(guān)記錄又自動組合起來成為一個整體。



      4、緩存:

      如果表有設(shè)置緩存,那么第二次讀取的時候就會到緩存里讀取。
      不頻繁修改的可以設(shè)置緩存。:如果數(shù)據(jù)庫表被刪掉,但是緩存里面還保存有的話,,就會導(dǎo)致有錯。
      never buffer transaction data/master data
      緩存是更新到自己的應(yīng)用服務(wù)器上



      5、程序memory管理:

      memory分析:
      debug后,通過memory snapshot保存后,通過下面t-code去分析內(nèi)存
      S_MEMORY_INSPECTOR
      不用的,要free,釋放內(nèi)存。那些是占內(nèi)存的?




        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多