您的位置:首页 > 其它

报表开发小结

2010-03-08 14:36 246 查看
生产订单的系统状态、用户状态获取

SELECT SINGLE objnr INTO l_objnr FROM aufk WHERE aufnr = s_aufnr.

IF l_objnr IS NOT INITIAL.

CALL FUNCTION 'STATUS_READ'               "读取系统状态
EXPORTING
client           = sy-mandt
objnr            = l_objnr
only_active      = 'X'
TABLES
status           = i_status
EXCEPTIONS
object_not_found = 1
OTHERS           = 2.

"SELECT SINGLE stat FROM jest
"                   INTO l_stat
"                  WHERE objnr = gi_qh-objnr
"                    AND stat LIKE 'E%'
"                    AND inact NE 'X'.

SELECT txt04 INTO TABLE l_txt
FROM tj02t
FOR ALL ENTRIES IN i_status
WHERE istat = i_status-stat
AND spras = '1'.

IF l_txt[] IS NOT INITIAL.
READ TABLE l_txt WITH KEY txt04 = 'REL'. "REL 状态
IF sy-subrc = '0'.
SELECT tj30~stonr INTO TABLE l_stonr   "读取用户状态
FROM tj30
INNER JOIN jsto
ON jsto~stsma = tj30~stsma
WHERE jsto~objnr = l_objnr
AND tj30~stonr = '30'.
IF sy-subrc <> '0'.
ENDIF.
ENDIF.
ENDIF.
  

 

系统状态是REL 用户状态是30的 符合条件

 

获取操作生产订单的用户名、操作时间:

SELECT SINGLE estat FROM tj30
INTO l_estat1
WHERE stsma = l_stsma
AND stonr = '26' .

SELECT SINGLE MAX( chgnr ) FROM jcds                      "获取审核人名字
INTO l_chgnr
WHERE objnr = gi_qh-objnr
AND stat = l_estat1
AND inact = '' .

IF l_chgnr IS NOT INITIAL .
SELECT SINGLE usnam udate FROM jcds
INTO (l_usnam, l_udate)
WHERE chgnr = l_chgnr
AND stat = l_estat1
AND objnr = gi_qh-objnr.

CONCATENATE l_udate+0(4) '年' l_udate+4(2) '月' l_udate+6(2) '日'
INTO gi_qh-shdate .
IF l_usnam IS NOT INITIAL .
SELECT SINGLE persnumber FROM usr21
INTO l_persnumber
WHERE bname = l_usnam .
IF l_persnumber IS NOT INITIAL .
SELECT SINGLE name_last name_first FROM adrp
INTO (l_name_last , l_name_first)
WHERE persnumber = l_persnumber.
CONCATENATE '负责人:' l_name_last l_name_first INTO gi_qh-shr .
ENDIF.

ENDIF.
ENDIF.


 

删除重复数据

SORT i_datasec BY werks.
DELETE ADJACENT DUPLICATES FROM i_datasec COMPARING werks.


 

 

读取长文本

DATA conc TYPE thead-tdname.
DATA it_txt TYPE TABLE OF tline WITH HEADER LINE.
DATA wa_stxh TYPE stxh.

CONCATENATE sy-mandt gi_qh-aufnr INTO conc.
SELECT SINGLE * FROM stxh CLIENT SPECIFIED
INTO wa_stxh
WHERE tdobject = 'AUFK'
AND tdname   = conc
AND tdid     = 'KOPF'
AND tdspras  =  sy-langu.

IF sy-subrc = 0.
CALL FUNCTION 'READ_TEXT'
EXPORTING
id       = 'KOPF'
language = sy-langu
name     = conc
object   = 'AUFK'
TABLES
lines    = it_txt.

LOOP AT it_txt.
DATA m TYPE i .
m = STRLEN( it_txt-tdline ).
IF  m = 0 OR it_txt-tdline = space.
CONTINUE.
ENDIF.
CONCATENATE gi_qh-ktext '' it_txt-tdline  INTO gi_qh-ktext.
ENDLOOP.
CLEAR it_txt[] .
ENDIF.


 

ALV FM 定义 选择方式

  wa_layout-box_fieldname      = 'SEL'.

 

ALV  FM 定义 变色

   wa_layout-info_fieldname     = 'COLOR'.

 

ALV FM 定义 光标离开事件

1:声明

CLASS lcl_event_receiver DEFINITION.
PUBLIC SECTION.
METHODS:
handle_data_changed
FOR EVENT data_changed OF cl_gui_alv_grid
IMPORTING er_data_changed.
ENDCLASS.                    "lcl_event_receiver DEFINITION

CLASS lcl_event_receiver IMPLEMENTATION.
METHOD handle_data_changed .
DATA: ls_good TYPE lvc_s_modi.
PERFORM handle_data_changed USING er_data_changed.
ENDMETHOD.                 "handle_data_changed
ENDCLASS.                "lcl_event_receiver IMPLEMENTATION

DATA: it_events       TYPE slis_t_event,
wa_events       LIKE LINE OF it_events.
DATA: lr_grid TYPE REF TO cl_gui_alv_grid.
DATA: g_event_receiver TYPE REF TO lcl_event_receiver.


2:

wa_events-name = 'CALLER_EXIT'.
wa_events-form = 'FM_BUTTON'.
APPEND wa_events TO it_events.


3:

*&---------------------------------------------------------------------*
*&      Form  fm_button
*&---------------------------------------------------------------------*
*       光标离开
*----------------------------------------------------------------------*
*      -->E_GRID     text
*----------------------------------------------------------------------*
FORM fm_button USING e_grid TYPE slis_data_caller_exit.

CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
IMPORTING
e_grid = lr_grid.

* 设置enter事件
CALL METHOD lr_grid->register_edit_event
EXPORTING
i_event_id = cl_gui_alv_grid=>mc_evt_enter
EXCEPTIONS
error      = 1
OTHERS     = 2.
* 设置data changed事件
CALL METHOD lr_grid->register_edit_event
EXPORTING
i_event_id = cl_gui_alv_grid=>mc_evt_modified
EXCEPTIONS
error      = 1
OTHERS     = 2.

CREATE OBJECT g_event_receiver.
SET HANDLER g_event_receiver->handle_data_changed FOR lr_grid.

ENDFORM.                    "FM_BUTTON

*&---------------------------------------------------------------------*
*&      Form  handle_data_changed
*&---------------------------------------------------------------------*
*       屏幕字段改变值后判断
*----------------------------------------------------------------------*
*      -->P_ER_DATA_CHANGED  text
*----------------------------------------------------------------------*
FORM handle_data_changed  USING p_er_data_changed TYPE REF TO cl_alv_changed_data_protocol.

FIELD-SYMBOLS: <fs_mod_rows> TYPE STANDARD TABLE,
<fs_cells> TYPE lvc_t_modi ,
<fs_cell_wa> TYPE lvc_s_modi ,
<fs>    LIKE LINE OF i_data.
DATA: i TYPE i.

IF NOT p_er_data_changed->mp_mod_rows IS INITIAL.
ASSIGN p_er_data_changed->mp_mod_rows->* TO <fs_mod_rows>.
ASSIGN p_er_data_changed->mt_mod_cells TO <fs_cells>.

LOOP AT <fs_mod_rows> ASSIGNING <fs>.
IF <fs>-sbdmng > <fs>-mbdmng OR <fs>-sbdmng < '0'.
READ TABLE <fs_cells> INDEX sy-tabix ASSIGNING <fs_cell_wa>.
i = <fs_cell_wa>-row_id.
LOOP AT i_data WHERE number = i.
i_data-color = 'C610'.
MODIFY i_data.
CLEAR i_data.
ENDLOOP.
ELSE.
READ TABLE <fs_cells> INDEX sy-tabix ASSIGNING <fs_cell_wa>.
i = <fs_cell_wa>-row_id.
LOOP AT i_data WHERE number = i.
i_data-color = ''.
i_data-result = ''.
MODIFY i_data.
CLEAR i_data.
ENDLOOP.
ENDIF.
ENDLOOP.
CALL METHOD lr_grid->refresh_table_display.
ENDIF.

ENDFORM.                    "handle_data_changed


 

 ALV FM 排序

 
*声明
DATA it_sort TYPE slis_t_sortinfo_alv WITH HEADER LINE .
*使用
CLEAR it_sort .
it_sort1-fieldname = 'LGOBE' .
it_sort1-spos = '4' .
it_sort1-up = 'X'.
it_sort1-subtot = 'X'.
APPEND it_sort .


 

ALV FM 表头HTML格式

CALL METHOD p_cl_dd->html_insert
EXPORTING
contents = m_buffer
CHANGING
position = m_p.

CALL METHOD p_cl_dd->add_text( text = text1 ).

CALL METHOD p_cl_dd->add_gap( width = 20 ).

CALL METHOD p_cl_dd->new_line.


 

获取登录系统的用户名称

SELECT SINGLE adrp~name_first adrp~name_last
INTO (name_first,name_last)
FROM adrp
INNER JOIN usr21
ON adrp~persnumber = usr21~persnumber
WHERE usr21~bname = sy-uname .
IF sy-subrc = 0 .
CONCATENATE name_last name_first INTO l_name .
ELSE .
l_name = sy-uname .
ENDIF.


 

打印:一式二联

data:  wa_printoption TYPE ssfcompop,
wa_ctrl        TYPE ssfctrlop,
wa_archive_index TYPE toa_dara,
wa_archive_index_tab TYPE tsfdara,
wa_archive_parameters TYPE arc_params,
fm_name TYPE rs38l_fnam.

wa_ctrl-preview = ''.
wa_ctrl-no_dialog = ''.
wa_ctrl-no_open = 'X'.
wa_ctrl-no_close = 'X'.

CALL FUNCTION 'SSF_OPEN'
EXPORTING
control_parameters = wa_ctrl.

"若是一个smart 只要调用2次 CALL FUNCTION fm_name 就可达到打印一式二联的效果, 代码省略

CALL FUNCTION 'SSF_CLOSE' .
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息