HR-部门内部调动报表


*&---------------------------------------------------------------------*
*& Report  ZHRPA038
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT ZHRPA038.
TABLES:PERNR.
INFOTYPES:0000,0001,0002.
INFOTYPES:0008.

TYPES:BEGIN OF TY_RESULT,
        CHANGE_TYPE TYPE C LENGTH 30"异动类型
        DTEXT       TYPE UTEXT,       "变动范围  Add by xpf 20160506
        SITE_YN     TYPE C LENGTH 6,    "SITE是否变更  Add by cx 20160106
        GO_OR_NOT   TYPE C LENGTH 6,  "是否需要改签合同
        BEGDA       TYPE PA0001-BEGDA"生效日期
        SAP_NUMBER  TYPE PA0001-PERNR"SAP编号
        NUMBER      TYPE C LENGTH 20"工号    “根据SAP编号从IT0002取出调动后原工号
        ENAME       TYPE PA0001-ENAME"姓名
        FIRST_NAME  TYPE C LENGTH 10"姓拼音
        LAST_NAME   TYPE C LENGTH 30"名拼音
        NEW_SITE    TYPE C LENGTH 40,    "现SITE  Add by cx 20160106 (根据调动后人事范围对应调动后SITE)
        NEW_HETONG  TYPE C LENGTH 40"现劳动合同
        NEW_OBJID_1 TYPE C LENGTH 40"现一级部门
        NEW_OBJID_2 TYPE C LENGTH 40"现二级部门
        NEW_OBJID_3 TYPE C LENGTH 40"现三级部门
        NEW_OBJID_4 TYPE C LENGTH 40"现四级部门
        NEW_OBJID_5 TYPE C LENGTH 40"现部门编码
        NEW_PLANS   TYPE C LENGTH 80"现职位
        ZZ_BZ       TYPE C LENGTH 40,    "备注    Add by cx 20160106 (P0008-ZZ_BZ)
        ZZ_ORI_NO   TYPE C LENGTH 40,    "原工号  Add by cx 20160106 (P0002-ZZ_ORI_NO)
        OLD_SITE    TYPE C LENGTH 40,    "原SITE  Add by cx 20160106 (Site划分配置表:Z02_T_DEPTSITE)[???]
        OLD_HETONG  TYPE C LENGTH 40"原劳动合同公司
        OLD_OBJID_1 TYPE C LENGTH 40"原一级部门
        OLD_OBJID_2 TYPE C LENGTH 40"原二级部门
        OLD_OBJID_3 TYPE C LENGTH 40"原三级部门
        OLD_OBJID_4 TYPE C LENGTH 40"原四级部门
        OLD_PLANS   TYPE C LENGTH 80"原职位
      END OF TY_RESULT.
DATA:G_O1 TYPE HRP1000-SHORT,
     G_O2 TYPE HRP1000-SHORT,
     G_O3 TYPE HRP1000-SHORT,
     G_O4 TYPE HRP1000-SHORT.
DATA:GT_RESULT TYPE STANDARD TABLE OF TY_RESULT,
     GW_RESULT TYPE TY_RESULT.
DATA:GT_T530T TYPE STANDARD TABLE OF T530T,
     GW_T530T TYPE T530T,
     GT_T588T TYPE STANDARD TABLE OF T588T,   "Add by xpf 20160506
     GW_T588T TYPE T588T,                     "Add by xpf 20160506
     GT_T500P TYPE STANDARD TABLE OF T500P,
     GW_T500P TYPE T500P.
DATA:G_DAT LIKE SY-DATUM.
DATA:GW_P0001 TYPE P0001.
DATA:GDF_PATH     TYPE STRING"add by shikai.liao
     GDF_FILENAME TYPE STRING,
     GDF_FULLPATH TYPE STRING.

INITIALIZATION.

AT SELECTION-SCREEN OUTPUT.

START-OF-SELECTION.
  SELECT *
    FROM T500P
  INTO CORRESPONDING FIELDS OF TABLE GT_T500P.
  IF SY-LANGU '1'.
    SELECT *
      FROM T530T
      INTO CORRESPONDING FIELDS OF TABLE GT_T530T
      WHERE ( MASSN 'ZC' OR MASSN 'ZS' OR MASSN 'ZT' )  "Add by xpf 20160318增加跨薪资范围调动
        AND SPRSL = SY-LANGU.
*&->add by cx 20170106 增加“ZA员工雇用”且操作原因为“A1 TCL内调”的员工
    SELECT *
      FROM T530T
 APPENDING CORRESPONDING FIELDS OF TABLE GT_T530T
     WHERE MASSN 'ZA'
       AND MASSG 'A1'
       AND SPRSL = SY-LANGU.
*&->end add.
  ELSE.
    SELECT *
    FROM T530T
    INTO CORRESPONDING FIELDS OF TABLE GT_T530T
    WHERE ( MASSN 'ZC' OR MASSN 'ZS' OR MASSN 'ZT' )  "Add by xpf 20160318增加跨薪资范围调动
    AND SPRSL 'E'.
*&->add by cx 20170106 增加“ZA员工雇用”且操作原因为“A1 TCL内调”的员工
    SELECT *
      FROM T530T
 APPENDING CORRESPONDING FIELDS OF TABLE GT_T530T
     WHERE MASSN 'ZA'
       AND MASSG 'A1'
       AND SPRSL 'E'.
*&->end add.

*&+get SITE.

  ENDIF.
*-------------Add by xpf 20160506取变动范围文本----------------*Begin
  CLEAR GT_T588T.
  IF SY-LANGU '1'.
    SELECT *
      FROM T588T
      INTO CORRESPONDING FIELDS OF TABLE GT_T588T
      WHERE SPRSL = SY-LANGU
        AND MNTYP 'G'
        AND ( MENUE 'ZC' OR MENUE 'ZS' OR MENUE 'ZT'   OR MENUE 'ZA')."add by cx on 20160107 add员工雇用操作取值
  ELSE.
    SELECT *
    FROM T588T
    INTO CORRESPONDING FIELDS OF TABLE GT_T588T
    WHERE SPRSL 'E'
        AND MNTYP 'G'
        AND ( MENUE 'ZC' OR MENUE 'ZS' OR MENUE 'ZT'   OR MENUE 'ZA')."add by cx on 20160107 add员工雇用操作取值
  ENDIF.
*-------------Add by xpf 20160506取变动范围文本----------------*End
  GET PERNR.
  SORT P0000[] BY BEGDA.
*--------Modified by xpf 20160318---------*Begin
  DELETE  P0000[] WHERE MASSN NE 'ZC' AND MASSN NE 'ZS' AND MASSN NE 'ZT' AND  MASSN NE 'ZA'."AND MASSG NE 'A1' ).
*&->add
  DELETE  P0000[] WHERE MASSN 'ZA' AND MASSG NE 'A1' .

  DELETE  P0000[] WHERE BEGDA < PN-BEGDA OR BEGDA > PN-ENDDA .
*  DELETE  p0000[] WHERE massn <> 'ZC' OR ( begda < pn-begda OR begda > pn-endda ).
*--------Modified by xpf 20160318---------*End
  LOOP AT P0000.
    READ TABLE GT_T530T INTO GW_T530T WITH KEY MASSG = P0000-MASSG.
    IF SY-SUBRC EQ 0.
      GW_RESULT-CHANGE_TYPE = GW_T530T-MGTXT.
    ENDIF.
*-------------Add by xpf 20160506取变动范围文本----------------*Begin
    CLEAR GW_T588T.
    READ TABLE GT_T588T INTO GW_T588T WITH KEY MENUE = P0000-MASSN.
    IF SY-SUBRC EQ 0.
      GW_RESULT-DTEXT = GW_T588T-DTEXT.
    ENDIF.
*-------------Add by xpf 20160506取变动范围文本----------------*End
    GW_RESULT-BEGDA = P0000-BEGDA.
    G_DAT = P0000-BEGDA 1.
    GW_RESULT-GO_OR_NOT 'N'.
*&->Add cx xpf 20170106 SITE是否变更
    GW_RESULT-SITE_YN 'N'.
*&->end add

    READ TABLE P0001 INTO GW_P0001 WITH KEY ENDDA = G_DAT.     
IF SY-SUBRC EQ 0."之前的组织信息       
CLEAR:G_O4,G_O3,G_O2,G_O1.       
CALL FUNCTION 'ZHR_GET_STRUC'         
EXPORTING           ORGEH  
= GW_P0001-ORGEH           BEGDA  
= GW_P0001-ENDDA           ENDDA  
= GW_P0001-ENDDA         
IMPORTING           SHORT1 
= G_O1           SHORT2 
= G_O2           SHORT3 
= G_O3           SHORT4 
= G_O4.       GW_RESULT
-OLD_OBJID_1 = G_O1.       GW_RESULT
-OLD_OBJID_2 = G_O2.       GW_RESULT
-OLD_OBJID_3 = G_O3.       GW_RESULT
-OLD_OBJID_4 = G_O4.       
"取得长文本(职位)       
SELECT SINGLE STEXT         
INTO GW_RESULT-OLD_PLANS         
FROM HRP1000         
WHERE PLVAR '01'         
AND OTYPE 'S'         
AND OBJID = GW_P0001-PLANS         
AND BEGDA <= G_DAT         
AND ENDDA >= G_DAT       
AND LANGU '1'.
*&->add by cx on 20170106 +取得原SITE
*PERSA  人事范围
*BTRTL  人事子范围       
SELECT SINGLE SITE         
INTO GW_RESULT-OLD_SITE         
FROM Z02_T_DEPTSITE        
WHERE PERSA = GW_P0001-WERKS          
AND BTRTL = GW_P0001-BTRTL          
AND BEGDA <= G_DAT          
AND ENDDA >= G_DAT.       

READ TABLE GT_T500P INTO GW_T500P WITH KEY PERSA = GW_P0001-WERKS.       
IF SY-SUBRC EQ 0.         GW_RESULT
-OLD_HETONG = GW_T500P-NAME1.       
ENDIF.       
READ TABLE P0001 WITH KEY BEGDA = P0000-BEGDA."目前的信息       
IF SY-SUBRC EQ 0.         

CLEAR:G_O4,G_O3,G_O2,G_O1.         
CALL FUNCTION 'ZHR_GET_STRUC'           
EXPORTING             ORGEH  
= P0001-ORGEH             BEGDA  
= P0001-BEGDA             ENDDA  
= P0001-BEGDA           
IMPORTING             SHORT1 
= G_O1             SHORT2 
= G_O2             SHORT3 
= G_O3             SHORT4 
= G_O4.         GW_RESULT
-NEW_OBJID_1 = G_O1.         GW_RESULT
-NEW_OBJID_2 = G_O2.         GW_RESULT
-NEW_OBJID_3 = G_O3.         GW_RESULT
-NEW_OBJID_4 = G_O4.         GW_RESULT
-NEW_OBJID_5 = P0001-ORGEH.
*& 现职位         
SELECT SINGLE STEXT      
INTO GW_RESULT-NEW_PLANS      
FROM HRP1000      
WHERE PLVAR '01'      
AND OTYPE 'S'      
AND OBJID = P0001-PLANS      
AND BEGDA <= P0001-BEGDA      
AND ENDDA >= P0001-BEGDA    
AND LANGU '1'.

*&add by cx on 20160106 +现SITE         
SELECT SINGLE SITE           
INTO GW_RESULT-NEW_SITE           
FROM Z02_T_DEPTSITE          
WHERE PERSA = P0001-WERKS            
AND BTRTL = P0001-BTRTL            
AND BEGDA <= P0001-BEGDA            
AND ENDDA >= P0001-BEGDA.
* if GW_RESULT-SITE_NOW NE SPAEC.         
IF GW_RESULT-NEW_SITE NE GW_RESULT-OLD_SITE.           GW_RESULT
-SITE_YN 'Y'.         
ELSE.           GW_RESULT
-SITE_YN 'N'.         
ENDIF.         

READ TABLE GT_T500P INTO GW_T500P WITH KEY PERSA = P0001-WERKS.         
IF SY-SUBRC EQ 0.           GW_RESULT
-NEW_HETONG = GW_T500P-NAME1.           
IF GW_P0001-WERKS <> P0001-WERKS.             GW_RESULT
-GO_OR_NOT 'Y'.           
ENDIF.         
ENDIF.       
ENDIF.     

ENDIF.     

LOOP AT P0002 WHERE BEGDA <= P0000-BEGDA AND ENDDA >= P0000-BEGDA.       GW_RESULT
-SAP_NUMBER = P0000-PERNR.       GW_RESULT
-ENAME = P0002-NACHN.       GW_RESULT
-FIRST_NAME = P0002-INITS.       GW_RESULT
-LAST_NAME = P0002-VORNA.       GW_RESULT
-NUMBER = P0002-ZZ_ORI_NO.       
EXIT.     
ENDLOOP.

*&->add by cx on 20170106 原工号
*  GW_RESULT-ZZ_ORI_NO = P0002-ZZ_ORI_NO.     
LOOP AT P0002 WHERE ENDDA <= P0000-BEGDA.       GW_RESULT
-ZZ_ORI_NO = P0002-ZZ_ORI_NO.       
EXIT.     
ENDLOOP.
* SELECT SINGLE
*&->end add.

*&->add by cx on 20170106 find 备注     
LOOP AT P0008 WHERE BEGDA <= P0000-BEGDA AND ENDDA >= P0000-BEGDA.       GW_RESULT
-ZZ_BZ = P0008-ZZ_BZ.       
EXIT.     
ENDLOOP.     

APPEND GW_RESULT TO GT_RESULT.     
CLEAR GW_RESULT.   

ENDLOOP.


END-OF-SELECTION.   
PERFORM FRM_EXPORT_DATA.
FORM FRM_EXPORT_DATA .   
DATA:LDF_PATH TYPE LOCALFILE.   
.   
"弹出路径框   
CLEAR: GDF_PATH,          GDF_FILENAME
,          GDF_FULLPATH
.   
PERFORM FRM_GET_PATH_038 CHANGING GDF_PATH GDF_FILENAME GDF_FULLPATH .   
IF GDF_FULLPATH IS INITIAL .     
MESSAGE '请选择要保存的文件夹和输入文件名' TYPE 'I'.   
ELSE.     
CLEAR LDF_PATH.     
MOVE GDF_FULLPATH TO LDF_PATH.     

PERFORM FRM_OUTPUT_EXCEL_38 TABLES GT_RESULT USING 'ZHRPA038' LDF_PATH .
*    PERFORM FRM_OUTPUT_EXCEL_38 TABLES GT_RESULT USING 'zhrpa038_C1' LDF_PATH .   
ENDIF.
ENDFORM.                    " FRM_EXPORT_DATA

FORM FRM_GET_PATH_038 CHANGING:FU_PATH                            FU_FILENAME                            FU_FULLPATH  

.   


CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG     
EXPORTING       WINDOW_TITLE              
'Select Folder and Enter Filename to Save File'       DEFAULT_EXTENSION         
'xls' "'xlsx'
*     DEFAULT_FILE_NAME         =
*     WITH_ENCODING             =       FILE_FILTER               
'*.xls' "'*.xlsx'
*     INITIAL_DIRECTORY         =
*     PROMPT_ON_OVERWRITE       = 'X'     
CHANGING       FILENAME                  
= FU_FILENAME       PATH                      
= FU_PATH       FULLPATH                  
= FU_FULLPATH
*     USER_ACTION               =
*     FILE_ENCODING             =     
EXCEPTIONS       CNTL_ERROR                
1       ERROR_NO_GUI              
2       NOT_SUPPORTED_BY_GUI      
3       INVALID_DEFAULT_FILE_NAME 
4       
OTHERS                    5.   
IF SY-SUBRC <> 0.
*   Implement suitable error handling here   
ENDIF.

*   CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG
*     EXPORTING
*       WINDOW_TITLE         = 'Select Folder to Save File'
*    CHANGING
*       SELECTED_FOLDER      = gdf_path
*     EXCEPTIONS
*       CNTL_ERROR           = 1
*       ERROR_NO_GUI         = 2
*       NOT_SUPPORTED_BY_GUI = 3
*       OTHERS               = 4.
*   IF SY-SUBRC <> 0.
*
*   MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*              WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
*  ENDIF.


ENDFORM.                    " FRM_GET_PATH

FORM FRM_OUTPUT_EXCEL_38 TABLES PT_EXCEL TYPE STANDARD TABLE                                     
USING PV_TEMPLATE TYPE BDS_PROPVA                                           PV_FILE     
TYPE LOCALFILE.   

DATA:L_IREF_TEMPLATE    TYPE REF TO CL_BDS_DOCUMENT_SET,        L_OREF_CONTAINER   
TYPE REF TO CL_GUI_CUSTOM_CONTAINER,        L_IREF_CONTROL     
TYPE REF TO I_OI_CONTAINER_CONTROL,        L_IREF_ERROR       
TYPE REF TO I_OI_ERROR,        L_IREF_DOCUMENT    
TYPE REF TO I_OI_DOCUMENT_PROXY,        L_IREF_SPREADSHEET 
TYPE REF TO I_OI_SPREADSHEET,        L_RETCODE          
TYPE SOI_RET_STRING.   

DATA: LT_SIGNATURE TYPE SBDST_SIGNATURE,         LW_SIGNATURE 
TYPE BAPISIGNAT,         LT_URI       
TYPE SBDST_URI,         LW_URI       
TYPE BAPIURI,         LT_SHEET     
TYPE SOI_SHEETS_TABLE,         L_DOC        
TYPE CNTL_HANDLE ,         L_APL        
TYPE OBJ_RECORD ,         LW_SHEET     
TYPE SOI_SHEETS.   

DATA: LT_FIELDS   TYPE STANDARD TABLE OF RFC_FIELDS,         LS_FIELDS   
TYPE RFC_FIELDS,         LV_LAST_ROW 
TYPE I,         LV_LAST_COL 
TYPE I.   
DATA:      GDF_ERROR  TYPE REF TO I_OI_ERROR,              GDS_ERRORS 
TYPE REF TO I_OI_ERROR OCCURS WITH HEADER LINE.   

DATA:LDF_OBJECTKEY TYPE BAPIBDS01-OBJKEY.   
CALL METHOD C_OI_CONTAINER_CONTROL_CREATOR=>GET_CONTAINER_CONTROL     
IMPORTING       
CONTROL = L_IREF_CONTROL       RETCODE 
= L_RETCODE.   

CHECK L_RETCODE = C_OI_ERRORS=>RET_OK.   

CALL METHOD L_IREF_CONTROL->INIT_CONTROL     
EXPORTING       R3_APPLICATION_NAME      
= PV_TEMPLATE       INPLACE_ENABLED          
'X'       INPLACE_SCROLL_DOCUMENTS 
'X'       PARENT                   
= L_OREF_CONTAINER     
IMPORTING       RETCODE                  
= L_RETCODE.   
IF L_RETCODE <> C_OI_ERRORS=>RET_OK.     
MESSAGE '保存Excel文件出错' TYPE 'E'.   
ENDIF.   
CHECK L_RETCODE = C_OI_ERRORS=>RET_OK.   

CREATE OBJECT L_IREF_TEMPLATE.   LW_SIGNATURE
-PROP_NAME  'BDS_KEYWORD'.   LW_SIGNATURE
-PROP_VALUE = PV_TEMPLATE.   
APPEND LW_SIGNATURE TO LT_SIGNATURE.   

REFRESH LT_URI.   
CLEAR LDF_OBJECTKEY.   
MOVE PV_TEMPLATE TO LDF_OBJECTKEY.   
CALL METHOD L_IREF_TEMPLATE->GET_WITH_URL     
EXPORTING       CLASSNAME       
'SOFFICEINTEGRATION'       CLASSTYPE       
'OT'       OBJECT_KEY      
= LDF_OBJECTKEY     
CHANGING       URIS            
= LT_URI       SIGNATURE       
= LT_SIGNATURE     
EXCEPTIONS       NOTHING_FOUND   
1       ERROR_KPRO      
2       INTERNAL_ERROR  
3       PARAMETER_ERROR 
4       NOT_AUTHORIZED  
5       NOT_ALLOWED     
6.   

CLEAR LW_URI.   
READ TABLE LT_URI INTO LW_URI INDEX 1.   
IF SY-SUBRC <> 0.     
MESSAGE '请检查EXCEL模板不存在或者设置不正确' TYPE 'E'.   
ENDIF.   
CHECK SY-SUBRC 0.   

CALL METHOD L_IREF_CONTROL->GET_DOCUMENT_PROXY     
EXPORTING       DOCUMENT_TYPE  
'Excel.Sheet'     
IMPORTING       DOCUMENT_PROXY 
= L_IREF_DOCUMENT       RETCODE        
= L_RETCODE.   
IF L_RETCODE <> C_OI_ERRORS=>RET_OK.     
MESSAGE '保存Excel文件出错' TYPE 'E'.   
ENDIF.   
CHECK L_RETCODE = C_OI_ERRORS=>RET_OK.   

CALL METHOD L_IREF_DOCUMENT->OPEN_DOCUMENT     
EXPORTING       DOCUMENT_URL 
= LW_URI-URI       OPEN_INPLACE 
'X'     
IMPORTING       RETCODE      
= L_RETCODE.   
IF L_RETCODE <> C_OI_ERRORS=>RET_OK.     
MESSAGE '保存Excel文件出错' TYPE 'E'.   
ENDIF.   
CHECK L_RETCODE = C_OI_ERRORS=>RET_OK.   

FREE L_IREF_ERROR.   

CALL METHOD L_IREF_DOCUMENT->GET_SPREADSHEET_INTERFACE     
IMPORTING       ERROR           
= L_IREF_ERROR       SHEET_INTERFACE 
= L_IREF_SPREADSHEET.   

CALL METHOD L_IREF_SPREADSHEET->GET_SHEETS     
IMPORTING       SHEETS 
= LT_SHEET       ERROR  
= L_IREF_ERROR.   

CHECK L_IREF_ERROR->ERROR_CODE = C_OI_ERRORS=>RET_OK.   

CLEAR LW_SHEET.   LV_LAST_ROW 


LINES( PT_EXCEL ).   

READ TABLE LT_SHEET INTO LW_SHEET INDEX 1.   
CHECK SY-SUBRC 0.   

CALL METHOD L_IREF_SPREADSHEET->SELECT_SHEET     
EXPORTING       NAME  
= LW_SHEET-SHEET_NAME     
IMPORTING       ERROR 
= L_IREF_ERROR.   


CHECK L_IREF_ERROR->ERROR_CODE = C_OI_ERRORS=>RET_OK.   
"calculate The columns of Data   
REFRESH LT_FIELDS.   
CALL FUNCTION 'DP_GET_FIELDS_FROM_TABLE'     
TABLES       
DATA   = PT_EXCEL       
FIELDS = LT_FIELDS.   LV_LAST_COL 


LINES( LT_FIELDS ).   

CALL METHOD L_IREF_SPREADSHEET->SET_SELECTION     
EXPORTING       
LEFT    1       TOP     
2       
ROWS    = LV_LAST_ROW       COLUMNS 
= LV_LAST_COL.   

CALL METHOD L_IREF_SPREADSHEET->INSERT_RANGE     
EXPORTING       COLUMNS 
= LV_LAST_COL       
ROWS    = LV_LAST_ROW       NAME    
= PV_TEMPLATE.   

CALL METHOD L_IREF_SPREADSHEET->INSERT_ONE_TABLE     
EXPORTING       DATA_TABLE   
= PT_EXCEL[]       FIELDS_TABLE 
= LT_FIELDS       RANGENAME    
= PV_TEMPLATE.   



CALL METHOD L_IREF_DOCUMENT->SAVE_AS     
EXPORTING       FILE_NAME 
= PV_FILE.   

CALL METHOD L_IREF_DOCUMENT->RELEASE_DOCUMENT     
IMPORTING       RETCODE 
= L_RETCODE.   
IF L_RETCODE <> C_OI_ERRORS=>RET_OK.     
MESSAGE '保存Excel文件出错' TYPE 'E'.   
ELSE.     
MESSAGE 'Excel文件已保存' TYPE 'S'.   
ENDIF.   
FREE: L_IREF_SPREADSHEET,         L_IREF_DOCUMENT
.   

CALL METHOD L_IREF_CONTROL->RELEASE_ALL_DOCUMENTS.   
CALL METHOD L_IREF_CONTROL->DESTROY_CONTROL.
ENDFORM.                    " FRM_OUTPUT_EXCEL

原文地址:https://www.cnblogs.com/rainysblog/p/6275007.html