ABAP获取用户登录详细信息并已邮件附件的形式发送给你
2013-02-22 08:34
591 查看
老外写的这段代码,从逻辑上看,我没看出问题,但是运行后不见发送邮件出来,请有空的前辈调试解决下,这段代码可以作为新人学习ABAP的一个典型DEMO。
This is a Sample Code for fetching the User Login Details and sending it as an XLS attachment to an Email using the XML method
This is a Sample Code for fetching the User Login Details and sending it as an XLS attachment to an Email using the XML method
*&---------------------------------------------------------------------* *& REPORT Z_WUWEI_0022 *& *&---------------------------------------------------------------------* *& *& *&---------------------------------------------------------------------* REPORT Z_WUWEI_0022. TYPE-POOLS: IXML. *------------------------------------------------------------------------* * DATA DECLARATIONS * *------------------------------------------------------------------------* * STRUCTURE FOR FINAL INTERNAL TABLE TYPES: BEGIN OF TY_FINAL, SRNO(3) TYPE N, USER_ID TYPE USR02-BNAME, FULL_NAME TYPE BAPIADDR3-FULLNAME, DEPT TYPE BAPIADDR3-DEPARTMENT, LOGIN(3) TYPE C, END OF TY_FINAL. * STRUCTURE FOR USR02 TYPES: BEGIN OF TY_USR02, BNAME TYPE USR02-BNAME, TRDAT TYPE USR02-TRDAT, END OF TY_USR02. * INTERNAL TABLE & WORK AREA FOR FINAL INTERNAL TABLE DATA: IT_FINAL TYPE TABLE OF TY_FINAL, WA_FINAL TYPE TY_FINAL. * INTERNAL TABLE & WORK AREA FOR USR02 INTERNAL TABLE DATA: IT_USR02 TYPE TABLE OF TY_USR02, WA_USR02 TYPE TY_USR02. * WORK AREA FOR ADD3_DATA STRUCTRE DATA: WA_ADDR TYPE BAPIADDR3. DATA: IT_RETURN TYPE TABLE OF BAPIRET2. DATA: LV_DATE TYPE D. DATA: LV_FILENAME TYPE STRING. TYPES: BEGIN OF XML_LINE, DATA(255) TYPE X, END OF XML_LINE. DATA: L_IXML TYPE REF TO IF_IXML, L_STREAMFACTORY TYPE REF TO IF_IXML_STREAM_FACTORY, L_OSTREAM TYPE REF TO IF_IXML_OSTREAM, L_RENDERER TYPE REF TO IF_IXML_RENDERER, L_DOCUMENT TYPE REF TO IF_IXML_DOCUMENT. DATA: L_ELEMENT_ROOT TYPE REF TO IF_IXML_ELEMENT, NS_ATTRIBUTE TYPE REF TO IF_IXML_ATTRIBUTE, R_ELEMENT_PROPERTIES TYPE REF TO IF_IXML_ELEMENT, R_ELEMENT TYPE REF TO IF_IXML_ELEMENT, R_WORKSHEET TYPE REF TO IF_IXML_ELEMENT, R_TABLE TYPE REF TO IF_IXML_ELEMENT, R_COLUMN TYPE REF TO IF_IXML_ELEMENT, R_ROW TYPE REF TO IF_IXML_ELEMENT, R_CELL TYPE REF TO IF_IXML_ELEMENT, R_DATA TYPE REF TO IF_IXML_ELEMENT, L_VALUE TYPE STRING, L_TYPE TYPE STRING, L_TEXT(100) TYPE C, R_STYLES TYPE REF TO IF_IXML_ELEMENT, R_STYLE TYPE REF TO IF_IXML_ELEMENT, R_STYLE1 TYPE REF TO IF_IXML_ELEMENT, R_FORMAT TYPE REF TO IF_IXML_ELEMENT, R_BORDER TYPE REF TO IF_IXML_ELEMENT, NUM_ROWS TYPE I. DATA: L_XML_TABLE TYPE TABLE OF XML_LINE, WA_XML TYPE XML_LINE, L_XML_SIZE TYPE I, L_RC TYPE I. *------------------------------------------------------------------------* * INITIALIZATION * *------------------------------------------------------------------------* INITIALIZATION. LV_DATE = SY-DATUM - 1. *------------------------------------------------------------------------* * START OF SELECTION * *------------------------------------------------------------------------* START-OF-SELECTION. PERFORM GET_USER_DATA. PERFORM PROCESS_XML_DATA. PERFORM SEND_MAIL. *&---------------------------------------------------------------------* *& FORM GET_USER_DATA *&---------------------------------------------------------------------* * FETCH USER DETAILS FROM USR02 *----------------------------------------------------------------------* FORM GET_USER_DATA. REFRESH IT_FINAL. SELECT DISTINCT BNAME TRDAT FROM USR02 INTO TABLE IT_USR02. SORT IT_USR02 BY BNAME. IF NOT IT_USR02[] IS INITIAL. LOOP AT IT_USR02 INTO WA_USR02. CLEAR WA_FINAL. WA_FINAL-SRNO = SY-TABIX. " SERIAL NO. WA_FINAL-USER_ID = WA_USR02-BNAME. " USER ID CALL FUNCTION 'BAPI_USER_GET_DETAIL' EXPORTING USERNAME = WA_USR02-BNAME IMPORTING ADDRESS = WA_ADDR TABLES RETURN = IT_RETURN. IF SY-SUBRC EQ 0. WA_FINAL-FULL_NAME = WA_ADDR-FULLNAME. " FULL NAME WA_FINAL-DEPT = WA_ADDR-DEPARTMENT. " DEPARTMENT ENDIF. IF WA_USR02-TRDAT EQ LV_DATE. WA_FINAL-LOGIN = 'YES'. " LOGIN ON PREVIOUS DAY ELSE. WA_FINAL-LOGIN = 'NO'. ENDIF. APPEND WA_FINAL TO IT_FINAL. ENDLOOP. ENDIF. ENDFORM. " GET_USER_DATA *&---------------------------------------------------------------------* *& FORM SEND_MAIL *&---------------------------------------------------------------------* * SEND EMAIL *----------------------------------------------------------------------* FORM SEND_MAIL. DATA: OBJPACK LIKE SOPCKLSTI1 OCCURS 2 WITH HEADER LINE. DATA: OBJHEAD LIKE SOLISTI1 OCCURS 1 WITH HEADER LINE. DATA: OBJBIN LIKE SOLIX OCCURS 10 WITH HEADER LINE. DATA: OBJTXT LIKE SOLISTI1 OCCURS 10 WITH HEADER LINE. DATA: RECLIST LIKE SOMLRECI1 OCCURS 5 WITH HEADER LINE. DATA: DOC_CHNG LIKE SODOCCHGI1. DATA: TAB_LINES LIKE SY-TABIX. DATA: L_NUM(3). DATA: SUBJ_DATE(10) TYPE C. * MAIL SUBJECT CONCATENATE LV_DATE+6(2) '-' LV_DATE+4(2) '-' LV_DATE+0(4) INTO SUBJ_DATE. CONCATENATE 'SAP APPLICATION USAGE REPORT ' SUBJ_DATE INTO DOC_CHNG-OBJ_DESCR SEPARATED BY SPACE. * MAIL CONTENTS OBJTXT = 'DEAR USER,'. APPEND OBJTXT. CLEAR OBJTXT. APPEND OBJTXT. CONCATENATE 'PLEASE FIND THE ATTACHED SAP APPLICATION USAGE REPORT FOR ' SUBJ_DATE INTO OBJTXT SEPARATED BY SPACE. " MAIL CONTENTS APPEND OBJTXT. CLEAR OBJTXT. APPEND OBJTXT. OBJTXT = 'THANKS & REGARDS,'. APPEND OBJTXT. OBJTXT = 'HIMANSHU KANEKAR'. APPEND OBJTXT. DESCRIBE TABLE OBJTXT LINES TAB_LINES. READ TABLE OBJTXT INDEX TAB_LINES. DOC_CHNG-DOC_SIZE = ( TAB_LINES - 1 ) * 255 + STRLEN( OBJTXT ). * PACKING LIST FOR THE E-MAIL BODY OBJPACK-HEAD_START = 1. OBJPACK-HEAD_NUM = 0. OBJPACK-BODY_START = 1. OBJPACK-BODY_NUM = TAB_LINES. OBJPACK-DOC_TYPE = 'RAW'. APPEND OBJPACK. * CREATION OF THE DOCUMENT ATTACHMENT LOOP AT L_XML_TABLE INTO WA_XML. CLEAR OBJBIN. OBJBIN-LINE = WA_XML-DATA. APPEND OBJBIN. ENDLOOP. DESCRIBE TABLE OBJBIN LINES TAB_LINES. OBJHEAD = 'SAP LOGIN DETAILS'. APPEND OBJHEAD. * PACKING LIST FOR THE E-MAIL ATTACHMENT OBJPACK-TRANSF_BIN = 'X'. OBJPACK-HEAD_START = 1. OBJPACK-HEAD_NUM = 0. OBJPACK-BODY_START = 1. OBJPACK-BODY_NUM = TAB_LINES. CONCATENATE 'SAP_LOGIN_DETAILS' SUBJ_DATE INTO OBJPACK-OBJ_DESCR SEPARATED BY SPACE. OBJPACK-DOC_TYPE = 'XLS'. OBJPACK-DOC_SIZE = TAB_LINES * 255. APPEND OBJPACK. * TARGET RECIPENT CLEAR RECLIST. RECLIST-RECEIVER = 'name@company.com'. RECLIST-REC_TYPE = 'U'. APPEND RECLIST. * SENDING THE DOCUMENT CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1' EXPORTING DOCUMENT_DATA = DOC_CHNG PUT_IN_OUTBOX = 'X' TABLES PACKING_LIST = OBJPACK OBJECT_HEADER = OBJHEAD CONTENTS_TXT = OBJTXT CONTENTS_HEX = OBJBIN RECEIVERS = RECLIST EXCEPTIONS TOO_MANY_RECEIVERS = 1 DOCUMENT_NOT_SENT = 2 OPERATION_NO_AUTHORIZATION = 4 OTHERS = 99. COMMIT WORK AND WAIT. ENDFORM. " SEND_MAIL *&---------------------------------------------------------------------* *& FORM PROCESS_XML_DATA *&---------------------------------------------------------------------* * PROCESS XML DATA *----------------------------------------------------------------------* FORM PROCESS_XML_DATA . * CREATING A IXML FACTORY L_IXML = CL_IXML=>CREATE( ). * CREATING THE DOM OBJECT MODEL L_DOCUMENT = L_IXML->CREATE_DOCUMENT( ). * CREATE ROOT NODE 'WORKBOOK' L_ELEMENT_ROOT = L_DOCUMENT->CREATE_SIMPLE_ELEMENT( NAME = 'WORKBOOK' PARENT = L_DOCUMENT ). L_ELEMENT_ROOT->SET_ATTRIBUTE( NAME = 'XMLNS' VALUE = 'URN:SCHEMAS-MICROSOFT-COM:OFFICE:SPREADSHEET' ). NS_ATTRIBUTE = L_DOCUMENT->CREATE_NAMESPACE_DECL( NAME = 'SS' PREFIX = 'XMLNS' URI = 'URN:SCHEMAS-MICROSOFT-COM:OFFICE:SPREADSHEET' ). L_ELEMENT_ROOT->SET_ATTRIBUTE_NODE( NS_ATTRIBUTE ). NS_ATTRIBUTE = L_DOCUMENT->CREATE_NAMESPACE_DECL( NAME = 'X' PREFIX = 'XMLNS' URI = 'URN:SCHEMAS-MICROSOFT-COM:OFFICE:EXCEL' ). L_ELEMENT_ROOT->SET_ATTRIBUTE_NODE( NS_ATTRIBUTE ). * CREATE NODE FOR DOCUMENT PROPERTIES. R_ELEMENT_PROPERTIES = L_DOCUMENT->CREATE_SIMPLE_ELEMENT( NAME = 'TEST_REPORT' PARENT = L_ELEMENT_ROOT ). L_VALUE = SY-UNAME. L_DOCUMENT->CREATE_SIMPLE_ELEMENT( NAME = 'AUTHOR' VALUE = L_VALUE PARENT = R_ELEMENT_PROPERTIES ). * STYLES R_STYLES = L_DOCUMENT->CREATE_SIMPLE_ELEMENT( NAME = 'STYLES' PARENT = L_ELEMENT_ROOT ). * STYLE FOR HEADER R_STYLE = L_DOCUMENT->CREATE_SIMPLE_ELEMENT( NAME = 'STYLE' PARENT = R_STYLES ). R_STYLE->SET_ATTRIBUTE_NS( NAME = 'ID' PREFIX = 'SS' VALUE = 'HEADER' ). R_FORMAT = L_DOCUMENT->CREATE_SIMPLE_ELEMENT( NAME = 'FONT' PARENT = R_STYLE ). R_FORMAT->SET_ATTRIBUTE_NS( NAME = 'BOLD' PREFIX = 'SS' VALUE = '1' ). R_FORMAT = L_DOCUMENT->CREATE_SIMPLE_ELEMENT( NAME = 'INTERIOR' PARENT = R_STYLE ). R_FORMAT->SET_ATTRIBUTE_NS( NAME = 'COLOR' PREFIX = 'SS' VALUE = '#92D050' ). R_FORMAT->SET_ATTRIBUTE_NS( NAME = 'PATTERN' PREFIX = 'SS' VALUE = 'SOLID' ). R_FORMAT = L_DOCUMENT->CREATE_SIMPLE_ELEMENT( NAME = 'ALIGNMENT' PARENT = R_STYLE ). R_FORMAT->SET_ATTRIBUTE_NS( NAME = 'VERTICAL' PREFIX = 'SS' VALUE = 'CENTER' ). R_FORMAT->SET_ATTRIBUTE_NS( NAME = 'WRAPTEXT' PREFIX = 'SS' VALUE = '1' ). R_BORDER = L_DOCUMENT->CREATE_SIMPLE_ELEMENT( NAME = 'BORDERS' PARENT = R_STYLE ). R_FORMAT = L_DOCUMENT->CREATE_SIMPLE_ELEMENT( NAME = 'BORDER' PARENT = R_BORDER ). R_FORMAT->SET_ATTRIBUTE_NS( NAME = 'POSITION' PREFIX = 'SS' VALUE = 'BOTTOM' ). R_FORMAT->SET_ATTRIBUTE_NS( NAME = 'LINESTYLE' PREFIX = 'SS' VALUE = 'CONTINUOUS' ). R_FORMAT->SET_ATTRIBUTE_NS( NAME = 'WEIGHT' PREFIX = 'SS' VALUE = '1' ). R_FORMAT = L_DOCUMENT->CREATE_SIMPLE_ELEMENT( NAME = 'BORDER' PARENT = R_BORDER ). R_FORMAT->SET_ATTRIBUTE_NS( NAME = 'POSITION' PREFIX = 'SS' VALUE = 'LEFT' ). R_FORMAT->SET_ATTRIBUTE_NS( NAME = 'LINESTYLE' PREFIX = 'SS' VALUE = 'CONTINUOUS' ). R_FORMAT->SET_ATTRIBUTE_NS( NAME = 'WEIGHT' PREFIX = 'SS' VALUE = '1' ). R_FORMAT = L_DOCUMENT->CREATE_SIMPLE_ELEMENT( NAME = 'BORDER' PARENT = R_BORDER ). R_FORMAT->SET_ATTRIBUTE_NS( NAME = 'POSITION' PREFIX = 'SS' VALUE = 'TOP' ). R_FORMAT->SET_ATTRIBUTE_NS( NAME = 'LINESTYLE' PREFIX = 'SS' VALUE = 'CONTINUOUS' ). R_FORMAT->SET_ATTRIBUTE_NS( NAME = 'WEIGHT' PREFIX = 'SS' VALUE = '1' ). R_FORMAT = L_DOCUMENT->CREATE_SIMPLE_ELEMENT( NAME = 'BORDER' PARENT = R_BORDER ). R_FORMAT->SET_ATTRIBUTE_NS( NAME = 'POSITION' PREFIX = 'SS' VALUE = 'RIGHT' ). R_FORMAT->SET_ATTRIBUTE_NS( NAME = 'LINESTYLE' PREFIX = 'SS' VALUE = 'CONTINUOUS' ). R_FORMAT->SET_ATTRIBUTE_NS( NAME = 'WEIGHT' PREFIX = 'SS' VALUE = '1' ). * STYLE FOR DATA R_STYLE1 = L_DOCUMENT->CREATE_SIMPLE_ELEMENT( NAME = 'STYLE' PARENT = R_STYLES ). R_STYLE1->SET_ATTRIBUTE_NS( NAME = 'ID' PREFIX = 'SS' VALUE = 'DATA' ). R_BORDER = L_DOCUMENT->CREATE_SIMPLE_ELEMENT( NAME = 'BORDERS' PARENT = R_STYLE1 ). R_FORMAT = L_DOCUMENT->CREATE_SIMPLE_ELEMENT( NAME = 'BORDER' PARENT = R_BORDER ). R_FORMAT->SET_ATTRIBUTE_NS( NAME = 'POSITION' PREFIX = 'SS' VALUE = 'BOTTOM' ). R_FORMAT->SET_ATTRIBUTE_NS( NAME = 'LINESTYLE' PREFIX = 'SS' VALUE = 'CONTINUOUS' ). R_FORMAT->SET_ATTRIBUTE_NS( NAME = 'WEIGHT' PREFIX = 'SS' VALUE = '1' ). R_FORMAT = L_DOCUMENT->CREATE_SIMPLE_ELEMENT( NAME = 'BORDER' PARENT = R_BORDER ). R_FORMAT->SET_ATTRIBUTE_NS( NAME = 'POSITION' PREFIX = 'SS' VALUE = 'LEFT' ). R_FORMAT->SET_ATTRIBUTE_NS( NAME = 'LINESTYLE' PREFIX = 'SS' VALUE = 'CONTINUOUS' ). R_FORMAT->SET_ATTRIBUTE_NS( NAME = 'WEIGHT' PREFIX = 'SS' VALUE = '1' ). R_FORMAT = L_DOCUMENT->CREATE_SIMPLE_ELEMENT( NAME = 'BORDER' PARENT = R_BORDER ). R_FORMAT->SET_ATTRIBUTE_NS( NAME = 'POSITION' PREFIX = 'SS' VALUE = 'TOP' ). R_FORMAT->SET_ATTRIBUTE_NS( NAME = 'LINESTYLE' PREFIX = 'SS' VALUE = 'CONTINUOUS' ). R_FORMAT->SET_ATTRIBUTE_NS( NAME = 'WEIGHT' PREFIX = 'SS' VALUE = '1' ). R_FORMAT = L_DOCUMENT->CREATE_SIMPLE_ELEMENT( NAME = 'BORDER' PARENT = R_BORDER ). R_FORMAT->SET_ATTRIBUTE_NS( NAME = 'POSITION' PREFIX = 'SS' VALUE = 'RIGHT' ). R_FORMAT->SET_ATTRIBUTE_NS( NAME = 'LINESTYLE' PREFIX = 'SS' VALUE = 'CONTINUOUS' ). R_FORMAT->SET_ATTRIBUTE_NS( NAME = 'WEIGHT' PREFIX = 'SS' VALUE = '1' ). * WORKSHEET R_WORKSHEET = L_DOCUMENT->CREATE_SIMPLE_ELEMENT( NAME = 'WORKSHEET' PARENT = L_ELEMENT_ROOT ). R_WORKSHEET->SET_ATTRIBUTE_NS( NAME = 'NAME' PREFIX = 'SS' VALUE = 'SHEET1' ). * TABLE R_TABLE = L_DOCUMENT->CREATE_SIMPLE_ELEMENT( NAME = 'TABLE' PARENT = R_WORKSHEET ). R_TABLE->SET_ATTRIBUTE_NS( NAME = 'FULLCOLUMNS' PREFIX = 'X' VALUE = '1' ). R_TABLE->SET_ATTRIBUTE_NS( NAME = 'FULLROWS' PREFIX = 'X' VALUE = '1' ). * COLUMN FORMATTING R_COLUMN = L_DOCUMENT->CREATE_SIMPLE_ELEMENT( NAME = 'COLUMN' PARENT = R_TABLE ). R_COLUMN->SET_ATTRIBUTE_NS( NAME = 'WIDTH' PREFIX = 'SS' VALUE = '40' ). R_COLUMN = L_DOCUMENT->CREATE_SIMPLE_ELEMENT( NAME = 'COLUMN' PARENT = R_TABLE ). R_COLUMN->SET_ATTRIBUTE_NS( NAME = 'WIDTH' PREFIX = 'SS' VALUE = '90' ). R_COLUMN = L_DOCUMENT->CREATE_SIMPLE_ELEMENT( NAME = 'COLUMN' PARENT = R_TABLE ). R_COLUMN->SET_ATTRIBUTE_NS( NAME = 'WIDTH' PREFIX = 'SS' VALUE = '140' ). R_COLUMN = L_DOCUMENT->CREATE_SIMPLE_ELEMENT( NAME = 'COLUMN' PARENT = R_TABLE ). R_COLUMN->SET_ATTRIBUTE_NS( NAME = 'WIDTH' PREFIX = 'SS' VALUE = '150' ). R_COLUMN = L_DOCUMENT->CREATE_SIMPLE_ELEMENT( NAME = 'COLUMN' PARENT = R_TABLE ). R_COLUMN->SET_ATTRIBUTE_NS( NAME = 'WIDTH' PREFIX = 'SS' VALUE = '90' ). * BLANK ROW R_ROW = L_DOCUMENT->CREATE_SIMPLE_ELEMENT( NAME = 'ROW' PARENT = R_TABLE ). * COLUMN HEADERS ROW R_ROW = L_DOCUMENT->CREATE_SIMPLE_ELEMENT( NAME = 'ROW' PARENT = R_TABLE ). R_ROW->SET_ATTRIBUTE_NS( NAME = 'AUTOFITHEIGHT' PREFIX = 'SS' VALUE = '1' ). * SR. NO. R_CELL = L_DOCUMENT->CREATE_SIMPLE_ELEMENT( NAME = 'CELL' PARENT = R_ROW ). R_CELL->SET_ATTRIBUTE_NS( NAME = 'STYLEID' PREFIX = 'SS' VALUE = 'HEADER' ). R_DATA = L_DOCUMENT->CREATE_SIMPLE_ELEMENT( NAME = 'DATA' VALUE = 'SR. NO.' PARENT = R_CELL ). R_DATA->SET_ATTRIBUTE_NS( NAME = 'TYPE' PREFIX = 'SS' VALUE = 'STRING' ). * USER NAME R_CELL = L_DOCUMENT->CREATE_SIMPLE_ELEMENT( NAME = 'CELL' PARENT = R_ROW ). R_CELL->SET_ATTRIBUTE_NS( NAME = 'STYLEID' PREFIX = 'SS' VALUE = 'HEADER' ). R_DATA = L_DOCUMENT->CREATE_SIMPLE_ELEMENT( NAME = 'DATA' VALUE = 'USER NAME' PARENT = R_CELL ). R_DATA->SET_ATTRIBUTE_NS( NAME = 'TYPE' PREFIX = 'SS' VALUE = 'STRING' ). * FULL NAME R_CELL = L_DOCUMENT->CREATE_SIMPLE_ELEMENT( NAME = 'CELL' PARENT = R_ROW ). R_CELL->SET_ATTRIBUTE_NS( NAME = 'STYLEID' PREFIX = 'SS' VALUE = 'HEADER' ). R_DATA = L_DOCUMENT->CREATE_SIMPLE_ELEMENT( NAME = 'DATA' VALUE = 'FULL NAME' PARENT = R_CELL ). R_DATA->SET_ATTRIBUTE_NS( NAME = 'TYPE' PREFIX = 'SS' VALUE = 'STRING' ). * DEPARTMENT R_CELL = L_DOCUMENT->CREATE_SIMPLE_ELEMENT( NAME = 'CELL' PARENT = R_ROW ). R_CELL->SET_ATTRIBUTE_NS( NAME = 'STYLEID' PREFIX = 'SS' VALUE = 'HEADER' ). R_DATA = L_DOCUMENT->CREATE_SIMPLE_ELEMENT( NAME = 'DATA' VALUE = 'DEPARTMENT' PARENT = R_CELL ). R_DATA->SET_ATTRIBUTE_NS( NAME = 'TYPE' PREFIX = 'SS' VALUE = 'STRING' ). * LOGIN R_CELL = L_DOCUMENT->CREATE_SIMPLE_ELEMENT( NAME = 'CELL' PARENT = R_ROW ). R_CELL->SET_ATTRIBUTE_NS( NAME = 'STYLEID' PREFIX = 'SS' VALUE = 'HEADER' ). CONCATENATE 'LOGIN - ' LV_DATE+6(2) '/' LV_DATE+4(2) '/' LV_DATE+0(4) INTO L_VALUE. R_DATA = L_DOCUMENT->CREATE_SIMPLE_ELEMENT( NAME = 'DATA' VALUE = L_VALUE PARENT = R_CELL ). R_DATA->SET_ATTRIBUTE_NS( NAME = 'TYPE' PREFIX = 'SS' VALUE = 'STRING' ). * BLANK ROW AFTER COLUMN HEADERS R_ROW = L_DOCUMENT->CREATE_SIMPLE_ELEMENT( NAME = 'ROW' PARENT = R_TABLE ). R_CELL = L_DOCUMENT->CREATE_SIMPLE_ELEMENT( NAME = 'CELL' PARENT = R_ROW ). R_CELL->SET_ATTRIBUTE_NS( NAME = 'STYLEID' PREFIX = 'SS' VALUE = 'DATA' ). R_CELL = L_DOCUMENT->CREATE_SIMPLE_ELEMENT( NAME = 'CELL' PARENT = R_ROW ). R_CELL->SET_ATTRIBUTE_NS( NAME = 'STYLEID' PREFIX = 'SS' VALUE = 'DATA' ). R_CELL = L_DOCUMENT->CREATE_SIMPLE_ELEMENT( NAME = 'CELL' PARENT = R_ROW ). R_CELL->SET_ATTRIBUTE_NS( NAME = 'STYLEID' PREFIX = 'SS' VALUE = 'DATA' ). R_CELL = L_DOCUMENT->CREATE_SIMPLE_ELEMENT( NAME = 'CELL' PARENT = R_ROW ). R_CELL->SET_ATTRIBUTE_NS( NAME = 'STYLEID' PREFIX = 'SS' VALUE = 'DATA' ). R_CELL = L_DOCUMENT->CREATE_SIMPLE_ELEMENT( NAME = 'CELL' PARENT = R_ROW ). R_CELL->SET_ATTRIBUTE_NS( NAME = 'STYLEID' PREFIX = 'SS' VALUE = 'DATA' ). * DATA TABLE LOOP AT IT_FINAL INTO WA_FINAL. R_ROW = L_DOCUMENT->CREATE_SIMPLE_ELEMENT( NAME = 'ROW' PARENT = R_TABLE ). * SR. NO. R_CELL = L_DOCUMENT->CREATE_SIMPLE_ELEMENT( NAME = 'CELL' PARENT = R_ROW ). R_CELL->SET_ATTRIBUTE_NS( NAME = 'STYLEID' PREFIX = 'SS' VALUE = 'DATA' ). L_VALUE = SY-TABIX. CONDENSE L_VALUE NO-GAPS. R_DATA = L_DOCUMENT->CREATE_SIMPLE_ELEMENT( NAME = 'DATA' VALUE = L_VALUE PARENT = R_CELL ). " DATA R_DATA->SET_ATTRIBUTE_NS( NAME = 'TYPE' PREFIX = 'SS' VALUE = 'NUMBER' ). " CELL FORMAT * USER NAME R_CELL = L_DOCUMENT->CREATE_SIMPLE_ELEMENT( NAME = 'CELL' PARENT = R_ROW ). R_CELL->SET_ATTRIBUTE_NS( NAME = 'STYLEID' PREFIX = 'SS' VALUE = 'DATA' ). L_VALUE = WA_FINAL-USER_ID. R_DATA = L_DOCUMENT->CREATE_SIMPLE_ELEMENT( NAME = 'DATA' VALUE = L_VALUE PARENT = R_CELL ). " DATA R_DATA->SET_ATTRIBUTE_NS( NAME = 'TYPE' PREFIX = 'SS' VALUE = 'STRING' ). " CELL FORMAT * FULL NAME R_CELL = L_DOCUMENT->CREATE_SIMPLE_ELEMENT( NAME = 'CELL' PARENT = R_ROW ). R_CELL->SET_ATTRIBUTE_NS( NAME = 'STYLEID' PREFIX = 'SS' VALUE = 'DATA' ). L_VALUE = WA_FINAL-FULL_NAME. R_DATA = L_DOCUMENT->CREATE_SIMPLE_ELEMENT( NAME = 'DATA' VALUE = L_VALUE PARENT = R_CELL ). " DATA R_DATA->SET_ATTRIBUTE_NS( NAME = 'TYPE' PREFIX = 'SS' VALUE = 'STRING' ). " CELL FORMAT * DEPARTMENT R_CELL = L_DOCUMENT->CREATE_SIMPLE_ELEMENT( NAME = 'CELL' PARENT = R_ROW ). R_CELL->SET_ATTRIBUTE_NS( NAME = 'STYLEID' PREFIX = 'SS' VALUE = 'DATA' ). L_VALUE = WA_FINAL-DEPT. R_DATA = L_DOCUMENT->CREATE_SIMPLE_ELEMENT( NAME = 'DATA' VALUE = L_VALUE PARENT = R_CELL ). " DATA R_DATA->SET_ATTRIBUTE_NS( NAME = 'TYPE' PREFIX = 'SS' VALUE = 'STRING' ). " CELL FORMAT * LOGIN R_CELL = L_DOCUMENT->CREATE_SIMPLE_ELEMENT( NAME = 'CELL' PARENT = R_ROW ). R_CELL->SET_ATTRIBUTE_NS( NAME = 'STYLEID' PREFIX = 'SS' VALUE = 'DATA' ). L_VALUE = WA_FINAL-LOGIN. R_DATA = L_DOCUMENT->CREATE_SIMPLE_ELEMENT( NAME = 'DATA' VALUE = L_VALUE PARENT = R_CELL ). " DATA R_DATA->SET_ATTRIBUTE_NS( NAME = 'TYPE' PREFIX = 'SS' VALUE = 'STRING' ). " CELL FORMAT ENDLOOP. * CREATING A STREAM FACTORY L_STREAMFACTORY = L_IXML->CREATE_STREAM_FACTORY( ). * CONNECT INTERNAL XML TABLE TO STREAM FACTORY L_OSTREAM = L_STREAMFACTORY->CREATE_OSTREAM_ITABLE( TABLE = L_XML_TABLE ). * RENDERING THE DOCUMENT L_RENDERER = L_IXML->CREATE_RENDERER( OSTREAM = L_OSTREAM DOCUMENT = L_DOCUMENT ). L_RC = L_RENDERER->RENDER( ). * SAVING THE XML DOCUMENT L_XML_SIZE = L_OSTREAM->GET_NUM_WRITTEN_RAW( ). ENDFORM. " PROCESS_XML_DATA
相关文章推荐
- (证实可用)C#获取AD所有的用户信息,比如登录名,邮件名,属于组织,名字
- Android将日志信息自动发送到指定的邮箱中 邮件的内容以附件形式发送
- ABAP模块-任意report作为附件以邮件形式发送
- 预报在线:发送短信中,对用户登录的判断和区分一般信息快报和重大信息快报,以选取不同的sql获取不同的用户;
- Android将日志信息自动发送到指定的邮箱中 邮件的内容以附件形式发送
- Android将日志信息自动发送到指定的邮箱中 邮件的内容以附件形式发送
- Android将日志信息自动发送到指定的邮箱中 邮件的内容以附件形式发送
- python实现获取天气信息后自动登录邮箱发送到指定邮件联系人
- 开发第一步之SMTP协议发送邮件,获取手机的详细信息
- python获取天气信息,给指定用户发送邮件
- iphone获取 用户坐标详细信息 MKPlacemark userLocation MKMapView
- 互联登录获取用户信息时导入Constans包1直不对不知道啥原因
- 用js实现facebook登录获取用户的信息(包括邮箱)
- 用Javascript获取SharePoint当前登录用户的用户名及Group信息
- python 发送邮件附件及文字信息
- Spring security 获取当前用户的登录信息
- 微信第三方登陆,无需注册一键登录,获取用户信息,PHP实现方法
- 金蝶EAS登录获取用户相关信息失败!
- WebSphere Portal V6.1 获取登录用户信息
- Spring Cloud云架构 - SSO单点登录之OAuth2.0 根据token获取用户信息(4)