知識點2

1.  DUMMY是否是檢查全部的類型的權限呢?
    PS:不是,dummy的意思是虛擬的意思,就是說權限檢查的時候有這個權限檢查字段,可是不對該字段作權限檢查。
         AUTHORITY-CHECK  OBJECT  'Z_BRAND'
              ID  'ACTVT'  DUMMY
            
  ID  'BRAND'  FIELD  p_brand . 
   
  IF  sy -  subrc <>  0 . 
     
  MESSAGE  e001 ( 00  )  WITH  '無品牌'  p_brand  '的權限' . 
   
  ENDIF  .
 
2. BKK_DOMAIN_TEXTS_READ讀取域文本的內容,並存放到內表中,
        DATA :  lt_text  TYPE  bkkdc_t_domain_text , "擡頭
            lw_text
  TYPE  bkkdc_s_domain_text  ."工做區
     
  CALL FUNCTION  'BKK_DOMAIN_TEXTS_READ'
       
  EXPORTING 
          i_langu       
  =  sy - langu
          i_domname     
  =  'ZD_HZDLX' 
       
  IMPORTING 
          et_domain_text  =  lt_text[]  .    
     方式二:
      DATA :  lt_domain  TYPE STANDARD TABLE OF  dd07v  WITH HEADER LINE  .
      CALL FUNCTION  'DD_DOMVALUES_GET'
     
  EXPORTING 
        domname  
  =  'ZD_ZAPPSEX'
       
  text       =  'X'
        langu    
  =  sy  - langu
     
  TABLES 
        dd07v_tab
  =  lt_domain .
   方式三:
      DATA: lt_values_tab  TYPE TABLE OF dd07v.
        CALL FUNCTION 'GET_DOMAIN_VALUES'
          EXPORTING
            domname         = 'ZE_ZZSTA'
*           TEXT            = 'X'
*           FILL_DD07L_TAB  = ' '
          TABLES
            values_tab      = lt_values_tab
*           VALUES_DD07L    =
          EXCEPTIONS
            no_values_found = 1
            OTHERS          = 2.
        IF sy-subrc <> 0.
          REFRESH lt_values_tab.
        ENDIF.
 
3.使用消息,便面DUMP掉。
   CALL FUNCTION  'REUSE_ALV_GRID_DISPLAY' 
   
  EXPORTING 
      i_callback_program      
  =  w_repid
      i_callback_pf_status_set
  =  'FRM_SET_PF_STATUS'
      i_callback_user_command 
  =  'FRM_USER_COMMAND'
      is_layout               
  =  w_layout
      it_fieldcat             
  =  it_fieldcat[]
      i_save                  
  =  'A'
   
  TABLES 
      t_outtab                
  =  gt_fhhzd[]
   
  EXCEPTIONS 
      program_error           
  =  1 
     
  OTHERS                    =  2 . 

 
  IF  sy -  subrc <>  0 . 
   
  MESSAGE  e001 ( 00  )  WITH  '函數REUSE_ALV_GRID_DISPLAY錯誤!'  .
 
  ENDIF .
4. 調用SUBMIT獲取數據
   SUBMIT  zhzd_process
         
  WITH  p_hzd  EQ  l_hzd
         
  WITH  p_lx  EQ  'M' 
         
  AND RETURN  .

 
  IMPORT  msg  =  gt_fhhzd - msg subrc  =  sy -  subrc  FROM MEMORY ID  'ZHZD_PROCESS' .
 
REPORT  zhzd_process . 

DATA :  msg  TYPE  char255 . 
PARAMETERS  p_hzd  TYPE  ze_hzd .
PARAMETERS  p_lx  TYPE c  .

CASE  p_lx . 
 
  WHEN  'F' . 
   
  CALL FUNCTION  'Z_JSLHZD_PROCESS'
 
  EXPORTING
    hzd          
  =  p_hzd
 
  IMPORTING
    msg          
  =  msg
 
  EXCEPTIONS
    process_error
  =  1
   
  OTHERS         =  2 . 
 
  WHEN  'T' . 
   
  CALL FUNCTION  'Z_JSLTHZD_PROCESS'
 
  EXPORTING
    hzd          
  =  p_hzd
 
  IMPORTING
    msg          
  =  msg
 
  EXCEPTIONS
    process_error
  =  1
   
  OTHERS         =  2 . 
 
  WHEN  'M' . 
   
  CALL FUNCTION  'Z_MDHZD_PROCESS'
 
  EXPORTING
    hzd          
  =  p_hzd
 
  IMPORTING
    msg          
  =  msg
 
  EXCEPTIONS
    process_error
  =  1
   
  OTHERS         =  2 . 
ENDCASE .

EXPORT  msg  =  msg subrc  =  sy  - subrc  TO MEMORY ID  'ZHZD_PROCESS' .
 
5. 默認值,可是不顯示
       PARAMETERS : p_jsdlx  LIKE  ztjsd  - jsdlx  DEFAULT  'W'  NO - DISPLAY  .
6. 用來匹配模式與邏輯表達式 "p_num CO '0123456789.'  p_num NA 'A....'"
   1. CO / CN contains only or not      :  只包含  不包含
CA / NA contains any or not any :包含任何一個  不包含任何一個
CS / NS contain string or not      :包含string     不包含string
CP / NP contains pattern or not  : 包含模式       不包含模式
      IF  g_fiuser  =  space .  "非財務用戶 
      r_werks
-  sign  =  'I'  .
      r_werks
-  option  =  'NP'  .
      r_werks
-  low  =  '*'  .  "所有門店
     
  APPEND  r_werks .
     
  CLEAR  r_werks .
   
  ELSE  .
      r_werks
-  sign  =  'I'  .
      r_werks
-  option  =  'CP'  .
      r_werks
-  low  =  '*'  .  "所有門店
     
  APPEND  r_werks
     
  CLEAR  r_werks .
   
  ENDIF 
   2.邏輯表達式
     EQ或=          等於
     NE或<>或><     不等於
     LT或<          小於
     LE或<=          小於等於
     GT或>          大於
     GE或>=          大於等於
 
7. 將特定的值查詢後直接賦值到指定的變量中。
SELECT SINGLE  name1 jyfs mdxz  INTO  ( g_name1 ,  g_jyfs , g_mdxz  )  FROM  t001w  WHERE  werks  =  p_werks .
 

8. DIV除以後,取的是整數部分,捨棄了小數部分的內容。若是想保留小數部分,須要使用‘/’dom

 
9. ON_CHANGE_OF 用來分組排序,在不一樣的組內進行排序。
      LOOP AT  gt_data  ASSIGNING  <fs_a> .
       ON CHANGE OF  <fs_a> - clas1  .  
         CLEAR  :  l_pm . 
       ENDON  .  
      l_pm  =  l_pm +  1 . 
      <fs_a> -  pm  =  l_pm  .  
     ENDLOOP  .
10. *刪除F8按鈕.
   APPEND  'CRET'  TO  gt_exclude .
 
  CALL FUNCTION  'RS_SET_SELSCREEN_STATUS'
   
  EXPORTING 
      p_status 
  =  sy - pfkey
   
  TABLES 
      p_exclude
  =  gt_exclude .
     
11.BCALV_EDIT_04:使用INFORM來展現數據
   * first check airline and connection
   select single  *  from  spfli  into  gs_spfli  where  carrid  =  g_carrid  and  connid  =  g_connid .
 
  if  sy -  subrc  ne  0  .
   
  call function  'POPUP_TO_INFORM'
        
  exporting 
              titel
  =  text  - i01
              txt1 
  =  text  - i02
              txt2 
  =  text  - i03
              txt3 
  =  text  - i04
              txt4 
  =  text  - i05 . 
 
  else .
* §0.Lock your database table according to CARRID and CONNID 
   
  perform  lock_sflight  changing  g_success  .
   
  if  g_success  eq  'X' .
     
  call screen  100 .
   
  else  .
     
  message  i000 ( 0k  )  with text -  i10 .
   
  endif  .
 
  endif .
12. * 數量四捨五入  向上取值與向下取值 1.
     1. CALL FUNCTION  'HR_NZ_ROUNDING_DECIMALS'
       EXPORTING 
        value_in 
  =  gv_max  " Input field with decimals
        conv_dec 
  =  0    " i    Number of desired decimals for conversion
     
  IMPORTING 
        value_out
  =  gv_max   " Output field with rounded decimals
    2.  a = 1.36   b = 1.34
       CEIL( a/b ).   "2
       FLOOR( a/b ).  "1
     ABS( dobj ) 返回參數絕對值
     SIGN( dobj )返回參數符號:正數返回1,0返回0,負數返回-1.
     TRUNC( dobj )返回參數的整數部分
     FRAC( dobj )返回參數的小數部分
     CEIL( dobj )返回不小於輸入參數的最小整數值
     FLOOR( dobj )返回不大於輸入參數的最大整數值
     SQRT 平方根
     注意:函數名與左括號間不能有空格,括號與參數間必須有空格.
 
13.檢查必須爲數字
      "折扣檢查 
    l_str_len
  =  strlen (  gt_tab  - netpr  ). 
   
  CLEAR  l_do_index .
   
  DO  l_str_len  TIMES  .
     
  IF NOT  '0123456789.'  CA  gt_tab - netpr+l_do_index (  1 ).
       
  CONCATENATE  gt_tab - msg   '折扣必須爲數字!'  INTO  gt_tab - msg .
     
  ENDIF  .
      l_do_index
  =  l_do_index +  1 . 
   
  ENDDO  .
      "最好的方法定義一個P類型的,用Catch來把字符串(去掉空格後)賦值給這個P類型,若是返回值爲0,就說明是數字~
 
14.ZFC_RT024:若是BAPI調用出錯,直接跳出本次的調用PERFORM 則使用RETURN。程序塊:FORM,MODULE,EVENT等。
 
1. CHECK: 後面跟一個表達式,當表達式的值爲假(false),CHECK發生做用,退出循環LOOP或者處理程序 Processing Block.
          若是CEHCK在循環中,則退出當前的一次循環,從下一次循環繼續執行,相似於CONTINUE.
          若是CHECK出如今循環外,則發生做用時,退出的是當前執行的程序塊 Processing Block,如:FORM METHOD or EVENT.
2. EXIT:  EXIT出如今循環中,退出整個循環,程序從循環結束處開始繼續執行。 
          EXIT出如今循環外,退出的是當前的程序塊:processing Block,如:FORM METHOD or EVENT。與RETURN相似。
3. RETURN:使用RETURN來退出當前執行的程序塊,無論是在LOOP中仍是在Processing Block中,
   PS:    建議只在循環中使用EXIT,而不使用RETURN,在外部退出Processing Block中,使用RETURN。
4. LEAVE PROGRAM: 直接退出當前程序。
5. CONTINUE: 與CHECK相似,CHECK是有條件終止,CONTINUE是無條件終止。在循環中,結束此輪循環,繼續下一輪循環。

     6. STOP:結束當前塊,從下一個塊開始執行。這裏的塊指的是語句快。直接到END-OF-SELECTION.函數


15. 初始化field-symbols :
     UNASSIGN <fs_gw_eban>  .
 
16. 在界面顯示正在執行的動做.
   if  SY  - BATCH  is initial  .  "SY-BATCH 正在後臺執行程序
   
  call function  'SAPGUI_PROGRESS_INDICATOR'
     
  exporting 
       
  TEXT  =  '正在遷移中間數據...' .
 
  endif .
17. 解決篩選時出現篩選輸入字段沒有實際表中的字段那麼長的問題。 定義參照的表和字段,對於自定義的字段使用intlen屬性來設置
   CLEAR :  ls_fieldcat .
 
  LOOP AT  gt_fieldcat  INTO  ls_fieldcat .
   
  CASE  ls_fieldcat - fieldname  .
     
  WHEN  'MATNR' .
        ls_fieldcat
-  ref_table  =  'MARA'  .
        ls_fieldcat
-  ref_field  =  'MATNR'  .
*        ls_fieldcat-intlen    = 18. 
   
  ENDCASE  .
   
  MODIFY  gt_fieldcat  FROM  ls_fieldcat  .
 
  ENDLOOP .
18.單位轉換函數: 
CALL FUNCTION 'CONVERSION_EXIT_CUNIT_OUTPUT'
  EXPORTING
  input =  lv_in"輸入的英文單位
  IMPORTING
  output =  lv_out."輸出的中文單位
CALL FUNCTION 'CONVERSION_EXIT_CUNIT_INPUT'
  EXPORTING
  input = lv_in"輸入的中文單位
  IMPORTING
  output = lv_out."輸出的英文單位
19.RENAMING WITH SUFFIX suffix
TYPES: BEGIN OF t_day,
         work TYPE c LENGTH 8,
         free TYPE c LENGTH 16,
       END OF t_day.
DATA BEGIN OF week.
  INCLUDE TYPE t_day AS monday    RENAMING WITH SUFFIX _mon.
  INCLUDE TYPE t_day AS tuesday   RENAMING WITH SUFFIX _tue.
  INCLUDE TYPE t_day AS wednesday RENAMING WITH SUFFIX _wed.
  ...
DATA END OF week.
 
20.ABAP的Parameter ID ,用來get/set值

Parameter ID 一般用於 Data element中,經過set/get方法存取它的值, 那麼到底Parameter ID 在哪兒進行維護的呢? 要注意的是這個Parameter ID 是跨Client的,因此維護的時候要注意。ui

記住可維護表:TPARA 是有必要的
 
21.查詢用戶的權限列表: SUIM  OR S_BCE_68001400
 
22.      四捨五入函數:
    CALL FUNCTION 'HR_NZ_ROUNDING_DECIMALS'
        EXPORTING           value_in  = l_p                    " Input field with decimals           conv_dec  = 0                         " i    Number of desired decimals for conversion         IMPORTING           value_out = l_p                " Output field with rounded decimals *       EXCEPTIONS *         NO_ROUNDING_REQUIRED             = 1        " No rounding required. (CONV_DEC > VALUE_IN dec) *         DECIMALS_GREATER_THAN_10       = 2        " Conversion only possible with decimals <= 10 *         ROUNDING_ERROR                          = 3        " An error occurred during the decimal conversion *         OTHERS                                           = 4.
相關文章
相關標籤/搜索