2022年4月5日 星期二

SAP Smartforms 教學1

  • 需求:
    1. 資料呈現來自於五個以上的table, ekko, ekpo, mseg, bkpf, bseg, lfa1. 並非一般header-detail型態.
    2. 報表呈現要以header-detail方式呈現.
                   EX: h1
                          d1
                          d2
                          h2
                          d1
                          d2
  • 設計考量
    1. 因為需求1所以考量以外部abap program傳入一個完整internal table, 避免在smartforms中做查詢影響效能,否則一般而言, 可以傳入header table and detail table, 然後在顯示detail時, 使用key連結即可.
    2. 報表欄位中有金額數量欄位所以要特別做reference.
    3. 因為需求2所以使用Loop + Table混用.
  • 實作 
    1. 先用se11建立自己的custimized structure. 才可以透過abap program傳入smartforms.
      • 在這個步驟中有幾點要注意, 如果使用的欄位中有金額或數量必須要設定reference 欄位.
      • 另外就是在activate的同時會有warning, 所以請到Menu->其他->enhancement category->設定Can not be enhanced.
              2. Activate customized structure之後, 就可以寫abap program. 程式碼就不贅述, 只
                 提幾個重點.
      • 在使用者設定檔設定的參數可以用下列程式碼取得. GET PARAMETER ID 'BUK'  FIELD lv_cocd.
              3.  實作smartforms .
      • 首先是Global settings->Form Interface->表格要先做設定. 從外部傳進來的internal table要在此設定, 如果是其他type 則是在匯入設定.
      • 再來是Global Definition->通用資料中設定 在報表中所會使用到的全域變數, 像是傳入的ITAB 為他設定一個Work Area使用的變數, 否則在顯示數字欄位時會有問題.  另外就是金額數量的欄位除了要在幣別數量設定參考欄位後, 該參考欄位也要設定在通用資料中, 以EKBE-WRBTR and EKBE-DMBTR為例, 需要參考EKBE-WAERS, 然後要將參考的欄位WAERS 設定在通用資料中,  如下圖:                                                                                                                                                 

    沒有留言:

    張貼留言