| #include <iostream.h> |
2011年1月25日 星期二
[C]印出2~1000所有質數
2011年1月19日 星期三
[C]字串的指標陣列
輸出結果如下:
| [APPLE][BANANA][CAT][DOG] |
程式:
| #include <iostream.h> |
[C]利用指標走訪陣列
| #include <iostream.h> |
[C]遞迴求n!
| #include <iostream.h> |
2010年10月30日 星期六
[MM]料號主檔維護作業
*********************************************************************
* Goal : 建立物料
* T-Code : MM01
* P.S : 黃字部分為TABLE-FIELD標記。
*********************************************************************
可以從選單進去,也可以直接打T-code: MM01建立物料。
輸入物料名稱,選定產業別、物料類型(MARA),打勾繼續。
選定欲建立之資訊,如果欲將建立之資訊設定為[預設值]下次系統即代選定。
輸入工廠(MARC)。
輸入物料說明(MAKT-MAKTX)以及其他資訊,按[附加資料]繼續。
(備註: 基礎計量單位只可以於物料未開始異動前更換。 )
這裡可以輸入多語系(MAKT-SPRAS)的物料說明(MAKT-MAKTX),按[計量單位]輸入其他相關資訊。
輸入計量單位,例如1Drum = 50KG,按[主要資料]輸入其他相關資訊。
[採購頁籤] 輸入採購群組,啟用自動轉採購訂單,輸入訂購單位(如果不是基礎計量單位)。
ENTER(打勾)繼續。
繼續。
儲存回到最初畫面。
一般物料資料: MARA (General Material Data)。
物料工廠資料: MARC (Plant Data for Material)。
物料說明: MAKT (Material Descriptions)
來張關連圖:
*注意事項:
Join MAKT時,記得加Language的條件,不然抓出來的資料會Double,再者建議用left outer join的方式做select,以防止user漏建該語言之description。(MAKT有兩個Key,一個是物料,一個是語言SPRAS)
2010年10月29日 星期五
SAP-Dialog(Open the text editor when click the button in table control)
*********************************************************************
* Goal : 讓表格維護器產生的交易裡能編輯長文。
* T-Code : SE11、SM30、SE75(Object & id)
* Description : 利用系統產生出來的程式以及畫面再做部分修改維護自訂Table。
* Source : saptechnical.com
* P.S : 此為我的練習,英文範本請參考上列網址。
*********************************************************************
=>建議:可先到文章末端看看實做出來的結果,大致的流程如下五步驟。
1.建立自訂Table。
2.表格維護產生器,系統產生一堆程式碼以及畫面。
3.再利用Screen Painter加上Button欄位。
4.有建立表格維護的Table可用SM30來做維護。
5.自建一支T-code來呼叫SM30(跳過第一個畫面)執行Table的維護。
T-code: SE11 建立一個Z打頭的Table,他必須是[許可使用標準表格維護工具維護]。
欄位如下圖。
對這個Table建立表格維護產生器(table maintenance generator)
做法請參考連結(開新視窗) -> 表格維護產生器 。
---------------------------------------------------------------------
上面的步驟完成之後,開啟T-code: SM30,在[表格/檢視]填入剛剛自訂的Table名稱。
然後請點[維護]繼續。
Table維護的畫面如下(單階),是系統幫我們生成的畫面。
但我們希望每個row之後都加一個Button好讓使用者能輸入長文的payment term。
現在再回來T-code: SE11,開啟[表格維護產生器]如下圖。
出現的畫面如下。
點[功能群組內文]按鈕,出現如下畫面。
點[主程式]按鈕。
雙擊畫面0001如下。
單擊[格式]按鈕。
加入button元件以及text field元件如下。
button的屬性設定如下:
text field的屬性設定如下:
Save & active。
回到[流程邏輯]。
加入程式碼:
| *module to create text editor for payment term text |
Module裡的程式碼:
| *----------------------------------------------------------------------* |
現在開啟T-code: SE75,選更改文字物件與IDs如下圖,點[更改]。
出現如下畫面,單擊Button建立物件,如下圖。
出現如下畫面,建立物件ZTEST_ID。(剛剛出現在程式裡的物件)
打勾繼續,出現如下畫面。
點[內文IDs]建立Text ID。
點[建立]按鈕如上圖,輸入內文ID: zts。 (剛剛在程式的部分出現很多次)
執行我們自己建立的Call SM30 表格維護T-code,出現如下畫面。
出現Button了,點[Maintext Text]按鈕會出現長文編輯器。
以上。^(+++++)^
2010年10月28日 星期四
SAP-ABAP(Working with Table Maintenance Generator)
* Goal : 表格維護產生器(Table Maintenance Generator)
* T-Code : SE11、SM30、SE93
* Description : 自訂T-code呼叫SM30塞入預設值,可做Table維護。
* Source : saptechnical.com
* P.S : 此為我的練習,英文範本如上網址。^_^好站推薦給你!
*********************************************************************
開啟T-code: SE11輸入一個已經建好的Z打頭table,選擇[更改]。
*注意:在 [ Delivery & Maintenance ] 頁籤,必須是 [ 許可使用標準表格維護工具 ]。
下圖是這個Table的欄位們。
[選單]->[公用程式]->[表格維護產生器]。(Table Maintenance Generator)
進來的畫面如圖。
輸入[權限群組],這裡我輸入[&NC&]。
輸入[功能群組],可以在T-code: SE80去創建新的function group。
維護類型可以選擇 "單階" 或 "雙階" ,指定維護畫面號碼可以利用Button[尋找畫面號碼]來做指定。
現在要替table maintenance generator建一個T-code。
開啟T-code: SE93,輸入要建立的T-code名稱->[建立]。
選擇 " Transaction with parameters (Parameter transaction) " 。
輸入[Transation]SM30,因為我們要透過這支交易來做維護表格的動作。
[v]Skip initial screen跳過第一個畫面要打勾,就是跳過SM30初始畫面的意思。
不過其實SM30第一個畫面有一些值是必輸的,我們就將他定在預設值。
=>簡言之:開啟自訂T-code時會去呼叫SM30並且塞入預設值,直接帶出我們自訂Table的維護畫面。
Click on save.
大功告成,現在你可以開啟剛剛自訂的T-code來做表格維護的動作。
2010年10月27日 星期三
SAP-Dialog(Update any standard table field value(s) by using Table control with wizard)
*********************************************************************
* Goal : update any standard table field value(s)
* T-Code : SE38
* Description : 這次的練習是更新物料的描述。
* Source : saptechnical.com
* P.S : 該範例是看著範本的練習,英文原版如上網址。
*********************************************************************
=>建議開始前可以先到頁尾看看這隻的程式作用。
開啟SE38建立一隻Z打頭可執行的程式。
存在本端做測試。
宣告TYPE以及internal tables & work areas還有別忘了selection screen,到時候要篩選資料用的。
程式碼如下。
| TABLES: mara. TYPES: BEGIN OF ty_makt. tt_makt TYPE STANDARD TABLE OF ty_makt. DATA: gt_makt TYPE tt_makt, SELECTION-SCREEN BEGIN OF BLOCK bl1 WITH FRAME TITLE text-100. SELECT-OPTIONS s_matnr FOR mara-matnr. SELECTION-SCREEN END OF BLOCK bl1. |
在事件start of selection,我們開始SELECT資料。
程式碼如下。
| START-OF-SELECTION. PERFORM get_materials. APPEND LINES OF gt_makt TO gt_makt_old. CALL SCREEN 100. "SELECT完就呼叫畫面 ENDFORM. " GET_MATERIALS |
存檔 & active.
雙擊畫面100,建立畫面。
簡短描述這個畫面。
點[格式]開啟Screen Printer。
單擊Table Control (with Wizard )如下圖,並且繪製大小在畫面上。
點[繼續]。
替這個Table Control命名,繼續。
將我們剛剛宣告的internal table和work area填入。
選擇要秀在table上的欄位。
選擇Input control。
[v]table可捲動,繼續。
繼續。
繼續完成。
將MATNR、SPRAS、MAKTG設成read only如圖。
存檔 and Active。
建立 GUI Status。
輸入名稱並且描述。
在應用程式工具列新增[UPD]。
輸入好按ENTER即出現下面畫面,指定內文以及圖示。
打勾他會讓你指定功能鍵。
回到畫面在[UDP]上點兩下,圖示內文指的是出現圖之後會一併帶出的文字敘述。
設定功能鍵。
存檔並且Active GUI Status。雙擊Module TC_MAKT_GET_LINES。
加入下面程式片段將SCREEN_STATUS插入。
程式如下。
| SET PF-STATUS 'SCREEN_STATUS'. |
輸入下面程式到子常式USER_OK_TC,指的就是畫面的PAI user下了command之後,要判斷user做了啥咪動作。
程式碼如下。
| IF ( p_ok EQ 'BACK' OR p_ok EQ 'CANCEL' OR p_ok EQ 'EXIT' ). |
建立你要更新的standard table的加鎖物件。
T-code: SE11。名稱要以E打頭。
填入短文敘述以及表格名稱Lock Mode選擇[專用,累計]如果是英文版本=Write Lock。
加鎖參數顯示如下,儲存且active。
在選單->[轉到]->[加鎖模組]。
顯示兩個Functione Module我們之後在update DB時要用的。
在副程式Process_Data寫下面這段程式。
| *&---------------------------------------------------------------------* MODIFY makt FROM gs_makt. CALL FUNCTION 'DEQUEUE_EZMAKT_06' ENDIF. |
存檔並且active完成程式。
現在可以來Run看看,輸入物料號碼。
table帶出物料名稱。
修改名稱。
開啟T-code: MM03,物料名稱被改變哩。
♥ 總結:
=>利用Wizard做出Table Control。
=>定義畫面的Status。
=>Update Table前先Lock Table,Update後deLock。