arron99

saper

  博客中心 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 登录 ::
  515 随笔 :: 0 文章 :: 235 评论 :: 0 Trackbacks
Cached @ 2025/4/26 10:45:34Control ASP.skins_cogitation_controls_blogstats_ascx
<2006年11月>
2930311234
567891011
12131415161718
19202122232425
262728293012
3456789

留言簿(2)

随笔档案

文章档案

搜索

最新评论

阅读排行榜

评论排行榜

Cached @ 2025/4/26 10:45:34Control ASP.skins_cogitation_controls_singlecolumn_ascx

2006年11月21日 #

Requirement:

Sales Orders are being created through inbound IDocs using FM 'EDI_DATA_INCOMING'. Now a Report is required to check the status of these Inbound IDocs along with Sales Orders generated against customer Purchase Orders.

Processing:

The report selects, 'ORDERS' IDoc numbers & status, generated between given time range, from table EDIDC. Further, it calls Function Module 'IDOC_READ_COMPLETELY' to get the IDoc details. Then required information is extracted by reading relevant field data of IDoc segments.

代码:
REPORT  Z_EDI_FILE_LOAD_STATUS_REPORT           .
*-----------------------------------------------------------------------
* Staus Report for Inbound IDOCs ( Sales Orders )
*-----------------------------------------------------------------------
* Program        : Z_EDI_FILE_LOAD_STATUS_REPORT
* Presented By   : www.rmtiwari.com
*-----------------------------------------------------------------------
TABLES : EDIDC.
*-----------------------------------------------------------------------
* ALV stuff
TYPE-POOLS: SLIS.
DATA: GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,
      GS_LAYOUT   TYPE SLIS_LAYOUT_ALV,
      GT_SORT     TYPE SLIS_T_SORTINFO_ALV,
      GT_LIST_TOP_OF_PAGE TYPE SLIS_T_LISTHEADER.

DATA : BEGIN OF T_REPORT OCCURS 0,
         IDOC_NO       TYPE EDI_DOCNUM,
         IDOC_DATE     TYPE SY-DATUM,
         IDOC_TIME     TYPE SY-UZEIT,
         SORDER_NO     TYPE VBELN,
         STP_NO        TYPE KNA1-KUNNR,
         STP_NAME(35)  TYPE C,
         STP_PHONE(12) TYPE C,
         PO_NO(15)     TYPE C,
         STATUS        TYPE C,
         S_TEXT(70)    TYPE C,
         ERROR(70)     TYPE C,
       END OF T_REPORT.

*------------------PARAMETER------------------------------------------*

selection-screen begin of block date with frame title TEXT-S01.
select-options: UDATE for  EDIDC-UPDDAT
                      default SY-datum obligatory,    "Changed On
                UTIME for  EDIDC-UPDTIM .             "Changed Time

selection-screen end   of block date.

*----------------------------------------------------------------------*
INITIALIZATION.

START-OF-SELECTION.
PERFORM SHOW_STATUS_REPORT.

*&---------------------------------------------------------------------*
*&      Form  alv_grid
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->   p1        text
*  < --  p2        text
*----------------------------------------------------------------------*
FORM ALV_GRID.

  IF GT_FIELDCAT[] IS INITIAL.
    PERFORM FIELDCAT_INIT.
    PERFORM LAYOUT_INIT.
    PERFORM SORT_INIT.
  ENDIF.

  PERFORM GRID_DISPLAY.

ENDFORM.                    "alv_grid
*&---------------------------------------------------------------------*
*&      Form  layout_init
*&---------------------------------------------------------------------*
 
FORM LAYOUT_INIT.
  GS_LAYOUT-ZEBRA             = 'X'.
  GS_LAYOUT-CELL_MERGE        = 'X'.
  GS_LAYOUT-COLWIDTH_OPTIMIZE = 'X'.
  GS_LAYOUT-NO_VLINE          = ' '.
  GS_LAYOUT-TOTALS_BEFORE_ITEMS = ' '.

ENDFORM.                    " layout_init
*&---------------------------------------------------------------------*
*&      Form  fieldcat_init
*&---------------------------------------------------------------------*
 
FORM FIELDCAT_INIT.
  DATA: LS_FIELDCAT TYPE SLIS_FIELDCAT_ALV.

   CLEAR LS_FIELDCAT.
  LS_FIELDCAT-FIELDNAME    = 'IDOC_NO'.
  LS_FIELDCAT-KEY          = 'X'.
  LS_FIELDCAT-REPTEXT_DDIC = 'IDOC'.
  LS_FIELDCAT-OUTPUTLEN    = 10.
* Fix for ALV print bug, which puts 'N/A' over last digit
* Set inttype to 'N' to stop corruption of printed ALV cell.
  LS_FIELDCAT-INTTYPE = 'N'.
  APPEND LS_FIELDCAT TO GT_FIELDCAT.

  CLEAR LS_FIELDCAT.
  LS_FIELDCAT-FIELDNAME    = 'IDOC_DATE'.
  LS_FIELDCAT-REPTEXT_DDIC = 'Creation Date'.
  LS_FIELDCAT-OUTPUTLEN    = 10.
  APPEND LS_FIELDCAT TO GT_FIELDCAT.

  CLEAR LS_FIELDCAT.
  LS_FIELDCAT-FIELDNAME    = 'IDOC_TIME'.
  LS_FIELDCAT-REPTEXT_DDIC = 'Creation Time'.
  LS_FIELDCAT-OUTPUTLEN    = 8.
  APPEND LS_FIELDCAT TO GT_FIELDCAT.

  CLEAR LS_FIELDCAT.
  LS_FIELDCAT-FIELDNAME    = 'STATUS'.
  LS_FIELDCAT-REPTEXT_DDIC = 'St'.
  LS_FIELDCAT-OUTPUTLEN    = 2.
  APPEND LS_FIELDCAT TO GT_FIELDCAT.

  CLEAR LS_FIELDCAT.
  LS_FIELDCAT-FIELDNAME    = 'ERROR'.
  LS_FIELDCAT-REPTEXT_DDIC = 'Message'.
  LS_FIELDCAT-OUTPUTLEN    = 70.
  APPEND LS_FIELDCAT TO GT_FIELDCAT.


  CLEAR LS_FIELDCAT.
  LS_FIELDCAT-FIELDNAME    = 'STP_NO'.
  LS_FIELDCAT-REPTEXT_DDIC = 'S.T.Party No'.
  LS_FIELDCAT-OUTPUTLEN    = 10.
  APPEND LS_FIELDCAT TO GT_FIELDCAT.

  CLEAR LS_FIELDCAT.
  LS_FIELDCAT-FIELDNAME    = 'STP_NAME'.
  LS_FIELDCAT-REPTEXT_DDIC = 'Sold to Party Name'.
  LS_FIELDCAT-OUTPUTLEN    = 35.
  APPEND LS_FIELDCAT TO GT_FIELDCAT.


  CLEAR LS_FIELDCAT.
  LS_FIELDCAT-FIELDNAME    = 'PO_NO'.
  LS_FIELDCAT-REPTEXT_DDIC = 'Purch Order'.
  LS_FIELDCAT-OUTPUTLEN    = 15.
  APPEND LS_FIELDCAT TO GT_FIELDCAT.

  CLEAR LS_FIELDCAT.
  LS_FIELDCAT-FIELDNAME    = 'STP_PHONE'.
  LS_FIELDCAT-REPTEXT_DDIC = 'S.T.Party Phone'.
  LS_FIELDCAT-OUTPUTLEN    = 15.
  APPEND LS_FIELDCAT TO GT_FIELDCAT.

ENDFORM.                    "fieldcat_init

*&---------------------------------------------------------------------*
*&      Form  sort_init
*&---------------------------------------------------------------------*
 
FORM SORT_INIT.
  DATA: LS_SORT TYPE SLIS_SORTINFO_ALV.
*
  CLEAR LS_SORT.
  LS_SORT-FIELDNAME = 'IDOC_DATE'.
  LS_SORT-SPOS      = 1.
  LS_SORT-UP        = 'X'.
  APPEND LS_SORT TO GT_SORT.

  CLEAR LS_SORT.
  LS_SORT-FIELDNAME = 'IDOC_TIME'.
  LS_SORT-SPOS      = 2.
  LS_SORT-UP        = 'X'.
  APPEND LS_SORT TO GT_SORT.

  CLEAR LS_SORT.
  LS_SORT-FIELDNAME = 'STATUS'.
  LS_SORT-SPOS      = 3.
  LS_SORT-UP        = 'X'.
  APPEND LS_SORT TO GT_SORT.

  CLEAR LS_SORT.
  LS_SORT-FIELDNAME = 'IDOC_NO'.
  LS_SORT-SPOS      = 4.
  LS_SORT-UP        = 'X'.
  APPEND LS_SORT TO GT_SORT.

ENDFORM.                    "sort_init
*&---------------------------------------------------------------------*
*&      Form  grid_display
*&---------------------------------------------------------------------*
 
FORM GRID_DISPLAY.

  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      IS_LAYOUT     = GS_LAYOUT
      IT_FIELDCAT   = GT_FIELDCAT
      IT_SORT       = GT_SORT
      i_callback_program      = SY-REPID
      I_CALLBACK_TOP_OF_PAGE = 'TOP_OF_PAGE'
      I_DEFAULT     = ' '
      I_SAVE        = 'X'
    TABLES
      T_OUTTAB      = T_REPORT
    EXCEPTIONS
      PROGRAM_ERROR = 1
      OTHERS        = 2.

ENDFORM.                    "grid_display
*&---------------------------------------------------------------------*
*&      Form  COMMENT_BUILD
*&---------------------------------------------------------------------*
*       Processing of listheader
*----------------------------------------------------------------------*
FORM COMMENT_BUILD USING P_FK_LIST_TOP_OF_PAGE TYPE SLIS_T_LISTHEADER.

  DATA: LS_LINE TYPE SLIS_LISTHEADER.
  REFRESH P_FK_LIST_TOP_OF_PAGE.
* List Heading : Typ H
  CLEAR LS_LINE.
  LS_LINE-TYP  = 'H'.
  LS_LINE-INFO  = 'Sales Order Interface: Z_EDI_FILE_LOAD'.
  APPEND LS_LINE TO P_FK_LIST_TOP_OF_PAGE.

* List : Typ S
  clear LS_LINE.
  LS_LINE-typ  = 'S'.
  LS_LINE-key  = 'Date Range:'.
  LS_LINE-info  = UDATE-low.
  if not UDATE-high is initial.
    write ' To ' to  LS_LINE-info+30.
    LS_LINE-info+36 = UDATE-high.
  endif.


  APPEND LS_LINE TO P_FK_LIST_TOP_OF_PAGE.

ENDFORM.                               " COMMENT_BUILD

*---------------------------------------------------------------------*
*       FORM TOP_OF_PAGE                                              *
*---------------------------------------------------------------------*
*       Ereigniss TOP_OF_PAGE                                       *
*       event     TOP_OF_PAGE
*---------------------------------------------------------------------*
FORM TOP_OF_PAGE.

  PERFORM COMMENT_BUILD  USING gt_LIST_TOP_OF_PAGE[].
  CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
    EXPORTING
      IT_LIST_COMMENTARY = GT_LIST_TOP_OF_PAGE.

ENDFORM.                    "TOP_OF_PAGE

 

*&---------------------------------------------------------------------*
*&      Form  show_status_report
*&---------------------------------------------------------------------*
 
FORM SHOW_STATUS_REPORT .
* Report to show status.

  DATA: BEGIN OF T_TEDS2 OCCURS 0.
          INCLUDE STRUCTURE TEDS2.
  DATA: END OF T_TEDS2.

  DATA: BEGIN OF T_IDOC_CONTROL_TMP OCCURS 0.
          INCLUDE STRUCTURE EDIDC.
  DATA: END OF T_IDOC_CONTROL_TMP.

  CONSTANTS: C_STATUS_IN_IDOC_POSTED       LIKE EDIDC-STATUS VALUE '53'.

  DATA : T_EDIDS TYPE STANDARD TABLE OF EDIDS WITH HEADER LINE.
  DATA : T_EDIDD TYPE STANDARD TABLE OF EDIDD WITH HEADER LINE.

  DATA : GV_PARTNER_SEG TYPE E1EDKA1,
         GV_PO_REF_SEG  TYPE E2EDK02.


* Get text for status values
  SELECT * FROM TEDS2 INTO TABLE T_TEDS2 WHERE LANGUA = SY-LANGU.

* Read the IDoc's status after processing
  SELECT * FROM EDIDC
    INTO TABLE T_IDOC_CONTROL_TMP
   WHERE UPDDAT IN UDATE
     AND UPDTIM IN UTIME
     AND MESTYP = 'ORDERS'.

  LOOP AT T_IDOC_CONTROL_TMP.

*   IDoc has been processed, since control record changed.
    READ TABLE T_TEDS2 WITH KEY STATUS = T_IDOC_CONTROL_TMP-STATUS.
    T_REPORT-IDOC_NO = T_IDOC_CONTROL_TMP-DOCNUM.
    T_REPORT-IDOC_DATE = T_IDOC_CONTROL_TMP-CREDAT.
    T_REPORT-IDOC_TIME = T_IDOC_CONTROL_TMP-CRETIM.
    T_REPORT-S_TEXT = T_TEDS2-DESCRP.
    IF T_IDOC_CONTROL_TMP-STATUS = C_STATUS_IN_IDOC_POSTED.
*     ok status
      T_REPORT-STATUS = 'S'.
    ELSE.
*     error status
      T_REPORT-STATUS = 'E'.
    ENDIF.

*     Get IDoc details.

    CALL FUNCTION 'IDOC_READ_COMPLETELY'
      EXPORTING
        DOCUMENT_NUMBER         = T_REPORT-IDOC_NO
      TABLES
        INT_EDIDS               = T_EDIDS
        INT_EDIDD               = T_EDIDD
      EXCEPTIONS
        DOCUMENT_NOT_EXIST      = 1
        DOCUMENT_NUMBER_INVALID = 2
        OTHERS                  = 3.

*   Get Error status
    READ TABLE T_EDIDS WITH KEY STATUS = T_IDOC_CONTROL_TMP-STATUS.
    IF SY-SUBRC EQ 0.
      REPLACE FIRST OCCURRENCE OF '&1' IN T_EDIDS-STATXT
                            WITH T_EDIDS-STAPA1.
      REPLACE FIRST OCCURRENCE OF '&2' IN T_EDIDS-STATXT
                            WITH T_EDIDS-STAPA2.
      REPLACE FIRST OCCURRENCE OF '&3' IN T_EDIDS-STATXT
                            WITH T_EDIDS-STAPA3.
      REPLACE FIRST OCCURRENCE OF '&4' IN T_EDIDS-STATXT
                            WITH T_EDIDS-STAPA4.

      REPLACE FIRST OCCURRENCE OF '&' IN T_EDIDS-STATXT
                            WITH T_EDIDS-STAPA1.
      REPLACE FIRST OCCURRENCE OF '&' IN T_EDIDS-STATXT
                            WITH T_EDIDS-STAPA2.
      REPLACE FIRST OCCURRENCE OF '&' IN T_EDIDS-STATXT
                            WITH T_EDIDS-STAPA3.
      REPLACE FIRST OCCURRENCE OF '&' IN T_EDIDS-STATXT
                            WITH T_EDIDS-STAPA4.


      T_REPORT-ERROR = T_EDIDS-STATXT.
    ENDIF.
    LOOP AT T_EDIDD.

      CASE T_EDIDD-SEGNAM.

        WHEN 'E1EDKA1'.
          GV_PARTNER_SEG = T_EDIDD-SDATA.

          CLEAR : T_REPORT-STP_NAME.

          CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
            EXPORTING
              INPUT  = GV_PARTNER_SEG-PARTN
            IMPORTING
              OUTPUT = T_REPORT-STP_NO.

          SELECT SINGLE NAME1 TELF1
            INTO (T_REPORT-STP_NAME,T_REPORT-STP_PHONE)
            FROM KNA1
           WHERE KUNNR = T_REPORT-STP_NO.

        WHEN 'E1EDK02'.
          GV_PO_REF_SEG = T_EDIDD-SDATA.
          T_REPORT-PO_NO = GV_PO_REF_SEG-BELNR.
      ENDCASE.

    ENDLOOP.

    APPEND T_REPORT.
  ENDLOOP .

  SORT T_REPORT BY STATUS IDOC_NO.

* Show Report
  PERFORM ALV_GRID.

ENDFORM.                    " show_status_report

posted @ 2006-11-21 21:42 arron99 阅读(962) | 评论 (0)编辑 收藏

1 使用数据表 ’T247’
DATA: it_month_name TYPE TABLE OF t247 WITH HEADER LINE.
SELECT * INTO TABLE it_month_name FROM T247
       WHERE spras = sy-langu.

2 使用函数’MONTH_NAMES_GET’
DATA: it_month_name TYPE TABLE OF t247 WITH HEADER LINE.
CALL FUNCTION ’MONTH_NAMES_GET’     
  EXPORTING         
    LANGUAGE                         = SY-LANGU
*    IMPORTING
*        RETURN_CODE                 =     
  TABLES         
    MONTH_NAMES                      = it_month_name
  EXCEPTIONS         
    MONTH_NAMES_NOT_FOUND            = 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. 
ENDIF. 

posted @ 2006-11-21 21:41 arron99 阅读(718) | 评论 (0)编辑 收藏

*** This program receive spool id and destination file name ***
DATA: it_pdf TYPE TABLE OF TLINE WITH HEADER LINE,
      gv_string TYPE string.


PARAMETERS: p_spool LIKE TSP01-RQIDENT,
            p_file LIKE RLGRAP-FILENAME.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
  CALL FUNCTION ’KD_GET_FILENAME_ON_F4’
    EXPORTING
*     PROGRAM_NAME        = SYST-REPID
*     DYNPRO_NUMBER       = SYST-DYNNR
*     FIELD_NAME          = ’ ’
      STATIC              = ’X’
      MASK                = ’,*.txt,*.*’
    CHANGING
      FILE_NAME           = p_file
    EXCEPTIONS
      MASK_TOO_LONG       = 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.
  ENDIF.

START-OF-SELECTION.
  CALL FUNCTION ’CONVERT_ABAPSPOOLJOB_2_PDF’
    EXPORTING
      SRC_SPOOLID                    = p_spool
*     NO_DIALOG                      =
*     DST_DEVICE                     =
*     PDF_DESTINATION                =
*   IMPORTING
*     PDF_BYTECOUNT                  =
*     PDF_SPOOLID                    =
*     LIST_PAGECOUNT                 =
*     BTC_JOBNAME                    =
*     BTC_JOBCOUNT                   =
   TABLES
     PDF                            = it_pdf
   EXCEPTIONS
     ERR_NO_ABAP_SPOOLJOB           = 1
     ERR_NO_SPOOLJOB                = 2
     ERR_NO_PERMISSION              = 3
     ERR_CONV_NOT_POSSIBLE          = 4
     ERR_BAD_DESTDEVICE             = 5
     USER_CANCELLED                 = 6
     ERR_SPOOLERROR                 = 7
     ERR_TEMSEERROR                 = 8
     ERR_BTCJOB_OPEN_FAILED         = 9
     ERR_BTCJOB_SUBMIT_FAILED       = 10
     ERR_BTCJOB_CLOSE_FAILED        = 11
     OTHERS                         = 12
            .
  IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ELSE.
    gv_string = p_file.
    CALL FUNCTION ’GUI_DOWNLOAD’
      EXPORTING
*       BIN_FILESIZE                    =
        FILENAME                        = gv_string
        FILETYPE                        = ’BIN’
*       APPEND                          = ’ ’
*       WRITE_FIELD_SEPARATOR           = ’ ’
*       HEADER                          = ’00’
*       TRUNC_TRAILING_BLANKS           = ’ ’
*       WRITE_LF                        = ’X’
*       COL_SELECT                      = ’ ’
*       COL_SELECT_MASK                 = ’ ’
*       DAT_MODE                        = ’ ’
*       CONFIRM_OVERWRITE               = ’ ’
*       NO_AUTH_CHECK                   = ’ ’
*       CODEPAGE                        = ’ ’
*       IGNORE_CERR                     = ABAP_TRUE
*       REPLACEMENT                     = ’#’
*       WRITE_BOM                       = ’ ’
*       TRUNC_TRAILING_BLANKS_EOL       = ’X’
*       WK1_N_FORMAT                    = ’ ’
*       WK1_N_SIZE                      = ’ ’
*       WK1_T_FORMAT                    = ’ ’
*       WK1_T_SIZE                      = ’ ’
*     IMPORTING
*       FILELENGTH                      =
      TABLES
        DATA_TAB                        = it_pdf
*       FIELDNAMES                      =
     EXCEPTIONS
       FILE_WRITE_ERROR                = 1
       NO_BATCH                        = 2
       GUI_REFUSE_FILETRANSFER         = 3
       INVALID_TYPE                    = 4
       NO_AUTHORITY                    = 5
       UNKNOWN_ERROR                   = 6
       HEADER_NOT_ALLOWED              = 7
       SEPARATOR_NOT_ALLOWED           = 8
       FILESIZE_NOT_ALLOWED            = 9
       HEADER_TOO_LONG                 = 10
       DP_ERROR_CREATE                 = 11
       DP_ERROR_SEND                   = 12
       DP_ERROR_WRITE                  = 13
       UNKNOWN_DP_ERROR                = 14
       ACCESS_DENIED                   = 15
       DP_OUT_OF_MEMORY                = 16
       DISK_FULL                       = 17
       DP_TIMEOUT                      = 18
       FILE_NOT_FOUND                  = 19
       DATAPROVIDER_EXCEPTION          = 20
       CONTROL_FLUSH_ERROR             = 21
       OTHERS                          = 22
              .
    IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
ENDIF.
posted @ 2006-11-21 21:41 arron99 阅读(918) | 评论 (1)编辑 收藏

REPORT  YUSRLOCK           MESSAGE-ID Z1           .
TABLES: USR02.
PARAMETERS: LOCK AS CHECKBOX, LISTLOCK AS CHECKBOX.
DATA: UFLAGVAL TYPE I, LOCKSTRING(8) TYPE C.

*-------------- Authorization check -----------------------*
AUTHORITY-CHECK OBJECT 'ZPROG_RUN' ID 'PROGRAM' FIELD SY-CPROG.
IF SY-SUBRC <> 0.
  IF SY-SUBRC = 4.
    MESSAGE E000 WITH SY-CPROG. "some message about authorization check failure
  ELSE.
    MESSAGE E005 WITH SY-SUBRC. "some message about authorization check failure
  ENDIF.
ENDIF.

IF LISTLOCK = 'X'.
  WRITE:/ 'List all locked users: '.
  SELECT * FROM USR02 WHERE UFLAG = 64.
    WRITE: / USR02-BNAME.
  ENDSELECT.
  EXIT.
ENDIF.
IF LOCK = 'X'.
  UFLAGVAL = 64.                       "lock all users
  LOCKSTRING = 'locked'.
ELSE.
  UFLAGVAL = 0.                        "unlock all users
  LOCKSTRING = 'unlocked'.
ENDIF.

SELECT * FROM USR02 WHERE BNAME <> 'SAP*' AND BNAME <> SY-UNAME.
  IF USR02-UFLAG <> 0 AND USR02-UFLAG <> 64.
    WRITE: 'User', USR02-BNAME, 'untouched; please handle manually.'.
    CONTINUE.
  ENDIF.

** check that user has authority to make these changes
  AUTHORITY-CHECK OBJECT 'S_USER_GRP'
      ID 'CLASS' FIELD USR02-CLASS
      ID 'ACTVT' FIELD '05'.
  IF SY-SUBRC <> 0.
    IF SY-SUBRC = 4.
      WRITE: /'You are not authorized to lock/unlock user ',
        USR02-BNAME, USR02-CLASS.
    ELSE.
      WRITE: /'Authorization error checking user ',
             USR02-BNAME, USR02-CLASS, '(return code', SY-SUBRC, ').'.
    ENDIF.
  ELSE.                                "has authority
    UPDATE USR02 SET UFLAG = UFLAGVAL WHERE BNAME = USR02-BNAME.
    WRITE: / 'User', USR02-BNAME, LOCKSTRING, '.'.
  ENDIF.
 
posted @ 2006-11-21 21:40 arron99 阅读(941) | 评论 (0)编辑 收藏

report ZGET_FUNC_DES
TYPE-POOLS : slis.

PARAMETERS: p_func LIKE fupararef-funcname.     " Name of Function Module

DATA : BEGIN OF i_tab OCCURS 0,
        funcname      LIKE    fupararef-funcname,       " Name of Function Module
        paramtype     LIKE    fupararef-paramtype,      " Parameter type
        pposition     LIKE    fupararef-pposition,      " Internal Table, Current Line Index
        optional      LIKE    fupararef-optional,       " Optional parameters
        parameter     LIKE    fupararef-parameter,      " Parameter name
        defaultval    LIKE    fupararef-defaultval,     " Default value for import parameter
        structure     LIKE    fupararef-structure,      " Associated Type of an Interface Parameter
        stext         LIKE    funct-stext,              " Short text
    END OF i_tab.

DATA: BEGIN OF mtab_new_prog OCCURS 0,
        line(172) TYPE c,
      END OF mtab_new_prog.

DATA: funcdesc LIKE tftit-stext,     " Short text for function module
      mylen    TYPE i,
      myrc     TYPE i.

CONSTANTS: myhats(40) VALUE '^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^'.

TRANSLATE p_func TO UPPER CASE.

SELECT SINGLE
       tftit~stext     " Short text for function module
  INTO funcdesc
  FROM tftit
 WHERE tftit~funcname = p_func
   AND tftit~spras    = sy-langu.

TRANSLATE p_func TO LOWER CASE.

CONCATENATE  'CALL FUNCTION ' p_func  '   " ' funcdesc INTO mtab_new_prog-line.
APPEND mtab_new_prog.

TRANSLATE p_func TO UPPER CASE.

SELECT
       fupararef~funcname      " Name of Function Module
       fupararef~paramtype     " Parameter type
       fupararef~pposition     " Internal Table, Current Line Index
       fupararef~optional      " Optional parameters
       fupararef~parameter     " Parameter name
       fupararef~defaultval    " Default value for import parameter
       fupararef~structure     " Associated Type of an Interface Parameter
       funct~stext             " Short text
  INTO TABLE i_tab
  FROM fupararef
       INNER JOIN funct
       ON  fupararef~funcname  = funct~funcname
       AND fupararef~parameter = funct~parameter
       AND funct~spras = sy-langu
 WHERE fupararef~funcname = p_func
 AND fupararef~r3state = 'A'
 ORDER BY fupararef~paramtype
          fupararef~pposition.


LOOP AT i_tab.
  AT NEW paramtype.
    CASE i_tab-paramtype.
      WHEN 'C'.
        MOVE '  CHANGING' TO mtab_new_prog-line.
      WHEN 'E'.
        MOVE '  IMPORTING' TO mtab_new_prog-line.
      WHEN 'I'.
        MOVE '  EXPORTING' TO mtab_new_prog-line.
      WHEN 'T'.
        MOVE '  TABLES' TO mtab_new_prog-line.
      WHEN 'X'.
        MOVE '  EXCEPTIONS' TO mtab_new_prog-line.
    ENDCASE.
    APPEND mtab_new_prog.
  ENDAT.

  IF i_tab-optional = 'X'.
    mtab_new_prog-line = '*^^^'.
  ELSE.
    mtab_new_prog-line = '^^^^'.
  ENDIF.

  IF i_tab-paramtype = 'X'.
    MOVE i_tab-pposition TO i_tab-defaultval.
    CONDENSE i_tab-defaultval.
  ELSE.
    TRANSLATE i_tab-parameter TO LOWER CASE.
  ENDIF.

  CONCATENATE mtab_new_prog-line i_tab-parameter '^=^' INTO mtab_new_prog-line.

  IF i_tab-defaultval IS NOT INITIAL.
    CONCATENATE mtab_new_prog-line i_tab-defaultval  INTO mtab_new_prog-line.
  ENDIF.

  mylen = STRLEN( mtab_new_prog-line ).

  IF mylen < 31.
    COMPUTE mylen = 31 - mylen.
  ELSE.
    MOVE 1 TO mylen.
  ENDIF.

  TRANSLATE i_tab-structure TO LOWER CASE.

  CONCATENATE mtab_new_prog-line myhats+0(mylen) ' " ' i_tab-structure INTO mtab_new_prog-line.

  mylen = STRLEN( mtab_new_prog-line ).

  IF mylen < 47.
    COMPUTE mylen = 47 - mylen.
  ELSE.
    MOVE 1 TO mylen.
  ENDIF.

  CONCATENATE mtab_new_prog-line myhats+0(mylen) ' ' i_tab-stext INTO mtab_new_prog-line.

  APPEND  mtab_new_prog.
ENDLOOP.     " LOOP AT I_TAB

CONCATENATE  '    .  "  ' p_func INTO mtab_new_prog-line.
APPEND mtab_new_prog.

LOOP AT mtab_new_prog.
  TRANSLATE mtab_new_prog-line USING '^ '.
  MODIFY mtab_new_prog.

  IF mtab_new_prog = space.
    SKIP 1.
  ENDIF.
  WRITE: / mtab_new_prog.
ENDLOOP.         " LOOP AT MTAB_NEW_PROG

* Write the beautiful program code to ClipBoard from internal table
CALL METHOD cl_gui_frontend_services=>clipboard_export
  IMPORTING
    data = mtab_new_prog[]
  CHANGING
    rc   = myrc. 

posted @ 2006-11-21 21:40 arron99 阅读(829) | 评论 (0)编辑 收藏

report Zrsbzme10 .
parameters: p_In(10) type c,
            unit_in  like t006-msehi default 'M',
            unit_out like t006-msehi default 'MM',
            round(1) type c          default 'X'.
data: result type p decimals 3,
      input  type p decimals 3.
input   =  p_IN.
call function 'UNIT_CONVERSION_SIMPLE'
     exporting
          input                = input
          round_sign           = round
          unit_in              = unit_in
          unit_out             = unit_out
     importing
          output               = result
     exceptions
          conversion_not_found = 01
          division_by_zero     = 02
          input_invalid        = 03
          output_invalid       = 04
          overflow             = 05
          units_missing        = 06
          unit_in_not_found    = 07
          unit_out_not_found   = 08.
write: 'Result: ',result.
posted @ 2006-11-21 21:39 arron99 阅读(841) | 评论 (0)编辑 收藏

REPORT zusrak07.

TABLES: usr01, usr03, usr04, usr02, rfcdes,
usr05, usr10, usr11, usr12, usr13, ust10c, ust10s, ust12.


SELECT-OPTIONS: usrprof FOR usr11-profn.

SELECTION-SCREEN SKIP.
SELECTION-SCREEN ULINE.
SELECTION-SCREEN SKIP.

PARAMETERS: yes_auth RADIOBUTTON GROUP grp1,
no_auth RADIOBUTTON GROUP grp1.

DATA: counter TYPE i,
count_auth TYPE i,
coun TYPE i,
counttmp TYPE i,
proftmp LIKE usr12-auth,
authtmp LIKE usr12-auth,
auth LIKE usr12-auth OCCURS 10 WITH HEADER LINE.

DATA: BEGIN OF itab_profchk OCCURS 0,
profchk LIKE usr10-profn.
DATA: END OF itab_profchk.

SELECT * FROM usr11 WHERE profn IN usrprof.
  MOVE usr11-profn TO itab_profchk-profchk.
  APPEND itab_profchk.
ENDSELECT.

WRITE : / 'Legend :', '1st level profile'.
WRITE AT /10 '2nd level profile' COLOR 5.
WRITE AT /10 '3rd level profile' COLOR 4.
WRITE AT /10 '4th level profile' COLOR 3.
WRITE AT /10 'authorizations' COLOR 7.

SORT itab_profchk.
DELETE ADJACENT DUPLICATES FROM itab_profchk.
PERFORM profchk.

*---------------------------------------------------------------------*
* FORM PROFCHK *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
FORM profchk.
  LOOP AT itab_profchk.

    SELECT SINGLE * FROM usr10 WHERE profn = itab_profchk.
    SELECT SINGLE * FROM usr11 WHERE profn = itab_profchk.
    ULINE.
    WRITE:/ 'Root profile : ' COLOR 6.
    WRITE:/ itab_profchk-profchk, usr11-ptext.

    IF usr10-typ = 'C'.
      counter = 0.
      PERFORM recursive USING itab_profchk-profchk 5.
    ENDIF.

    IF NOT yes_auth IS INITIAL.
      IF usr10-typ = 'S'.
        SELECT * FROM ust10s WHERE profn = itab_profchk.
          SELECT SINGLE * FROM usr13 WHERE auth = ust10s-auth.
          WRITE AT /5 ust10s-auth COLOR 7.
          counttmp = coun + 15.
          WRITE AT 30 usr13-atext COLOR 7.
        ENDSELECT.
      ENDIF.
    ENDIF.
  ENDLOOP.
ENDFORM.                    "profchk

*---------------------------------------------------------------------*
* FORM RECURSIVE *
*---------------------------------------------------------------------*
* --> PROFILE *
* --> COUNTERA *
*---------------------------------------------------------------------*
FORM recursive USING profile LIKE usr12-auth countera TYPE i.
  counter = counter + countera.

  SELECT * FROM ust10c WHERE profn = profile.
    CASE counter.
      WHEN 5.
        WRITE AT /counter ust10c-subprof COLOR 5.
      WHEN 10.
        WRITE AT /counter ust10c-subprof COLOR 4.
      WHEN 15.
        WRITE AT /counter ust10c-subprof COLOR 3.
    ENDCASE.
    MOVE ust10c-subprof TO proftmp.
    SELECT SINGLE * FROM usr10 WHERE profn = proftmp.
    IF usr10-typ = 'C'.
      PERFORM recursive USING proftmp 5.
    ENDIF.

    IF NOT yes_auth IS INITIAL.
      IF usr10-typ = 'S'.
        SELECT * FROM ust10s WHERE profn = proftmp.
          SELECT SINGLE * FROM usr13 WHERE auth = ust10s-auth.
          coun = counter + 5.
          WRITE AT /coun ust10s-auth COLOR 7.
          counttmp = coun + 15.
          WRITE AT counttmp usr13-atext COLOR 7.
        ENDSELECT.
        coun = 0.
      ENDIF.
    ENDIF.
  ENDSELECT.
  counter = 5.
ENDFORM.          

posted @ 2006-11-21 21:39 arron99 阅读(988) | 评论 (0)编辑 收藏

1、挂起任务
当你在进行系统升级维护的时候,你可能不希望当前计划中的批量进程在运行,使用程序BTCTRNS1,这将捕获所有当前计划任务并释放工作以及把他们移动到“特殊”状态。
在事务代码SE37中看到的任务状态将是“Released/Susp”。

2、释放执行任务
当你准备恢复他们以前的状态的时候,简单的运行BTCTRNS2就可以了,这些程序被用于SAP升级过程中,或者其他危险的维护工作中。
 

posted @ 2006-11-21 21:38 arron99 阅读(736) | 评论 (0)编辑 收藏

REPORT z_alv_cdhdr_cdpos.
TYPE-POOLS slis. 
DATA : cdhdr TYPE cdhdr.        
SELECT-OPTIONS :
  s_objcls FOR cdhdr-objectclas OBLIGATORY,
  s_objtid FOR cdhdr-objectid,
  s_chngnr FOR cdhdr-changenr,
  s_usrnam FOR cdhdr-username DEFAULT sy-uname,
  s_udate  FOR cdhdr-udate    DEFAULT sy-datum,
  s_time   FOR cdhdr-utime,
  s_tcode  FOR cdhdr-tcode,
  s_plncnr FOR cdhdr-planchngnr,
  s_chngno FOR cdhdr-act_chngno,
  s_wsplnd FOR cdhdr-was_plannd,
  s_chngid FOR cdhdr-change_ind.

SELECTION-SCREEN SKIP.
PARAMETERS p_max TYPE numc3 OBLIGATORY DEFAULT '200'.

*---------------------------------------------------------------------*
TYPES :
  BEGIN OF ty_s_cdhdr.
        INCLUDE STRUCTURE cdhdr.
TYPES : checkbox,
  END OF ty_s_cdhdr,

  BEGIN OF ty_s_cdpos.
        INCLUDE STRUCTURE cdpos.
TYPES : checkbox,
  END OF ty_s_cdpos.

*---------------------------------------------------------------------*
DATA :
* Layout for ALV
  gs_layout TYPE slis_layout_alv,
* Change document header
  t_cdhdr TYPE TABLE OF ty_s_cdhdr.

*---------------------------------------------------------------------*
START-OF-SELECTION.

* Read Change document header
  SELECT * INTO TABLE t_cdhdr
             UP TO p_max ROWS
           FROM cdhdr
          WHERE objectclas IN s_objcls
            and objectid   in s_objtid
            and changenr   in s_chngnr
            AND username   IN s_usrnam
            AND udate      IN s_udate
            AND utime      IN s_time
            AND tcode      IN s_tcode
            AND planchngnr IN s_plncnr
            AND act_chngno IN s_chngno
            AND was_plannd IN s_wsplnd
            AND change_ind IN s_chngid.

  gs_layout-zebra = 'X'.
  gs_layout-colwidth_optimize = 'X'.
  gs_layout-box_fieldname = 'CHECKBOX'.

* Display ALV
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
       EXPORTING
            i_callback_program      = sy-cprog
            i_callback_user_command = 'USER_COMMAND'
            i_structure_name        = 'CDHDR'
            is_layout               = gs_layout
       TABLES
            t_outtab                = t_cdhdr.

*---------------------------------------------------------------------*
*       FORM USER_COMMAND                                             *
*---------------------------------------------------------------------*
FORM user_command USING u_ucomm     TYPE syucomm
                        us_selfield TYPE slis_selfield.     "#EC CALLED

* Macro definition
  DEFINE m_sort.
    add 1 to ls_sort-spos.
    ls_sort-fieldname = &1.
    ls_sort-up = 'X'.
    append ls_sort to lt_sort.
  END-OF-DEFINITION.

  DATA :
    ls_cdhdr TYPE ty_s_cdhdr,
    ls_sort  TYPE slis_sortinfo_alv,
    lt_sort  TYPE slis_t_sortinfo_alv,
*   Change document items
    lt_cdpos TYPE TABLE OF ty_s_cdpos.

  CASE u_ucomm.
    WHEN '&IC1'.
      PERFORM check_marked USING us_selfield.

*     Read Change document items
      LOOP AT t_cdhdr INTO ls_cdhdr WHERE checkbox = 'X'.
        SELECT * APPENDING TABLE lt_cdpos
                 FROM cdpos
                WHERE objectclas = ls_cdhdr-objectclas
                  AND objectid   = ls_cdhdr-objectid
                  AND changenr   = ls_cdhdr-changenr.
      ENDLOOP.

      m_sort 'CHANGENR'.

*     Display ALV
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
           EXPORTING
                i_structure_name = 'CDPOS'
                is_layout        = gs_layout
                it_sort          = lt_sort
           TABLES
                t_outtab         = lt_cdpos.

  ENDCASE.

ENDFORM.                               " USER_COMMAND
*---------------------------------------------------------------------*
*       Form  CHECK_MARKED
*---------------------------------------------------------------------*
*       What has been marked in t_cdhdr
*---------------------------------------------------------------------*
FORM check_marked USING us_selfield TYPE slis_selfield.

  FIELD-SYMBOLS :
    <cdhdr> TYPE ty_s_cdhdr.

  READ TABLE t_cdhdr TRANSPORTING NO FIELDS WITH KEY checkbox = 'X'.
  IF NOT sy-subrc IS INITIAL AND
     NOT us_selfield-tabindex IS INITIAL.
    READ TABLE t_cdhdr INDEX us_selfield-tabindex ASSIGNING <cdhdr>.
    <cdhdr>-checkbox = 'X'.
  ENDIF.

ENDFORM.                
posted @ 2006-11-21 21:38 arron99 阅读(712) | 评论 (1)编辑 收藏

1.日期类型(D,Date)
在sap里Date类型通过隐含的转换函数变为CHARACTER*8.
Elementary data type = D 内部长度和 输出长度都等于8
System data type = DATS 内部长度 = 8 输出长度 = 10
所有的日期类型在sap里都会通过转换函数存为 'YYYYMMDD'格式.
Most of the times both type 'D' and 'DATS' behaves similarly except when they are output without any overriding additions. In such cases a 'DATS' type variable will be output with separators as specified in the "Date Format Settings" while a type 'd' variable will be output without separators.

输出格式:输出格式可以有三种方法设置:

1. 用户设定 - Transaction SU3
a. 设置用户参数
2. 本地/国家格式日期设定 - Transaction OY01
a. 先使用SET COUNTRY <xx> or SET LOCALE COUNTRY <xx>命令, 在调用输出显示.
3. 直接使用 "WRITE' 的格式
a. DD/MM/YY
b. MM/DD/YY
c. DD/MM/YYYY
d. MM/DD/YYYY
e. DDMMYY
f. MMDDYY
g. YYMMDD
h. USING EDIT MASK '==SDATE' -value checked for validity
i. USING EDIT MASK '==LDATE' -value checked for validity


2.时间(Time)

在sap里Time类型通过隐含的转换函数变为CHARACTER*6.
Elementary data type = T 内部长度和 输出长度都等于 6
System data type = TIMS 内部长度 =6  输出长度都等于= 8
所有的时间类型在sap里都会通过转换函数存为 'HHMMSS'格式.
Most of the times both type 'T' and 'TIMS' behaves similarly except when they are output without any overriding additions. In such cases a 'TIMS' type variable will be output with separators as specified (HH:MM:SS) while a type 'T' variable will be output without separators.

Working with Timestamp
An extension of the DATE data type that can store date and time data (including fractional seconds).

The ABAP Dictionary contains the data elements TIMESTAMP, TIMESTAMPL,

TIMESTAMP = P(8) Decimal 0
TIMESTAMPL = P(11) Decimal 7 ( decimal for fraction of second)

Commands
GET TIME: Places the current time in the system field SY-UZEIT. At the same time, SY-DATUM is set, and the system fields for the local time zone (SY-TIMLO,SY-DATLO, and SY-ZONLO) are refreshed.

GET TIME STAMP FIELD <F> Returns the timestamp in short or long form. The short form contains the current date and time; the long form also contains seven decimal places for fractions of a second, making the timestamp accurate to within 100 nanoseconds.

Time Zone
the world is divided into 24 time zones spaced at intervals of 15 degrees in longitude. The zones start at 0 with Greenwich. Within each time zone, the hour and minute of the day is defined to be the same. Time zones are usually specified by the number of hours they differ from GMT

TTZCU Customizing time zones table.

DST : Daylight Saving Time gives us the opportunity to enjoy sunny summer evenings by moving our clocks an hour forward in the spring.

Note :
Simple write statement is not going to put Timestamp in the desired output format. One has to specify a TIME ZONE for output formatting.

Transaction STZBD维护时区.
1. TTZZ : Time zones
2. TTZR : Time zone rules
3. TTZD : Summer time rules (Daylight saving).
4. TTZDF : Summer time rules (fixed annual dates)
5. TTZDV : Summer time rules (variable dates)

日期时间相关的系统变量
1. SY-TZONE Date and time, time difference from Greenwich Mean Time.
2. SY-DATUM Date and time, current (application server) date.
3. SY-UZEIT Date and time, current application server time.
4. SY-ZONLO Date and time, time zone of user.
5. SY-DATLO Date and time, local date of user.
6. SY-TIMLO Date and time, local time for user.

Time Stamp转换
CONVERT TIME STAMP tst
TIME ZONE tz
INTO DATE d
TIME t [DAYLIGHT SAVING TIME dst].

CONVERT DATE d
TIME t [DAYLIGHT SAVING TIME dst]
INTO TIME STAMP tst
TIME ZONE tz.


The time stamp tst is always UTC time while d and t are always based on the time zone tz.The system always converts using the difference between the timezone tz and UTC time.

This implies that if you want to convert between non-UTC time zones then you can use the above statements in conjunction, First convert date & time in time zone 1 into UTC time stamp and then convert the UTC time stamp into date & time in time zone 2.  

posted @ 2006-11-21 21:37 arron99 阅读(4559) | 评论 (18)编辑 收藏

同步调用RFC 示例
*&---------------------------------------------------------------------*
*& Report  sapbc415_rfcsync_s1                                         *
*&                                                                     *
*&---------------------------------------------------------------------*

REPORT SAPBC415_RFCSYNC_S1  MESSAGE-ID BC415.

TABLES SPFLI.

PARAMETERS: ICARR LIKE SFLIGHT-CARRID DEFAULT 'LH',
            ICONN LIKE SFLIGHT-CONNID DEFAULT '0400',
            DEST  LIKE RFCDES-RFCDEST DEFAULT 'NONE'.

DATA: SYSID LIKE SY-SYSID,
      MESS(80).

CALL FUNCTION 'BC415_RFC_READ_SPFLI'
    DESTINATION DEST
    EXPORTING
       CARRID   = ICARR
       CONNID   = ICONN
    IMPORTING
       EX_SPFLI = SPFLI
       SYS      = SYSID
    EXCEPTIONS
       INVALID_DATA          = 1
       COMMUNICATION_FAILURE = 2  MESSAGE MESS
       SYSTEM_FAILURE        = 3  MESSAGE MESS.

CASE SY-SUBRC.
  WHEN 1.
    WRITE: / TEXT-001.
    EXIT.
  WHEN 2.
    WRITE: / MESS.
    EXIT.
  WHEN 3.
    WRITE: / MESS.
    EXIT.
ENDCASE.

WRITE: / TEXT-004, SYSID COLOR 5.
SKIP.
WRITE: SPFLI-CARRID, SPFLI-CONNID, SPFLI-CITYFROM, SPFLI-CITYTO.

异步调用RFC示例
*&---------------------------------------------------------------------*
*&                                                                     *
*& Report  sapbc415_rfcasync_s1                                        *
*&                                                                     *
*&---------------------------------------------------------------------*

REPORT SAPBC415_RFCASYNC_S1  MESSAGE-ID BC415.

TABLES SPFLI.

PARAMETERS: ICARR LIKE SFLIGHT-CARRID DEFAULT 'LH',
            ICONN LIKE SFLIGHT-CONNID DEFAULT '0400',
            DEST  LIKE RFCDES-RFCDEST DEFAULT 'NONE'.

DATA: SYSID LIKE SY-SYSID,
      MESS(80),
      FLAG,
      RETCODE LIKE SY-SUBRC.

CALL FUNCTION 'BC415_RFC_READ_SPFLI'
   DESTINATION DEST
   STARTING NEW TASK 'T1'
   PERFORMING BACK ON END OF TASK
   EXPORTING
      CARRID  = ICARR
      CONNID  = ICONN
   EXCEPTIONS
      COMMUNICATION_FAILURE = 2  MESSAGE MESS
      SYSTEM_FAILURE        = 3  MESSAGE MESS.

CASE SY-SUBRC.
  WHEN 2.
    WRITE: / MESS.
    EXIT.
  WHEN 3.
    WRITE: / MESS.
    EXIT.
ENDCASE.

WAIT UNTIL  FLAG = 'X'.

CASE RETCODE.
  WHEN 0.
    WRITE: / TEXT-004, SYSID COLOR 5.
    SKIP.
    WRITE: SPFLI-CARRID, SPFLI-CONNID, SPFLI-CITYFROM, SPFLI-CITYTO.
  WHEN 1.
    WRITE: / TEXT-001, / TEXT-002.
  WHEN 2 OR 3.
    WRITE MESS.
ENDCASE.


*---------------------------------------------------------------------*
*       FORM BACK                                                     *
*---------------------------------------------------------------------*
*        -->  T                                                       *
*---------------------------------------------------------------------*
FORM BACK USING T.

  RECEIVE RESULTS FROM FUNCTION 'BC415_RFC_READ_SPFLI'
     IMPORTING
        EX_SPFLI  = SPFLI
        SYS       = SYSID
     EXCEPTIONS
        INVALID_DATA          = 1
        COMMUNICATION_FAILURE = 2  MESSAGE MESS
        SYSTEM_FAILURE        = 3  MESSAGE MESS.

  RETCODE = SY-SUBRC.

  FLAG = 'X'.

ENDFORM.

RFC函数原型
FUNCTION BC415_RFC_READ_SPFLI.
*"----------------------------------------------------------------------
*"*"Lokale Schnittstelle:
*"       IMPORTING
*"             VALUE(CARRID) LIKE  SFLIGHT-CARRID OPTIONAL
*"             VALUE(CONNID) LIKE  SFLIGHT-CONNID OPTIONAL
*"       EXPORTING
*"             VALUE(EX_SPFLI) LIKE  SPFLI STRUCTURE  SPFLI
*"             VALUE(SYS) LIKE  SY-SYSID
*"       EXCEPTIONS
*"              INVALID_DATA
*"----------------------------------------------------------------------
  SELECT SINGLE * FROM  SPFLI INTO SPFLI_WORKAREA
         WHERE  CARRID      = CARRID
         AND    CONNID      = CONNID.
  IF SY-SUBRC EQ 0.
    EX_SPFLI = SPFLI_WORKAREA.
  ELSE.
    MESSAGE E007 RAISING INVALID_DATA.
  ENDIF.
  SYS   = SY-SYSID.
ENDFUNCTION.
相关连接:http://blog.csdn.net/CompassButton/archive/2006/11/15/1385387.aspx

posted @ 2006-11-21 21:36 arron99 阅读(2923) | 评论 (7)编辑 收藏

1、使用函数进行锁定和解锁
锁定
  call function 'SCCR_LOCK_CLIENT'
    exporting
      client = sy-mandt.
解锁
  call function 'SCCR_UNLOCK_CLIENT'
    exporting
      client = sy-mandt.

2、使用TCODE(SCC4) 

posted @ 2006-11-21 21:36 arron99 阅读(723) | 评论 (0)编辑 收藏

在sap的推广过程中,客户经常会在SAP里开发一些报表,然而这些报表的各种资源使用情况是否合理,对与abap程序员来说很重要。为此abap程序员可以通过下列程序得到各种资源的使用情况。

program Zbc_abap_gen_limits.

parameters pa_prog type programm default 'SAPLBTCH'.

*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - *
*       START-OF-SELECTION                                             *
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - *
start-of-selection.
  call function 'BC_ABAP_GEN_LIMITS'
       exporting
            i_prog = pa_prog. 

posted @ 2006-11-21 21:35 arron99 阅读(777) | 评论 (0)编辑 收藏

1 相关tCode ->Se75 
列出相关文本对象

2 相关函数
read_text

save_text

3 相关表
STXH :STXD SAPscript 文本文件抬头

stxl:STXD SAPscript 文本文件行

posted @ 2006-11-21 21:34 arron99 阅读(906) | 评论 (0)编辑 收藏