生产订单的系统状态、用户状态获取
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' .