martedì 28 giugno 2011

Editor Video in Popup

CALL FUNCTION 'CATSXT_SIMPLE_TEXT_EDITOR'
EXPORTING
im_title = 'Notes'
* IM_DISPLAY_MODE = ' '
* IM_START_COLUMN = 10
* IM_START_ROW = 10
CHANGING
ch_text = tb_ch_text.

IF sy-ucomm = 'CX_CONT'.
ELSEIF sy-ucomm = 'CX_CANC'.
ENDIF.

lunedì 20 giugno 2011

Forzare messaggi in badi ME2XN

INCLUDE mm_messages_mac.
mmpur_message_forced 'W' 'ME' '303' 'Check' '' '' ''.

mercoledì 15 giugno 2011

Log della Bapi in popup

CALL FUNCTION 'C14ALD_BAPIRET2_SHOW'
TABLES
i_bapiret2_tab = t_bapireturn2.


mercoledì 27 aprile 2011

Creare XLS con più spreadsheet

*&---------------------------------------------------------------------*
*& Report ZRIC
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT ZRIC.

include ole2incl.
data: application type ole2_object,
workbook type ole2_object,
sheet type ole2_object,
sheets type ole2_object,
cells type ole2_object.
constants: row_max type i value 256.
data index type i.

types: begin of t_data,
sheet_no type i,
col1(20) type c,
col2(20) type c,
end of t_data.
data: it_data type standard table of t_data,
wa_data type t_data.

data: g_sheet type i value 1,
g_row type i,
g_col type i.


***********************************************************************
*
*START-OF-SELECTION
start-of-selection.

perform populate_data.

create object application 'excel.application'.
set property of application 'visible' = 1.
call method of application 'Workbooks' = workbook.

call method of workbook 'Add' = workbook.
call method of workbook 'Sheets' = sheets.

loop at it_data into wa_data.

on change of wa_data-sheet_no.
if wa_data-sheet_no > 3.
call method of sheets 'Add' = sheet.
set property of sheets 'active' = 1.
set property of sheet 'Name' = wa_data-sheet_no.
endif.

call method of workbook 'worksheets' = sheet no flush
exporting #1 = g_sheet.
set property of sheet 'name' = wa_data-sheet_no.

g_sheet = g_sheet + 1.
g_row = 0.
endon.

g_row = g_row + 1. g_col = 1.
call method of sheet 'cells' = cells
exporting #1 = g_row
#2 = g_col.

set property of cells 'value' = wa_data-col1.
g_col = g_col + 1.

call method of sheet 'cells' = cells
exporting #1 = g_row
#2 = g_col.

set property of cells 'value' = wa_data-col2.
endloop.

* Save excel speadsheet to particular filename
call method of sheet 'SaveAs'
exporting #1 = 'c:\exceldoc1.xls' "filename
#2 = 1.
*ileFormat

call method of sheet 'Close'
exporting #1 = 'c:\exceldoc1.xls' "filename
#2 = 1.
if sy-subrc eq 0.
exit.
endif.

* Closes excel window, data is lost if not saved
set property of application 'visible' = 0.

*&---------------------------------------------------------------------*
*& Form populate_data
*&---------------------------------------------------------------------*
form populate_data .

data: l_sheet type n.


do 3 times.
l_sheet = l_sheet + 1.
move l_sheet to wa_data-sheet_no.

concatenate: l_sheet '-row1-col1' into wa_data-col1,
l_sheet '-row1-col2' into wa_data-col2.
append wa_data to it_data.

concatenate: l_sheet '-row2-col1' into wa_data-col1,
l_sheet '-row2-col2' into wa_data-col2.
append wa_data to it_data.

concatenate: l_sheet '-row3-col1' into wa_data-col1,
l_sheet '-row3-col2' into wa_data-col2.
append wa_data to it_data.

concatenate: l_sheet '-row4-col1' into wa_data-col1,
l_sheet '-row4-col2' into wa_data-col2.
append wa_data to it_data.

enddo.

endform. " populate_data

giovedì 7 aprile 2011

Help di ricerca custom in report

DATA: BEGIN OF help_item OCCURS 0,
pernr TYPE persno,
cognome TYPE pad_nachn,
nome TYPE pad_vorna,
END OF help_item.


**************************************************************
AT SELECTION-SCREEN ON VALUE-REQUEST FOR incarica-high.

clear: help_item, help_item[].

SELECT pernr cognome nome from ZHRPD_T_INCARIC
into corresponding fields of table help_item.

call function 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield = 'PERNR'
dynprofield = 'INCARICA-HIGH'
dynpprog = sy-cprog
dynpnr = sy-dynnr
value_org = 'S'
TABLES
value_tab = help_item.

giovedì 11 novembre 2010

Valorizzazione dinamica campi X di bapi

data: w_field1(50) TYPE c,
w_field2(50) TYPE c,
cnt TYPE i,
lunghezza TYPE i,
cnt_field TYPE i, " field corrente nel buffer start
it_curr TYPE i,
fieldname TYPE dd03l-fieldname,
cnt_chare TYPE i,

FIELD-SYMBOLS: TYPE ANY.
FIELD-SYMBOLS: TYPE ANY.

MOVE 'BAPIMEPOITEM' TO wa_tabname.
SELECT COUNT( * ) FROM dd03l INTO lunghezza WHERE tabname = wa_tabname .

LOOP AT po_items.

MOVE-CORRESPONDING po_items TO poitem.
APPEND poitem.

cnt_field = 0 .
cnt_chare = 0 .
it_curr = 1.

ASSIGN (w_field1) TO .
ASSIGN (w_field2) TO .

WHILE cnt_chare <= lunghezza .

SELECT SINGLE * FROM dd03l WHERE tabname = wa_tabname
AND position = it_curr.

fieldname = dd03l-fieldname.
cnt_chare = cnt_chare + 1.
it_curr = it_curr + 1 .
CLEAR w_field2.
CONCATENATE 'POITEM-' fieldname INTO w_field2 IN CHARACTER MODE.
CONDENSE w_field2 NO-GAPS.
ASSIGN (w_field2) TO .
IF sy-subrc = 0 AND IS NOT INITIAL.
CLEAR w_field1.
CONCATENATE 'POITEMX-' fieldname INTO w_field1 IN CHARACTER MODE.
CONDENSE w_field1 NO-GAPS.
IF cnt_chare = 1.
ASSIGN (w_field1) TO .
= po_items-po_item.
CONTINUE.
ENDIF.

ASSIGN (w_field1) TO .
= 'X'.
ENDIF.
ENDWHILE.

APPEND poitemx.
CLEAR poitemx.
ENDLOOP.

mercoledì 4 agosto 2010

Creare function di ricerca x help custom

FUNCTION ZZSEL_SAKNR.
*"----------------------------------------------------------------------
*"*"Interfaccia locale:
*" EXPORTING
*" REFERENCE(SAKNR) TYPE SAKNR
*" REFERENCE(TXT50) TYPE TXT50
*" TABLES
*" SHLP_TAB TYPE SHLP_DESCT
*" RECORD_TAB STRUCTURE SEAHLPRES
*" CHANGING
*" REFERENCE(SHLP) TYPE SHLP_DESCR
*" REFERENCE(CALLCONTROL) LIKE DDSHF4CTRL STRUCTURE DDSHF4CTRL
*"----------------------------------------------------------------------

data wa_opt TYPE LINE OF DDSHSELOPS.


IF CALLCONTROL-STEP = 'SELECT'.
IF SHLP-SELOPT[] is INITIAL.
clear wa_opt.
wa_opt-SHLPNAME = 'ZSAKNR'.
wa_opt-SHLPFIELD = 'SAKNR'.
wa_opt-SIGN = 'I'.
wa_opt-OPTION = 'BT'.
wa_opt-LOW = '2205150001'.
wa_opt-HIGH = '2210100003'.

append wa_opt to SHLP-SELOPT .

EXIT. "Don't process STEP DISP additionally in this call.
ENDIF.
ENDIF.

ENDFUNCTION.

martedì 30 marzo 2010

Hotspot su alvgrid

Per creare l'evento hotspot su un campo di una alvgrid è necessario implementare la form user_command nel seguente modo:


FORM user_command USING r_ucomm LIKE sy-ucomm
rs_selfield TYPE slis_selfield.


CASE r_ucomm.
WHEN '&IC1'.

IF rs_selfield-fieldname = 'ZDOC_CONT'.
*
IF rs_selfield-value IS NOT INITIAL.
*
IF rs_selfield-value IS NOT INITIAL.
READ TABLE tb_ricavi INDEX rs_selfield-tabindex
INTO wa_ricavi.
IF sy-subrc = 0.
SET PARAMETER ID 'BLN' FIELD rs_selfield-value.
SET PARAMETER ID 'BUK' FIELD wa_ricavi-bukrs.
SET PARAMETER ID 'GJR' FIELD wa_ricavi-gjahr.
CALL TRANSACTION 'FB03' AND SKIP FIRST SCREEN .
ENDIF.
ENDIF.
*
ENDIF.
ENDIF.
ENDCASE.
ENDFORM. " USER_COMMAND

giovedì 25 marzo 2010

Bloccare la modifica di un programma

Volete che nessuno modifichi il vostro programma?
Beh basta selezionare il flag blocco editor nelle proprietà del programma:


Quando qualcuno cercherà di modificare il programma il sistema restituirà il seguente messaggio:



Leggere messaggi di ritorno call transaction

Per poter leggere il testo dei messaggi di ritorno di una call transaction è possibile utilizzare la seguente funzione:

DATA: va_msgid LIKE sy-msgid,
va_msgno LIKE sy-msgno,
va_msgty LIKE sy-msgty,
messaggio LIKE message.

LOOP AT tb_messtab.
CLEAR:va_msgid,va_msgno,va_msgty.
va_msgid = tb_messtab-msgid.
va_msgno = tb_messtab-msgnr.
va_msgty = tb_messtab-msgtyp.
CALL FUNCTION 'WRITE_MESSAGE_NEW'
EXPORTING
msgid = va_msgid
msgno = va_msgno
msgty = va_msgty
msgv1 = tb_messtab-msgv1
msgv2 = tb_messtab-msgv2
msgv3 = tb_messtab-msgv3
msgv4 = tb_messtab-msgv4
msgv5 = ' '
IMPORTING
* ERROR =
messg = messaggio.
CLEAR wa_out.
MOVE messaggio-msgtx TO wa_out-line.
APPEND wa_out TO tb_out.
ENDLOOP.

Il risultato può essere il seguente: