2010年8月6日

CL_GUI_ALV_GRID 取消右鍵功能

在網上看到有人問到這個技術怎麼做,一時興起就做起來了

首先宣告EVENT_RECEIVER
DATA: GRID TYPE REF TO CL_GUI_ALV_GRID,
EVENT_RECEIVER TYPE REF TO LCL_EVENT_RECEIVER.

再寫code,重點在event CONTEXT_MENU_REQUEST,將E_OBJECT清空
CLASS LCL_EVENT_RECEIVER DEFINITION.
PUBLIC SECTION.
METHODS:
HANDLE_CONTEXT_MENU_REQUEST
FOR EVENT CONTEXT_MENU_REQUEST OF CL_GUI_ALV_GRID
IMPORTING E_OBJECT.
ENDCLASS.
CLASS LCL_EVENT_RECEIVER IMPLEMENTATION.
METHOD HANDLE_CONTEXT_MENU_REQUEST.
CALL METHOD E_OBJECT->CLEAR.
ENDMETHOD.
ENDCLASS.

再來就是將event掛到grid去
CREATE OBJECT EVENT_RECEIVER.
SET HANDLER EVENT_RECEIVER->HANDLE_CONTEXT_MENU_REQUEST FOR GRID1.

Smartform下載PDF

DATA: I_OTF LIKE ITCOO OCCURS 100 WITH HEADER LINE,
I_PDF
LIKE TLINE OCCURS 100 WITH HEADER LINE.

DATA: OP_OPTION TYPE SSFCTRLOP,
JOB_OUTPUT
TYPE SSFCRESCL,
BIN_FILESIZE
TYPE I.

OP_OPTION-GETOTF = 'X'.
OP_OPTION-PREVIEW =
'X'.
OP_OPTION-NO_DIALOG =
'X'.

CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
......

CALL FUNCTION GV_FUNC_MOD_NAME
EXPORTING
CONTROL_PARAMETERS = OP_OPTION
......
IMPORTING
JOB_OUTPUT_INFO = JOB_OUTPUT
TABLES
......

CALL FUNCTION 'CONVERT_OTF'
EXPORTING
FORMAT = 'PDF'
IMPORTING
BIN_FILESIZE = BIN_FILESIZE
TABLES
OTF = JOB_OUTPUT-OTFDATA
LINES = I_PDF
EXCEPTIONS
ERR_MAX_LINEWIDTH =
1
ERR_FORMAT =
2
ERR_CONV_NOT_POSSIBLE =
3
ERR_BAD_OTF =
4
OTHERS = 5.

CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
BIN_FILESIZE = BIN_FILESIZE
FILENAME = LV_FILE
FILETYPE =
'BIN'
TABLES
DATA_TAB = I_PDF.

2010年8月4日

SPELL_AMOUNT繁體中文顯示錯誤修正

SAP標準的FM SPELL_AMOUNT可以讓數字轉換成文字
在轉換中文ZF時會發生錯誤,查了許多文件後找到可用SE38執行RF_SPELL
經過不斷試驗後,發現要進SM30改V_T015Z二筆紀錄:

語言 單位 數據 以文字表示數目
M T > 萬 ;
M M > 億 ;

測試:

結果正常:



2010年8月3日

ALV END_OF_LIST 簽核範例(5欄)

FORM END_OF_LIST.

DATA: LV_LINSZ LIKE SY-LINSZ,
LV_LEN
TYPE I,
LV_POS
TYPE I.

SKIP 1.
LV_LEN = SY-LINSZ /
5.

LV_POS = 1.
WRITE AT LV_POS TEXT-E01.

LV_POS = LV_LEN * 1
- ( CL_ABAP_LIST_UTILITIES=>DYNAMIC_OUTPUT_LENGTH( TEXT-E02 ) /
2 ).
WRITE AT LV_POS TEXT-E02.

LV_POS = LV_LEN * 2
- ( CL_ABAP_LIST_UTILITIES=>DYNAMIC_OUTPUT_LENGTH( TEXT-E03 ) /
2 ).
WRITE AT LV_POS TEXT-E03.

LV_POS = LV_LEN * 3
- ( CL_ABAP_LIST_UTILITIES=>DYNAMIC_OUTPUT_LENGTH( TEXT-E04 ) /
2 ).
WRITE AT LV_POS TEXT-E04.

LV_POS = LV_LEN * 4
- ( CL_ABAP_LIST_UTILITIES=>DYNAMIC_OUTPUT_LENGTH( TEXT-E05 ) /
2 ).
WRITE AT LV_POS TEXT-E05.

SKIP 4.

ENDFORM. "END_OF_LIST

Classification 特性值讀取及新增(修改)

DATA: objectkey LIKE bapi1003_key-object,
status
LIKE bapi1003_key-status,
classnum
LIKE bapi1003_key-classnum,
standardclass
LIKE bapi1003_key-stdclass,
allocvaluesnum
LIKE bapi1003_alloc_values_num OCCURS 0 WITH HEADER LINE,
allocvalueschar
LIKE bapi1003_alloc_values_char OCCURS 0 WITH HEADER LINE,
allocvaluescurr
LIKE bapi1003_alloc_values_curr OCCURS 0 WITH HEADER LINE,
return LIKE bapiret2 OCCURS 0 WITH HEADER LINE.

DATA: lv_char(5).

objectkey = p_matnr. “object table MARA時放物料號碼

CALL FUNCTION ‘BAPI_OBJCL_GETDETAIL’
EXPORTING
objectkey = objectkey
objecttable =
‘MARA’
classnum = classnum
classtype =
‘001′
language = ‘M’
IMPORTING
status = status
standardclass = standardclass
TABLES
allocvaluesnum = allocvaluesnum
allocvalueschar = allocvalueschar
allocvaluescurr = allocvaluescurr
return = return.

特性值新增(修改),特性值已存在時是修改,不存在是新增

CALL FUNCTION ‘BAPI_OBJCL_CHANGE’
EXPORTING
objectkey = ls_bapi1003_key-object
objecttable = ls_bapi1003_key-objecttable
classnum = ls_bapi1003_key-classnum
classtype = ls_bapi1003_key-classtype

TABLES
allocvaluesnumnew = allocvaluesnumnew
allocvaluescharnew = allocvalueschar
allocvaluescurrnew = allocvaluescurrnew
return = it_return