среда, 13 января 2016 г.

PRTE в замещениях.

  DATA ls_prte TYPE prteb.
  DATA lv_index TYPE sy-tabix.

  CALL FUNCTION 'CJDT_PRTE_GET'
    EXPORTING
      proj_imp  proj-pspnr
      prps_imp  prps-pspnr
    IMPORTING
      prte_exp  ls_prte
      index_exp lv_index.

  IF lv_index IS INITIAL.
    CALL FUNCTION 'CJDT_TRTAB_CREATE'
      EXPORTING
        projwa proj
      EXCEPTIONS
        OTHERS 1.
    CALL FUNCTION 'CJDT_PRTE_GET'
      EXPORTING
        proj_imp  proj-pspnr
        prps_imp  prps-pspnr
      IMPORTING
        prte_exp  ls_prte
        index_exp lv_index.
  ENDIF.

  CHECK lv_index IS NOT INITIAL.
  CHECK ls_prte-pstrt NE proj-plfaz OR
        ls_prte-pende NE proj-plsez OR
        ls_prte-estrt NE proj-sprog OR
        ls_prte-eende NE proj-eprog.

  ls_prte-pstrt proj-plfaz.
  ls_prte-pende proj-plsez.
  ls_prte-estrt proj-sprog.
  ls_prte-eende proj-eprog.

  CALL FUNCTION 'CJDT_PRTE_MODIFY'
    EXPORTING
      index_imp lv_index
      prte_imp  ls_prte
    EXCEPTIONS
      OTHERS    1.

* check and save dates
  CALL FUNCTION 'CJTR_POST_DATES'
    EXCEPTIONS
      sched_wrong    1
      check_top_down 2
      OTHERS         3.
  IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
            WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
    EXIT.
  ENDIF.

понедельник, 2 июля 2012 г.

Easy report for update position in FI document

*&---------------------------------------------------------------------*
*& Report  ZSIT_VAT_XREF_UPDATE
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT  zsit_vat_xref_update.

TABLES bkpf.
TABLES bseg.

TYPE-POOLS slis.
TYPE-POOLS icon.

DATA gt_alv                       TYPE TABLE OF zssit_vat_xref_update.
DATA gs_alv                       TYPE zssit_vat_xref_update.

DATA:   bdcdata LIKE bdcdata    OCCURS WITH HEADER LINE.

FIELD-SYMBOLS                TYPE zssit_vat_xref_update.
**********************************************************************
SELECTION-SCREEN BEGIN OF BLOCK bl1 WITH FRAME TITLE text-bl1.

PARAMETERS p_bukrs TYPE bkpf-bukrs OBLIGATORY MEMORY ID buk.
SELECT-OPTIONS s_gjahr FOR bseg-gjahr OBLIGATORY MEMORY ID gjr.
SELECT-OPTIONS s_hkont FOR bseg-hkont.
SELECT-OPTIONS s_belnr FOR bseg-belnr.

SELECTION-SCREEN END OF BLOCK bl1.
**********************************************************************
START-OF-SELECTION.
**********************************************************************
  PERFORM select_data.
**********************************************************************
END-OF-SELECTION.
**********************************************************************
  IF gt_alv[] IS INITIAL.
    MESSAGE 'No data for selection conditions' TYPE 'S'.
    EXIT.
  ENDIF.
  PERFORM display_data.
**********************************************************************

*&---------------------------------------------------------------------*
*&      Form  SELECT_DATA
*&---------------------------------------------------------------------*
*       Select data
*----------------------------------------------------------------------*
FORM select_data .

  DATA lv_datum                   TYPE bkpf-budat.

  CLEAR gt_alv[].
* Select open items
  SELECT *
    INTO CORRESPONDING FIELDS OF TABLE gt_alv
    FROM bsis
    WHERE bukrs EQ p_bukrs
      AND hkont IN s_hkont
      AND gjahr IN s_gjahr
      AND belnr IN s_belnr
      AND mwskz NE ''
      AND mwskz NE '**'.
* Get add data from BSEG
  LOOP AT gt_alv ASSIGNING .
* Check Cancel docs
    SELECT SINGLE belnr
      INTO -belnr
      FROM bkpf
      WHERE bukrs EQ -bukrs
        AND belnr EQ -belnr
        AND gjahr EQ -gjahr
        AND stblg NE ''.
    IF sy-subrc EQ 0.
      DELETE gt_alv.
      CONTINUE.
    ENDIF.
* Current XREF1
    SELECT SINGLE xref1
      INTO -xref1
      FROM bseg
      WHERE bukrs EQ -bukrs
        AND belnr EQ -belnr
        AND gjahr EQ -gjahr
        AND buzei EQ -buzei
        AND koart EQ 'K'.
* Check XREF1
    IF STRLEN-xref1 NE OR -xref1(6CN '0123456789'.
      DELETE gt_alv.
      CONTINUE.
    ELSE.
      " Check date
      CLEAR lv_datum.
      CONCATENATE '20' -xref1(6)
             INTO lv_datum.
      ADD TO lv_datum.
      SUBTRACT FROM lv_datum.
      IF lv_datum IS INITIAL.
        DELETE gt_alv.
        CONTINUE.
      ENDIF.
    ENDIF.
* Correct new XREF1
    PERFORM get_new_xref1 USING .
  ENDLOOP.
*
ENDFORM.                    " SELECT_DATA
*&---------------------------------------------------------------------*
*&      Form  DISPLAY_DATA
*&---------------------------------------------------------------------*
*       Output
*----------------------------------------------------------------------*
FORM display_data .

  DATA ls_layout                  TYPE lvc_s_layo.

  ls_layout-cwidth_opt 'X'.
  ls_layout-box_fname 'CBOX'.

  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
    EXPORTING
      i_callback_program       sy-repid
      i_callback_pf_status_set 'CALLBACK_PF_STATUS_SET'
      i_callback_user_command  'CALLBACK_USER_COMMAND'
      i_structure_name         'ZSSIT_VAT_XREF_UPDATE'
      is_layout_lvc            ls_layout
      i_save                   'A'
    TABLES
      t_outtab                 gt_alv
    EXCEPTIONS
      program_error            1
      OTHERS                   2.
  IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
            WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.


ENDFORM.                    " DISPLAY_DATA
*&---------------------------------------------------------------------*
*&      Form  CALLBACK_USER_COMMAND
*&---------------------------------------------------------------------*
*       User command
*----------------------------------------------------------------------*
FORM callback_user_command USING command LIKE sy-ucomm
                  selfield TYPE slis_selfield.

  CASE command.
**********************************************************************
    WHEN '&IC1'" Double click
**********************************************************************
      READ TABLE gt_alv ASSIGNING  INDEX selfield-tabindex.
      CHECK sy-subrc EQ 0.
      CASE selfield-fieldname.
        WHEN 'BELNR'.
          SET PARAMETER ID 'BLN' FIELD -belnr.
          SET PARAMETER ID 'BUK' FIELD -bukrs.
          SET PARAMETER ID 'GJR' FIELD -gjahr.
          CALL TRANSACTION 'FB03' AND SKIP FIRST SCREEN.
      ENDCASE.
**********************************************************************
    WHEN '&XREF'" Change XREF1
      PERFORM change_xref1.
      selfield-refresh 'X'.
  ENDCASE.
ENDFORM.                    "CALLBACK_USER_COMMAND
*&---------------------------------------------------------------------*
*&      Form  CALLBACK_PF_STATUS_SET
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM callback_pf_status_set USING rt_extab TYPE slis_t_extab.
  SET PF-STATUS 'STANDARD_FULLSCREEN'.
ENDFORM"CALLBACK_PF_STATUS_SET
*&---------------------------------------------------------------------*
*&      Form  change_xref1
*&---------------------------------------------------------------------*
*       change_xref1
*----------------------------------------------------------------------*
FORM change_xref1 .

  DATA ls_bseg                    TYPE bseg.
  DATA lt_mess                    TYPE TABLE OF bdcmsgcoll.
  DATA ls_mess                    TYPE bdcmsgcoll.
* Change

  LOOP AT gt_alv ASSIGNING  WHERE cbox IS NOT INITIAL.

    CLEAR bdcdataREFRESH bdcdata.
    CLEAR lt_mess[].

    PERFORM bdc_dynpro USING 'SAPMF05L' '100'.
    PERFORM bdc_field  USING 'RF05L-BELNR'  -belnr.
    PERFORM bdc_field  USING 'RF05L-BUKRS'  -bukrs.
    PERFORM bdc_field  USING 'RF05L-GJAHR'  -gjahr.
    PERFORM bdc_field  USING 'BDC_OKCODE'   '/00'.

    PERFORM bdc_dynpro USING 'SAPMF05L' '700'.
    PERFORM bdc_field  USING 'BDC_OKCODE'   'ABZL'.

    PERFORM bdc_dynpro USING 'SAPMF05L' '1130'.
    PERFORM bdc_field  USING 'RF05L-BUZEI'  -buzei.
    PERFORM bdc_dynpro USING 'SAPMF05L' '700'.
    PERFORM bdc_field  USING 'BDC_CURSOR'   'RF05L-ANZDT(01)'.
    PERFORM bdc_field  USING 'BDC_OKCODE'   'PK'.

    PERFORM bdc_dynpro USING 'SAPMF05L' '302'.
    PERFORM bdc_field  USING 'BDC_OKCODE'   '=ZK'.

    PERFORM bdc_dynpro USING 'SAPMF05L' '1302'.
    PERFORM bdc_field  USING 'BSEG-XREF1'   -xref1_new.
    PERFORM bdc_field  USING 'BDC_OKCODE'   '=ENTR'.

    PERFORM bdc_dynpro USING 'SAPMF05L' '302'.
    PERFORM bdc_field  USING 'BDC_OKCODE'   'AB'.

    PERFORM bdc_dynpro USING 'SAPMF05L' '700'.
    PERFORM bdc_field  USING 'BDC_OKCODE'   '/11'.

    PERFORM bdc_transaction TABLES lt_mess
                            USING  'FB02' 'X' 'N' 'S'.

    READ TABLE lt_mess INTO ls_mess WITH KEY msgid 'F5' msgnr =  '300'.
    IF sy-subrc EQ 0.
      -status icon_led_green.
    ELSE.
      -status icon_led_red.
    ENDIF.

  ENDLOOP.
  IF sy-subrc NE 0.
    MESSAGE 'Select positions' TYPE 'I'.
    RETURN.
  ENDIF.
**********************************************************************

ENDFORM.                    " change_xref1
*&---------------------------------------------------------------------*
*&      Form  GET_NEW_XREF1
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM get_new_xref1  USING  ps_alv TYPE zssit_vat_xref_update.

ENDFORM.                    " GET_NEW_XREF1
*----------------------------------------------------------------------*
*        Start new screen                                              *
*----------------------------------------------------------------------*
FORM bdc_dynpro USING program dynpro.
  CLEAR bdcdata.
  bdcdata-program  program.
  bdcdata-dynpro   dynpro.
  bdcdata-dynbegin 'X'.
  APPEND bdcdata.
ENDFORM.                    "BDC_DYNPRO

*----------------------------------------------------------------------*
*        Insert field                                                  *
*----------------------------------------------------------------------*
FORM bdc_field USING fnam fval.
  CLEAR bdcdata.
  bdcdata-fnam fnam.
  bdcdata-fval fval.
  APPEND bdcdata.
ENDFORM.                    "BDC_FIELD
*----------------------------------------------------------------------*
*        Start new transaction according to parameters                 *
*----------------------------------------------------------------------*
FORM bdc_transaction TABLES p_messtab
                     USING  p_tcode
                            p_ctu
                            p_mode
                            p_update.
  DATAl_subrc LIKE sy-subrc.

  IF p_ctu <> 'X'.
    CALL FUNCTION 'BDC_INSERT'
      EXPORTING
        tcode     p_tcode
      TABLES
        dynprotab bdcdata
      EXCEPTIONS
        OTHERS    1.
  ELSE.
    CALL TRANSACTION p_tcode USING bdcdata
                     MODE   p_mode
                     UPDATE p_update
                     MESSAGES INTO p_messtab.
  ENDIF.
  l_subrc sy-subrc.
  REFRESH bdcdata.
  sy-subrc l_subrc.
ENDFORM.                    "BDC_TRANSACTION

вторник, 26 июня 2012 г.

Easy report with reuse and posting


REPORT  z_rep.

TABLES bkpf.
TABLES bseg.

TYPE-POOLS slis.

DATA gt_out                       TYPE TABLE OF zsrep_alv.
DATA gs_alv                       TYPE zs_alv.
DATA gv_budat                     TYPE zsrep_alv-budat.


FIELD-SYMBOLS                TYPE zsrep_alv.
**********************************************************************
SELECTION-SCREEN BEGIN OF BLOCK bl1 WITH FRAME TITLE text-bl1.

PARAMETERS p_bukrs TYPE bkpf-bukrs OBLIGATORY MEMORY ID buk.
PARAMETERS p_spmon TYPE spmon OBLIGATORY MEMORY ID spm.
PARAMETERS p_gl_k  TYPE bseg-hkont OBLIGATORY MEMORY ID glk.
PARAMETERS p_gl_d  TYPE bseg-hkont OBLIGATORY MEMORY ID gld.
PARAMETERS p_blart TYPE bkpf-blart OBLIGATORY MEMORY ID blr.
SELECT-OPTIONS s_matnr FOR bseg-matnr.
SELECT-OPTIONS s_werks FOR bseg-werks.

SELECTION-SCREEN END OF BLOCK bl1.
**********************************************************************
START-OF-SELECTION.
**********************************************************************
  
PERFORM select_data.
**********************************************************************
END-OF-SELECTION.
**********************************************************************
  
IF gt_out[] IS INITIAL.
    
MESSAGE 'No data for selection conditions' TYPE 'S'.
    
EXIT.
  
ENDIF.
  
PERFORM display_data.
**********************************************************************

*&---------------------------------------------------------------------*
*&      Form  SELECT_DATA
*&---------------------------------------------------------------------*
*       Select data
*----------------------------------------------------------------------*
FORM select_data .

  
RANGES lr_budat FOR bkpf-budat.

  lr_budat
-sign   'I'.
  lr_budat
-option 'BT'.
  
CALL FUNCTION 'OIUREP_MONTH_FIRST_LAST'
    
EXPORTING
      i_month     
p_spmon+4(2)
      i_year      
p_spmon(4)
    
IMPORTING
      e_first_day 
lr_budat-low
      e_last_day  
lr_budat-high
    
EXCEPTIONS
      
OTHERS      1.
  
APPEND lr_budat.
  gv_budat 
lr_budat-high.

  
CLEAR gt_out[].
* Select open items
  
SELECT *
    
INTO CORRESPONDING FIELDS OF TABLE gt_out
    
FROM bsis
    
WHERE bukrs EQ p_bukrs
      
AND hkont EQ p_gl_k
      
AND gjahr EQ p_spmon(4)
      
AND budat IN lr_budat
      
AND werks IN s_werks.
* Get add data from BSEG
  
LOOP AT gt_out ASSIGNING .
* Check Cancel docs
    
SELECT SINGLE belnr
      
INTO -belnr
      
FROM bkpf
      
WHERE bukrs EQ -bukrs
        
AND belnr EQ -belnr
        
AND gjahr EQ -gjahr
        
AND stblg NE ''.
    
IF sy-subrc EQ 0.
      
DELETE gt_out.
      
CONTINUE.
    
ENDIF.
* Check material
    
SELECT SINGLE matnr
      
INTO -matnr
      
FROM bseg
      
WHERE bukrs EQ -bukrs
        
AND belnr EQ -belnr
        
AND gjahr EQ -gjahr
        
AND buzei EQ -buzei.
    
IF NOT -matnr IN s_matnr.
      
DELETE gt_out.
      
CONTINUE.
    
ENDIF.
* Change sign by SHKZG
    
IF -shkzg EQ 'H'.
      
-dmbtr -dmbtr.
      
-wrbtr -wrbtr.
    
ENDIF.
  
ENDLOOP.
*
ENDFORM.                    " SELECT_DATA
*&---------------------------------------------------------------------*
*&      Form  DISPLAY_DATA
*&---------------------------------------------------------------------*
*       Output
*----------------------------------------------------------------------*
FORM display_data .

  
DATA ls_layout                  TYPE lvc_s_layo.

  ls_layout
-cwidth_opt 'X'.
  ls_layout
-box_fname 'CBOX'.

  
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
    
EXPORTING
      i_callback_program       
sy-cprog
      i_callback_pf_status_set 
'CALLBACK_PF_STATUS_SET'
      i_callback_user_command  
'CALLBACK_USER_COMMAND'
      i_structure_name         
'ZSREP_ALV'
      is_layout_lvc            
ls_layout
      i_save                   
'A'
    
TABLES
      t_outtab                 
gt_out
    
EXCEPTIONS
      program_error            
1
      
OTHERS                   2.
  
IF sy-subrc <> 0.
    
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
            
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  
ENDIF.


ENDFORM.                    " DISPLAY_DATA
*&---------------------------------------------------------------------*
*&      Form  CALLBACK_USER_COMMAND
*&---------------------------------------------------------------------*
*       User command
*----------------------------------------------------------------------*
FORM callback_user_command USING command LIKE sy-ucomm
                  selfield 
TYPE slis_selfield.

  
CASE command.
**********************************************************************
    
WHEN '&IC1'" Double click
**********************************************************************
      
READ TABLE gt_out ASSIGNING  INDEX selfield-tabindex.
      
CHECK sy-subrc EQ 0.
      
CASE selfield-fieldname.
        
WHEN 'BELNR' OR 'BELNR_CLR'.
          
IF selfield-fieldname EQ 'BELNR'.
            
SET PARAMETER ID 'BLN' FIELD -belnr.
          
ELSE.
            
SET PARAMETER ID 'BLN' FIELD -belnr_clr.
          
ENDIF.
          
SET PARAMETER ID 'BUK' FIELD -bukrs.
          
SET PARAMETER ID 'GJR' FIELD -gjahr.
          
CALL TRANSACTION 'FB03' AND SKIP FIRST SCREEN.
      
ENDCASE.
**********************************************************************
    
WHEN '&POST'" Post doc
      
PERFORM post.
      selfield
-refresh 'X'.
  
ENDCASE.
ENDFORM.                    "CALLBACK_USER_COMMAND
*&---------------------------------------------------------------------*
*&      Form  CALLBACK_PF_STATUS_SET
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM callback_pf_status_set USING rt_extab TYPE slis_t_extab.
  
SET PF-STATUS 'STANDARD_FULLSCREEN'.
ENDFORM"CALLBACK_PF_STATUS_SET
*&---------------------------------------------------------------------*
*&      Form  POST
*&---------------------------------------------------------------------*
*       Post
*----------------------------------------------------------------------*
FORM post .

  
DATA ls_hdr                     TYPE bapiache09.
  
DATA lt_acc                     TYPE TABLE OF bapiacgl09.
  
DATA ls_acc                     TYPE bapiacgl09.
  
DATA lt_amt                     TYPE TABLE OF bapiaccr09.
  
DATA ls_amt                     TYPE bapiaccr09.
  
DATA lt_ext                     TYPE TABLE OF bapiparex.
  
DATA ls_ext                     TYPE bapiparex.
  
DATA lt_ret                     TYPE TABLE OF bapiret2.
  
DATA lt_ret_all                 TYPE TABLE OF bapiret2.
  
DATA lv_obj_type                TYPE bapiache09-obj_type.
  
DATA lv_obj_key                 TYPE bapiache09-obj_key.
  
DATA lv_test                    TYPE xfeld.
  
DATA lv_error                   TYPE xfeld.
  
DATA lt_coll                    TYPE TABLE OF zsrep_alv.
  
DATA ls_t001                    TYPE t001.

  
FIELD-SYMBOLS             TYPE zsrep_alv.
* Collect by MATNR/WERKS
  
LOOP AT gt_out ASSIGNING  WHERE cbox IS NOT INITIAL.
    
CLEAR gs_alv.
    gs_alv
-bukrs -bukrs.
    gs_alv
-hkont -hkont.
    gs_alv
-waers -waers.
    gs_alv
-dmbtr -dmbtr.
    gs_alv
-wrbtr -wrbtr.
    gs_alv
-matnr -matnr.
    gs_alv
-werks -werks.
    
COLLECT gs_alv INTO lt_coll.
  
ENDLOOP.
* Delete zero lines
  
DELETE lt_coll WHERE dmbtr EQ OR wrbtr EQ 0.
* No lines was select
  
IF lt_coll[] IS INITIAL.
    
MESSAGE 'Select positions' TYPE 'I'.
    
RETURN.
  
ENDIF.
**********************************************************************
  
DO TIMES.
    
IF sy-index EQ 1.
      lv_test 
'X'.
    
ELSE.
      
CHECK lv_error IS INITIAL.
      
CLEAR lt_ret_all[].
      lv_test 
''.
    
ENDIF.

    
LOOP AT lt_coll ASSIGNING .
*
      
IF ls_t001-bukrs NE -bukrs.
        
SELECT SINGLE *
          
INTO ls_t001
          
FROM t001
          
WHERE bukrs EQ -bukrs.
      
ENDIF.

      
CLEAR ls_hdr.
      
CLEAR lt_acc[].
      
CLEAR lt_amt[].
      
CLEAR lt_ret[].
      
CLEAR lt_ext[].

      ls_hdr
-username     sy-uname.
      ls_hdr
-comp_code    -bukrs.
      ls_hdr
-doc_date     gv_budat.
      ls_hdr
-pstng_date   gv_budat.
      ls_hdr
-doc_type     p_blart.
      ls_hdr
-header_txt   '16* to 90*'.

      
CLEAR ls_acc.
      ls_acc
-itemno_acc 1.
      ls_acc
-acct_type  'S'.
      ls_acc
-gl_account p_gl_k.
      ls_acc
-material   -matnr.
      ls_acc
-plant      -werks.
      
INSERT ls_acc INTO TABLE lt_acc.

      
CLEAR ls_amt.
      ls_amt
-itemno_acc ls_acc-itemno_acc.
      ls_amt
-curr_type  '00'.
      ls_amt
-currency   -waers.
      ls_amt
-amt_doccur -wrbtr.
      
INSERT ls_amt INTO TABLE lt_amt.

      ls_amt
-curr_type  '10'.
      ls_amt
-currency   ls_t001-waers.
      
ls_amt-amt_doccur -dmbtr.
      
INSERT ls_amt INTO TABLE lt_amt.

      
ADD TO ls_acc-itemno_acc.
      ls_acc
-gl_account p_gl_d.
      
INSERT ls_acc INTO TABLE lt_acc.

      ls_amt
-itemno_acc ls_acc-itemno_acc.
      ls_amt
-curr_type  '00'.
      ls_amt
-currency   -waers.
      ls_amt
-amt_doccur -wrbtr.
      
INSERT ls_amt INTO TABLE lt_amt.

      ls_amt
-curr_type  '10'.
      ls_amt
-currency   ls_t001-waers.
      ls_amt
-amt_doccur -dmbtr.
      
INSERT ls_amt INTO TABLE lt_amt.
*
      
IF lv_test IS NOT INITIAL.
        
CALL FUNCTION 'BAPI_ACC_DOCUMENT_CHECK'
          
EXPORTING
            documentheader 
ls_hdr
          
TABLES
            accountgl      
lt_acc
            currencyamount 
lt_amt
            extension2     
lt_ext
            
return         lt_ret.
      
ELSE.
        
CLEAR lv_obj_key.
        
CALL FUNCTION 'BAPI_ACC_DOCUMENT_POST'
          
EXPORTING
            documentheader 
ls_hdr
          
IMPORTING
            obj_type       
lv_obj_type
            obj_key        
lv_obj_key
          
TABLES
            accountgl      
lt_acc
            currencyamount 
lt_amt
            extension2     
lt_ext
            
return         lt_ret.
      
ENDIF.

      
INSERT LINES OF lt_ret INTO TABLE lt_ret_all.
      
LOOP AT lt_ret TRANSPORTING NO FIELDS WHERE type EQ 'E' OR type EQ 'A'.
        lv_error 
'X'.
        
EXIT.
      
ENDLOOP.
      
IF lv_error IS INITIAL AND lv_test IS INITIAL.
        
LOOP AT gt_out ASSIGNING  WHERE cbox   EQ 'X'
                                         
AND waers  EQ -waers
                                         
AND matnr  EQ -matnr
                                         
AND werks  EQ -werks.
          
-belnr_clr lv_obj_key+0(10).
          
-gjahr_clr lv_obj_key+14(4).
        
ENDLOOP.
      
ENDIF.
    
ENDLOOP.
  
ENDDO.
*
  
IF lv_error IS NOT INITIAL.
    
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
  
ELSE.
    
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
      
EXPORTING
        
wait 'X'.
  
ENDIF.
* Display log
  
IF lv_error IS NOT INITIAL.
    
CALL FUNCTION 'FINB_BAPIRET2_DISPLAY'
      
EXPORTING
        it_message 
lt_ret_all.
  
ELSE.
    
PERFORM select_data" reselect data
  
ENDIF.
**********************************************************************

ENDFORM.                    " POST