SAP SLT进入HANA

时间:2016-08-05 21:06:33

标签: sap abap slt

我想将SLT数据导入我们的HANA数据仓库。这是一个简单的部分,我可以移动一对一匹配的数据(类型1表)。但我想把它变成2型并保存历史。我在转换中有以下代码,它不会填充更新字段。

// Top of file.
use Carbon\Carbon;

DB::table('table_name)->where('search_date', '<', Carbon::now()->subDay(10));

为什么时间字段不会更新对于插入目标的所有行。

当我尝试在复制期间设置断点以进行调试时,出现以下错误:enter image description here

所以我点击一个,并为每个获得以下内容: enter image description here

所以我去SE38尝试单独激活每一个: enter image description here

我没有在这些附加程序中编写代码,也不了解它们与我编写的INCLUDE的关系。我还在想,由于后台程序没有激活,我写的INCLUDE转换没有执行?

1 个答案:

答案 0 :(得分:0)

以下代码解决了我的问题。

&安培; ------------------------------------------ ---------------------------     *放大器;包括ZAUSP_SLT_TRANSFORM     &安培; --------------------------------------------- ------------------------     * 10-3-2016 ---     *     ************************************************** **********************

STATICS lv_syn_name TYPE tabname.
DATA con_name TYPE dbcon_name.
DATA lv_timestamp TYPE timestampl.
FIELD-SYMBOLS <lv_operation> TYPE any.

FIELD-SYMBOLS: <lt_log_tab>       TYPE table,
               <ls_log_tab>       TYPE any,
               <lv_primary_key_1> TYPE any,
               <lv_primary_key_2> TYPE any,
               <lv_primary_key_3> TYPE any,
               <lv_primary_key_4> TYPE any.
*
*
*
** get operation flag
ASSIGN COMPONENT 'IUUC_OPERAT_FLAG' OF STRUCTURE <wa_s_ausp> TO <lv_operation>.
*
*
IF sy-subrc = 0 AND
   <lv_operation> = 'D'.
*
*
**** replication mode and record was deleted

  IF lv_syn_name IS INITIAL.
*   get synonym name in case of multi use active
    CALL METHOD cl_iuuc_tab_ident_access=>get_ident
      EXPORTING
        iv_mt_id       = _mt_id
        iv_tabname     = _cobj_alias
*       iv_tabname     = 'AUSP'
        iv_system_type = cl_iuuc_tab_ident_access=>co_system_receiver
        iv_ident_type  = cl_iuuc_tab_ident_access=>co_ident_synonym
      IMPORTING
        ev_full_name   = lv_syn_name.
    IF lv_syn_name IS INITIAL.
*     set message
      allog_msg 'E' 'DMC_RT_MSG' '000'
      'Get Synonym Error' space space space 'IL '.
      RAISE stopped_by_rule.
    ENDIF.
  ENDIF.
*
*
*
**** set additional target fields
  GET TIME STAMP FIELD lv_timestamp.
  CONCATENATE _mt_id ':R:R' INTO con_name.

  UPDATE (lv_syn_name) CLIENT SPECIFIED CONNECTION (con_name)
    SET deleted = 'X'
        delete_time = lv_timestamp
        WHERE mandt  = <wa_s_ausp>-mandt
        AND   objek  = <wa_s_ausp>-objek
        AND   atinn  = <wa_s_ausp>-atinn
        AND   atzhl  = <wa_s_ausp>-atzhl
        AND   mafid  = <wa_s_ausp>-mafid
        AND   klart  = <wa_s_ausp>-klart
        AND   adzhl  = <wa_s_ausp>-adzhl.



  IF sy-subrc <> 0.
    DATA(lc_subrc) = sy-subrc.
    DATA lc_ausp TYPE c LENGTH 100.
    CONCATENATE <wa_s_ausp>-mandt  <wa_s_ausp>-objek <wa_s_ausp>-atinn <wa_s_ausp>-atzhl <wa_s_ausp>-mafid <wa_s_ausp>-klart <wa_s_ausp>-adzhl
     INTO lc_ausp SEPARATED BY ','.
*   set message
    allog_msg 'E' 'DMC_RT_MSG' '000'
     'Update Error' space space space 'IL '.
    allog_msg 'E' 'DMC_RT_MSG' '000'
    'Error Details:' lv_syn_name _cobj_alias lc_subrc 'IL '.
    allog_msg 'E' 'DMC_RT_MSG' '000'
   'Table Details:' lc_ausp space space 'IL '.
    RAISE stopped_by_rule.
  ENDIF.

**** do not replicate delete
  skip_record.

ELSEIF sy-subrc = 0 AND <lv_operation> = 'I'.

  GET TIME STAMP FIELD <wa_r_ausp>-insert_time.


ELSEIF sy-subrc = 0 AND <lv_operation> = 'U'.

  GET TIME STAMP FIELD <wa_r_ausp>-update_time.


ELSE.
*Initial load branch
  GET TIME STAMP FIELD  <wa_r_ausp>-insert_time.

ENDIF.