WE05报表

5 阅读2分钟
*&---------------------------------------------------------------------*

*& 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.