Matchcode com tabela interna

REPORT  zmatch.

TYPES: BEGIN OF ty_t001w,
    werks TYPE t001w-werks,
    sep   TYPE c LENGTH 3,
    name1 TYPE t001w-name1,
  END OF ty_t001w.

DATA: t_t001w TYPE TABLE OF ty_t001w,                       "#EC NEEDED
      w_t001w TYPE ty_t001w,
      l_index TYPE sy-tabix.                                "#EC NEEDED

SELECTION-SCREEN BEGIN OF BLOCK b1.
PARAMETERS: p1 TYPE c LENGTH 4.
SELECT-OPTIONS: p2 FOR w_t001w-werks NO INTERVALS NO-EXTENSION.
SELECTION-SCREEN END OF BLOCK b1.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p1.
  SELECT werks name1
    INTO CORRESPONDING FIELDS OF TABLE t_t001w
    FROM t001w
   WHERE vtweg = '10'.

  w_t001w-sep = ' - '.
  MODIFY t_t001w FROM w_t001w TRANSPORTING sep WHERE sep IS INITIAL.

  CALL FUNCTION 'POPUP_WITH_TABLE_DISPLAY'
    EXPORTING
      endpos_col   = 70
      endpos_row   = 20
      startpos_col = 43
      startpos_row = 1
      titletext    = 'SELECIONAR O CENTRO'
    IMPORTING
      choise       = l_index
    TABLES
      valuetab     = t_t001w
    EXCEPTIONS
      break_off    = 1
      OTHERS       = 2.

  IF sy-subrc IS NOT INITIAL.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
            WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.

  IF l_index IS NOT INITIAL.
    READ TABLE t_t001w INTO w_t001w INDEX l_index.
*    MESSAGE w_t001w-name1 TYPE 'I'.
    p1 = w_t001w-werks.
  ENDIF.

START-OF-SELECTION.
*  CLEAR: t_t001w, t_t001w[], w_t001w.
*  SELECT werks name1
*  INTO CORRESPONDING FIELDS OF TABLE t_t001w
*  FROM t001w
* WHERE werks = p1.
*  READ TABLE t_t001w INTO w_t001w INDEX 1.
  WRITE: / w_t001w-name1.

END-OF-SELECTION.

 

Criar uma view de manutenção com tela de seleção

*&---------------------------------------------------------------------*
*& Report  ZREPORT
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT  ZREPORT.

TABLES: ztabela.
CONSTANTS: c_view  TYPE   char30  VALUE 'ZTABELA',
           c_u     TYPE   char1   VALUE 'U',
           c_and   TYPE   char3   VALUE 'AND'.
DATA: gt_seltab    TYPE STANDARD TABLE OF vimsellist.
DATA: g_fieldname  TYPE vimsellist-viewfield.
DATA: gt_exclude   TYPE TABLE OF vimexclfun,
      gwa_exclude  TYPE vimexclfun.

SELECT-OPTIONS: s_campo    FOR ztabela-campo.

*Add ID column to selection criteria of Table maintenanace view
g_fieldname = 'CAMPO'.

CALL FUNCTION 'VIEW_RANGETAB_TO_SELLIST'
  EXPORTING
    fieldname          = g_fieldname
    append_conjunction = c_and
  TABLES
    sellist            = gt_seltab
    rangetab           = s_campo.
*
**Add Name column to selection criteria of Table maintenanace view
*g_fieldname = 'NAME'.
*
*CALL FUNCTION 'VIEW_RANGETAB_TO_SELLIST'
*  EXPORTING
*    fieldname          = g_fieldname
*    append_conjunction = c_and
*  TABLES
*    sellist            = gt_seltab
*    rangetab           = s_name.
*
**Add Place column to selection criteria of Table maintenanace view
*g_fieldname = 'PLACE'.
*
*CALL FUNCTION 'VIEW_RANGETAB_TO_SELLIST'
*  EXPORTING
*    fieldname          = g_fieldname
*    append_conjunction = c_and
*  TABLES
*    sellist            = gt_seltab
*    rangetab           = s_place.

*Deactivate New Entries
gwa_exclude-function = 'NEWL'.  " Function Code for New Entries
APPEND gwa_exclude TO gt_exclude.

*Deactivate Copy
gwa_exclude-function = 'KOPE'.  " Function Code for Copy
APPEND gwa_exclude TO gt_exclude.

*Deactivate Delete
gwa_exclude-function = 'DELE'.  " Function Code for Delete
APPEND gwa_exclude TO gt_exclude.

* Call to the 'VIEW_MAINTENANCE_CALL' function module
CALL FUNCTION 'VIEW_MAINTENANCE_CALL'
  EXPORTING
    action         = c_u
    view_name      = c_view
  TABLES
    dba_sellist    = gt_seltab
    excl_cua_funct = gt_exclude.

 

Upload arquivo ABAP

DATA:
  BEGIN OF gt_file OCCURS 0,
    line TYPE c LENGTH 400,
  END OF gt_file.

PARAMETERS: p_file     TYPE rlgrap-filename OBLIGATORY DEFAULT 'C:\'.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
  PERFORM z_upload_file.

START-OF-SELECTION.
  PERFORM z_load_file.


FORM z_load_file.
  DATA: lv_arq   TYPE string,
        vl_extab TYPE slis_t_extab.

* Abre arquivo de entrada.
  CALL FUNCTION 'GUI_UPLOAD'
    EXPORTING
      filename = p_file
      filetype = 'ASC'
    TABLES
      data_tab = gt_arquivo.

  IF sy-subrc <> 0.
    MESSAGE 'Error upload file' TYPE 'I'.
    EXIT.
  ENDIF.
ENDFORM.                    " z_load_file

FORM z_upload_file.
  DATA: ret TYPE int4,
        act TYPE int4.
  DATA: t_file TYPE TABLE OF file_table,
        s_file TYPE file_table.

  CLEAR: t_file[].

  CALL METHOD cl_gui_frontend_services=>file_open_dialog
    EXPORTING
      window_title            = 'Abrir...'
      default_extension       = '*.txt|*.csv|*.*'
      file_filter             = ' TXT (*.txt)|*.txt| CSV(*.csv)|*.csv| Todas(*.*)|*.* '
      multiselection          = space
    CHANGING
      file_table              = t_file[]
      rc                      = ret
      user_action             = act
    EXCEPTIONS
      file_open_dialog_failed = 1
      cntl_error              = 2
      error_no_gui            = 3
      not_supported_by_gui    = 4
      OTHERS                  = 5.

  IF sy-subrc EQ 0.
    READ TABLE t_file INTO s_file INDEX 1.
    MOVE s_file TO p_file.
  ENDIF.
ENDFORM.                    "z_upload_file

 

Clear, free e refresh

DATA: itab TYPE TABLE OF mara WITH HEADER LINE,
      a(1) TYPE c.

BREAK-POINT.
MOVE: 1   TO itab-matnr,
      '1' TO itab-ernam,
      'X' TO a.
APPEND itab TO itab.

********************************************************************************
* -= CLEAR =-                                                                  *
* Se for tabela sem header line limpa o conteudo mas o espaço fica em memória  *
* Se for tabela com header line limpa o header mas o espaço fica em memória    *
********************************************************************************
CLEAR: itab, a.

MOVE: 2   TO itab-matnr,
      '2' TO itab-aenam.
APPEND itab TO itab.

********************************************************************************
* -= REFRESH =-                                                                *
* Limpa o conteudo mas o espaço fica em memória                                *
********************************************************************************
REFRESH: itab.

MOVE: 3   TO itab-matnr,
      '3' TO itab-vpsta.
APPEND itab TO itab.

********************************************************************************
* -= FREE =-                                                                   *
* Limpa o conteudo e libera o espaço em memória                                *
********************************************************************************
FREE: itab, a.

MOVE: 4   TO itab-matnr.
APPEND itab TO itab.

BREAK-POINT.

CLEAR: itab.
FREE:  itab.
MOVE: 1   TO itab-matnr,
      '1' TO itab-ernam.
APPEND itab TO itab.

CLEAR: itab[], a.

MOVE: 2   TO itab-matnr,
      '2' TO itab-aenam.
APPEND itab TO itab.

REFRESH: itab[].

MOVE: 3   TO itab-matnr,
      '3' TO itab-vpsta.
APPEND itab TO itab.

FREE: itab[].

MOVE: 4   TO itab-matnr.
APPEND itab TO itab.

BREAK-POINT.

 

Criar um range para usar em um SELECT

DATA: r_kschl          TYPE RANGE OF konv-kschl,
      w_kschl          LIKE LINE OF r_kschl.

CONSTANTS: c_sign_i     TYPE char01          VALUE 'I',
           c_option_eq  TYPE char02          VALUE 'EQ',
           c_bx10       TYPE kscha           VALUE 'BX10',
           c_bx11       TYPE kscha           VALUE 'BX11'.

    CLEAR: r_kschl[], r_kschl.
    MOVE: c_sign_i TO w_kschl-sign,
          c_option_eq TO w_kschl-option,
          c_bx10 TO w_kschl-low.
    APPEND w_kschl TO r_kschl.
    MOVE: c_sign_i TO w_kschl-sign,
          c_option_eq TO w_kschl-option,
          c_bx11 TO w_kschl-low.
    APPEND w_kschl TO r_kschl.

    SELECT * 
      FROM komv 
     WHERE kschl IN r_kschl.