SAP AW01N dump错误解决

运行事务码 AW01N 的时候,SAP 系统 dump,提示如下错误:A row already exists with this key


相关的系统版本是 S4CORE 105。根据 OSS Note 2416765, 造成 dump 的原因是因为主键 SUBTA 重复,解决方法 SAP 提供了两个程序,使用 ZRACORR_RENUM_SUBTA_ANEK_KEY_2 程序检查,使用 ZRACORR_RENUM_SUBTA_FULL_3 程序修复。

以下是 SAP 提供相关程序的代码:

ZRACORR_CHECK_SUBTA_DUPREC_2

*&---------------------------------------------------------------------*
*& Report ZRACORR_CHECK_SUBTA_DUPREC_2
*&---------------------------------------------------------------------*
*& Analysis report for note 2416765.
*&
*& Find duplicate SUBTA on different documents (AWTYP AWREF).
*&
*& Version 2.0
*& due to:
*&  - inital SUBTAs (e.g. settlement line items to other reveicevers - VORGN = AUZF)
*&    were incorrectly considered as dupliacte SUBTA.
*&
*&---------------------------------------------------------------------*
REPORT ZRACORR_CHECK_SUBTA_DUPREC_2.
TABLES ACDOCA.

PARAMETERS:
p_bukrs TYPE bukrs OBLIGATORY,
p_gjahr TYPE gjahr OBLIGATORY.

SELECT-OPTIONS:
so_anln1  FOR acdoca-anln1,
so_poper  FOR acdoca-poper,
so_awtyp  FOR acdoca-awtyp.

TYPES:
BEGIN OF ls_ty_lineitems.
  TYPES: rldnr          TYPE acdoca-rldnr,
         ldgrp          TYPE faat_doc_it-ldgrp,
         belnr          TYPE acdoca-belnr,
         docln          TYPE acdoca-docln,
         statistic_item TYPE abap_bool.
  INCLUDE TYPE faat_doc_it-item_key.
  TYPES: subta_rev      TYPE acdoca-subta_rev,
         awtyp_rev      TYPE acdoca-awtyp_rev,
         aworg_rev      TYPE acdoca-aworg_rev,
         awref_rev      TYPE acdoca-awref_rev,
END OF ls_ty_lineitems,

BEGIN OF ls_ty_anek_key,
  bukrs TYPE bukrs,
  anln1 TYPE anln1,
  anln2 TYPE anln2,
  gjahr TYPE gjahr,
  subta TYPE acdoca-subta,
  awtyp TYPE acdoca-awtyp,
  awref TYPE acdoca-awref,
END OF ls_ty_anek_key.

DATA:
      lt_items_for_repair     TYPE TABLE OF ls_ty_lineitems,
      lt_lineitems            TYPE TABLE OF ls_ty_lineitems,

      ls_key              TYPE ls_ty_anek_key,
      lt_key              TYPE SORTED TABLE OF ls_ty_anek_key
                          WITH UNIQUE KEY bukrs anln1 anln2 gjahr subta. "ANEK key for reporting!

CONSTANTS:
      lc_initial_subta        TYPE acdoca-subta VALUE IS INITIAL,
      lc_initial_afabe        TYPE acdoca-afabe VALUE IS INITIAL.

SELECT rldnr  AS rldnr,
       rldnr~ldgrp AS ldgrp,
       rbukrs AS bukrs,
       belnr  AS belnr,
       docln  AS docln,
       anln1  AS anln1,
       anln2  AS anln2,
       gjahr  AS gjahr,
       awtyp  AS awtyp,
       awref  AS awref,
       aworg  AS aworg,
       awsys  AS awsys,
       subta  AS subta,
       afabe  AS afabe,
       slalittype AS slalittype,
       drcrk  AS drcrk,
       subta_rev AS subta_rev,
       awtyp_rev AS awtyp_rev,
       aworg_rev AS aworg_rev,
       awref_rev AS awref_rev,
       ' '    AS statistic_item
  FROM acdoca AS acdoca
  INNER JOIN faa_rep_ledger AS rldnr
    ON  rldnr~bukrs = acdoca~rbukrs
    AND rldnr~rep_ledger = acdoca~rldnr
    AND rldnr~lead_afabe = acdoca~afabe
  WHERE rbukrs = @p_bukrs
    AND gjahr = @p_gjahr
    AND anln1 IN @so_anln1
    AND poper IN @so_poper
    AND awtyp IN @so_awtyp
    AND subta <> @lc_initial_subta
    AND slalittype <> @if_faa_posting_constants=>gc_slalittype-misc-aci
    AND awtyp <> @if_faa_posting_constants=>gc_awtyp-amdp
    AND NOT (    poper  = @cl_faa_bcf_services=>gc_poper_bcf
              OR movcat = '00' "@if_faa_posting_constants=>gc_classification-bcf-category
              OR anbwa  = @if_faa_posting_constants=>gc_tty-bcf )
  INTO CORRESPONDING FIELDS OF TABLE @lt_lineitems.

SELECT ' '    AS rldnr,
       ldgrp  AS ldgrp,
       bukrs  AS bukrs,
       anln1  AS anln1,
       anln2  AS anln2,
       gjahr  AS gjahr,
       awtyp  AS awtyp,
       awref  AS awref,
       aworg  AS aworg,
       awsys  AS awsys,
       subta  AS subta,
       afabe  AS afabe,
       slalittype AS slalittype,
       drcrk  AS drcrk,
       subta_rev AS subta_rev,
       awtyp_rev AS awtyp_rev,
       aworg_rev AS aworg_rev,
       awref_rev AS awref_rev,
       'X'    AS statistic_item
  FROM faat_doc_it
  WHERE bukrs = @p_bukrs
    AND gjahr = @p_gjahr
    AND anln1 IN @so_anln1
    AND poper IN @so_poper
    AND awtyp IN @so_awtyp
    AND subta <> @lc_initial_subta
    AND slalittype <> @if_faa_posting_constants=>gc_slalittype-misc-aci
    AND awtyp <> @if_faa_posting_constants=>gc_awtyp-amdp
    AND NOT (    poper  = @cl_faa_bcf_services=>gc_poper_bcf
              OR movcat = '00' "@if_faa_posting_constants=>gc_classification-bcf
              OR bwasl  = @if_faa_posting_constants=>gc_tty-bcf )
  APPENDING CORRESPONDING FIELDS OF TABLE @lt_lineitems.

SORT lt_lineitems ASCENDING BY bukrs anln1 anln2 gjahr subta awtyp awref afabe slalittype drcrk.

IF lt_lineitems IS INITIAL.
  WRITE: 'no items found'.
  EXIT.
ENDIF.

LOOP AT lt_lineitems ASSIGNING FIELD-SYMBOL(<ls_item>).
  MOVE-CORRESPONDING <ls_item> TO ls_key.
  INSERT ls_key INTO TABLE lt_key.                  "check SUBTA unique on ANEK key level
  CHECK sy-subrc <> 0.
  READ TABLE lt_key INTO ls_key
    WITH KEY bukrs = <ls_item>-bukrs
             anln1 = <ls_item>-anln1
             anln2 = <ls_item>-anln2
             gjahr = <ls_item>-gjahr
             subta = <ls_item>-subta.
  "we repair only DUPRECS on different documents
  IF sy-subrc = 0 AND ( <ls_item>-awtyp <> ls_key-awtyp OR <ls_item>-awref <> ls_key-awref ).
    APPEND <ls_item> TO lt_items_for_repair.
  ENDIF.
ENDLOOP.

IF lt_items_for_repair IS INITIAL.
  WRITE: 'no items to be repaired'.
  EXIT.
ENDIF.

*******************************************************************
* Output
*******************************************************************
DATA:
      lr_output    TYPE REF TO cl_salv_table,
      lr_columns   TYPE REF TO cl_salv_columns_table,
      lr_column    TYPE REF TO cl_salv_column,
      lr_functions TYPE REF TO cl_salv_functions_list.

TRY.
  CALL METHOD cl_salv_table=>factory
  IMPORTING
    r_salv_table = lr_output
  CHANGING
    t_table      = lt_items_for_repair.
CATCH cx_salv_msg.                                    "#EC NO_HANDLER
ENDTRY.

lr_functions = lr_output->get_functions( ).
lr_functions->set_default( abap_true ).
lr_functions->set_export_localfile( abap_true ).

lr_columns = lr_output->get_columns( ).

TRY.
  lr_column = lr_columns->get_column( 'MANDT' ).
  lr_column->set_visible( abap_false ).
CATCH cx_salv_not_found.                              "#EC NO_HANDLER
ENDTRY.

lr_columns->set_optimize( abap_true ).
lr_output->display( ).

** ZRACORR_RENUM_SUBTA_FULL_3**

*&---------------------------------------------------------------------*
*& Report ZRACORR_RENUM_SUBTA_FULL_3
*&---------------------------------------------------------------------*
*& Modified correction report for note 2416765 for releases
*& 103 and higher.
*& Modification was necessary due to re-naming changes with release 103.
*&
*& Corrects duplicate SUBTA on different documents (AWTYP AWREF).
*&
*& Version 2.0
*& due to:
*&  - incorrect updates on ACDOCA due to XNEGP-logic in FAAV_LINEITEMS
*&  - if document with duplicate SUBTA is a reversal document
*&    SUBTA_REV was not corrected thoroughly in the reversed document
*&  - inital SUBTAs (e.g. settlement line items to other reveicevers - VORGN = AUZF)
*&    were filled with a new SUBTA. Initial SUBTAs should not be filled.
*&    This report corrects only duplicate SUBTAs
*&
*&---------------------------------------------------------------------*
REPORT ZRACORR_RENUM_SUBTA_FULL_3.
TABLES ANLA.

PARAMETERS:
p_bukrs TYPE bukrs OBLIGATORY,
p_gjahr TYPE gjahr OBLIGATORY.

SELECT-OPTIONS:
so_anln1  FOR anla-anln1.

PARAMETERS:
p_test  TYPE flag DEFAULT 'X'.

TYPES:
BEGIN OF ls_ty_lineitems.
  TYPES: rldnr          TYPE acdoca-rldnr,
  ldgrp          TYPE faat_doc_it-ldgrp,
  belnr          TYPE acdoca-belnr,
  docln          TYPE acdoca-docln,
  statistic_item TYPE abap_bool.
  INCLUDE TYPE faat_doc_it-item_key.
  TYPES: subta_rev      TYPE acdoca-subta_rev,
  awtyp_rev      TYPE acdoca-awtyp_rev,
  aworg_rev      TYPE acdoca-aworg_rev,
  awref_rev      TYPE acdoca-awref_rev,
  subta_old      TYPE acdoca-subta,
  subta_rev_old  TYPE acdoca-subta_rev,
  upd_success    TYPE C,
  COLOR          TYPE lvc_t_scol,
END OF ls_ty_lineitems,

BEGIN OF ls_ty_anek_key,
  bukrs TYPE bukrs,
  anln1 TYPE anln1,
  anln2 TYPE anln2,
  gjahr TYPE gjahr,
  subta TYPE acdoca-subta,
  awtyp TYPE acdoca-awtyp,
  awref TYPE acdoca-awref,
END OF ls_ty_anek_key.

DATA:
      lt_items_for_repair         TYPE TABLE OF ls_ty_lineitems,
      lt_items_one_asset          TYPE TABLE OF ls_ty_lineitems,
      lt_items_repair_update      TYPE TABLE OF ls_ty_lineitems,
      lt_items_repair_rev_update  TYPE TABLE OF ls_ty_lineitems,
      lt_items_repair_rev_doc     TYPE TABLE OF ls_ty_lineitems,
      ls_item_repair_rev          TYPE ls_ty_lineitems,
      lt_lineitems                TYPE TABLE OF ls_ty_lineitems,
      lt_output                 TYPE TABLE OF ls_ty_lineitems,

      ls_key              TYPE ls_ty_anek_key,
      lt_key              TYPE SORTED TABLE OF ls_ty_anek_key
      WITH UNIQUE KEY bukrs anln1 anln2 gjahr subta, "ANEK key for reporting!

      lv_last_awtyp       TYPE awtyp,
      lv_last_awref       TYPE awref,
      lv_last_subta       TYPE acdoca-subta,
      lv_last_ldgrp       TYPE bkpf-ldgrp,
      lv_next_subta       TYPE acdoca-subta.

CONSTANTS:
lc_initial_subta        TYPE acdoca-subta VALUE IS INITIAL,
lc_initial_afabe        TYPE acdoca-afabe VALUE IS INITIAL.

SELECT rldnr  AS rldnr,
rldnr~ldgrp AS ldgrp,
rbukrs AS bukrs,
belnr  AS belnr,
docln  AS docln,
anln1  AS anln1,
anln2  AS anln2,
gjahr  AS gjahr,
awtyp  AS awtyp,
awref  AS awref,
aworg  AS aworg,
awsys  AS awsys,
subta  AS subta,
afabe  AS afabe,
slalittype AS slalittype,
drcrk  AS drcrk,
subta_rev AS subta_rev,
awtyp_rev AS awtyp_rev,
aworg_rev AS aworg_rev,
awref_rev AS awref_rev,
' '    AS statistic_item
FROM acdoca AS acdoca
INNER JOIN faa_rep_ledger AS rldnr
ON  rldnr~bukrs = acdoca~rbukrs
AND rldnr~rep_ledger = acdoca~rldnr
AND rldnr~lead_afabe = acdoca~afabe
WHERE rbukrs = @p_bukrs
AND gjahr = @p_gjahr
AND anln1 IN @so_anln1
AND subta <> @lc_initial_subta
AND slalittype <> @if_faa_posting_constants=>gc_slalittype-misc-aci
AND awtyp <> @if_faa_posting_constants=>gc_awtyp-amdp
AND NOT (    poper  = @cl_faa_bcf_services=>gc_poper_bcf
OR movcat = '00' "@if_faa_posting_constants=>gc_classification-bcf-category
OR anbwa  = @if_faa_posting_constants=>gc_tty-bcf )
INTO CORRESPONDING FIELDS OF TABLE @lt_lineitems.

SELECT ' '    AS rldnr,
ldgrp  AS ldgrp,
bukrs  AS bukrs,
anln1  AS anln1,
anln2  AS anln2,
gjahr  AS gjahr,
awtyp  AS awtyp,
awref  AS awref,
aworg  AS aworg,
awsys  AS awsys,
subta  AS subta,
afabe  AS afabe,
slalittype AS slalittype,
drcrk  AS drcrk,
subta_rev AS subta_rev,
awtyp_rev AS awtyp_rev,
aworg_rev AS aworg_rev,
awref_rev AS awref_rev,
'X'    AS statistic_item
FROM faat_doc_it
WHERE bukrs = @p_bukrs
AND gjahr = @p_gjahr
AND anln1 IN @so_anln1
AND subta <> @lc_initial_subta
AND slalittype <> @if_faa_posting_constants=>gc_slalittype-misc-aci
AND awtyp <> @if_faa_posting_constants=>gc_awtyp-amdp
AND NOT (    poper  = @cl_faa_bcf_services=>gc_poper_bcf
OR movcat = '00' "@if_faa_posting_constants=>gc_classification-bcf
OR bwasl  = @if_faa_posting_constants=>gc_tty-bcf )
APPENDING CORRESPONDING FIELDS OF TABLE @lt_lineitems.

SORT lt_lineitems ASCENDING BY bukrs anln1 anln2 gjahr subta awtyp awref afabe slalittype drcrk.

IF lt_lineitems IS INITIAL.
  WRITE: 'no items found'.
  EXIT.
ENDIF.

LOOP AT lt_lineitems ASSIGNING FIELD-SYMBOL(<ls_item>).
  MOVE-CORRESPONDING <ls_item> TO ls_key.
  INSERT ls_key INTO TABLE lt_key.                  "check SUBTA unique on ANEK key level
  CHECK sy-subrc <> 0.
  READ TABLE lt_key INTO ls_key
  WITH KEY bukrs = <ls_item>-bukrs
  anln1 = <ls_item>-anln1
  anln2 = <ls_item>-anln2
  gjahr = <ls_item>-gjahr
  subta = <ls_item>-subta.
  "we repair only DUPRECS on different documents
  IF sy-subrc = 0 AND ( <ls_item>-awtyp <> ls_key-awtyp OR <ls_item>-awref <> ls_key-awref ).
    APPEND <ls_item> TO lt_items_for_repair.
  ENDIF.
ENDLOOP.

IF lt_items_for_repair IS INITIAL.
  WRITE: 'no items to be repaired'.
  EXIT.
ENDIF.



SORT lt_items_for_repair BY bukrs anln1 anln2 gjahr subta awtyp awref ldgrp afabe.
LOOP AT lt_items_for_repair ASSIGNING FIELD-SYMBOL(<ls_item_repair>)
GROUP BY ( key1 = <ls_item_repair>-anln1 key2 = <ls_item_repair>-anln2 ) REFERENCE INTO DATA(lr_one_asset).
  CLEAR:  lt_items_one_asset,
  lv_last_subta,
  lv_last_ldgrp,
  lv_last_awtyp,
  lv_last_awref,
  lv_next_subta,
  ls_item_repair_rev,
  lt_items_repair_rev_doc.

  lt_items_one_asset = VALUE #( FOR <line> IN GROUP lr_one_asset ( <line> ) ).
  DATA(mo_asset) = cl_faa_mdo_factory_static=>get_instance_root(
        iv_comp_code    = p_bukrs
        iv_asset_no     = lt_items_one_asset[ 1 ]-anln1
        iv_asset_subno  = lt_items_one_asset[ 1 ]-anln2
        iv_mode         = if_faa_frw_constants=>gc_mode-UPDATE ).

  SORT lt_items_one_asset BY subta awtyp awref ldgrp afabe.
  LOOP AT lt_items_one_asset ASSIGNING <ls_item_repair>.
    IF lv_last_subta <> <ls_item_repair>-subta
    OR lv_last_ldgrp <> <ls_item_repair>-ldgrp
    OR lv_last_awtyp <> <ls_item_repair>-awtyp
    OR lv_last_awref <> <ls_item_repair>-awref.
      lv_last_awtyp = <ls_item_repair>-awtyp.
      lv_last_awref = <ls_item_repair>-awref.
      lv_last_ldgrp = <ls_item_repair>-ldgrp.
      lv_last_subta = <ls_item_repair>-subta.
      lv_next_subta = mo_asset->mo_item_manager->get_next_seqno( p_gjahr ).
      CHECK <ls_item_repair>-subta NE lv_next_subta.

      "repair correspondig SUBTA_REV of reversed document
      IF <ls_item_repair>-subta_rev IS NOT INITIAL.
        CLEAR lt_items_repair_rev_doc.
        LOOP AT lt_lineitems ASSIGNING FIELD-SYMBOL(<ls_item_repair_rev>)
        WHERE bukrs = <ls_item_repair>-bukrs
        AND anln1 = <ls_item_repair>-anln1
        AND anln2 = <ls_item_repair>-anln2
        AND gjahr = <ls_item_repair>-gjahr
        AND subta = <ls_item_repair>-subta_rev
        AND awtyp = <ls_item_repair>-awtyp_rev
        AND awref = <ls_item_repair>-awref_rev
        AND aworg = <ls_item_repair>-aworg_rev.
          CLEAR ls_item_repair_rev.

          IF <ls_item_repair_rev>-subta_rev <> <ls_item_repair>-subta.
            "no correction if subta reference is not correct in the document
            CLEAR lt_items_repair_rev_doc.
            EXIT.
          ENDIF.
          MOVE-CORRESPONDING <ls_item_repair_rev> TO ls_item_repair_rev.
          ls_item_repair_rev-subta_rev_old = ls_item_repair_rev-subta_rev.
          ls_item_repair_rev-subta_rev     = lv_next_subta.
          APPEND ls_item_repair_rev TO lt_items_repair_rev_doc.
        ENDLOOP.
        IF lt_items_repair_rev_doc IS NOT INITIAL.
          APPEND LINES OF lt_items_repair_rev_doc TO lt_items_repair_rev_update.
        ENDIF.
      ENDIF.
    ENDIF.

    <ls_item_repair>-subta_old = <ls_item_repair>-subta.
    <ls_item_repair>-subta     = lv_next_subta.
  ENDLOOP.
  APPEND LINES OF lt_items_one_asset TO lt_items_repair_update.
ENDLOOP.


IF p_test IS INITIAL.
  LOOP AT lt_items_repair_update ASSIGNING <ls_item_repair>.
    IF <ls_item_repair>-statistic_item = abap_false.
      UPDATE acdoca SET subta = <ls_item_repair>-subta
      WHERE rldnr  EQ <ls_item_repair>-rldnr
      AND rbukrs EQ <ls_item_repair>-bukrs
      AND gjahr  EQ <ls_item_repair>-gjahr
      AND belnr  EQ <ls_item_repair>-belnr
      AND docln  EQ <ls_item_repair>-docln.
      IF sy-subrc = 0.
        <ls_item_repair>-upd_success = 'X'.
      ENDIF.
    ELSE.
      UPDATE faat_doc_it SET subta = <ls_item_repair>-subta
      WHERE bukrs  EQ <ls_item_repair>-bukrs
      AND anln1  EQ <ls_item_repair>-anln1
      AND anln2  EQ <ls_item_repair>-anln2
      AND gjahr  EQ <ls_item_repair>-gjahr
      AND awtyp  EQ <ls_item_repair>-awtyp
      AND awref  EQ <ls_item_repair>-awref
      AND aworg  EQ <ls_item_repair>-aworg
      AND awsys  EQ <ls_item_repair>-awsys
      AND subta  EQ <ls_item_repair>-subta_old
      AND afabe  EQ <ls_item_repair>-afabe
      AND slalittype EQ <ls_item_repair>-slalittype
      AND drcrk  EQ <ls_item_repair>-drcrk.
      IF sy-subrc = 0.
        <ls_item_repair>-upd_success = 'X'.
      ENDIF.
    ENDIF.
  ENDLOOP.

  IF lt_items_repair_rev_update IS NOT INITIAL.
    LOOP AT lt_items_repair_rev_update ASSIGNING <ls_item_repair>.
      IF <ls_item_repair>-statistic_item = abap_false.
        UPDATE acdoca SET subta_rev = <ls_item_repair>-subta_rev
        WHERE rldnr  EQ <ls_item_repair>-rldnr
        AND rbukrs EQ <ls_item_repair>-bukrs
        AND gjahr  EQ <ls_item_repair>-gjahr
        AND belnr  EQ <ls_item_repair>-belnr
        AND docln  EQ <ls_item_repair>-docln.
        IF sy-subrc = 0.
          <ls_item_repair>-upd_success = 'X'.
        ENDIF.
      ELSE.
        UPDATE faat_doc_it SET subta_rev = <ls_item_repair>-subta_rev
        WHERE bukrs  EQ <ls_item_repair>-bukrs
        AND anln1  EQ <ls_item_repair>-anln1
        AND anln2  EQ <ls_item_repair>-anln2
        AND gjahr  EQ <ls_item_repair>-gjahr
        AND awtyp  EQ <ls_item_repair>-awtyp
        AND awref  EQ <ls_item_repair>-awref
        AND aworg  EQ <ls_item_repair>-aworg
        AND awsys  EQ <ls_item_repair>-awsys
        AND subta  EQ <ls_item_repair>-subta
        AND afabe  EQ <ls_item_repair>-afabe
        AND slalittype EQ <ls_item_repair>-slalittype
        AND drcrk  EQ <ls_item_repair>-drcrk.
        IF sy-subrc = 0.
          <ls_item_repair>-upd_success = 'X'.
        ENDIF.
      ENDIF.
    ENDLOOP.
  ENDIF.
  COMMIT WORK.
ENDIF.

*******************************************************************
* Output
*******************************************************************
DATA:
      lr_output    TYPE REF TO cl_salv_table,
      lr_columns   TYPE REF TO cl_salv_columns_table,
      lr_column    TYPE REF TO cl_salv_column,
      lr_functions TYPE REF TO cl_salv_functions_list,
      ls_color_new TYPE lvc_s_scol,
      ls_color_old TYPE lvc_s_scol.

ls_color_new-fname     = 'SUBTA'.
ls_color_new-COLOR-col = col_positive.
ls_color_old-fname     = 'SUBTA_OLD'.
ls_color_old-COLOR-col = COL_NEGATIVE.
LOOP AT lt_items_repair_update ASSIGNING <ls_item_repair>.
  APPEND ls_color_new TO <ls_item_repair>-COLOR.
  APPEND ls_color_old TO <ls_item_repair>-COLOR.
ENDLOOP.

ls_color_new-fname     = 'SUBTA_REV'.
ls_color_new-COLOR-col = col_positive.
ls_color_old-fname     = 'SUBTA_REV_OLD'.
ls_color_old-COLOR-col = COL_NEGATIVE.
LOOP AT lt_items_repair_rev_update ASSIGNING <ls_item_repair_rev>.
  APPEND ls_color_new TO <ls_item_repair_rev>-COLOR.
  APPEND ls_color_old TO <ls_item_repair_rev>-COLOR.
ENDLOOP.

APPEND LINES OF lt_items_repair_update TO lt_output.
APPEND LINES OF lt_items_repair_rev_update TO lt_output.

TRY.
  CALL METHOD cl_salv_table=>factory
  IMPORTING
    r_salv_table = lr_output
  CHANGING
    t_table      = lt_output.
CATCH cx_salv_msg.                                    "#EC NO_HANDLER
ENDTRY.

lr_functions = lr_output->get_functions( ).
lr_functions->set_default( abap_true ).
lr_functions->set_export_localfile( abap_true ).

lr_columns = lr_output->get_columns( ).

TRY.
  lr_column = lr_columns->get_column( 'MANDT' ).
  lr_column->set_visible( abap_false ).
CATCH cx_salv_not_found.                              "#EC NO_HANDLER
ENDTRY.
TRY.
  lr_column = lr_columns->get_column( 'UPD_SUCCESS' ).
  lr_column->set_short_text( 'UPDATED' ).
CATCH cx_salv_not_found.                              "#EC NO_HANDLER
ENDTRY.
TRY.
  lr_column = lr_columns->get_column( 'STATISTIC_ITEM' ).
  lr_column->set_medium_text( 'Statistic Item' ).
CATCH cx_salv_not_found.                              "#EC NO_HANDLER
ENDTRY.
TRY.
  lr_column = lr_columns->get_column( 'SUBTA' ).
  lr_column->set_short_text( 'SUBTA' ).
  lr_column->set_medium_text( 'SUBTA' ).
  lr_column->set_long_text( 'SUBTA' ).
CATCH cx_salv_not_found.                              "#EC NO_HANDLER
ENDTRY.
TRY.
  lr_column = lr_columns->get_column( 'SUBTA_REV' ).
  lr_column->set_short_text( 'SUBTA_REV' ).
  lr_column->set_medium_text( 'SUBTA_REV' ).
  lr_column->set_long_text( 'SUBTA_REV' ).
CATCH cx_salv_not_found.                              "#EC NO_HANDLER
ENDTRY.
TRY.
  lr_column = lr_columns->get_column( 'SUBTA_OLD' ).
  lr_column->set_short_text( 'Old SUBTA' ).
  lr_column->set_medium_text( 'Old SUBTA' ).
  lr_column->set_long_text( 'Old SUBTA' ).
CATCH cx_salv_not_found.                              "#EC NO_HANDLER
ENDTRY.
TRY.
  lr_column = lr_columns->get_column( 'SUBTA_REV_OLD' ).
  lr_column->set_short_text( 'Old REV' ).
  lr_column->set_medium_text( 'Old SUBTA_REV' ).
  lr_column->set_long_text( 'Old SUBTA_REV' ).
CATCH cx_salv_not_found.                              "#EC NO_HANDLER
ENDTRY.

lr_columns->set_column_position(  columnname = 'UPD_SUCCESS'
POSITION   = 1 ).
lr_columns->set_color_column('COLOR').
lr_columns->set_optimize( abap_true ).
lr_output->display( ).

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值