*&---------------------------------------------------------------------*
*& Report ZMMF013
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT zmmf013. TABLES:ikpf,iseg,mara,makt. TYPES:BEGIN OF ty_show,
sel(),
iblnr TYPE iseg-iblnr,
gjahr TYPE iseg-gjahr,
zeili TYPE iseg-zeili,
matnr TYPE iseg-matnr,
maktx TYPE makt-maktx,
wrkst TYPE mara-wrkst,
werks TYPE iseg-werks,
lgort TYPE iseg-lgort,
lgobe TYPE t001l-lgobe,
charg TYPE iseg-charg,
bldat TYPE ikpf-bldat,
budat TYPE iseg-budat,
xloek TYPE iseg-xloek,
menge TYPE iseg-menge,
buchm TYPE iseg-buchm,
zcysl TYPE iseg-menge,
meins TYPE iseg-meins,
usnam TYPE ikpf-usnam,
END OF ty_show. DATA:gt_show TYPE TABLE OF ty_show,
gw_show LIKE LINE OF gt_show.
DATA:gt_fieldcat TYPE lvc_t_fcat.
DATA gs_fieldcat LIKE LINE OF gt_fieldcat.
DATA ls_layout TYPE lvc_s_layo. DATA:GT_T001w TYPE STANDARD TABLE OF T001w,
GS_T001w TYPE T001w.
"define
DEFINE append_fieldcat .
CLEAR GS_FIELDCAT.
GS_FIELDCAT-FIELDNAME = &.
GS_FIELDCAT-SCRTEXT_L = &.
GS_FIELDCAT-OUTPUTLEN = &.
GS_FIELDCAT-NO_ZERO = &.
IF & = 'MEINS'.
gs_fieldcat-CONVEXIT = 'ZCONV'.
ENDIF.
APPEND GS_FIELDCAT TO gt_fieldcat.
END-OF-DEFINITION. "宏定义
DEFINE rt_tab.
CLEAR:&.
&-LOW = &.
&-HIGH = &.
&-OPTION = &.
&-SIGN = &.
APPEND &.
END-OF-DEFINITION. SELECTION-SCREEN:BEGIN OF BLOCK blk01 WITH FRAME TITLE text-.
SELECT-OPTIONS:s_iblnr FOR ikpf-iblnr.
PARAMETERS:p_gjahr TYPE ikpf-gjahr DEFAULT sy-datum+().
SELECT-OPTIONS:s_werks FOR ikpf-werks DEFAULT ''.
SELECT-OPTIONS:s_lgort FOR ikpf-lgort.
SELECT-OPTIONS:s_bldat FOR ikpf-bldat.
SELECT-OPTIONS:s_budat FOR ikpf-budat.
SELECT-OPTIONS:s_usnam FOR ikpf-usnam.
SELECTION-SCREEN END OF BLOCK blk01. *************屏幕控制***********
AT SELECTION-SCREEN. "屏幕执行声明
IF sy-ucomm = 'ONLI'.
SELECT *
INTO CORRESPONDING FIELDS OF TABLE GT_T001w
FROM T001w WHERE werks IN S_WERKS AND SPRAS = .
LOOP AT GT_T001w INTO GS_T001w.
AUTHORITY-CHECK OBJECT 'M_MATE_WRK'
* ID 'ACTVT' FIELD '*'
ID 'WERKS' FIELD GS_T001w-WERKS.
IF SY-SUBRC <> .
MESSAGE '您没有分配工厂代码' && GS_T001w-WERKS && '权限,请检查' TYPE 'E'.
ENDIF.
ENDLOOP.
ENDIF. START-OF-SELECTION.
PERFORM prm_get_data. PERFORM prm_proce_data. PERFORM prm_set_field. PERFORM prm_show. *&---------------------------------------------------------------------*
*& Form PRM_GET_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM prm_get_data . SELECT ikpf~iblnr" TYPE iseg-iblnr,
ikpf~gjahr" TYPE iseg-gjahr,
iseg~zeili" TYPE iseg-zeili,
iseg~matnr" TYPE iseg-matnr,
makt~maktx" TYPE makt-maktx,
mara~wrkst" TYPE mara-wrkst,
ikpf~werks" TYPE iseg-werks,
ikpf~lgort" TYPE iseg-lgort,
t001l~lgobe" TYPE t001l-lgobe,
iseg~charg" TYPE iseg-charg,
ikpf~budat" TYPE iseg-budat,
ikpf~bldat" TYPE iseg-budat,
iseg~xloek" TYPE iseg-xloek,
iseg~menge" TYPE iseg-menge,
iseg~buchm" TYPE iseg-buchm,
"zcysl TYPE iseg-menge,
iseg~meins" TYPE iseg-meins,
ikpf~usnam" TYPE iseg-meins,
INTO CORRESPONDING FIELDS OF TABLE gt_show
FROM ikpf
INNER JOIN iseg
ON ikpf~iblnr = iseg~iblnr
AND ikpf~gjahr = iseg~gjahr
INNER JOIN t001l
ON t001l~werks = iseg~werks
AND t001l~lgort = iseg~lgort
INNER JOIN mara
ON iseg~matnr = mara~matnr
INNER JOIN makt
ON iseg~matnr = makt~matnr
AND makt~spras = ''
WHERE ikpf~iblnr IN s_iblnr
AND ikpf~gjahr = p_gjahr
AND ikpf~werks IN s_werks
AND ikpf~lgort IN s_lgort
AND ikpf~bldat IN s_bldat
AND ikpf~budat IN s_budat
AND ikpf~lstat = ''
AND ikpf~usnam IN s_usnam
AND iseg~xloek = ''. IF gt_show[] IS INITIAL.
MESSAGE '无选择条件的结果!' TYPE 'S' DISPLAY LIKE 'E'.
LEAVE LIST-PROCESSING.
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form PRM_PROCE_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM prm_proce_data . LOOP AT gt_show INTO gw_show.
gw_show-zcysl = gw_show-menge - gw_show-buchm.
MODIFY gt_show FROM gw_show.
ENDLOOP.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form PRM_SET_FIELD
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM prm_set_field .
ls_layout-cwidth_opt = 'X'. "优化列宽选项是否设置
ls_layout-zebra = 'X'.
ls_layout-box_fname = 'SEL'. append_fieldcat: 'IBLNR' '盘点凭证' 'X',
'GJAHR' '会计年度' '',
'ZEILI' '行号' '',
'MATNR' '物料号' '',
'MAKTX' '物料描述' '',
'WRKST' '补充描述' '',
'WERKS' '工厂' '',
'LGORT' '库位' '',
'LGOBE' '仓储地点的描述' '',
'CHARG' '批号' '',
'BUDAT' '过帐日期' '',
'BLDAT' '凭证日期' '',
'MENGE' '实盘数量' '',
'BUCHM' '帐面数量' '',
'ZCYSL' '盘亏/盘盈数量' '',
'MEINS' '单位' ''.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form PRM_SHOW
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM prm_show .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
EXPORTING
i_callback_program = sy-repid
i_callback_pf_status_set = 'PRM_SET_STATUS'
i_callback_user_command = 'PRM_USER_COMMAND'
is_layout_lvc = ls_layout
it_fieldcat_lvc = gt_fieldcat[]
i_default = 'X'
i_save = 'A'
TABLES
t_outtab = gt_show[]
EXCEPTIONS
program_error =
OTHERS = .
IF sy-subrc <> .
ENDIF.
ENDFORM.
FORM prm_set_status USING rt_extab TYPE slis_t_extab.
SET PF-STATUS 'ZSTAT'." EXCLUDING lt_code.
ENDFORM.
FORM prm_user_command USING p_ucomm LIKE sy-ucomm
p_selfield TYPE slis_selfield.
DATA:lt_select TYPE TABLE OF ty_show.
DATA:gt_head TYPE TABLE OF zmmf013h,
gw_head TYPE zmmf013h,
gt_item TYPE TABLE OF zmmf013i,
gw_item TYPE zmmf013i.
DATA:lv_flag TYPE c.
DATA:ls_control TYPE ssfctrlop.
DATA:lv_con TYPE ssfcrescl.
DATA:lv_sfname TYPE tdsfname VALUE 'ZMMF013'.
DATA:lv_fname TYPE rs38l_fnam. CHECK p_ucomm = 'PRNT'. APPEND LINES OF gt_show TO lt_select. DELETE lt_select[] WHERE sel = ''. "打印控制参数
ls_control-no_open = 'X'.
ls_control-no_close = 'X'. "获取打印函数
CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
EXPORTING
formname = lv_sfname
IMPORTING
fm_name = lv_fname
EXCEPTIONS
no_form =
no_function_module =
OTHERS = .
IF sy-subrc <> .
ENDIF. CALL FUNCTION 'SSF_OPEN'. SORT lt_select[] BY gjahr iblnr zeili ASCENDING. LOOP AT lt_select INTO gw_show.
AT NEW iblnr.
lv_flag = 'X'.
ENDAT. IF lv_flag = 'X'.
gw_head-iblnr = gw_show-iblnr.
gw_head-gjahr = gw_show-gjahr.
gw_head-werks = gw_show-werks.
gw_head-lgort = gw_show-lgort.
gw_head-lgobe = gw_show-lgobe.
gw_head-usnam = gw_show-usnam.
gw_head-bldat = gw_show-bldat.
gw_head-budat = gw_show-budat.
SELECT SINGLE name_text INTO gw_head-usnam
FROM adrp
INNER JOIN usr21
ON adrp~persnumber = usr21~persnumber
WHERE usr21~bname = gw_show-usnam.
* APPEND gw_head TO gt_head.
* CLEAR:gw_head,lv_flag.
ENDIF. gw_item-iblnr = gw_show-iblnr.
gw_item-gjahr = gw_show-gjahr.
gw_item-zeili = gw_show-zeili.
gw_item-matnr = gw_show-matnr.
gw_item-maktx = gw_show-maktx && gw_show-wrkst.
gw_item-menge = gw_show-menge.
gw_item-buchm = gw_show-buchm.
gw_item-zcysl = gw_show-zcysl.
gw_item-meins = gw_show-meins. SELECT SINGLE msehl INTO gw_item-msehl FROM t006a WHERE spras = '' AND msehi = gw_show-meins. APPEND gw_item TO gt_item.
CLEAR:gw_item. AT END OF iblnr.
lv_flag = 'E'.
ENDAT. IF lv_flag = 'E'.
CALL FUNCTION lv_fname
EXPORTING
control_parameters = ls_control
gw_head = gw_head
TABLES
gt_item = gt_item[]
EXCEPTIONS
formatting_error =
internal_error =
send_error =
user_canceled = . CLEAR:gt_item[],gw_head. ENDIF.
ENDLOOP. CALL FUNCTION 'SSF_CLOSE'. ENDFORM.