Enhancement bulmak

Raporlar SXV_GET_CLIF_BY_NAME  fonksiyonunu enhancement isimlerini bulmak için kullanmaktadır. Buraya konulacak break point ile istenilen raporda enhancement olup olmadığı kontrol edilebilir.

Split ranges

data : lv_count  type i,
lv_max    type i,
lv_min    type i,

ranges: rng_vbelv for vbfa-vbelv.
ranges: lrng_vbelv for vbfa-vbelv.  "local range.

clear: lv_count, lv_max.
lv_min = 0.
describe table rng_vbelv lines lv_count.
while lv_max lt lv_count.
lv_max = lv_min + 1000.
if lv_max gt lv_count.
lv_max = lv_count.
endif.
refresh lrng_vbelv.
loop at rng_vbelv from lv_min to lv_max.
append rng_vbelv to lrng_vbelv.
endloop.
lv_min = lv_max.
select b~vbeln a~vbelv b~wadat_ist b~kunnr b~ernam b~erzet b~erdat
appending table lt_itab
from vbfa as a
inner join likp as b
on a~vbeln eq b~vbeln
where a~vbelv in lrng_vbelv
order by b~vbeln.
endwhile.

Optimize Ranges


ranges: rng_vbelv for vbfa-vbelv.

*&---------------------------------------------------------------------*
*&      Form  OPTIMIZE_RANGE
*&---------------------------------------------------------------------*
form optimize_range.
data:    lv_lvbelv like vbfa-vbelv,   "önceki
lv_nvbelv like vbfa-vbelv,   "yenisi
lv_vbelv  like vbfa-vbelv,   "yenisi
lv_aralik(1),                "aralık
lv_ltabix like sy-tabix,
lv_ntabix like sy-tabix.

sort rng_vbelv.
clear: lv_lvbelv, lv_nvbelv, lv_aralik.
loop at rng_vbelv.
lv_ntabix = sy-tabix.
lv_nvbelv = rng_vbelv-low.
lv_vbelv = lv_nvbelv - 1.
*    condense lv_vbelv.
call function 'CONVERSION_EXIT_ALPHA_INPUT'
exporting
input  = lv_vbelv
importing
output = lv_vbelv.

if lv_lvbelv is not initial and lv_lvbelv eq lv_vbelv.
lv_ltabix = lv_ntabix - 1.
read table rng_vbelv index lv_ltabix.
rng_vbelv-option = 'BT'.
rng_vbelv-high   = lv_nvbelv.
modify rng_vbelv index lv_ltabix.
delete rng_vbelv index lv_ntabix.
lv_lvbelv = lv_nvbelv.
continue.
endif.
lv_lvbelv = lv_nvbelv.
endloop.
describe table rng_vbelv lines sy-index.
endform.                    " OPTIMIZE_RANGE

Sıralı tablo kullanımı

types: begin of typ_lfa1,
lifnr type lfa1-lifnr,
name1 type lfa1-name1,
end of typ_lfa1.

data: gt_lfa1 type sorted table of typ_lfa1 with unique key lifnr
with header line.

*&———————————————————————*
*&      Form  READ_LFA1
*&———————————————————————*
form read_lfa1  using    piv_parnr type ihpa-parnr
changing pcs_lfa1  type typ_lfa1.
clear pcs_lfa1.
read table gt_lfa1 into pcs_lfa1 with table key lifnr = piv_parnr.
if sy-subrc ne 0.
select single *
into corresponding fields of pcs_lfa1
from lfa1
where lifnr eq piv_parnr.
check sy-subrc eq 0.
insert pcs_lfa1 into table gt_lfa1.
endif.
endform.                                                    ” READ_LFA1

itab to file with separated by coma, semicolon, etc

data: struct type ref to cl_abap_structdescr,
ls_component type abap_compdescr.
lt_tab  type truxs_t_text_data with header line,
ls_tab(4096),
lv_tab       type string.
lv_text      type c length 255.
field-symbols: <lfs_file>  type any.

loop at lt_itab.
clear: lt_tab,
lv_tab.
loop at struct->components into ls_component.
read table gt_fieldcat into gs_fcat with key fieldname = ls_component-name.
check sy-subrc eq 0.
ASSIGN COMPONENT ls_component-name OF STRUCTURE lt_itab TO <lfs_file>.
check sy-subrc eq 0.
case gs_fcat-datatype.
when ‘DATS’.
write <lfs_file> to lv_text MM/DD/YYYY.
when ‘QUAN’ or ‘CURR’.
write <lfs_file> to lv_text.
call function ‘CLOI_PUT_SIGN_IN_FRONT’
changing
value = lv_text.
when ‘INT4’.
write <lfs_file> to lv_text DECIMALS 0.
call function ‘CLOI_PUT_SIGN_IN_FRONT’
changing
value = lv_text.
when others.
write <lfs_file> to lv_text.
endcase.
condense lv_text.
concatenate lt_tab lv_text into lt_tab
separated by lv_tab.
lv_tab = ‘;’.    “separator
endloop.
append lt_tab.
endloop.

Tarihin geçerliliğini kontrol etmek

data: LV_DATE  like SY-DATUM.
LV_DATE = ‘20130112’.
add 1 to LV_DATE.
if LV_DATE = ‘00010102’.
message E398(00) with ‘Hatalı’ ‘tarih’ ‘bilgisi’ ”.
endif.

Çoklanmış MIME’leri silmek

  1. RSIR_MIME_DUPLICATES_FIND raporu ile çoklanmış nesneler bulunur.
  2. SE80’de BSP uygulaması içinde yer alan MIME listeni gelinir. Çoklanmış nesnelerden birine sağ tıklayarak özelliklerine girilir.
  3. Nesnenin yaratılma tarihine bakılır, diğeri de kontrol edilerek silinecek olana karar verilir. Thecnical Information sayfasından Class ve Document bilgisi alınır.
  4. SDOK_LOIO_DELETE_WITH_PHIOS fonkiyonu SE37’den çalıştırılarak OBJECT_ID giriş parametresine Class ve Document bilgisi çalıştırılarak nesne silinir.

Deleting dublicate MIME objects: http://scn.sap.com/docs/DOC-34763

XSTRING yada RAW’ın dolu kısmının uzunluğunu bulmak

form xstrlen  using    piv_x   type x
changing pcv_len type i.
constants cs_null(1) type x value ’00’.

pcv_len = xstrlen( piv_x ) – 1.
while piv_x+pcv_len(1) eq cs_null.
subtract 1 from pcv_len.
endwhile.
add 1 to pcv_len.
endform.                    ” XSTRLEN