SUBMIT RM07DOCS【MB51】 获取返回清单,抓取标准报表数据

时间:2023-03-08 20:44:35
*&---------------------------------------------------------------------*
*& Report YT_SUBMIT
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT YT_SUBMIT. DATA: LV_VA TYPE SLIS_VARI. FIELD-SYMBOLS: <LT_PAY_DATA> TYPE ANY TABLE,
<LT_TEMP> TYPE ANY TABLE,
<LS_DATA>. DATA LR_PAY_DATA TYPE REF TO DATA. DATA: LT_MCHA TYPE TABLE OF MCHA,
LT_KNA1 TYPE TABLE OF KNA1,
LT_T001L TYPE TABLE OF T001L,
LT_CSKT TYPE TABLE OF CSKT,
LT_MM0004 TYPE TABLE OF ZTCOFCO_MM_0004,
LT_LFA1 TYPE TABLE OF LFA1. ****选择屏幕全部为空需要给物料赋值*防止弹出警告
IF S_MATNR[] IS INITIAL.
S_MATNR-SIGN = 'I'.
S_MATNR-OPTION = 'CP'.
S_MATNR-LOW = '*'.
APPEND S_MATNR.
ENDIF. ***检查是否有MB51的权限
AUTHORITY-CHECK OBJECT 'S_TCODE'
ID 'TCD' FIELD 'MB51'.
IF SY-SUBRC <> .
MESSAGE S006 WITH 'MB51' DISPLAY LIKE 'E'.
LEAVE LIST-PROCESSING.
ENDIF. SELECT SINGLE DCPFM INTO GV_DCPFM
FROM USR01
WHERE BNAME = SY-UNAME. PERFORM FRM_GET_VARIANT CHANGING LV_VA."获取程序变式 ***为后续获取ALV数据做设置
CL_SALV_BS_RUNTIME_INFO=>SET(
EXPORTING
DISPLAY = ABAP_FALSE
METADATA = ABAP_FALSE
DATA = ABAP_TRUE ). SUBMIT RM07DOCS " Tcode MB51
WITH MATNR IN S_MATNR "物料
WITH WERKS IN S_WERKS "工厂
WITH LGORT IN S_LGORT "库位
WITH CHARG IN S_CHARG "批次
WITH LIFNR IN S_LIFNR "供应商
WITH KUNNR IN S_KUNNR "客户
WITH BWART IN S_BWART "移动类型
WITH SOBKZ IN S_SOBKZ "特殊库存
WITH AUFNR IN S_AUFNR "生产订单
WITH KOSTL IN S_KOSTL "成本中心
WITH MAT_KDAU IN S_KDAU "销售订单
WITH MAT_KDPO IN S_KDPO "销售订单行项目
WITH RSNUM IN S_RSNUM "预留
WITH RSPOS IN S_RSPOS "预留行
WITH BUDAT IN S_BUDAT "过账日期
WITH USNAM IN S_USNAM "用户
WITH VGART IN S_VGART
WITH MBLNR IN S_MBLNR
WITH MJAHR IN S_MJAHR
WITH XBLNR IN S_XBLNR
WITH RHIER_L = ''
WITH RFLAT_L = ABAP_TRUE"扁平结构
WITH DATABASE = ABAP_TRUE "读取数据库
WITH ALV_DEF = LV_VA"变式
AND RETURN. TRY.
CL_SALV_BS_RUNTIME_INFO=>GET_DATA_REF(
IMPORTING R_DATA = LR_PAY_DATA ).
ASSIGN LR_PAY_DATA->* TO <LT_PAY_DATA>. CATCH CX_SALV_BS_SC_RUNTIME_INFO.
ENDTRY.
CL_SALV_BS_RUNTIME_INFO=>CLEAR_ALL( ).
IF <LT_PAY_DATA> IS ASSIGNED. LOOP AT <LT_PAY_DATA> ASSIGNING <LS_DATA>.
MOVE-CORRESPONDING <LS_DATA> TO GS_ALV.
APPEND GS_ALV TO GT_ALV.
ENDLOOP. *&---------------------------------------------------------------------*
*& Form FRM_GET_VARIANT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* <--P_LV_VA text
*----------------------------------------------------------------------*
FORM FRM_GET_VARIANT CHANGING CV_VA.
* prepare the areas for the different display variants
* repid = sy-repid. DATA: LS_DEF_VARIANTE LIKE DISVARIANT,
LS_VARIANTE_FLAT LIKE DISVARIANT,
LS_VARIANTE LIKE DISVARIANT. MOVE : 'RM07DOCS' TO LS_VARIANTE-REPORT,
'RM07DOCS' TO LS_VARIANTE_FLAT-REPORT,
'DETA' TO LS_VARIANTE_FLAT-HANDLE. * the display variant is depending on the seleted mode of
* the SAP-LIST-VIEWER : look for both variants * a) Get default variant for the hierarchic list
LS_DEF_VARIANTE = 'RM07DOCS'. CALL FUNCTION 'REUSE_ALV_VARIANT_DEFAULT_GET'
EXPORTING
I_SAVE = 'A'
CHANGING
CS_VARIANT = LS_DEF_VARIANTE
EXCEPTIONS
NOT_FOUND = . IF SY-SUBRC = .
MOVE LS_DEF_VARIANTE-VARIANT TO CV_VA.
ELSE. * b) Get default variant for the non-hierarchic list
LS_DEF_VARIANTE = LS_VARIANTE_FLAT. CALL FUNCTION 'REUSE_ALV_VARIANT_DEFAULT_GET'
EXPORTING
I_SAVE = 'A'
CHANGING
CS_VARIANT = LS_DEF_VARIANTE
EXCEPTIONS
NOT_FOUND = . IF SY-SUBRC = .
MOVE LS_DEF_VARIANTE-VARIANT TO CV_VA.
ENDIF.
ENDIF. ENDFORM.