TABLE CONTROL 跳页代码

本文介绍了如何在SAP中实现TABLE CONTROL的跳页功能,包括跳转到第一页、上一页、下一页和最后一页的代码实现。通过调用COMPUTE_SCROLLING_IN_TC形式,根据传入的TABLE CONTROL名称和按钮功能码进行屏幕滚动操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

      TABLE CONTROL 跳转代码总结,TABLE CONTROL的名字是SCR_RESULT,

屏幕上分别有四个按钮:第一页,上一页,下一页和最后一页

 定义全局变量:

DATA:  G_SCR_RESULT_LINES  LIKE SY-LOOPC.

在屏幕PBO里面设置G_SCR_RESULT_LINES  的值:

PROCESS BEFORE OUTPUT.

...

LOOP AT   SCREEN_RESULT
       INTO SCREEN_RESULT
       WITH CONTROL SCR_RESULT
       CURSOR SCR_RESULT-CURRENT_LINE.
    MODULE SET_4103_TC_LINES.
*&SPWIZARD:   MODULE SCR_RESULT_CHANGE_FIELD_ATTR
  ENDLOOP.

...

 

MODULE SET_4103_TC_LINES OUTPUT.
  G_SCR_RESULT_LINES = SY-LOOPC.
ENDMODULE.  

...

 

以下就是详细调用代码:

 "跳到第一页

PERFORM COMPUTE_SCROLLING_IN_TC USING  'SCR_RESULT' 'P--'.

 "跳到上一页

PERFORM COMPUTE_SCROLLING_IN_TC USING  'SCR_RESULT' 'P-'.

 "跳到下一页

PERFORM COMPUTE_SCROLLING_IN_TC USING  'SCR_RESULT' 'P+'.

 "跳到最后一页

PERFORM COMPUTE_SCROLLING_IN_TC USING  'SCR_RESULT' 'P++'.

 

"跳转代码

"说明: P_TC_NAME   -- TABLE CONTROL的名字 

"             P_OK -- 屏幕跳转按钮的功能码

"                            固定值:P-- (第一页)     P- (上一页)

"                                             P+  (下一页)    p++(最后一页)

FORM COMPUTE_SCROLLING_IN_TC USING    P_TC_NAME   P_OK.

  DATA L_TC_NEW_TOP_LINE     TYPE I.
  DATA L_TC_NAME             LIKE FELD-NAME.
  DATA L_TC_LINES_NAME       LIKE FELD-NAME.
  DATA L_TC_FIELD_NAME       LIKE FELD-NAME.
  DATA:     L_SCR_RESULT_LINES  LIKE SY-LOOPC.
  FIELD-SYMBOLS <TC>         TYPE CXTAB_CONTROL.
  FIELD-SYMBOLS <LINES>      TYPE I.

  ASSIGN (P_TC_NAME) TO <TC>.
  CONCATENATE 'L_' P_TC_NAME '_LINES' INTO L_TC_LINES_NAME.
  ASSIGN (L_TC_LINES_NAME) TO <LINES>.

  IF <TC>-LINES = 0.

    L_TC_NEW_TOP_LINE = 1.
  ELSE.

    CALL FUNCTION 'SCROLLING_IN_TABLE'
         EXPORTING
              ENTRY_ACT             = <TC>-TOP_LINE
              ENTRY_FROM            = 1
              ENTRY_TO              = <TC>-LINES
              LAST_PAGE_FULL        = 'X'
              LOOPS                 = <LINES>
              OK_CODE               = P_OK
              OVERLAPPING           = 'X'
         IMPORTING
              ENTRY_NEW             = L_TC_NEW_TOP_LINE
         EXCEPTIONS
              OTHERS                = 0.
  ENDIF.

  GET CURSOR FIELD L_TC_FIELD_NAME
             AREA  L_TC_NAME.

  IF SYST-SUBRC = 0.
    IF L_TC_NAME = P_TC_NAME.
      SET CURSOR FIELD L_TC_FIELD_NAME LINE 1.
    ENDIF.
  ENDIF.

  <TC>-TOP_LINE = L_TC_NEW_TOP_LINE.

ENDFORM.

<think>嗯,用户问的是在Informatica执行工作流时,如何在插入数据时遇到错误行跳过。我需要先回想一下Informatica的错误处理机制。记得Informatica的工作流里,可以通过配置会话属性来处理错误。 首先,用户可能是在数据加载时遇到了错误,导致整个任务失败,他们希望跳过错误行继续处理。这时候,应该指导他们设置错误阈值。错误阈值允许在达到指定错误数量前继续运行,超过则失败。需要告诉他们在哪里设置这个参数,比如会话属性的映射标签页里的“Target Load Plan”部分,或者旧版本可能在Config Object里。 然后,错误日志的位置也很重要,用户需要知道在哪里查看被跳过的错误行,一般是会话日志文件或者工作流的日志目录。此外,使用错误表(Error Tables)也是一个方法,可以配置目标表关联错误表,这样错误记录会被保存下来,而不是导致任务失败。 另外,可能还需要提到事务控制,比如设置提交间隔,避免因为某个错误回滚整个事务。还有在映射中使用路由器转换,主动将错误行导向其他处理流程,这样也能避免中断主流程。 用户可能不太清楚具体的步骤,所以需要分点说明,确保每个配置的位置和操作都详细。同时,要提醒他们设置合理的错误阈值,避免忽略太多错误,影响数据质量。最后,建议他们检查错误日志,分析错误原因,确保数据处理的准确性。</think>在Informatica中执行工作流时,若需要在插入数据时跳过错误行,可通过以下步骤配置错误处理机制: --- ### **一、设置错误阈值(Error Threshold)** 1. 打开**会话任务(Session Task)**属性 2. 进入 **Mapping** 标签页 3. 找到 **Target Load Plan** 部分 - 设置 **"Stop on errors"** 的值为允许的最大错误行数 - 示例:设置为 `1000` 表示允许前1000行错误后任务才停止 > 💡 若设置为 `0`,则遇到第一个错误立即停止;设置为 `-1` 表示忽略所有错误(慎用) --- ### **二、配置错误日志(Error Logging)** 1. 在会话属性中启用错误日志记录: - 勾选 **"Save session log file"** 和 **"Save session reject file"** 2. 错误行会记录在: - **Session Log File**:包含错误详细信息 - **Reject File**(如配置了平面文件目标):存储被跳过的错误行数据 --- ### **三、使用错误表(Error Tables)** 1. 对于关系型数据库目标(如Oracle/SQL Server): - 在目标表属性中勾选 **"Enable Error Logging"** - 关联一个错误表(Error Table),自动捕获错误行的数据和错误代码 ```sql -- 示例:Oracle错误表结构 CREATE TABLE ERR_<目标表名> ( ERR_TIMESTAMP TIMESTAMP, ERR_CODE NUMBER, ERR_MESSAGE VARCHAR2(1000), -- 包含原始表所有字段 ); ``` --- ### **四、事务控制(Transaction Control)** 1. 在会话属性中设置提交间隔: - **Commit Interval**:每N行提交一次(避免因单行错误回滚整个事务) - **Commit On End Of File**:仅在文件结束时提交(根据需求选择) --- ### **五、高级处理:路由器转换(Router Transformation)** 若需主动过滤错误行: 1. 在映射中添加 **Router Transformation** 2. 定义过滤条件(如 `ISNULL(字段)` 或自定义错误规则) 3. 将错误行路由到独立的目标/文件进行分析 --- ### **注意事项** - 错误跳过可能导致数据丢失,建议配合日志分析根本原因 - 对于关键数据,推荐使用错误表而非完全跳过 - 测试时使用 **"Test Load"** 功能验证错误处理逻辑 通过以上配置,Informatica可在遇到错误行时跳过并继续执行,同时保留错误信息供后续分析。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值