【ABAP——DAILOG_3】

TABLE CONTROL 控件单元格转换可修改状态

为创建的TableControl控件增加列可修改按钮,设置功能码
在这里插入图片描述
点击按钮表单的第4列可修改

MODULE USER_COMMAND_0130 INPUT.
  OK_CODE = SY-UCOMM.
  CASE OK_CODE .
    WHEN 'MOD_LIN'."地址列可修改
      PERFORM MODIFY_COL.
  ENDCASE.
  SY-UCOMM = OK_CODE.
ENDMODULE.

FORM MODIFY_COL .
  DATA LS_COL LIKE LINE OF TC_SCHL-COLS.
  LOOP AT TC_SCHL-COLS INTO LS_COL.
    IF LS_COL-INDEX = '4'.
      IF LS_COL-SCREEN-INPUT = '1'.
        LS_COL-SCREEN-INPUT = '0'.
      ELSE.
        LS_COL-SCREEN-INPUT = '1'.
      ENDIF.
      MODIFY TC_SCHL-COLS FROM LS_COL.
    ENDIF.
   ENDLOOP.
 ENDFORM.

在这里插入图片描述

界面切换

SET SCREEN < next screen >.
LEAVE SCREEN .

效果等同于

LEAVE TO SCREEN < next screen >.

作用是结束当前屏幕并跳转到指定的下一屏幕

CALL SCREEN < next screen>.

与它们不同,CALL SCREEN是将正在运行的界面挂起,进入next screen,当使用LEAVE TO SCREEN 0时,才能返回原来的界面;而LEAVE TO SCREEN是立即结束本画面的执行,进入next screen,无法再返回原来界面。

F4实现

静态实现

SE11数据字典创建Search Help
在这里插入图片描述
选择基本索引帮助
在这里插入图片描述
设置搜索帮助具体属性,完成后激活保存
在这里插入图片描述

应用F4

  • Data Element中设置关联
    在这里插入图片描述
  • Input/Output Field中设置关联
    在这里插入图片描述
  • 数据元素中域的固定值/数据库中检查表也会实现F4帮助
    在这里插入图片描述
    在这里插入图片描述
  • 为选择界面字段添加搜索帮助
    在这里插入图片描述

动态实现

定义内表实现

  • PROCESSON VALUE-REQUEST定义,POV事件与PBO和PAI事件属于同一层级
PROCESS ON VALUE-REQUEST.
  FIELD GV_ZSNAME MODULE F4_ZSNAME. "F4帮助
  • 使用函数F4IF_INT_TABLE_VALUE_REQUEST
MODULE F4_ZSNAME INPUT.
  CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
    EXPORTING
*     DDIC_STRUCTURE         = ' '
      RETFIELD    = 'ZSNAME'
*     PVALKEY     = ' '
      DYNPPROG    = 'Z36193_05'
      DYNPNR      = '0100'
      DYNPROFIELD = 'GV_ZSNAME'
*     STEPL       =*     WINDOW_TITLE           =
*     VALUE       = ' '
      VALUE_ORG   = 'S'
*     MULTIPLE_CHOICE        = ' '
*     DISPLAY     = ' '
*     CALLBACK_PROGRAM       = ' '
*     CALLBACK_FORM          = ' '
*     CALLBACK_METHOD        =
*     MARK_TAB    =
*   IMPORTING
*     USER_RESET  =
    TABLES
      VALUE_TAB   = GT_SCHOOL
*     FIELD_TAB   =
*     RETURN_TAB  =
*     DYNPFLD_MAPPING        =
   EXCEPTIONS
     PARAMETER_ERROR        = 1
     NO_VALUES_FOUND        = 2
     OTHERS      = 3
    .
  IF SY-SUBRC <> 0.
* Implement suitable error handling here
  ENDIF.
ENDMODULE.

下拉菜单

  • Input/output field属性:是否含有Key显示
    在这里插入图片描述
  • 使用函数VRM_SET_VALUES,在PBO中给List赋值
MODULE DROP_DOWN OUTPUT.
  DATA GT_DROP TYPE VRM_VALUES WITH HEADER LINE.

  CLEAR GT_DROP.
  GT_DROP-KEY = 'A'.
  GT_DROP-TEXT = '销售部'.
  APPEND GT_DROP.

  CLEAR GT_DROP.
  GT_DROP-KEY = 'B'.
  GT_DROP-TEXT = '计划部'.
  APPEND GT_DROP.

  CLEAR GT_DROP.
  GT_DROP-KEY = 'C'.
  GT_DROP-TEXT = '生产部'.
  APPEND GT_DROP.

  CLEAR GT_DROP.
  GT_DROP-KEY = 'D'.
  GT_DROP-TEXT = '工程部'.
  APPEND GT_DROP.

  CALL FUNCTION 'VRM_SET_VALUES'
    EXPORTING
      ID              = 'GV_INPUT2'
      VALUES          = GT_DROP[]
    EXCEPTIONS
      ID_ILLEGAL_NAME = 1
      OTHERS          = 2.
  IF SY-SUBRC <> 0.
* Implement suitable error handling here
  ENDIF.


ENDMODULE.

实现效果
在这里插入图片描述

几个特别的F4函数

  • 日期类型的F4
    函数:F4_DATE
    注意界面中的控件定义为D类型

  • 文件路径的F4
    函数:F4_FILENAME
    界面中的控件定义为RLGRAP-FILENAME

ABAP 中,类 `CL_ABAP_CONV_OUT_CE` 主要用于字符编码转换,特别是在非 Unicode 与 Unicode 系统之间进行数据处理时扮演重要角色。其方法 `GET_BUFFER` 是此类中用于获取转换后数据缓存的核心方法。 ### 方法功能 `GET_BUFFER` 方法的主要作用是返回已经完成编码转换的数据缓冲区内容。通常,在使用 `CL_ABAP_CONV_OUT_CE` 进行编码转换的过程中,数据会先被写入内部缓冲区,经过转换后再通过 `GET_BUFFER` 提取出来。此方法常用于确保输出的数据格式符合目标系统的要求,尤其是在涉及多语言支持或跨系统数据交换的场景中[^1]。 ### 使用方式 以下是一个典型的调用示例: ```abap DATA: lv_input TYPE string VALUE &#39;汪&#39;, lv_output TYPE xstring, lo_converter TYPE REF TO cl_abap_conv_out_ce. lo_converter = cl_abap_conv_out_ce=>create( encoding = &#39;UTF-8&#39; ). lo_converter->write( data = lv_input ). lo_converter->get_buffer( IMPORTING data = lv_output ). ``` 在此代码片段中: - 首先创建了一个编码器实例,并指定目标编码为 UTF-8。 - 接着将输入字符串 `&#39;汪&#39;` 写入编码器。 - 最后调用 `GET_BUFFER` 方法提取转换后的二进制数据(XSTRING)形式的结果。 ### 注意事项 1. **编码设置**:在创建 `CL_ABAP_CONV_OUT_CE` 实例时,必须明确指定目标编码格式。若未正确设置编码,可能导致乱码或不可预期的转换结果[^2]。 2. **缓冲区管理**:多次调用 `WRITE` 方法后,`GET_BUFFER` 返回的是累积的所有转换数据。如需清空缓冲区,应重新创建实例或调用相应清理方法(如有)。 3. **性能考量**:对于大数据量的转换任务,频繁调用 `GET_BUFFER` 可能影响性能。建议合理设计程序逻辑以减少不必要的调用。 ### 常见问题 在实际应用中,可能会遇到诸如字符丢失、乱码等问题。这些问题通常与源/目标系统的编码不一致有关,或是由于某些特殊字符在目标编码体系中不存在所致。此时可通过检查编码配置、验证输入数据完整性等方式进行排查和修复[^2]。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值