*&---------------------------------------------------------------------* *& 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 陈述之后,程序会停止执行。