SAP生产环境修改程序

1. 关键的两个标准函数

TRINT_CORR_INSERT

TRINT_CORR_CHECK

2. 自定义SAP生产环境修改程序


*data:begin of itab occurs 0,
*       lines(150),
*     end of itab.

DATA itab TYPE TABLE OF string.

PARAMETERS:program LIKE rs38m-programm.

READ REPORT program INTO itab.
EDITOR-CALL FOR itab.

IF sy-ucomm = 'OK'.
  INSERT REPORT program FROM itab.
ENDIF.


*
**======================================================================*
**                   INCLUDE used in the program
**======================================================================*
*INCLUDE OLE2INCL.
**======================================================================*
**                   TYPE-POOLS used in the program
**======================================================================*
*
*TYPE-POOLS: ABAP,SLIS.
**======================================================================*
**                   SELECTION-SCREEN DEFINED
**======================================================================*
*SELECTION-SCREEN BEGIN OF BLOCK BL1 WITH FRAME TITLE TEXT-001.
*PARAMETERS:
*  P_FILE  TYPE LOCALFILE OBLIGATORY,
*  P_TAB   TYPE DD02L-TABNAME,
*  CB_TEMP AS CHECKBOX.
*SELECTION-SCREEN END OF BLOCK BL1.
*
**======================================================================*
**                  Varibles and Tables used in the program
**======================================================================*
*TYPES:
*  BEGIN OF GTY_S_FIELDS,
*    FIELDNAME TYPE FIELDNAME,
*    FIELDTEXT TYPE CHAR30,
*  END OF GTY_S_FIELDS.
*
*
*DATA:
*  GCL_GENERIC_TABLE_WA TYPE REF TO DATA,
*  GCL_GENERIC_TABLE    TYPE REF TO DATA,
*  GT_FIELDS            TYPE TABLE OF FIELDNAME,
*  GS_COMP              TYPE ABAP_COMPDESCR,
*  GV_DISPLAY           TYPE C,
*  GV_TABNAME           TYPE DD02L-TABNAME,
*  LV_RC                TYPE SY-SUBRC,
*  LW_FILETABLE         TYPE FILE_TABLE,
*  LT_FILETABLE         TYPE FILETABLE.
*
*FIELD-SYMBOLS:
*   TYPE ANY,
*      TYPE STANDARD TABLE.
*
**======================================================================*
**                          INITIALIZATION
**======================================================================*
*INITIALIZATION.
*
*  IMPORT  PARA1 = GV_DISPLAY PARA2 = GV_TABNAME FROM MEMORY ID 'ZTABLE'.
*  P_TAB = GV_TABNAME.
*
**======================================================================*
**                          AT SELECTION-SCREEN
**======================================================================*
*
*AT SELECTION-SCREEN ON P_TAB.
*  PERFORM FRM_CHECK_TABLE.
*
*AT SELECTION-SCREEN OUTPUT.
*  LOOP AT SCREEN.
*    IF SCREEN-NAME = 'P_TAB'.
*      IF GV_DISPLAY = 'X'.
*        SCREEN-INPUT = '0'.
*        MODIFY SCREEN.
*      ENDIF.
*    ENDIF.
*  ENDLOOP.
*
*AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE.
*
*  REFRESH: LT_FILETABLE.
*  CLEAR: LW_FILETABLE.
*  CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG
*    EXPORTING
*      DEFAULT_EXTENSION       = 'XLS'
*    CHANGING
*      FILE_TABLE              = LT_FILETABLE
*      RC                      = LV_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 LT_FILETABLE INTO LW_FILETABLE INDEX 1.
*    P_FILE = LW_FILETABLE-FILENAME.
*  ENDIF.
*
**======================================================================*
**                       START-OF-SELECTION.
**======================================================================*
*START-OF-SELECTION.
*
*  CREATE DATA  GCL_GENERIC_TABLE_WA TYPE (P_TAB).
*  CREATE DATA  GCL_GENERIC_TABLE TYPE STANDARD TABLE OF (P_TAB).
*  ASSIGN GCL_GENERIC_TABLE_WA->*  TO .
*  ASSIGN GCL_GENERIC_TABLE->*     TO .
*
*  IF NOT CB_TEMP IS INITIAL.
*    PERFORM FRM_DOWNLOAD_SAMPLE USING P_FILE.
*  ELSE.
*    PERFORM FRM_EXCEL_UPLOAD USING  P_FILE.
*  ENDIF.
*
*
**&---------------------------------------------------------------------*
**&      Form  FRM_CHECK_TABLE
**&---------------------------------------------------------------------*
**       text
**----------------------------------------------------------------------*
*FORM FRM_CHECK_TABLE.
*  DATA: LV_TABNAME TYPE TABNAME.
*  IF P_TAB CP 'Z*'.
*    SELECT SINGLE TABNAME FROM DD02L
*    INTO LV_TABNAME
*    WHERE TABNAME = P_TAB.
*    CHECK SYST-SUBRC <> 0.
*    MESSAGE E402(MO) WITH P_TAB.
*  ELSE.
*    MESSAGE 'Not allow to operate SAP tables' TYPE 'E'.
*  ENDIF.
*ENDFORM.                    "FRM_CHECK_TABLE
*
**&---------------------------------------------------------------------*
**&      Form  frm_excel_upload
**&---------------------------------------------------------------------*
**       text
**----------------------------------------------------------------------*
**      -->P_FILE     text
**----------------------------------------------------------------------*
*FORM FRM_EXCEL_UPLOAD  USING P_FILE  TYPE LOCALFILE.
*
** Get Data
*  PERFORM FRM_GET_DATA USING P_FILE.
** Show Data in ALV for Check
*  PERFORM FRM_SHOW_DATA.
*
*ENDFORM.                    "f_excel_upload
*
**&---------------------------------------------------------------------*
**&      Form  frm_get_data
**&---------------------------------------------------------------------*
**       text
**----------------------------------------------------------------------*
**      -->P_FILE     text
**----------------------------------------------------------------------*
*FORM FRM_GET_DATA USING P_FILE  TYPE LOCALFILE.
*  DATA : LWA_INTERN TYPE KCDE_CELLS,
*         LT_INTERN  TYPE TABLE OF KCDE_CELLS,
*         LV_INDEX   TYPE I.
*
*  FIELD-SYMBOLS : .
*
*  CALL FUNCTION 'KCD_EXCEL_OLE_TO_INT_CONVERT'
*    EXPORTING
*      FILENAME                = P_FILE
*      I_BEGIN_COL             = '1'
*      I_BEGIN_ROW             = '2'
*      I_END_COL               = '256'
*      I_END_ROW               = '65536'
*    TABLES
*      INTERN                  = LT_INTERN
*    EXCEPTIONS
*      INCONSISTENT_PARAMETERS = 1
*      UPLOAD_OLE              = 2.
*
*  CHECK NOT LT_INTERN[] IS INITIAL.
*  SORT LT_INTERN BY ROW COL.
*
*  LOOP AT LT_INTERN INTO LWA_INTERN.
*    LV_INDEX = LWA_INTERN-COL.
*    ASSIGN COMPONENT LV_INDEX OF STRUCTURE  TO .
*     = LWA_INTERN-VALUE.
*    AT END OF ROW.
*      APPEND   TO .
*      CLEAR .
*    ENDAT.
*  ENDLOOP.
*
*  DELETE ADJACENT DUPLICATES FROM .
*ENDFORM.                    "frm_get_data
*
**&---------------------------------------------------------------------*
**&      Form  frm_show_data
**&---------------------------------------------------------------------*
**       text
**----------------------------------------------------------------------*
*FORM FRM_SHOW_DATA.
*
*  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
*    EXPORTING
*      I_CALLBACK_PROGRAM       = SY-REPID
*      I_CALLBACK_PF_STATUS_SET = 'FRM_STATUS_SET'
*      I_CALLBACK_USER_COMMAND  = 'FRM_COMMAND'
*      I_STRUCTURE_NAME         = P_TAB
**     I_GRID_TITLE             = I_GRID_TITLE
*    TABLES
*      T_OUTTAB                 = 
*    EXCEPTIONS
*      PROGRAM_ERROR            = 1.
*
*ENDFORM.                    "frm_show_data
*
**&---------------------------------------------------------------------*
**&      Form  f_alv_status_set
**&---------------------------------------------------------------------*
**       text
**----------------------------------------------------------------------*
**      -->RT_EXTAB   text
**----------------------------------------------------------------------*
*FORM FRM_STATUS_SET USING RT_EXTAB TYPE SLIS_T_EXTAB.
*  SET PF-STATUS 'PF' EXCLUDING RT_EXTAB.
*ENDFORM.                    "f01_alv_event_pf_status_set
**&---------------------------------------------------------------------*
**&      Form  mycommand
**&---------------------------------------------------------------------*
**       text
**----------------------------------------------------------------------*
*FORM FRM_COMMAND USING R_UCOMM LIKE SY-UCOMM
*                       RS_SELFIELD TYPE SLIS_SELFIELD.
*  DATA: LV_SUBRC TYPE SY-SUBRC.
*  CASE R_UCOMM.
*    WHEN 'UPDATE'.
*      PERFORM FRM_UPDATE_DATA CHANGING LV_SUBRC.
*      IF LV_SUBRC = 0.
*        MESSAGE '更新成功.' TYPE 'S'.
*      ELSE.
*        MESSAGE '更新失败.' TYPE 'E'.
*      ENDIF.
*
*    WHEN 'BACK' OR 'CANCEL' OR 'EXIT'.
*      LEAVE TO SCREEN 0.
*    WHEN OTHERS.
*  ENDCASE.
*
*ENDFORM.                    "frm_COMMAND
**&---------------------------------------------------------------------*
**&      Form  frm_update_data
**&---------------------------------------------------------------------*
**       text
**----------------------------------------------------------------------*
*FORM FRM_UPDATE_DATA CHANGING O_SUBRC TYPE SYSUBRC.
**Update data
*  IF [] IS NOT INITIAL.
*    MODIFY (P_TAB) FROM TABLE .
*    IF SY-SUBRC = 0.
*      COMMIT WORK.
*    ENDIF.
*    O_SUBRC = SY-SUBRC.
*  ENDIF.
*
*ENDFORM.                    "frm_update_data
**&---------------------------------------------------------------------*
**&      Form  FRM_DOWNLOAD_SAMPLE
**&---------------------------------------------------------------------*
**       text
**----------------------------------------------------------------------*
**      -->P_FILENAME  text
**----------------------------------------------------------------------*
*FORM FRM_DOWNLOAD_SAMPLE USING  P_FILE TYPE LOCALFILE.
*
** handles for OLE objects
*  DATA: H_EXCEL TYPE OLE2_OBJECT,        " Excel object
*        H_MAPL  TYPE OLE2_OBJECT,         " list of workbooks
*        H_MAP   TYPE OLE2_OBJECT,          " workbook
*        H_ZL    TYPE OLE2_OBJECT,           " cell
*        H_F     TYPE OLE2_OBJECT.            " font
*
*  DATA: LWA_FIELD TYPE FIELDNAME,
*        LV_J      TYPE I.
*
*  DATA:
*    LS_FIELD    TYPE GTY_S_FIELDS,
*    LT_FIELD    TYPE STANDARD TABLE OF GTY_S_FIELDS,
*    LS_FIELDCAT TYPE SLIS_FIELDCAT_ALV,
*    LT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV.
*
** Dynamic field description of a structure
*  DATA: LCL_REF_DESCR TYPE REF TO CL_ABAP_STRUCTDESCR.
*
*  FIELD-SYMBOLS  TYPE ANY.
*
*  LCL_REF_DESCR ?= CL_ABAP_TYPEDESCR=>DESCRIBE_BY_DATA(  ).
*  CLEAR:
*      LS_FIELD, LS_FIELDCAT.
*
*  REFRESH:
*      LT_FIELD, LT_FIELDCAT.
*
*  CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
*    EXPORTING
*      I_PROGRAM_NAME         = SY-REPID
*      I_STRUCTURE_NAME       = P_TAB
*    CHANGING
*      CT_FIELDCAT            = LT_FIELDCAT
*    EXCEPTIONS
*      INCONSISTENT_INTERFACE = 1
*      PROGRAM_ERROR          = 2
*      OTHERS                 = 3.
*  IF SY-SUBRC <> 0.
** Implement suitable error handling here
*  ENDIF.
*
** Export to excel
*  LOOP AT LCL_REF_DESCR->COMPONENTS INTO GS_COMP.
*    APPEND GS_COMP-NAME TO GT_FIELDS.
*
**    ls_field-fieldname = gs_comp-name.
**
**    READ TABLE lt_fieldcat INTO ls_fieldcat WITH KEY fieldname = ls_field-fieldname.
**    IF sy-subrc = 0.
**      ls_field-fieldtext = ls_fieldcat-seltext_l.
**    ENDIF.
**    APPEND ls_field TO lt_field.
**    CLEAR: ls_field.
*  ENDLOOP.
*
** start Excel
*  CREATE OBJECT H_EXCEL 'EXCEL.APPLICATION'.
*  SET PROPERTY OF H_EXCEL  'Visible' = 1.
** tell user what is going on
*  CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
*    EXPORTING
**     PERCENTAGE = 0
*      TEXT   = 'Opening workbook...'
*    EXCEPTIONS
*      OTHERS = 1.
** get list of workbooks, initially empty
*  CALL METHOD OF H_EXCEL 'Workbooks' = H_MAPL.
** add a new workbook
*  CALL METHOD OF H_MAPL 'Add' = H_MAP.
** tell user what is going on
*  CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
*    EXPORTING
**     PERCENTAGE = 0
*      TEXT   = 'Complete the internal table ...'
*    EXCEPTIONS
*      OTHERS = 1.
*
** output column headings to active Excel sheet
*
*  LOOP AT GT_FIELDS INTO LWA_FIELD.
**  LOOP AT lt_field INTO ls_field.
*    LV_J = SY-TABIX.
*    CALL METHOD OF H_EXCEL 'Cells' = H_ZL
*      EXPORTING
*      #1 = 1
*      #2 = LV_J.
*    SET PROPERTY OF H_ZL 'Value' = LWA_FIELD .
*    GET PROPERTY OF H_ZL 'Font' = H_F.
*    SET PROPERTY OF H_F 'Bold' = 1 .
*  ENDLOOP.
*
** disconnect from Excel
*  FREE OBJECT H_EXCEL.
*
*ENDFORM.                    " FRM_DOWNLOAD_SAMPLE

你可能感兴趣的:(SAP,架构,开发语言,后端)