转载自: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.