2009年1月24日 星期六

庫存By Batch轉換數量與價格


     CALL FUNCTION 'MURC_ALL_BATCH_FACTORS_NEW'
       EXPORTING
         if_matnr                  = mkopf-matnr
         IF_KZDCH                  = chargen_ebene
         IF_MEINS                  = mkopf-basme
         if_meinh                  = if_meinh1
       tables
         it_sel_charg              = ms_charg_bestand[]
         it_sel_werks              = ms_werks_bestand[]
         it_mcha_objek             = gt_mcha_objek
         it_mch1_objek             = gt_mch1_objek
         it_objek                  = gt_objek
         et_conv_tab               = lt_conv_tab
       EXCEPTIONS
         NOT_FOUND                 = 1
         NO_BATCH_CONVERSION       = 2
         OTHERS                    = 3.

2008年12月27日 星期六

SE11 Dictionary

1.T-CODE:SE11
2.可建立 資料庫表格 資料類型 範圍 搜尋輔助說明 加鎖物件
3.建立結構 在資料類型 輸入結構名稱後 選建立
4.建立結構或資料庫表格時 自設非標準欄位元件以Z開頭為主
5.自設元件無參考元件類型 選擇 固定類型 維護字典類型與長度
6.輸入短文 說明該元件的意義
7.在幣別CURR或是數量QUAN必需有參考單位(例如TW、KG)
8.如該欄位在選擇畫面有下拉式選單功能 則要建立搜尋輔助說明

2008年12月10日 星期三

文字至中

編寫一般的ABAP報表通常都會有表頭的產生
在計算時常會使用到一個系統參數「SY-LINSZ」
在希望文字至中時可以利用 ( 畫面寬度 - 文字長度 ) / 2 來達到至中的效果
以下範例為 FI 查看 製造工費成本比較表的表頭範例

*---------------------------------------------------------------------*
*    FORM TOP_OF_PAGE   *
*---------------------------------------------------------------------*
FORM TOP_OF_PAGE.
  DATA: L_NUM TYPE SY-PAGNO.
  DATA: L_SIZE TYPE SY-LINSZ.    "畫面的寬度
  DATA: L_PAGE(3) TYPE N.
  L_SIZE = ( SY-LINSZ - 18 ) / 2.
  WRITE AT L_SIZE(18) '製造工費成本比較表'(H01) CENTERED.   "SY-TITLE
  L_SIZE =  SY-LINSZ - 8 .
  WRITE AT L_SIZE(4) 'Page'(H02).
  L_SIZE =  SY-LINSZ - 3.
  WRITE AT L_SIZE SY-PAGNO.
*  ULINE.
  L_SIZE = ( SY-LINSZ - 10 ) / 2.
  READ TABLE I_DES WITH KEY SETNAME = GT_RPT-KSGRU.
  CONCATENATE '年度:' G_YEAR INTO G_GJAHR.
  WRITE: / I_DES-DESCRIPT .
  WRITE AT L_SIZE(10) G_GJAHR CENTERED.    "SY-DATUM
*  ULINE.
ENDFORM.   "TOP_OF_PAGE

2008年12月3日 星期三

Call Transaction

希望依這筆結果點擊二下可以呼叫某個程式把值帶入
這時可以用Call Transaction來達成這個目的
以下的例子是呼叫VA03來查詢SO單資料

*---------------------------------------------------------------------*
*    FORM USER_COMMAND     *
*---------------------------------------------------------------------*
FORM USER_COMMAND5 USING R_UCOMM LIKE SY-UCOMM
RS_SELFIELD TYPE SLIS_SELFIELD.
  L_SELFIELD = RS_SELFIELD.
  CASE R_UCOMM.
    WHEN '&SO2'.
  READ TABLE GT_QRY10 INDEX L_SELFIELD-TABINDEX.
  IF SY-SUBRC EQ 0.
    IF GT_QRY10-VBELN IS NOT INITIAL.
  SET PARAMETER ID 'AUN' FIELD GT_QRY10-VBELN.
  CALL TRANSACTION 'VA03' AND SKIP FIRST SCREEN.
    ENDIF.
  ENDIF.
  ENDCASE.
ENDFORM.     "USER_COMMAND

2008年10月23日 星期四

ABAP 常用語法

去除字元前空白 CONDENSE ZINTEGER NO-GAPS.
小寫轉換大寫 TRANSLATE text TO UPPER CASE.
加SearchHelp SELECT-OPTIONS s_matnr FOR mara-matnr MATCHCODE OBJECT mat1.
刪除重覆資料 DELETE ADJACENT DUPLICATES FROM I_TEMP COMPARING VBELN.
資料靠左對齊 LEFT-JUSTIFIED
資料靠中間對齊 CENTERED
資料靠右對齊 RIGHT-JUSTIFIED
資料項下面顯示 UNDER
不顯示前零 NO-ZERO
不顯示正負號 NO-SIGN

2008年10月20日 星期一

MESSAGE Type

簡單的使用MESSAGE E來達到控管
其它的還有MESSAGE A,  I, S, W, or X可運用

*&---------------------------------------------------------------------*
*&   Form  AUTHORIZATION_CHECK
*&---------------------------------------------------------------------*
*    text
*----------------------------------------------------------------------*
*  -->  p1     text
*  <--  p2     text
*----------------------------------------------------------------------*
FORM AUTHORIZATION_CHECK .
  DATA: L_UNAME LIKE USR21-BNAME.
  SELECT SINGLE BNAME FROM USR21 INTO L_UNAME WHERE BNAME = SY-UNAME.
  IF L_UNAME NE 'EIS_CHERRY'.
    MESSAGE E398(00) WITH '您的帳號沒有使用權限'.
  ENDIF.

2008年10月18日 星期六

建立上傳路徑

在選擇畫面要作出下拉式選單來選擇本端PC的檔案
利用以下的Function可達到其目的

CALL FUNCTION 'WS_FILENAME_GET'
   EXPORTING
    DEF_FILENAME = P_FILE "RLGRAP-FILENAME
    DEF_PATH = ''  "DEF_PATH
*    MASK = ',*.*,*.*.'
    MASK = TMP_MASK
    MODE = 'O'
*    TITLE     = ' '
   IMPORTING
    FILENAME = TMP_FILENAME
* RC    =
   EXCEPTIONS
    INV_WINSYS    = 01
    NO_BATCH = 02
    SELECTION_CANCEL = 03
    SELECTION_ERROR  = 04.
  IF SY-SUBRC = 0.
    P_FILE = TMP_FILENAME.
  ENDIF.