现在的位置: 首页 > 综合 > 正文

[转]整理的函数

2012年06月11日 ⁄ 综合 ⁄ 共 21398字 ⁄ 字号 评论关闭

很多经常用到的函数,希望对大家有帮助.

Funtion:DDIF_FIELDINFO_GET  
  功能:获得字段的相关信息
  参数:
    Import:
      TABNAME:数据库表的名字
      FIELDNAME:无需指定,由LFIELDNAME代替了
      LANGU: 语言设定,默认sy-langu
      LFIELDNAME:指定关联字段
      ALL_TYPES:是否指定所有类型
      GROUP_NAMES:是否包含include的字段
      UCLEN:没用过,应该是和unicode相关的
    Export:
      X030L_WA:返回表头的信息
      DDOBJTYPE:表类型
        'TRANSP'   = transparent table
        'POOL'     = logical pooled table
        'CLUSTER'  = logical cluster table
        'VIEW'     = database or projection view
        'INTTAB'   = structure, help view, maintenance view or structure view
        'TPOOL'    = physical pooled table
        'TCLUSTER' = physical cluster table
        'DTEL'     = data element
        'TTYP'     = table type
      DFIES_WA:没用过
      LINES_DESCR:没用过
    Tables:
      DFIES_TAB:字段列表
      FIXED_VALUES:域的固定值

   说明:该函数可用来获得某个表或者结构或者视图等所有字段的相关信息,所以如果想用alv来维护某个表的时候,对设定field catalog有帮助。

Funtion:DDIF_NAMETAB_GET    
  功能:获得字段的相关信息(不包含text)
  参数:
    Import:
      TABNAME:数据库表的名字
      LFIELDNAME:指定关联字段
      ALL_TYPES:是否指定所有类型
      GROUP_NAMES:是否包含include的字段
      UCLEN:没用过,应该是和unicode相关的
    Export:
      X030L_WA:返回表头的信息
      DTELINFO_WA:data element的信息
      TTYPINFO_WA:表类型的信息
      DDOBJTYPE:表类型
        'TRANSP'   = transparent table
        'POOL'     = logical pooled table
        'CLUSTER'  = logical cluster table
        'VIEW'     = database or projection view
        'INTTAB'   = structure, help view, maintenance view or structure view
        'TPOOL'    = physical pooled table
        'TCLUSTER' = physical cluster table
        'DTEL'     = data element
        'TTYP'     = table type
      DFIES_WA:没用过
      LINES_DESCR:没用过
    Tables:
      DFIES_TAB:字段列表
      FIXED_VALUES:域的固定值

Funtion:DDIF_TABL_GET    
  功能:获得表的相关信息
  参数:
    Import:
      NAME:数据库表的名字
      STATE:状态
         STATE = 'A' (read the active version)
         STATE = 'M' (read the latest version)
      LANGU: 语言设定,默认sy-langu
    Export:
      GOTSTATE:状态信息
      DD02V_WA:表头
      DD09L_WA:表表的技术信息
    Tables:
      DD03P_TAB:表的字段列表
      DD05M_TAB:表的外键字段
      DD08V_TAB:表的外键
      DD12V_TAB:表索引
      DD17V_TAB:表的索引字段
      DD35V_TAB:检索help相关
      DD36M_TAB:检索help相关

Funtion:POPUP_TO_DECIDE_LIST  
  功能:弹出供选择窗口,最多25个选项,选择可以是单选按钮也可以是复选按钮,可以设定最多选择的个数。
  参数:
    Import:
      CURSORLINE  :默认光标所在行
      MARK_FLAG:选择的标志,一般设为‘X’
      MARK_MAX: 最大选择的选项个数
      START_COL:起始行
      START_ROW  :起始列,用来定位弹出窗口的位置
      TEXTLINE1:文本行
      TEXTLINE2:文本行
      TEXTLINE3 :文本行
      TITEL:弹出窗口的标题
      DISPLAY_ONLY:仅显示
    Export:
      ANSWER:A:取消  空:做了选择
    Tables:
      T_SPOPLI:选择结果

例子:
REPORT  Z_BOBO                                  .
* 定义函数需要的变量
DATA: BEGIN OF SPOPLIST OCCURS 15.
          INCLUDE STRUCTURE SPOPLI.
  DATA: END   OF SPOPLIST.
  DATA: ANTWORT TYPE C.
* 添加选择参数
  SPOPLIST-VAROPTION = 'Creditor'.
  APPEND SPOPLIST.
  SPOPLIST-VAROPTION = 'Material'.
  APPEND SPOPLIST.
  SPOPLIST-VAROPTION = 'Account '.
  SPOPLIST-SELFLAG   = 'X'.

  CALL FUNCTION 'POPUP_TO_DECIDE_LIST'
     EXPORTING  TITEL            = 'Possible entra: Order'
               TEXTLINE1        = 'By which criteria'
               TEXTLINE2        = 'should orders'
               TEXTLINE3        = 'be selected?'
               MARK_MAX         = 2
               MARK_FLAG        = 'X'
    IMPORTING  ANSWER           = ANTWORT
    TABLES     T_SPOPLI         = SPOPLIST
    EXCEPTIONS TOO_MUCH_ANSWERS = 1
               TOO_MUCH_MARKS   = 2.

  IF SY-SUBRC = 2.
    WRITE: 'Too many answers chosen.'.
  ENDIF.
* 取消
  IF ANTWORT = 'A'.
    WRITE: 'Popup canceled.'.
  ELSE.
    WRITE: 'Options chosen:'.
    LOOP AT SPOPLIST WHERE SELFLAG = 'X'.
      WRITE: / SPOPLIST-VAROPTION.
    ENDLOOP.
  ENDIF.

SYSTEM-CALL:DY_GET_FOCUS

  说明:获得屏幕焦点

  参数:

    ID 'SSCREENNAM' FIELD CURRSUBSCREEN
          ID 'SSCREENNBR' FIELD CURRSUBSCREENNO
          ID 'MSCREENNAM' FIELD CURRSCREEN
          ID 'MSCREENNBR' FIELD CURRSCREENNO
          ID 'FIELDNAME' FIELD CURSOR_FIELD
          ID 'FIELDOFFS' FIELD DUMMYOFFS
          ID 'LINE' FIELD CURSOR_LINE.

SYSTEM-CALL:DY_GET_SET_FIELD_VALUE

  说明:获得或者设置屏幕字段的值

参数:

ID 'GET_SET'    FIELD 'S'    "S:Set mode  G:Get mode
      ID 'SSCREENNAM' FIELD SHSUBSCREEN
      ID 'SSCREENNBR' FIELD SHSUBSCREENNO
      ID 'MSCREENNAM' FIELD SHSCREEN
      ID 'MSCREENNBR' FIELD SHSCREENNO
      ID 'FIELDNAME' FIELD DYNP_EXPORT
      ID 'LINE' FIELD DYNP_EXSTEPL
      ID 'VALUE' FIELD DYNP_EXPVAL.

例子:我做了一个检索help的exit,例如屏幕上有两个字段,我按了一个字段的检索help,那么根据这个字段就会取得相应的另外一个字段的值,然后把这个之设置到第二个字段。

FUNCTION ZTEST_F4.
*"----------------------------------------------------------------------
*"*"Local interface:
*"  TABLES
*"      SHLP_TAB TYPE  SHLP_DESCT
*"      RECORD_TAB STRUCTURE  SEAHLPRES
*"  CHANGING
*"     REFERENCE(SHLP) TYPE  SHLP_DESCR
*"     REFERENCE(CALLCONTROL) LIKE  DDSHF4CTRL STRUCTURE  DDSHF4CTRL
*"----------------------------------------------------------------------
* Local data definition
  DATA: L_ZZOINO(3) TYPE C.
  DATA: L_ZZPOSID(10) TYPE C.
  DATA: DYNP_EXPORT(132), DYNP_EXPVAL(132).
  DATA: DYNP_EXSTEPL TYPE I, OK, DUMMYCHAR.
  DATA: DUMMYOFFS TYPE I.
  DATA: SHSUBSCREEN LIKE HELP_INFO-DYNPPROG,
        SHSUBSCREENNO LIKE HELP_INFO-DYNPRO,
        SHSCREEN LIKE HELP_INFO-DYNPPROG,
        SHSCREENNO LIKE HELP_INFO-DYNPRO.
  DATA: CURRSUBSCREEN LIKE HELP_INFO-DYNPPROG,
        CURRSUBSCREENNO LIKE HELP_INFO-DYNPRO,
        CURRSCREEN LIKE HELP_INFO-DYNPPROG,
        CURRSCREENNO LIKE HELP_INFO-DYNPRO.
  DATA: CURSOR_FIELD LIKE DYNPREAD-FIELDNAME, CURSOR_LINE TYPE I.
  DATA: SETCURSOR_AVAILABLE TYPE I.
* Get record value from record table
  READ TABLE RECORD_TAB INDEX 1.
  L_ZZPOSID = RECORD_TAB+0(10).
  IF SHLP_TAB-INTDESCR-HOTKEY IS INITIAL.
    L_ZZOINO = RECORD_TAB+10(3).
  ENDIF.
* Check command, if return, set screen
  IF CALLCONTROL-STEP = 'RETTOP'.
*   Initialize screen, get screen focus
    CALL 'DY_GET_FOCUS'
          ID 'SSCREENNAM' FIELD CURRSUBSCREEN
          ID 'SSCREENNBR' FIELD CURRSUBSCREENNO
          ID 'MSCREENNAM' FIELD CURRSCREEN
          ID 'MSCREENNBR' FIELD CURRSCREENNO
          ID 'FIELDNAME' FIELD CURSOR_FIELD
          ID 'FIELDOFFS' FIELD DUMMYOFFS
          ID 'LINE' FIELD CURSOR_LINE.
*   Set screen parameter
    GET PARAMETER ID 'RID' FIELD SHSUBSCREEN .
    SHSCREEN = SHSUBSCREEN.
    GET PARAMETER ID 'DYN' FIELD SHSUBSCREENNO.
    SHSCREENNO = SHSUBSCREENNO.
    DYNP_EXPORT   ='V_WA_DYNPRO_9000-ZZOINO'.
    DYNP_EXPVAL   = L_ZZOINO.
*   System call for set screen
    CALL 'DY_GET_SET_FIELD_VALUE'
      ID 'GET_SET'    FIELD 'S'    "Set mode
      ID 'SSCREENNAM' FIELD SHSUBSCREEN
      ID 'SSCREENNBR' FIELD SHSUBSCREENNO
      ID 'MSCREENNAM' FIELD SHSCREEN
      ID 'MSCREENNBR' FIELD SHSCREENNO
      ID 'FIELDNAME' FIELD DYNP_EXPORT
      ID 'LINE' FIELD DYNP_EXSTEPL
      ID 'VALUE' FIELD DYNP_EXPVAL.
*   System call for set screen
    DYNP_EXPORT   ='V_WA_DYNPRO_9000-ZZPOSID'.
    DYNP_EXPVAL   = L_ZZPOSID.
    CALL 'DY_GET_SET_FIELD_VALUE'
      ID 'GET_SET'    FIELD 'S'    "Set mode
      ID 'SSCREENNAM' FIELD SHSUBSCREEN
      ID 'SSCREENNBR' FIELD SHSUBSCREENNO
      ID 'MSCREENNAM' FIELD SHSCREEN
      ID 'MSCREENNBR' FIELD SHSCREENNO
      ID 'FIELDNAME' FIELD DYNP_EXPORT
      ID 'LINE' FIELD DYNP_EXSTEPL
      ID 'VALUE' FIELD DYNP_EXPVAL.
  ENDIF.
ENDFUNCTION.

Function:F4IF_INT_TABLE_VALUE_REQUEST
  功能:显示检索help
  参数:
     Import:
        DDIC_STRUCTURE:返回table的结构:
          ‘s’:VALUE_TAB的结构
          ‘c’:VALUE_TAB只有一个字段
        RETFIELD:返回的字段名称------------必输
        DYNPPROG:当前程序
        DYNPNR:  屏幕号
        DYNPROFIELD:屏幕上需要检索help的字段名称
        WINDOW_TITLE:检索help的标题
        VALUE_ORG:检索help屏幕显示属性:
        ‘c’:cell by cell
        ‘s’:structured
        CALLBACK_PROGRAM:在f4之前调用的程序
        CALLBACK_FORM:在f4之前调用的程序里面的form名称,形式如下
           FORM <NAME> TABLES RECORD_TAB STRUCTURE SEAHLPRES
                    CHANGING SHLP TYPE SHLP_DESCR
                              CALLCONTROL LIKE DDSHF4CTRL.
     Export:
        USER_RESET:如果没有选择(按红x),返回‘x’
     Tables:
        VALUE_TAB:传进去的表-----------必输
        FIELD_TAB:Fields of the hit list(暂时没用)
        RETURN_TAB:返回值表,即如果选择了而没有写到屏幕上的值存在这个表中。
        DYNPFLD_MAPPING:把屏幕上需要help的字段可以放在这个表中。
           推测:如果屏幕上有多个字段关联,那么只作一个help的话,这个应该可以满足。

例子:
FORM A3000_SET_F4_FIELD_WERKS USING P_FIELD.
TYPES:
  BEGIN OF T_S_WERKS,
    WERKS TYPE T001W-WERKS,   "プラント
    NAME1 TYPE T001W-NAME1,   "名称
    NAME2 TYPE T001W-NAME2,   "名称2
    STRAS TYPE T001W-STRAS,   "地名/番地-号
    ORT01 TYPE T001W-ORT01,   "市区町村名
  END OF T_S_WERKS.
TYPES  T_I_WERKS TYPE STANDARD TABLE OF T_S_WERKS.
*这个就是value_tab
DATA   L_IT_WERKS TYPE T_I_WERKS.
*取数据
  SELECT WERKS    "プラント
         NAME1    "名称
         NAME2    "名称 2
         STRAS    "地名/番地-号
         ORT01    "市区町村名
    FROM T001W
    INTO CORRESPONDING FIELDS OF TABLE L_IT_WERKS.
*调用函数
  CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
    EXPORTING
      RETFIELD                   = 'WERKS'    “plant
      DYNPPROG                 = SY-REPID   “程序名
      DYNPNR                      = SY-DYNNR   “屏幕号
      DYNPROFIELD             = P_FIELD    “字段名称
      VALUE_ORG                = 'S'        “显示属性:cell by cell
    TABLES
      VALUE_TAB                = L_IT_WERKS
    EXCEPTIONS
      PARAMETER_ERROR  = 1
      NO_VALUES_FOUND    = 2
      OTHERS                     = 3

IF SY-SUBRC <> 0.
     MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
             WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.
ENDFORM.                    " A3000_SET_F4_FIELD_WERKS

Function: READ_TEXT/CREATE_TEXT
  功能:读取长文本/创建长文本
  参数:
  Import:
    CLIENT:集团
    ID:文本ID(TTXID中定义)
    LANGUAGE:语言
    NAME:文本名字()
    OBJECT:文本对象(TTXOB中定义)
  Export:
    HEADER:文本的描述信息
  Tables:
    LINES:文本内容

例子:读取销售订单头文本
     CALL FUNCTION 'READ_TEXT'
        EXPORTING
          ID                          = ‘Y001’
          LANGUAGE              = SY-LANGU
          NAME                     = ‘385’
          OBJECT                  = ‘VBBK’
        TABLES
          LINES                     = L_IT_LINES
        EXCEPTIONS
          ID                                            = 1
          LANGUAGE                                = 2
          NAME                                       = 3
          NOT_FOUND                              = 4
          OBJECT                                     = 5
          REFERENCE_CHECK                   = 6
          WRONG_ACCESS_TO_ARCHIVE = 7
          OTHERS                                    = 8.

Function: CONVERSION_EXIT_CUNIT_OUTPUT
  功能:根据语言决定单位的显示
  参数:
    Import:
      INPUT:内部单位显示方式
      LANGUAGE:语言代码
    Export:
      LONG_TEXT:单位的长文本
      OUTPUT:外部单位显示方式
      SHORT_TEXT:单位的短文本

例子:单位显示转换
      CALL FUNCTION 'CONVERSION_EXIT_CUNIT_OUTPUT'
      EXPORTING
        INPUT                   = ‘ST’
        LANGUAGE            = SY-LANGU
      IMPORTING
        OUTPUT                = L_OUT
      EXCEPTIONS
        UNIT_NOT_FOUND = 1
        OTHERS                = 2.

Function: SJIS_DBC_TO_SBC
  功能:全角转换为半角
  参数:
    Import:
      ALL:全部转换
      ALPHABET_UPPER:A-Z转换
      ALPHABET_LOWER:a-z转换
      NUMERIC:0-9转换
    Export:
      CONVERTED:转换的字符个数
    Changing:
      TEXT:转换结果

Function: SJIS_SBC_TO_DBC
  功能:半角转换为全角
  参数:
    Import:
      ALL:全部转换
      ALPHABET_UPPER:A-Z转换
      ALPHABET_LOWER:a-z转换
      NUMERIC:0-9转换
    Export:
      CONVERTED:转换的字符个数
    Changing:
      TEXT:转换结果

Function: CO_R0_CHECK_DECIMAL_POINT
  功能:根据单位检查数据的小数位
  参数:
    Import:
      I_QUANTITY:数量
      I_UNIT:单位
   例子:下面的例子会返回错误信息,以为单位ST是不能有小数位的。
        CALL FUNCTION 'CO_R0_CHECK_DECIMAL_POINT'
          EXPORTING
            I_QUANTITY       = 3.2
            I_UNIT               =‘ST’
          EXCEPTIONS
            WRONG_DATA     = 1
            OTHERS               = 2.

Function: POSTAL_CODE_CHECK
  功能:检查邮政编码
  参数:
    Import:
      COUNTRY:国家(T005)----------必输
      ONE_TIME_ACCOUNT:不明确
      POSTAL_CODE:邮政编码
      POSTAL_CODE_PO_BOX:没用过,以下为推测:如果输入则会检查,如果t005表中的XPLPF设置了,那么如果输入PO_BOX,这个选项就必须输入。
       PO_BOX:没用过
       REGION:区域
    Export:
      POSTAL_CODE:邮编
      EV_POSTAL_CODE:邮编的格式
      EV_POSTAL_CODE_PO_BOX:没用过

Funtion:CONVERSION_EXIT_ALPHA_INPUT
  功能:全数字则在前面补0
  参数:
    Import:
      INPUT:输入的字符串
    Export:
      OUTPUT:输出的字符串

Funtion:CONVERSION_EXIT_ALPHA_OUTPUT
  功能:和上面相反

Funtion:GET_JOB_RUNTIME_INFO
  功能:获得job相关信息
  参数:
    Export:
     EVENTID:后台处理的事件id
     EVENTPARM:后台事件的参数(例如,job id,job名字)
     TERNAL_PROGRAM_ACTIVE:没用过
     JOBCOUNT:job id
     JOBNAME:job 名称

Funtion:TERMINAL_ID_GET
  功能:获得端末id
  参数:
    Import:
      USERNAME:用户名
    Export:
      TERMINAL:terminal id

Funtion:DATE_CONVERT_TO_FACTORYDATE
功能:把输入日期转为工厂日历日期
  参数:
    Import:
      CORRECT_OPTION:表示工作日计算方式的标记  
      DATE:必须转化为工厂日历日期的日期 
      FACTORY_CALENDAR_ID:工厂日历 ID    
    Export:
      DATE:必须转化为工厂日历日期的日期   
      FACTORYDATE:指定日历中的工作日数      
      WORKINGDAY_INDICATOR:表示某日期是否为工作日的标志   

例子:
DATA: DATE1        LIKE SCAL-DATE,
      DATE2        LIKE SCAL-DATE,
      CORRECTION   LIKE SCAL-INDICATOR,
      CALENDAR     LIKE SCAL-FCALID,
      FACTORYDATE  LIKE SCAL-FACDATE,
      WORKDAY      LIKE SCAL-INDICATOR.
      CALL FUNCTION 'DATE_CONVERT_TO_FACTORYDATE'
           EXPORTING  DATE                 = DATE1
                       CORRECT_OPTION       = CORRECTION
                       FACTORY_CALENDAR_ID  = CALENDAR
           IMPORTING  DATE                 = DATE2
                       FACTORYDATE          = FACTORYDATE
                       WORKINGDAY_INDICATOR = WORKDAY
           EXCEPTIONS CORRECT_OPTION_INVALID     = 1
                        DATE_AFTER_RANGE           = 2
                       DATE_BEFORE_RANGE          = 3
                       DATE_INVALID               = 4
                       FACTORY_CALENDAR_NOT_FOUND = 5.

Funtion:MESSAGE_TEXT_BUILD
  功能:把消息转为文本
  参数:
    Import:
      MSGID:消息id
      MSGNR:消息号
      MSGV1:参数1
      MSGV2:参数2
      MSGV3:参数3
      MSGV4:参数4
    Export:
      MESSAGE_TEXT_OUTPUT:输出的字符串
  说明:可以用write <message> to <text>代替

Function: POPUP_TO_CONFIRM
Group:SPO1
  功能:弹出确认窗口
  参数:
    Import:
      TITLEBAR:弹出窗口的标题,最多40位
      TEXT_QUESTION:问题,最长80位,多出来的截断
      TEXT_BUTTON_1:第一按钮的text,最长8位
      ICON_BUTTON_1:第一按钮显示的icon
      TEXT_BUTTON_2:第二按钮的text,最长8位
      ICON_BUTTON_2:第二按钮显示的icon
      DEFAULT_BUTTON:默认的按钮
      DISPLAY_CANCEL_BUTTON:是否显示取消
      POPUP_TYPE:弹出的类型: 决定显示的icon
         ICON_MESSAGE_QUESTION :问题
          ICON_MESSAGE_INFORMATION:信息
          ICON_MESSAGE_WARNING:警告
          ICON_MESSAGE_ERROR:错误
          ICON_MESSAGE_CRITICAL:冲突
      START_COLUMN:弹出位置:列
      START_ROW:弹出位置:行
      IV_QUICKINFO_BUTTON_1:第一按钮的显示信息(鼠标放上去后看到的)
      IV_QUICKINFO_BUTTON_2:第二按钮的显示信息(鼠标放上去后看到的)
    Export:
      ANSWER:返回点击的按钮
        '1' :第一个按钮
         '2' :第二个按钮
         'A' :取消按钮

Function: CS_BOM_EXPL_MAT_V2
  功能:BOM展开
  参数:
    Import:
      CAPID:application id
     DATUV:有效开始日
     EMENG:数量
     MTNRV:物料
     MEHRS:多阶层bom展开
     WERKS:工厂
     STLAN:bom用途
    Tables:
      STB:展开明细
  说明:一般定义上面几个参数就可以了,鉴于该函数参数太多,就不一一说明了

 Function: CLOI_PUT_SIGN_IN_FRONT
  功能:将负号提前
  参数:
    Changing:
      VALUE:需要负号提前的变量

Function: EPS_GET_DIRECTORY_LISTING
  功能:获得某路径下的文件列表
  参数:
    Import:
      DIR_NAME:需要查找的路径
      FILE_MASK:没用过
    Export:
      DIR_NAME:文件路径
      FILE_COUNTER:文件个数
      ERROR_COUNTER:错误的个数
    Tables:
      DIR_LIST:文件列表
  说明:这个函数可以获得服务器某个路径下的所有文件,对open dataset for read file中file名字的获得有帮助。

Function: BAPI_COMPANYCODE_GET_PERIOD
  功能:获得公司的会计年度以及过账日期
  参数:
    Import:
      COMPANYCODEID:公司代码
      POSTING_DATE:posting date
    Export:
      FISCAL_YEAR:会计年度
      FISCAL_PERIOD:财务期间
      RETURN:返回值
   说明:该函数可用来检查会计期间。

Function: MARA_SINGLE_READ
  功能:读取物料信息
  参数:
    Import:
      KZRFB:Indicator: Refresh buffer entry
      MAXTZ:Max. no. of entries in buffer(这两个参数应该和性能优化相关)
      MATNR:物料号
      SPERRMODUS:Lock mode (none, shared, excl.)
      STD_SPERRMODUS:Standard lock mode (if different)(锁相关)
      OUTPUT_NO_MESSAGE:是否输出消息
    Export:
      WMARA:返回的物料信息
   说明:该函数可用于性能优化,例如无法避免在loop中有sql的情况可以用该函数取代sql。
         对mara的其它操作参考function group:MG21

Function: KNA1_SINGLE_READ
  功能:读取customer表信息
  参数:
    Import:
      KZRFB:Indicator: Refresh buffer entry
      KNA1_KUNNR:customer code
    Export:
      WKNA1:返回的信息
   说明:还有很多表的读取参考function group:MG41

Function: ADDR_GET_COMPLETE_ALL_TYPES
  功能:获得地址的相关信息
  参数:
    Import:
      ADDRNUMBER:address number
      PERSNUMBER:个人信息
      ADDRESS_OBJECT_TYPE:类型 1:组织 2:个人 3:客户
    Export:
      ADDR1_COMPLETE:地址1
      ADDR2_COMPLETE:地址2
      ADDR3_COMPLETE:地址3
      ADDR1_COMPLETE_BAPI:地址1
      ADDR2_COMPLETE_BAPI:地址2
      ADDR3_COMPLETE_BAPI:地址3(以上三个bapi用)

Function: READ_VBFA
  功能:取得document flow(省得select了)
  参数:
    Import:
      I_VBELV:Preceding sales and distribution document
      I_POSNV:Preceding item of an SD document
      I_VBTYP_V:Document category of preceding SD document
      I_VBTYP_N:Document category of subsequent document
      I_FKTYP:Billing category
      I_BYPASSING_BUFFER:是否用buffer
      I_REFRESH_BUFFER:删除buffer?
    Tables:
      E_VBFA:凭证流的表
   说明:可以通过by passing buffer来优化性能

Function: SD_VBAK_SINGLE_READ
  功能:读取销售订单表头信息
  参数:
    Import:
      I_VBELN:销售订单
      I_BYPASSING_BUFFER:是否用buffer
      I_REFRESH_BUFFER:删除buffer?
    Export:
      E_VBAK:返回表头信息
   说明:读相关sd表的函数请参考function group:V45I

Function: LIKP_READ
  功能:Delivery Header Data
  参数:
    Import:
      I_VBELN:Delivery
      LINE_EXIST:if 'x' check only if line exsists
    Export:
      O_ANSWR:send out 'x' for line exsists in table
    Tables:
      E_LIKP:SD Document: Delivery Header Data
   说明:有关读取delivery的信息请参考function group:LMGT

Function: CREATE_SAP_SHORTCUT
  功能:创建快捷方式
  参数:
    Import:
      SC_COMMAND:指定的tcode
      SC_TITLE:快捷方式名字:例如:se38
      SC_TYPE:快捷方式类型:有三种:’report’,’ transaction’,’ system command’
      NO_DIALOG:是否弹出窗口
   说明:具体没什么用,做着玩玩。

Function: SAPGUI_PROGRESS_INDICATOR
  功能:显示进度
  参数:
    Import:
      PERCENTAGE:进度的百分数,>0,<100.
      TEXT:文本
说明:在运行时间很长的程序中可以选择使用,这样保证了程序不会中止。当然也可以在rz10里面设置程序运行时间,不过比较麻烦。

Funtion:K_GROUP_SELECT     
  功能:利润中心组的检索help
  参数:
    Import:
      BUTTONS:按钮,决定是否可以选择group类型
      CLASS  :cost center class
      CRUSER:创建人
      FIELD_NAME:字段名称:此项为必输项
      SEARCHFLD:还没用过
      SEARCHFLD_INPUT:成本控制范围是否可以输入(参照图1)
      SEARCHFLD_REQUIRED:成本控制范围是否必输,如果设置为不可输入,
                          那么这个参数无效(参考图2)
      SET:利润中心组的开头字母
      START_COLUMN:弹出窗口的位置
      START_ROW  :弹出窗口的位置
      TABLE:表或者结构的名称
    Export:
      SET_NAME:取得帮助字段的值
 例子
*&---------------------------------------------------------------------
*& Report  Z_BOBO_20060228                                        *
*&---------------------------------------------------------------------*
*& 弹出窗口,利润中心组的帮助,这样就省得f4_value_request了  *                                                                          *
*&---------------------------------------------------------------------*

REPORT  Z_BOBO_20060228                         .
DATA : W_PRCGC1(15)     TYPE C.
DATA : W_SETNAME(15)    TYPE C.
SELECT-OPTIONS : S_PRCGC  FOR  W_PRCGC1.     " 利润中心组
AT SELECTION-SCREEN.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR S_PRCGC-LOW.
   CALL FUNCTION 'K_GROUP_SELECT'
     EXPORTING
       BUTTONS              = 'X'
       CLASS                  = '0106'
       FIELD_NAME          = 'RPRCTR'
       SEARCHFLD_INPUT  = 'X'
       SEARCHFLD_REQUIRED = 'X'
       SET                        = '@'
       TABLE                     = 'CCSS'
     IMPORTING
       SET_NAME                = W_SETNAME
     EXCEPTIONS
       NO_SET_PICKED      = 1
       OTHERS                = 2.
   IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
   ELSE.
     S_PRCGC-LOW  = W_SETNAME.
   ENDIF.
START-OF-SELECTION.
   WRITE: 'TEST BOBO'.  
  
function:SD_VBAP_READ_WITH_VBELN
功能:根据销售订单读取表vbap中的信息
参数:
  import:I_VBELN                          订单号(必输项)
              I_BYPASSING_BUFFER     是否回避buffer
              I_REFRESH_BUFFER         是否清空buffer
  tables:ET_VBAPVB                        不清楚其意义
                   ET_VBAP                            vbap表

form:EDIT_LINES
功能:把READ_TEXT返回的LINES中的行按照TDFORMAT=“*”重新组织
原因:如果用CREATE_TEXT登录的长文本不存在该问题,如果是在前台业务登录的text,那么存到数据库的时候会在72位的地方换行,在lines这个表中的TDFORMAT设置为空,导致READ_TEXT返回的表中的行数也许不是你需要的行数。
代码:
FORM EDIT_LINES TABLES P_IT_LINES STRUCTURE TLINE.
  DATA:
    L_IT_LINES TYPE STANDARD TABLE OF TLINE,
    L_WA_LINES TYPE TLINE,
    L_WA_LINE1 TYPE TLINE,
    L_LINE TYPE I.
  DATA:
    L_INDEX TYPE I,
    L_I     TYPE I.
  READ TABLE P_IT_LINES TRANSPORTING NO FIELDS
    WITH KEY TDFORMAT = SPACE.
  CHECK SY-SUBRC = 0.
  L_LINE = LINES( P_IT_LINES ).
  CHECK L_LINE > 1.

  L_IT_LINES[] = P_IT_LINES[].
  CLEAR: P_IT_LINES[].

  L_INDEX = 2.
  DO.
    CLEAR: L_WA_LINES.
    READ TABLE L_IT_LINES INTO L_WA_LINES INDEX L_INDEX.
    IF SY-SUBRC <> 0.
      L_I = L_INDEX - 1.
      READ TABLE L_IT_LINES INTO L_WA_LINES INDEX L_I.
      IF SY-SUBRC = 0 .
        APPEND L_WA_LINES TO P_IT_LINES.
      ENDIF.
      EXIT.
    ENDIF.
    IF L_WA_LINES-TDFORMAT = '*'.
      L_I = L_INDEX - 1.
      CLEAR L_WA_LINE1.
      READ TABLE L_IT_LINES INTO L_WA_LINE1 INDEX L_I.
      APPEND L_WA_LINE1 TO P_IT_LINES.
      L_INDEX = L_I + 2.
    ELSE.
      L_I = L_INDEX - 1.
      READ TABLE L_IT_LINES INTO L_WA_LINE1 INDEX L_I.
      CONCATENATE L_WA_LINE1-TDLINE L_WA_LINES-TDLINE
             INTO L_WA_LINE1-TDLINE.
      APPEND L_WA_LINE1 TO P_IT_LINES.
      L_INDEX = L_INDEX + 2.
    ENDIF.
  ENDDO.
ENDFORM.                    " S4110_EDIT_LINES

function:VIEW_MAINTENANCE_CALL
功能:维护表视图等
The function module calls the extended table maintenance (View maintenance).
参数:
import:ACTION       S = Display U = Change T = Transport
            CORR_NUMBER  传送号(上面的action是t)
            SHOW_SELECTION_POPUP   是否弹出选择画面
            VIEW_NAME    视图名
            NO_WARNING_FOR_CLIENTINDEP  跨集团是否现实警告
            VARIANT_FOR_SELECTION   变式名
            CHECK_DDIC_MAINFLAG     察看是否为可维护对象
其他的参数暂时没有用到,有用到的朋友可以补充

 



 

  今天介绍JOB相关的几个函数:

1.  JOB_OPEN

     IMPORT:

       DELANFREP:这里设定在JOB执行完毕之后是否删除JOB

       JOBGROUP:JOB分配个某个组,一般用不到

       JOBNAME:JOB的名字,这个名字方便你在SM37中察看

       JOBCLASS:没用过,不知道有什么作用

     EXPORT:

       JOBCOUNT:返回的JOB的ID

     CHANGING:

       RET:判断函数的执行情况

2.  JOB_SUBMIT

     IMPORT:

       AUTHCKNAM:检查权限,传入用户名

       JOBCOUNT:一般是传入刚才取到的JOB ID

       JOBNAME:JOB的名字

       REPORT:执行JOB的程序名字

       VARIANT:JOB执行时候的变式

3.  JOB_CLOSE

     IMPORT:

       JOBCOUNT:一般是传入刚才取到的JOB ID

       JOBNAME:JOB的名字

这三个函数是JOB程序的主要处理流程,其中我只列出了主要用的参数, 至于其他的如果哪位朋友用到可以补充一下。

需要注意一点就是JOB_CLOSE的时候要分两种情况,一种是周期性JOB的关闭, 另一种是即时JOB的关闭。控制的参数需要多指定一些:

周期性JOB:

  PREDJOB_CHECKSTAT:检查JOB执行的状态

  PRED_JOBNAME:周期性JOB的名字

即时性JOB:

  STRTIMMED:这个参数设置为’X’

方法: FILE_OPEN_DIALOG

*数据的定义

DATA: TAB         TYPE FILETABLE,         "存放文件名的内表

      WA          TYPE LINE OF FILETABLE, "用来读取文件名的结构

      FILE_FILTER TYPE STRING,            "file filter

      RC          TYPE I.                 "函数返回值

*定义file filter,注意定义的格式,显示的时候最后一个为默认的显示

*与你定义的DEFAULT_EXTENSION无关

FILE_FILTER = 'All Files (*.*)|*.*|Excel Files (*.xls)|*.xls|Word files(*.doc)|*.doc'.

*这就是打开文件的函数,或者说方法也行

CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG

  EXPORTING

*   对话框的标题  

    WINDOW_TITLE            = 'WINDOW_TITLE'

*   默认的文件后缀名    

    DEFAULT_EXTENSION       = '*.DOC'

*   默认打开的文件名    

    DEFAULT_FILENAME        = 'C:\TEST'

*   文件打开的filter    

    FILE_FILTER             = FILE_FILTER

*   初始化的目录    

    INITIAL_DIRECTORY       = 'C:\'

*   是否可以同时打开多个文件

    MULTISELECTION          = 'X'

  CHANGING

*   你所打开的文件名字列表  

    FILE_TABLE              = TAB

*   返回值,如果成功打开了,为1    

    RC                      = RC

  EXCEPTIONS

    FILE_OPEN_DIALOG_FAILED = 1

    CNTL_ERROR              = 2

    ERROR_NO_GUI            = 3

    NOT_SUPPORTED_BY_GUI    = 4

    others                  = 5

        .

IF SY-SUBRC = 0.

  READ TABLE TAB INDEX 1 INTO WA.

  WRITE: WA.

ENDIF.

 

抱歉!评论已关闭.