ABAP--通过'ARCHIV_CREATE_FILE'上传员工照片(代码摘抄OAOH)

ABAP利用ARCHIV_CREATE_FILE上传员工照片
这段代码演示了如何在SAP ABAP中通过'ARCHIV_CREATE_FILE'函数模块将员工照片上传到指定路径,并提供了一个从文本文件读取员工编号进行批量上传的流程。

1) Store the Photograph of the Employee as the PERNR.JPG (PERNR = EMPLPYEES PERSONNEL NUMBER) at a predifined location.

2) Have a text file with all the pernr for whom you want to upload the photo and the JPGs you have in the folder.

3) Use this Function module with the loop for all the PERNR

* Function module to update Tran OAAD
 
* Create file path (Directory)-(Employee No.).JPG
 
    CONCATENATE 'dir where the file is stored' wa_pernr-pernr '.' 'jpg' INTO lw_path.
************************************************************************
* Copyright 2004 C-Bons Wuhan                                          *
* All Rights Reserved                                                  *
*----------------------------------------------------------------------*
* Program Name : ZHRIPHOTO                                             *
* Project      :  SAP Implementation Project                     *
* Program Title: 照片导入                                              *
* Created by   : DEV01                                                 *
* Created on   : 2007/09/15                                            *
* Version      : 1.0                                &n

<think>首先,用户的问题是关于在ABAP屏幕中使用textedit的set_readonly_mode方法来隐藏文本框。用户提到了参考内容,包括引用[1]、[2]、[3],这些是关于ABAP中长文本处理和GUI控件的内容。 用户的直接查询是:"我想查找在ABAP屏幕中使用textedit->set_readonly_mode时隐藏文本框的方法"。意思是用户想在ABAP屏幕中,当使用CL_GUI_TEXTEDIT的set_readonly_mode方法时,如何隐藏文本框。set_readonly_mode通常用于设置文本框是否可编辑(只读模式),而不是直接隐藏它。 从引用[3]中看到:用户展示了如何根据操作模式(如创建或更改)设置只读模式: - 如果操作是 'CREATE' 或 'CHANGE',设置 readonly_mode = 0(可编辑)。 - 否则,设置 readonly_mode = 1(只读)。 但用户现在想知道如何隐藏文本框,而不是只设置只读。 在ABAP中,CL_GUI_TEXTEDIT控件是GUI控件的一部分。要隐藏一个控件,通常需要使用方法来控制控件的可见性。CL_GUI_TEXTEDIT类中没有直接隐藏的方法;隐藏控件通常是通过其容器或父控件来实现的。 在ABAP Dynpro中,控件如CL_GUI_TEXTEDIT通常嵌入在容器中。要隐藏控件,应该使用set_visible方法或类似的方法来控制其可见性。 回顾类CL_GUI_TEXTEDIT: - 我没有完整的SAP文档,但从标准知识来看,CL_GUI_TEXTEDIT继承自CL_GUI_CONTROL,而CL_GUI_CONTROL有方法来设置可见性。 - 具体来说,CL_GUI_CONTROL类应该有方法SET_VISIBLE来设置控件的可见性。 所以,隐藏文本框的正确方法应该是调用SET_VISIBLE方法,将可见性设置为FALSE。 用户的问题提到了"在使用textedit->set_readonly_mode时",但set_readonly_mode不是用于隐藏的;它是用于只读状态的。所以,我需要解释清楚:隐藏和只读是不同的概念。用户可能混淆了,或者说想在某个条件下既设置只读又隐藏。 我的回答应该: 1. 澄清隐藏和只读的区别。 2. 提供隐藏文本框的方法。 3. 参考用户提供的引用,因为它提到了相关类和方法。 从引用[3]中,有调用set_readonly_mode的例子。但要隐藏,应该使用SET_VISIBLE。 在ABAP中,对于控件,继承层次是: - CL_GUI_TEXTEDIT 继承自 CL_GUI_CONTROL。 - CL_GUI_CONTROL 有方法 SET_VISIBLE ( EXPORTING VISIBLE TYPE ABAP_BOOL ). 所以,要隐藏文本框,代码应该是: CALL METHOD editor->set_visible EXPORTING visible = abap_false. 其中,editor 是 CL_GUI_TEXTEDIT 的实例。 如果用户想在设置只读模式时同时隐藏,他们可以在同一个逻辑中调用 set_visible。 现在,生成相关问题: - 根据系统指令,我需要在回答末尾生成相关问题。 - 相关问题应该基于主题,比如ABAP控件操作、隐藏方法等。 回答结构: - 先用中文清晰地解释。 - 确保语法正确。 - 添加引用标识,如 [^1]、[^2]、[^3],但要自然地引用用户提供的引用。 - 由于用户引用了这些,我应该引用它们来解释。 用户提供的引用: - [^1]: 关于长文本处理和 CL_GUI_TEXTEDIT 方法。 - [^2]: 读取和设置文本的例子。 - [^3]: 设置只读模式的例子。 在我的回答中,我可以提到: - 引用 [^3] 展示了设置只读模式,但隐藏需要使用其他方法。 - 引用 [^1] 和 [^2] 是关于文本处理的上下文。 最终回答: - 解释隐藏文本框的方法。 - 给出示例代码- 生成相关问题。 </think>在 ABAP Dynpro 屏幕中,`CL_GUI_TEXTEDIT` 控件的 `SET_READONLY_MODE` 方法仅用于控制文本框的**可编辑状态**(是否只读),而不是隐藏控件本身。隐藏文本框需要调用 `SET_VISIBLE` 方法(继承自父类 `CL_GUI_CONTROL`),该方法可直接设置控件的可见性。下面我将逐步解释实现方法,并确保回答可靠,参考了您提供的引用内容。 ### 步骤 1:理解 `SET_READONLY_MODE` 与隐藏的区别 - **`SET_READONLY_MODE`**:控制文本框是否可编辑。例如: - `readonly_mode = 0`: 文本框可编辑。 - `readonly_mode = 1`: 文本框只读(内容可见但不可修改)。 这在引用 [^3] 的示例中已有演示(基于操作模式设置只读状态),但它不会隐藏控件。 - **隐藏文本框**:需使用 `SET_VISIBLE` 方法,设置 `visible = abap_false` 使控件完全不可见(包括内容)。这是独立的操作,与只读模式无关。 ### 步骤 2:隐藏文本框的实现方法 在 ABAP 屏幕控制器中,先创建 `CL_GUI_TEXTEDIT` 实例(如在 `PBO` 模块中初始化),然后在需要隐藏时调用 `SET_VISIBLE`。以下是完整示例代码,基于引用 [^3] 的逻辑扩展(假设控件已定义): ```abap DATA: lo_textedit TYPE REF TO cl_gui_textedit. " 声明文本框实例 DATA: gv_operate TYPE string. " 示例变量,代表当前操作模式 " 初始化文本框(通常在 PBO 模块中) IF lo_textedit IS NOT BOUND. CREATE OBJECT lo_textedit EXPORTING parent = cl_gui_container=>screen0. " 绑定到屏幕容器 ENDIF. " 根据条件隐藏或显示文本框(例如在用户操作触发时) IF gv_operate = 'HIDE'. " 当需要隐藏时 " 调用 SET_VISIBLE 方法隐藏控件 CALL METHOD lo_textedit->set_visible EXPORTING visible = abap_false " abap_false 表示隐藏 EXCEPTIONS error_cntl_call_method = 1 invalid_parameter = 2 OTHERS = 3. IF sy-subrc <> 0. " 错误处理(如 MESSAGE 语句) ENDIF. ELSE. " 其他情况下显示控件(visible = abap_true) CALL METHOD lo_textedit->set_visible EXPORTING visible = abap_true. ENDIF. " 可选:同时设置只读状态(如引用 [^3] 的逻辑) IF gv_operate = 'CHANGE'. CALL METHOD lo_textedit->set_readonly_mode EXPORTING readonly_mode = 0. " 可编辑 ELSE. CALL METHOD lo_textedit->set_readonly_mode EXPORTING readonly_mode = 1. " 只读 ENDIF. ``` #### 关键点说明: 1. **方法调用**: - `SET_VISIBLE` 是核心方法,接受参数 `visible`(类型 `ABAP_BOOL`)。 - `abap_false` 隐藏控件,`abap_true` 显示控件。 2. **错误处理**: - 检查 `sy-subrc` 处理异常(如无效参数或调用失败),引用 [^3] 中的错误处理可作为参考。 3. **与只读模式的结合**: - 隐藏和只读可独立使用或组合(例如,先隐藏再显示时恢复只读状态)。 4. **性能注意事项**: - 隐藏操作不会影响文本内容,后续可通过 `GET_TEXT_AS_STREAM` 或 `GET_TEXT_AS_R3TABLE` 读取数据(如引用 [^1] 和 [^2] 中的文本处理逻辑)。 ### 注意事项 - 确保控件已正确绑定到容器(如 `parent` 参数),否则隐藏可能失效。 - 在屏幕生命周期中(如 `PBO` 或事件处理模块)调用方法,避免在无效上下文中操作。 - 本方法适用于所有 ABAP GUI 控件(继承自 `CL_GUI_CONTROL`),引用 [^1] 和 [^3] 中的类层级支持此操作[^1][^3]。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值