*&---------------------------------------------------------------------*
*& Report zmmr071
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT zmmr071.
TABLES:edidc.
*表:TEDS1,EDIDC,
* 函数 ISU_IDOC_GET_STATUS_ICON
*IDOC_READ_COMPLETELY
TYPES:BEGIN OF ty_output,
matnr TYPE mara-matnr,
docnum TYPE edi_docnum,
status TYPE edi_status,
statusicon TYPE e_dexiconidocstatus,
statustext TYPE edi_text60,
credat TYPE edi_ccrdat,
cretim TYPE edi_ccrtim,
rcvprn TYPE edi_rcvprn,
END OF ty_output.
DATA:
gt_data TYPE TABLE OF ty_output,
gt_fieldcat TYPE lvc_t_fcat,
gs_fieldcat TYPE lvc_s_fcat,
gs_layout TYPE lvc_s_layo.
PARAMETERS:p_matnr TYPE matnr.
SELECT-OPTIONS:s_dat FOR edidc-credat OBLIGATORY.
START-OF-SELECTION.
PERFORM frm_get_data.
PERFORM frm_display_alv.
FORM frm_get_data.
DATA lt_edidd TYPE STANDARD TABLE OF edidd.
DATA lv_statusicon TYPE e_dexiconidocstatus.
DATA lv_statustext TYPE edi_text60.
DATA lv_matnr TYPE char18.
SELECT docnum,
status,
rcvprn,
credat,
cretim
FROM edidc
WHERE credat IN @s_dat
AND mestyp = 'MATMAS'
AND idoctp = 'MATMAS07'
AND rcvprn IN ( 'DS4CLNT310','DS4CLNT320','DS4CLNT810' ,'DS4CLNT810' )
INTO TABLE @DATA(lt_edidc).
LOOP AT lt_edidc ASSIGNING FIELD-SYMBOL(<ls_edidc>).
CLEAR lt_edidd.
CALL FUNCTION 'IDOC_READ_COMPLETELY'
EXPORTING
document_number = <ls_edidc>-docnum
TABLES
int_edidd = lt_edidd
EXCEPTIONS
document_not_exist = 1
document_number_invalid = 2
OTHERS = 3.
IF lt_edidd IS NOT INITIAL.
LOOP AT lt_edidd ASSIGNING FIELD-SYMBOL(<ls_edidd>) WHERE segnam = 'E1MARAM'.
CLEAR:lv_statusicon,lv_statustext,lv_matnr.
CALL FUNCTION 'ISU_IDOC_GET_STATUS_ICON'
EXPORTING
x_docnum = <ls_edidc>-docnum
IMPORTING
y_statusicon = lv_statusicon
y_statustext = lv_statustext.
IF strlen( <ls_edidd>-sdata ) >= 21.
lv_matnr = |{ <ls_edidd>-sdata+3(18) ALPHA = IN } |.
IF p_matnr IS NOT INITIAL.
IF lv_matnr = p_matnr.
APPEND VALUE #( matnr = lv_matnr
docnum = <ls_edidc>-docnum
rcvprn = <ls_edidc>-rcvprn
status = <ls_edidc>-status
statusicon = lv_statusicon
statustext = lv_statustext
credat = <ls_edidc>-credat
cretim = <ls_edidc>-cretim
) TO gt_data.
ENDIF.
ELSE.
APPEND VALUE #( matnr = lv_matnr
docnum = <ls_edidc>-docnum
rcvprn = <ls_edidc>-rcvprn
status = <ls_edidc>-status
statusicon = lv_statusicon
statustext = lv_statustext
credat = <ls_edidc>-credat
cretim = <ls_edidc>-cretim
) TO gt_data.
ENDIF.
ENDIF.
ENDLOOP.
ENDIF.
ENDLOOP.
ENDFORM.
FORM user_command_alv USING r_ucomm LIKE sy-ucomm
rs_selfield TYPE slis_selfield.
DATA lt_dat TYPE RANGE OF datum.
DATA lt_docnum TYPE RANGE OF edi_docnum.
CASE r_ucomm.
WHEN '&IC1'.
* CASE rs_selfield-fieldname.
* WHEN 'DOCNUM'.
READ TABLE gt_data INDEX rs_selfield-tabindex INTO DATA(ls_data).
IF sy-subrc = 0.
APPEND VALUE #( sign = 'I' option = 'EQ' low = ls_data-credat ) TO lt_dat.
APPEND VALUE #( sign = 'I' option = 'EQ' low = ls_data-docnum ) TO lt_docnum.
SUBMIT rseidoc2 WITH credat IN lt_dat
WITH docnum IN lt_docnum AND RETURN.
ENDIF.
* SET PARAMETER ID 'MBN' FIELD RS_SELFIELD-VALUE.
* CALL TRANSACTION 'MB03' AND SKIP FIRST SCREEN.
* ENDCASE.
ENDCASE.
ENDFORM. "USER_COMMAND_ALV
FORM build_fieldcat USING p_fieldname TYPE fieldname
p_scrtext_l TYPE scrtext_l.
gs_fieldcat-fieldname = p_fieldname.
gs_fieldcat-scrtext_l = p_scrtext_l.
gs_fieldcat-colddictxt = 'L'.
APPEND gs_fieldcat TO gt_fieldcat.
CLEAR: gs_fieldcat.
ENDFORM.
FORM frm_display_alv.
PERFORM build_fieldcat USING 'MATNR' '物料编码'.
PERFORM build_fieldcat USING 'DOCNUM' 'IDOC编号'.
PERFORM build_fieldcat USING 'RCVPRN' '接收系统'.
PERFORM build_fieldcat USING 'STATUS' '状态编码'.
PERFORM build_fieldcat USING 'STATUSICON' '状态标识'.
PERFORM build_fieldcat USING 'STATUSTEXT' '状态描述'.
PERFORM build_fieldcat USING 'CREDAT' '发送日期'.
PERFORM build_fieldcat USING 'CRETIM' '发送时间'.
gs_layout-cwidth_opt = 'X'.
gs_layout-zebra = 'X'.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
EXPORTING
i_callback_program = sy-repid
i_callback_user_command = 'USER_COMMAND_ALV'
it_fieldcat_lvc = gt_fieldcat
is_layout_lvc = gs_layout
i_default = 'X'
i_save = 'A'
TABLES
t_outtab = gt_data
EXCEPTIONS
OTHERS = 1.
ENDFORM.