*&---------------------------------------------------------------------*
*& Report ZNOTE_LANGUAGE_TEST
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT znote_language_test.
DATA: ls_t002 TYPE t002,
ls_t002t TYPE t002t,
lv_langs TYPE scplangs,
lv_langu TYPE spras,
lt_ddlb TYPE bsp_wd_dropdown_table,
ls_ddlb TYPE bsp_wd_dropdown_line,
lt_lng TYPE STANDARD TABLE OF t002,
lt_lngt TYPE STANDARD TABLE OF t002t.
***************************************************************************************************
SET LOCALE LANGUAGE 'D'.
WRITE: / sy-subrc.
SELECT * FROM t002 INTO TABLE lt_lng.
SELECT * FROM t002t INTO TABLE lt_lngt WHERE spras = sy-langu.
CALL FUNCTION 'SCP_LANGUAGES_IN_INSTANCE_CP'
IMPORTING
languages = lv_langs.
DO VARYING lv_langu FROM lv_langs(1) NEXT lv_langs+1(1) RANGE lv_langs.
IF lv_langu IS INITIAL.
EXIT.
ENDIF.
READ TABLE lt_lng INTO ls_t002 WITH KEY spras = lv_langu.
IF sy-subrc IS INITIAL.
ls_ddlb-key = ls_t002-laiso.
READ TABLE lt_lngt INTO ls_t002t
WITH KEY sprsl = lv_langu.
IF sy-subrc IS INITIAL.
ls_ddlb-value = ls_t002t-sptxt.
APPEND ls_ddlb TO lt_ddlb.
ENDIF.
ENDIF.
ENDDO.
SORT lt_ddlb BY value ASCENDING.
READ TABLE lt_ddlb WITH KEY value = sy-langu TRANSPORTING NO FIELDS.
WRITE: / sy-subrc.
BREAK-POINT.
该 ABAP 程序的作用是检索并显示系统中可用的语言列表,其中:
- 在程序开始处定义了一些数据对象,如
ls_t002
(T002 数据表的结构),lv_langs
(系统中可用语言的列表)和lt_ddlb
(一个下拉列表的表)。 - 使用
SET LOCALE
语句将系统语言设置为德语。 - 从
t002
数据表中选择所有可用的语言,并将其存储在lt_lng
标准表中。 - 使用
SELECT
语句从t002t
数据表中选择特定语言的名称,并将其存储在lt_lngt
标准表中。 - 使用
SCP_LANGUAGES_IN_INSTANCE_CP
函数检索系统中可用的语言,并将其存储在lv_langs
变量中。 - 对
lv_langs
变量进行循环处理,并在lt_lng
标准表中查找相应的语言条目。 - 如果找到了匹配的语言,则将其语言代码和名称添加到
lt_ddlb
中。 - 对
lt_ddlb
标准表按名称排序。 - 使用
READ TABLE
语句在lt_ddlb
中查找当前系统语言,并将结果存储在sy-subrc
变量中。 - 使用
WRITE
语句输出sy-subrc
变量的值。 - 在
BREAK-POINT
陈述之后,程序会停止执行。