首页 > 编程语言 >SAP中发消息报表程序

SAP中发消息报表程序

时间:2022-12-13 12:00:32浏览次数:49  
标签:SY SELECTION 报表 NO GAP USER SAP 发消息 VLINE


* Pop a Message to specific SAP users * * How to get a list of all the currently logged on users? * How to popup an instant message on a user';s monitor? * How to get a specific user';s details? * Usage of ';POPUP_GET_VALUES'; function module to get data from user * without having to write GUI code * * Submitted by : SAP Basis, ABAP Programming and Other IMG Stuff *              ​ * REPORT ZPOPUP NO STANDARD PAGE HEADING. INCLUDE <ICON>. DATA:       BEGIN OF USR_TABL OCCURS 0.                 INCLUDE STRUCTURE UINFO. DATA:       END OF USR_TABL. DATA:       L_LENGTH        TYPE I,             T_ABAPLIST      LIKE ABAPLIST OCCURS 0 WITH HEADER LINE,             BEGIN OF T_USER OCCURS 0,                 COUNTER     TYPE I,                 SELECTION   TYPE C,                 MANDT       LIKE SY-MANDT,                 BNAME       LIKE SY-UNAME,                 NAME_FIRST  LIKE V_ADRP_CP-NAME_FIRST,                 NAME_LAST   LIKE V_ADRP_CP-NAME_LAST,                 DEPARTMENT  LIKE V_ADRP_CP-DEPARTMENT,                 TEL_NUMBER  LIKE V_ADRP_CP-TEL_NUMBER,             END OF T_USER,             L_CLIENT        LIKE SY-MANDT,             L_USERID        LIKE UINFO-BNAME,             L_OPCODE        TYPE X,             L_FUNCT_CODE(1) TYPE C,             L_TEST(200)     TYPE C. L_OPCODE = 2. CALL ';ThUsrInfo'; ID ';OPCODE'; FIELD L_OPCODE     ID ';TAB'; FIELD USR_TABL-*SYS*. CLEAR T_USER. REFRESH T_USER. LOOP AT USR_TABL.     T_USER-MANDT = USR_TABL-MANDT.     T_USER-BNAME = USR_TABL-BNAME.     APPEND T_USER. ENDLOOP. SORT T_USER. DELETE ADJACENT DUPLICATES FROM T_USER. LOOP AT T_USER.     T_USER-COUNTER = SY-TABIX.     SELECT V~NAME_FIRST            V~NAME_LAST            V~DEPARTMENT            V~TEL_NUMBER         INTO (T_USER-NAME_FIRST,               T_USER-NAME_LAST,               T_USER-DEPARTMENT,               T_USER-TEL_NUMBER)         FROM USR21 AS U             JOIN V_ADRP_CP AS V               ON U~PERSNUMBER = V~PERSNUMBER AND                  U~ADDRNUMBER = V~ADDRNUMBER         WHERE U~BNAME = T_USER-BNAME.     ENDSELECT.     MODIFY T_USER. ENDLOOP. SORT T_USER BY DEPARTMENT NAME_LAST. PERFORM DISPLAY_LIST. TOP-OF-PAGE.     PERFORM DISPLAY_MENU. * End of top-of-page TOP-OF-PAGE DURING LINE-SELECTION.     PERFORM DISPLAY_MENU. * End of top-of-page during line-selection AT LINE-SELECTION.   IF SY-CUROW = 2.     IF SY-CUCOL < 19.         T_USER-SELECTION = ';X';.         MODIFY T_USER TRANSPORTING SELECTION WHERE SELECTION = ';';.         PERFORM DISPLAY_LIST.     ELSEIF SY-CUCOL < 36.         CLEAR T_USER-SELECTION.         MODIFY T_USER TRANSPORTING SELECTION WHERE SELECTION = ';X';.         PERFORM DISPLAY_LIST.     ELSEIF SY-CUCOL < 50.         PERFORM TRANSFER_SELECTION.         PERFORM POPUP_MSG.     ELSEIF SY-CUCOL < 67.         PERFORM TRANSFER_SELECTION.         SORT T_USER BY NAME_LAST.         PERFORM DISPLAY_LIST.     ELSEIF SY-CUCOL < 81.         PERFORM TRANSFER_SELECTION.         SORT T_USER BY NAME_FIRST.         PERFORM DISPLAY_LIST.     ELSEIF SY-CUCOL < 93.         PERFORM TRANSFER_SELECTION.         SORT T_USER BY MANDT.         PERFORM DISPLAY_LIST.     ENDIF.   ENDIF. * End of line-selection *&---------------------------------------------------------------------* *&      Form  DISPLAY_LIST *&---------------------------------------------------------------------* FORM DISPLAY_LIST. SY-LSIND = 0. FORMAT COLOR COL_NORMAL INTENSIFIED OFF. LOOP AT T_USER.     WRITE: / SY-VLINE, T_USER-SELECTION AS CHECKBOX,              SY-VLINE, T_USER-MANDT,              SY-VLINE, T_USER-BNAME,              SY-VLINE, T_USER-NAME_FIRST(15),              SY-VLINE, T_USER-NAME_LAST(15),              SY-VLINE, T_USER-DEPARTMENT(20),              SY-VLINE, T_USER-TEL_NUMBER(20), SY-VLINE.     HIDE: T_USER-COUNTER, T_USER-SELECTION. ENDLOOP. FORMAT COLOR OFF. WRITE: /(108) SY-ULINE. ENDFORM.                    " DISPLAY_LIST *&---------------------------------------------------------------------* *&      Form  DISPLAY_MENU *&---------------------------------------------------------------------* FORM DISPLAY_MENU.     FORMAT COLOR COL_HEADING HOTSPOT.     WRITE:   (91) SY-ULINE,        / SY-VLINE NO-GAP, (4) ICON_SELECT_ALL NO-GAP,    ';Select All';,          SY-VLINE NO-GAP, (4) ICON_DESELECT_ALL NO-GAP,  ';Deselect All';,          SY-VLINE NO-GAP, (4) ICON_SHORT_MESSAGE NO-GAP, ';Send Popup';,          SY-VLINE NO-GAP, (4) ICON_SORT_UP NO-GAP, ';Last Name'; NO-GAP,          SY-VLINE NO-GAP, (4) ICON_SORT_UP NO-GAP, ';First Name'; NO-GAP,          SY-VLINE NO-GAP, (4) ICON_SORT_UP NO-GAP, ';Client'; NO-GAP,          SY-VLINE,        /(91) SY-ULINE,        /(108) SY-ULINE.    FORMAT HOTSPOT OFF.    WRITE: / SY-VLINE, '; ';,             SY-VLINE, ';Cli';,             SY-VLINE, ';User        ';,             SY-VLINE, ';First Name     ';,             SY-VLINE, ';Last Name      ';,             SY-VLINE, ';Department          ';,             SY-VLINE, ';Telephone           ';,             SY-VLINE,           /(108) SY-ULINE.     FORMAT COLOR OFF. ENDFORM.                    " DISPLAY_MENU *&---------------------------------------------------------------------* *&      Form  TRANSFER_SELECTION *&---------------------------------------------------------------------* FORM TRANSFER_SELECTION.     DO.         READ LINE SY-INDEX FIELD VALUE T_USER-SELECTION.         IF SY-SUBRC <> 0.             EXIT.         ENDIF.         MODIFY T_USER TRANSPORTING SELECTION                WHERE COUNTER = T_USER-COUNTER.     ENDDO.     CLEAR T_USER. ENDFORM.                    " TRANSFER_SELECTION *&---------------------------------------------------------------------* *&      Form  POPUP_MSG *&---------------------------------------------------------------------* FORM POPUP_MSG.     DATA: L_MSG      LIKE SM04DIC-POPUPMSG VALUE ';Experimental Message';,           L_LEN      TYPE I,           L_RET      TYPE C.     LOOP AT T_USER WHERE SELECTION = ';X';.         PERFORM GET_MESSAGE CHANGING L_MSG L_RET.         EXIT.     ENDLOOP.     IF L_RET = ';A';.            "User cancelled the message         EXIT.     ENDIF. *   Get the message text     L_LEN = STRLEN( L_MSG ).     LOOP AT T_USER WHERE SELECTION = ';X';.             CALL FUNCTION ';TH_POPUP';                  EXPORTING                       CLIENT         = T_USER-MANDT                       USER           = T_USER-BNAME                       MESSAGE        = L_MSG                       MESSAGE_LEN    = L_LENGTH *                     CUT_BLANKS     = '; ';                  EXCEPTIONS                       USER_NOT_FOUND = 1                       OTHERS         = 2.             IF SY-SUBRC <> 0.                 WRITE: ';User ';, T_USER-BNAME, ';not found.';.             ENDIF.     ENDLOOP.     IF SY-SUBRC <> 0. *       Big error! No user has been selected.         MESSAGE ID ';AT'; TYPE ';E'; NUMBER ';315'; WITH               ';No user selected!';.         EXIT.     ENDIF. ENDFORM.                    " POPUP_MSG *&---------------------------------------------------------------------* *&      Form  GET_MESSAGE *&---------------------------------------------------------------------* FORM GET_MESSAGE CHANGING P_L_MSG LIKE SM04DIC-POPUPMSG                           P_RETURNCODE TYPE C. DATA: BEGIN OF FIELDS OCCURS 1.         INCLUDE STRUCTURE SVAL. DATA: END OF FIELDS,       RETURNCODE TYPE C.     FIELDS-TABNAME = ';SM04DIC';.     FIELDS-FIELDNAME = ';POPUPMSG';.     FIELDS-FIELDTEXT = ';Message :';.     CONCATENATE '; - Msg from'; SY-UNAME ';.'; INTO FIELDS-VALUE SEPARATED             BY '; ';.     APPEND FIELDS.     CALL FUNCTION ';POPUP_GET_VALUES';         EXPORTING POPUP_TITLE     = ';Supply the popup message';         IMPORTING RETURNCODE      = P_RETURNCODE         TABLES    FIELDS          = FIELDS.     IF P_RETURNCODE = ';A';.         EXIT.     ELSE.         READ TABLE FIELDS INDEX 1.         P_L_MSG = FIELDS-VALUE.     ENDIF. ENDFORM.                    " GET_MESSAGE *-- End of Program

标签:SY,SELECTION,报表,NO,GAP,USER,SAP,发消息,VLINE
From: https://blog.51cto.com/u_512327/5933791

相关文章

  • ISAP
    2171.EK求最大流#include<bits/stdc++.h>usingnamespacestd;constintN=1e4+5;constintM=1e6+5;inth[N],ne[M],e[M],w[M],tot=1;voidadd(intfrom,intto,......
  • JimuReport v1.5.6版本发布—免费的可视化低代码报表
    项目介绍一款免费的低代码可视化报表,像搭建积木一样在线拖拽设计!低代码开发必备,功能涵盖,数据报表、打印设计、图表报表、大屏设计等!秉承“简单、易用、专业”的产品理念......
  • 皕杰报表之预览数据不全
    有时用皕杰报表做设计时,你会发现一个问题,报表工具中预览的数据不全,你仔细的检查了各个方面,发现设计的都没问题,但就是浏览的数据不全。这时你可以将报表部署到服务器上,用浏览......
  • RDLC报表(五)
          随着VisualStudio2005中文版的推出,Microsoft汉化了MSDN的大部分内容,开发者再也不用啃英文了,本来想介绍一下LocalReport的Render方法,现在您可以到http://......
  • JS实现决策报表缓存最后一次查询条件
    问题描述决策报表在打开时希望参数控件的值可以默认是上一次页面关闭前最后一次查询所选择的值。解决方案每次点击查询后将参数值保存到浏览器缓存中(适用于控件在参数......
  • SAP Business Application Studio 里创建一个基于 CAP 模型的最简单的 OData 服务试读
    ​​本教程​​已经花费了24个文章的篇幅,介绍了使用SAPABAPSEGW这个开发工具,开发基于SAPABAP技术栈的OData服务的详细步骤。正如本教程​​目录​​中提到的那......
  • SAP 电商云 Spartacus UI Configurable Product 的页面设置
    关键字CPQ,ProductConfiguration,ProductConfigure,ProductVariant变体是在某些方面彼此不同但基于相同基本模型的产品。变体的一个示例是T恤的颜色和尺寸。在Sparta......
  • SAP 邮件配置
    前提条件:在个人账户的电子邮件账户中添加邮箱名1、RZ10做配置:is/SMTP/virt_host_0  值:  *:25;icm/server_port_1     值:   PROT=SMTP,PORT=25重启SAP服务......
  • SAP ABAP CDS view Association 引入的缘由
    ABAPCDSview支持三种join方式:InnerJoinLeftOuterjoinRightouterjoin我们使用ABAPDevelopmentTool的CDSview向导创建一个CDSview:向导里包含的$......
  • 答网友提问 - SAP Business Technology Platform(BTP) 的计费模式
    我的知识星球有朋友向我提问:S4HANA(本地部署或云版)跟SAP家族系统以及非SAP系统的集成,sap的标准/推荐做法是通过BTP还是直接连接,或者是根据目标系统分别选择?有参考链接......