根据用户ID获取对应描述
2017-06-13 16:44
295 查看
转载自:http://blog.csdn.net/qinyuezhan/article/details/42100719
有时候我们知道SAP当前用户登录的ID,也就是SY-UNAME,可以取得用户中文名称,如下:
***取得用户中文名称
DATA: g_sheet_jsr TYPE string. "用户中文名称
DATA: L_DEPARTMENT TYPE AD_DPRTMNT,
L_ADDRNUMBER TYPE AD_ADDRNUM,
L_PERSNUMBER TYPE AD_PERSNUM,
L_UNAME TYPE SY-UNAME,
L_NAME_FIRST TYPE AD_NAMEFIR,
L_NAME_LAST TYPE AD_NAMELAS.
***取得用户中文名称
SELECT SINGLE persnumber addrnumber INTO
(l_persnumber, l_addrnumber)
FROM usr21
WHERE bname = SY-UNAME.
IF sy-subrc = 0.
SELECT SINGLE name_first name_last INTO (l_name_first,l_name_last)
FROM adrp
WHERE persnumber = l_persnumber.
IF sy-subrc = 0.
CONCATENATE l_name_last l_name_first INTO g_sheet_jsr.
CONDENSE g_sheet_jsr NO-GAPS. "去掉空格字符
ENDIF.
ENDIF.
write: g_sheet_jsr.
还有一种更加简便的方法就是调用PABI
DATA: G_FULL_NAME TYPE AD_NAMTEXT, "用户中文名称
G_NAME_FIRST TYPE AD_NAMEFIR,
G_NAME_LAST TYPE AD_NAMELAS.
CALL FUNCTION 'FDM_CUST_USER_NAME_READ_SINGLE'
EXPORTING
I_USER_ID = SY-UNAME
IMPORTING
E_FIRSTNAME = G_NAME_FIRST
E_LASTNAME = G_NAME_LAST
* E_FULLNAME =
.
IF SY-SUBRC = 0.
CONCATENATE G_NAME_LAST G_NAME_FIRST INTO G_FULL_NAME .
CONDENSE G_FULL_NAME NO-GAPS. "去掉空格字符
ENDIF.
write: G_FULL_NAME .
HANA中封装成通用格式
TYPES:BEGIN OF ty_usr21,
bname TYPE usr21-bname,
name_text TYPE adrp-name_text,
END OF ty_usr21.
TYPES: tt_usr21 TYPE STANDARD TABLE OF ty_usr21 WITH EMPTY KEY
***方法定义
"用户名
METHODS get_desc_userid
IMPORTING
VALUE(clnt) TYPE sy-mandt
RETURNING VALUE(tt_out) TYPE tt_usr21.
***方法实施
METHOD get_desc_userid BY DATABASE FUNCTION FOR HDB
LANGUAGE SQLSCRIPT
OPTIONS READ-ONLY
USING usr21 adrp.
RETURN
SELECT
a.bname,
b.name_text
from usr21 as a
inner join adrp as b on a.mandt = b.client
and a.persnumber = b.persnumber
where a.mandt = :clnt
AND b.client = :clnt;
ENDMETHOD.
有时候我们知道SAP当前用户登录的ID,也就是SY-UNAME,可以取得用户中文名称,如下:
***取得用户中文名称
DATA: g_sheet_jsr TYPE string. "用户中文名称
DATA: L_DEPARTMENT TYPE AD_DPRTMNT,
L_ADDRNUMBER TYPE AD_ADDRNUM,
L_PERSNUMBER TYPE AD_PERSNUM,
L_UNAME TYPE SY-UNAME,
L_NAME_FIRST TYPE AD_NAMEFIR,
L_NAME_LAST TYPE AD_NAMELAS.
***取得用户中文名称
SELECT SINGLE persnumber addrnumber INTO
(l_persnumber, l_addrnumber)
FROM usr21
WHERE bname = SY-UNAME.
IF sy-subrc = 0.
SELECT SINGLE name_first name_last INTO (l_name_first,l_name_last)
FROM adrp
WHERE persnumber = l_persnumber.
IF sy-subrc = 0.
CONCATENATE l_name_last l_name_first INTO g_sheet_jsr.
CONDENSE g_sheet_jsr NO-GAPS. "去掉空格字符
ENDIF.
ENDIF.
write: g_sheet_jsr.
还有一种更加简便的方法就是调用PABI
DATA: G_FULL_NAME TYPE AD_NAMTEXT, "用户中文名称
G_NAME_FIRST TYPE AD_NAMEFIR,
G_NAME_LAST TYPE AD_NAMELAS.
CALL FUNCTION 'FDM_CUST_USER_NAME_READ_SINGLE'
EXPORTING
I_USER_ID = SY-UNAME
IMPORTING
E_FIRSTNAME = G_NAME_FIRST
E_LASTNAME = G_NAME_LAST
* E_FULLNAME =
.
IF SY-SUBRC = 0.
CONCATENATE G_NAME_LAST G_NAME_FIRST INTO G_FULL_NAME .
CONDENSE G_FULL_NAME NO-GAPS. "去掉空格字符
ENDIF.
write: G_FULL_NAME .
HANA中封装成通用格式
TYPES:BEGIN OF ty_usr21,
bname TYPE usr21-bname,
name_text TYPE adrp-name_text,
END OF ty_usr21.
TYPES: tt_usr21 TYPE STANDARD TABLE OF ty_usr21 WITH EMPTY KEY
***方法定义
"用户名
METHODS get_desc_userid
IMPORTING
VALUE(clnt) TYPE sy-mandt
RETURNING VALUE(tt_out) TYPE tt_usr21.
***方法实施
METHOD get_desc_userid BY DATABASE FUNCTION FOR HDB
LANGUAGE SQLSCRIPT
OPTIONS READ-ONLY
USING usr21 adrp.
RETURN
SELECT
a.bname,
b.name_text
from usr21 as a
inner join adrp as b on a.mandt = b.client
and a.persnumber = b.persnumber
where a.mandt = :clnt
AND b.client = :clnt;
ENDMETHOD.
相关文章推荐
- 根据名称获取对应进程名的ID
- Android根据字符串型的资源名获取对应资源id
- 获取所有用户表及根据表Id取得表字段信息
- CRM的dev(六)--在JS中如何获取到用户id对应的角色用户名
- Android:根据图片的名称获取对应的资源id
- magento中根据用户的id获取用户的所有订单以及每个订单中的物品 以及物品的相关属性
- JQuery - 根据节点获取对应的id,可用于留言板
- ibatis学习之--3、根据id查询对应的用户信息
- 根据用户id获取其所有微博
- shiro-根据JSESSIONID获取用户信息和判断是否登陆
- 根据BDUSS获取用户ID信息
- 7.OAut认证 根据授权码获取用户的ID,SECRET等信息
- linux 根据进程ID获取对应进程的信息
- 根据用户的名字获取名字对应的拼音
- 【根据用户ID获取用户信息】
- asp.net membership 获取用户id ;根据用户id获取membershipuser
- oracle函数学习_根据用户id获取用户角色
- 拆分列(ID的集合)的字符串,根据拆分结果查询所对应ID的名称
- Windows CE如何根据文件名获取其对应文件图标icon
- xml文件的读取---根据XMl文件的ID读取对应的内容