Chinaunix首页 | 论坛 | 博客
  • 博客访问: 641894
  • 博文数量: 68
  • 博客积分: 2527
  • 博客等级: 少校
  • 技术积分: 1028
  • 用 户 组: 普通用户
  • 注册时间: 2009-09-07 08:59
文章分类

全部博文(68)

文章存档

2014年(1)

2013年(6)

2012年(18)

2011年(15)

2010年(7)

2009年(21)

我的朋友

分类:

2012-04-19 17:03:37

 
MB51 ALV format directly display
 
 
 
2012-03-01 22:07
 

Implicit enhancement的簡單小應用,供MB51直接顯示ALV格式的需求使用。應該寫得還算詳細了,大家輕拍~~

一,前因

    標準報表MB51只是增加了ALV functionuser選擇是否需要顯示更明細,如果在background job的情況,spool只能顯示standard list

User提出需求,希望在后臺執行時,能夠直接跑出ALV格式的明細記錄。

Standard format

ALV format

二,需求

后臺執行時能夠直接跑出如同點擊后,同樣格式的ALV format report

三,方案

   通過追查MB51source program RM07DOCS,可以發現MB51在點擊會觸發user-commandDETAIL,同時調用subroutinedetail_list。(line 2600

   subroutine沒有任何參數,也就是說,所有的變量都global或者local的,report display的資料來源也全部存在全局變量list[]里。

   這樣就給了我們機會能夠在user跑完MB51進行list output時做modification

   enhancement framework出來之前,針對這種狀況,我們只能期待SAP有提供享用的user-exit,或者將list[] exportparameter ID

再終結的方法就是參考MB51全部重新寫一個ZBM51的程式出來,幸好這支report不是很復雜,不然~

然而,有了enhancement framework之后,提供可以在任何CLASS/FUNCTION/INCLUDEbegin line & end line加上自己需要的處理代碼的機會。

所以,針對此次修改的目的,找到MB51程式中默認輸出的subroutine,在end-of-selection event之后subroutineoutput_list(line 1200)中進行修改。

修改步驟如下:

1,進入enhancement修改狀態

2,顯示implicit enhancement

  

  點擊之后程式中會多一些這樣的橫線,這就是我們可以增加enhancement spot的地方啦~~~~

3,創建enhancement spot

Step 1.

方法1,直接右擊上圖中“引號行”,按下圖方式選擇menu

  

  方法2,置鼠標焦點于“引號行”,從menu進行創建

  

  Step 2.選擇enhancement mode(差別在于一個只定義,一個需要)

 

  Step 3.創建新的enhancement implementation

 

  Step 4. 創建composite enhancement implementation

 新建一個composite enhancement implementation,他可以用來收集一般的enhancement implementation,后續檢查除錯會比較方便。

 (如無特殊需求,請不要在創建時勾選上個畫面的復選框,use this enhancement implementation without query in future,不然建好了想重來,就看不到了)

 

Step 5.創建enhancement implementation

4,implementation進行coding

  Step 1.

 

  Step 2.已經可以在如下欄位寫入自己想要的代碼

 

 代碼如下,我們只需要在background時,才會直接調用detail list,這樣spool中就會同時存在ALV/STANDARD的兩種format,看user需要啦~~

 

  Step 3.保存&激活

 

5,大功告成,測試看看。

四,結果

   前臺跑:

   

  后臺跑:會比正常的多一個All spool lists

  

  點擊all spool lists會出現兩個spool no,因為此處我既保留了原有的format,又有新的ALV format,號碼大一點的就是ALV格式的啦。

  


end!
阅读(4470) | 评论(0) | 转发(2) |
给主人留下些什么吧!~~