Run Operation System Commands

Ngày 21 tháng 12 năm 2018 | 141 views

Run Operation System Commands,

Như ae đồng dâm đã biết (or chưa biết) thì sap cung cấp cho ae tcode SM49 có thể define chạy scripts của hệ điều hành trên SAP, ví dụ như OS Linux thì có các file *.sh, hay Window thì có *.bat..có thể là python...vv.

Tcode SM49 ae có thể chạy trực tiếp những file đó, nhưng ae có thể dùng function module để call scripts đó trong code abap nếu cần thiết, đó là function module SXPG_CALL_SYSTEM.

Ví dụ, thực hiện một chương trình call scripts dưới hệ điều hành có truyển tham sô:

Chương trình chính:

*&---------------------------------------------------------------------*
*& Report  ZPG_OS_COMMANDS
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT ZPG_OS_COMMANDS.

INCLUDE ZIN_OS_COMMANDS_TOP                     .    " global Data
INCLUDE ZIN_OS_COMMANDS_F01                     .  " FORM-Routines

AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_CMD.
  PERFORM SH_COMMAND_NAME.

START-OF-SELECTION.
  PERFORM MAIN.

Scripts trên OS sẽ được load vào danh mục của search help của field Command name

FORM SH_COMMAND_NAME .
  DATA: LT_CMD_LIST TYPE TABLE OF GTY_CMD_LIST,
        LS_CMD_LIST TYPE GTY_CMD_LIST.
  SELECT * FROM SXPGCOSTAB
    INTO CORRESPONDING FIELDS OF TABLE LT_CMD_LIST
    .

  CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
    EXPORTING
      RETFIELD        = 'NAME'
      DYNPROFIELD     = 'P_CMD'
      DYNPPROG        = SY-CPROG
      DYNPNR          = SY-DYNNR
      VALUE_ORG       = 'S'
    TABLES
      VALUE_TAB       = LT_CMD_LIST
    EXCEPTIONS
      PARAMETER_ERROR = 1
      NO_VALUES_FOUND = 2
      OTHERS          = 3.
ENDFORM.

Chương trình chính để excecute scripts trên OS sẽ call đến function module SXPG_CALL_SYSTEM:

FORM MAIN .
  DATA: LW_COMMANDNAME TYPE SXPGCOLIST-NAME,
        LW_ADD_PARA    TYPE SXPGCOLIST-PARAMETERS,
        LW_STATUS      TYPE EXTCMDEXEX-STATUS,
        LT_RETURN      TYPE TABLE OF BTCXPM,
        LS_RETURN      TYPE BTCXPM.
  LW_COMMANDNAME = P_CMD.
  LW_ADD_PARA = P_ADD.
  CALL FUNCTION 'SXPG_CALL_SYSTEM'
    EXPORTING
      COMMANDNAME                = LW_COMMANDNAME
      ADDITIONAL_PARAMETERS      = LW_ADD_PARA
      TRACE                      = 'X'
    IMPORTING
      STATUS                     = LW_STATUS
    TABLES
      EXEC_PROTOCOL              = LT_RETURN
    EXCEPTIONS
      NO_PERMISSION              = 1
      COMMAND_NOT_FOUND          = 2
      PARAMETERS_TOO_LONG        = 3
      SECURITY_RISK              = 4
      WRONG_CHECK_CALL_INTERFACE = 5
      PROGRAM_START_ERROR        = 6
      PROGRAM_TERMINATION_ERROR  = 7
      X_ERROR                    = 8
      PARAMETER_EXPECTED         = 9
      TOO_MANY_PARAMETERS        = 10
      ILLEGAL_COMMAND            = 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.
    MESSAGE LW_STATUS TYPE 'S'.
    LOOP AT LT_RETURN INTO LS_RETURN.
      WRITE LS_RETURN-MESSAGE.
    ENDLOOP.
  ENDIF.

ENDFORM.

PS: Link source code

Reverse lại code trong SAP ABAP

Ngày 04 tháng 1 năm 2019

04-01-2019
67
BTEs – Business Transaction Events

Ngày 26 tháng 12 năm 2018

26-12-2018
104