Tuesday, 30 March 2021

SAP ABAP - Read All Files In Application Server Directory

 *&---------------------------------------------------------------------*

*& Report ZREAD_FILE_AL11
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT ZREAD_FILE_AL11.
constants:
  yes     type flag value 'X',
  no      type flag value space,

  src_dir type epsdirnam value '/usr/sap/share/files'.

*** START OF - Directory
data: v_err type i.

data: dir_name type epsdirnam,
      t_dir    type table of zsepsfili with header line.  ""as output

data: file_source      type string,
      file_dest        type string,
      file_temp        type string,
      file_path        type string,
      folder(200)      type c,
      add_ext_par(255) type c,
      x_rtr(1),
      x_ret2           type bapiret2,
      xt_ret2          type table of bapi_matreturn2 with header line,
      x_msg            type string,
      x_err_copy       type i,
      x_err_move       type i,
      v_type           type sydes_desc.
*** END OF - Directory


start-of-selection.
  clear: dir_name.
  dir_name = src_dir.
  perform get_directory_list  using    dir_name
                              changing v_err
                                       t_dir[].

  loop at t_dir.
    clear: file_source.
    file_source = |{ src_dir }/{ t_dir-name }|.
    try.
        open dataset file_source for input in text mode encoding default
        ignoring conversion errors message x_msg.
      catch cx_sy_file_authority.
        x_err_copy = 1. " not_authorized
      catch cx_sy_file_open .
        x_err_copy = 2. " file_open.
    endtry.

*    DELETE DATASET file_source. ""delete file
    close dataset file_source. ""close file

  endloop.

*&---------------------------------------------------------------------*
form get_directory_list  using    u_dir type epsdirnam
                         changing c_err
                                  c_dir.
*&---------------------------------------------------------------------*
  data: dir_list type table of zsepsfili with header line.
  data: begin of file,
          dirname(75) type c, " name of directory. (possibly truncated.)
          name(75)    type c, " name of entry. (possibly truncated.)
          type(10)    type c, " type of entry.
          len(8)      type p, " length in bytes.
          owner(8)    type c, " owner of the entry.
          mtime(6)    type p, " last modification date, seconds since 1970
          mode(9)     type c, " like "rwx-r-x--x": protection mode.
          errno(3)    type c,
          errmsg(40)  type c,
        end of file.

  data: file_mask     type  epsf-epsfilnam value space,
        file_counter  type  epsf-epsfilsiz,
        error_counter type  epsf-epsfilsiz.

  call 'C_DIR_READ_FINISH'                  " just to be sure
        id 'ERRNO'  field file-errno
        id 'ERRMSG' field file-errmsg.

  call 'C_DIR_READ_START'
        id 'DIR'    field u_dir
        id 'FILE'   field file_mask
        id 'ERRNO'  field file-errno
        id 'ERRMSG' field file-errmsg.

  do.
    clear file.
    clear dir_list.
    call 'C_DIR_READ_NEXT'
          id 'TYPE'   field file-type
          id 'NAME'   field file-name
          id 'LEN'    field file-len
          id 'OWNER'  field file-owner
          id 'MTIME'  field file-mtime
          id 'MODE'   field file-mode
          id 'ERRNO'  field file-errno
          id 'ERRMSG' field file-errmsg.

*   handle files > 2147483647 byte (int 4) - hen 9.9.2004
    if file-len > 2147483647.
      dir_list-size  = -99.
    else.
      dir_list-size  = file-len.
    endif.
    dir_list-name = file-name.
    if sy-subrc = 0.
      if file-type(1) = 'f' or              " regular file
         file-type(1) = 'F'.
        add 1 to file_counter.
        dir_list-rc   = 0.
        append dir_list.
      endif.
    elseif sy-subrc = 1.
      exit.
    else.
      if error_counter > 1000.
        call 'C_DIR_READ_FINISH'
              id 'ERRNO'  field file-errno
              id 'ERRMSG' field file-errmsg.
        message 'too_many_read_errors' type 'S' display like 'E'.
        exit.
      endif.
      add 1 to error_counter.
      dir_list-rc  = 18.
      append dir_list.
    endif.
  enddo.

  if dir_list[] is not initial.
    c_dir = dir_list[].
    clear: c_err.
  else.
    c_err = 1.
  endif.

  call 'C_DIR_READ_FINISH'
        id 'ERRNO'  field file-errno
        id 'ERRMSG' field file-errmsg.

endform.

Friday, 5 March 2021

SAP ABAP - Create Characteristic Using BAPI_CHARACT_CREATE

 REPORT ZCREATE_CHARACT.


DATA :
  CHARACTDETAIL TYPE BAPICHARACTDETAIL,
  CHARACTDESCR  TYPE TABLE OF BAPICHARACTDESCR WITH HEADER LINE,
  ITRETURN      TYPE TABLE OF BAPIRET2.

CLEAR CHARACTDETAIL.
CHARACTDETAIL-CHARACT_NAME = 'ZPM_CHAR01'.
CHARACTDETAIL-DATA_TYPE    = 'CHAR'.
CHARACTDETAIL-LENGTH       = '20'.
CHARACTDETAIL-CASE_SENSITIV = 'X'.
CHARACTDETAIL-STATUS        = '2'.
CHARACTDETAIL-ADDITIONAL_VALUES = '2'.

CLEAR CHARACTDESCR.
CHARACTDESCR-LANGUAGE_INT = 'EN'.
CHARACTDESCR-LANGUAGE_ISO = 'EN'.
CHARACTDESCR-DESCRIPTION  = 'Test PM Char'.
APPEND CHARACTDESCR.

CALL FUNCTION 'BAPI_CHARACT_CREATE'
  EXPORTING
    CHARACTDETAIL = CHARACTDETAIL
  TABLES
    CHARACTDESCR  = CHARACTDESCR[]
    RETURN        = ITRETURN.

CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
  EXPORTING
    WAIT = 'X'.

Friday, 19 February 2021

SAP ABAP Posting Invoice From Parked Document Using BAPI

 REPORT ZPOST_INVOICE.


DATA :
  I_BELNR      TYPE RBKP_V-BELNR,
  I_GJAHR      TYPE RBKP_V-GJAHR,
  E_RBKPV      TYPE MRM_RBKPV,
  I_RBKPV      TYPE MRM_RBKPV,
  T_DRSEG      TYPE MMCR_TDRSEG,
  TI_DRSEG     TYPE MMCR_TDRSEG,
  I_EDITOR     TYPE REF TO C_TEXTEDIT_CONTROL,
  I_DO_PRICING TYPE BOOLE-BOOLE,
  I_BOPF_CALL  TYPE BOOLE-BOOLE.

DATA:
  EX_OBJECT_CX_ROOT TYPE REF TO CX_ROOT,
  EX_TEXT           TYPE STRING,
  EX_TEXT_LONG      TYPE STRING.


I_BELNR = '5105603952'.
I_GJAHR = '2021'.

CALL FUNCTION 'MRM_INVOICE_READ'
  EXPORTING
    I_BELNR = I_BELNR
    I_GJAHR = I_GJAHR
*   I_XSELK = ' '
*   I_BUFFER_ON            = X
*   I_LOCK  = ' '
*   I_DISPL = ' '
  IMPORTING
    E_RBKPV = E_RBKPV
*   T_RBSELCONTRACT        =
*   T_RBSELTRANSPMNG       =
*   T_RBSELTM              =
  TABLES
    T_DRSEG = T_DRSEG
*   T_KONV  =
*   T_RBSELBEST            =
*   T_RBSELLIFS            =
*   T_RBSELFRBR            =
*   T_RBSELWERK            =
*   T_RBSELERFB            =
*   T_RBSELTRAN            =
* EXCEPTIONS
*   ENTRY_NOT_FOUND        = 1
*   LOCK_ERROR             = 2
*   OTHERS  = 3
  .
IF SY-SUBRC = 0.
  TI_DRSEG = T_DRSEG.
  I_RBKPV  = E_RBKPV.

  TRY .
      CALL FUNCTION 'MRM_PARKED_INVOICE_POST'
        EXPORTING
          I_RBKPV  = I_RBKPV
          TI_DRSEG = TI_DRSEG.

      CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
        EXPORTING
          WAIT = 'X'.
    CATCH CX_ROOT INTO EX_OBJECT_CX_ROOT.
      EX_TEXT = EX_OBJECT_CX_ROOT->GET_TEXT( ).
      EX_TEXT_LONG = EX_OBJECT_CX_ROOT->GET_LONGTEXT( ).
  ENDTRY.




  WRITE 'Posted'.

ENDIF.

Turn off default MS Word Editor in Smartforms SAP S/4HANA

Fix SMARTFORMS and SE71 Access Issue in S/4HANA - Enhancement Solution Fix SMARTFORMS and SE71 Access Issue in S/...