批量改变屏幕变式中的值

2021-10-24 00:20发布


          点击此处--->   EasySAP.com 群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)

Mass Change Of A Field An All Variant


There was a request to change the value for a specific field in all the variants. Instead of going to each variant and changing the value, how can we mass change all variants at the same time?


See this Simple Code for you to mass change the Variant Values.


Selection Texts:


P_NEW - New Value - in our example IN02

P_OLD - Old Value - in our example IN01

P_TST - Test Run

P_TXT - String to be searched - in our example 'BUKRS'


S_REPO - Report Name

S_VARI - Variant Name


CODING:

*---------------------------------------------------------------------
*  Report Name : Z_MASS_CHANGE_VARIANT_FIELD
*  Desc        : Mass Change of Variants
*  Author      : Sudheer
*---------------------------------------------------------------------

REPORT z_mass_change_variant_field NO STANDARD PAGE HEADING
                         LINE-SIZE 180
                         LINE-COUNT 45.



*---------------------------------------------------------------------*
*                         DATA DECLARATION                            *
*---------------------------------------------------------------------*

DATA: v_repname TYPE varid-report,
     v_vari    TYPE varid-variant.

DATA: v_repo TYPE raldb_repo,
     v_vart TYPE raldb_vari.

DATA: i_varid  TYPE STANDARD TABLE OF varid,
     wa_varid TYPE varid.



DATA: i_valtab  TYPE STANDARD TABLE OF rsparams,
     wa_valtab TYPE rsparams.

SELECTION-SCREEN: BEGIN OF BLOCK blk1 WITH FRAME TITLE text-001.

SELECT-OPTIONS: s_repo FOR v_repname,
               s_vari FOR v_vari.

PARAMETERS: p_txt TYPE char50,
           p_old TYPE char50,
           p_new TYPE char50,
           p_tst TYPE char1 AS CHECKBOX DEFAULT X.

SELECTION-SCREEN: END OF BLOCK blk1.

*---------------------------------------------------------------------*
*                    START OF SELECTION                               *
*---------------------------------------------------------------------*

START-OF-SELECTION.

* --- Get the report variants as per selection criteria

 SELECT * FROM varid
        INTO TABLE i_varid
        WHERE report IN s_repo
        AND variant IN s_vari.

 IF sy-subrc NE 0.

*-- Please Put your message here

 ENDIF.

 WRITE: /5  REPORT NAME COLOR 2,
         45 VARIANT COLOR 2,
         80 SELECTION VAR. COLOR 2,
         100 OLD VALUE COLOR 2,
         130 NEW VALUE COLOR 2.

 SKIP.

 LOOP AT i_varid INTO wa_varid.

   v_repo = wa_varid-report.
   v_vart = wa_varid-variant.

   CLEAR i_valtab.

*--- Read the variant contents

   CALL FUNCTION RS_VARIANT_CONTENTS
     EXPORTING
       report               = v_repo
       variant              = v_vart
     TABLES
       valutab              = i_valtab
     EXCEPTIONS
       variant_non_existent = 1
       variant_obsolete     = 2
       OTHERS               = 3.

   IF sy-subrc NE 0.
*    Capture Messages here
   ENDIF.

   LOOP AT i_valtab INTO wa_valtab.

*--- Here we check if the text in our example BUKRS is part of the program select-options or parameters

     IF wa_valtab-selname CS p_txt.
       IF wa_valtab-low CS p_old.

         WRITE: /5  v_repo,
                45  v_vart,
                80  wa_valtab-selname,
               100 wa_valtab-low,
               130 p_new.

         wa_valtab-low = p_new.

         MODIFY i_valtab FROM wa_valtab.

       ELSEIF wa_valtab-high CS p_old.

         WRITE: /5  v_repo,
                45  v_vart,
                80  wa_valtab-selname,
               100 wa_valtab-high,
               130 p_new.

         wa_valtab-high = p_new.

         MODIFY i_valtab FROM wa_valtab.

       ENDIF.

     ENDIF.

   ENDLOOP.

*----- test run option

   IF p_tst IS INITIAL.

     CALL FUNCTION RS_CHANGE_CREATED_VARIANT

       EXPORTING
         curr_report               = v_repo
         curr_variant              = v_vart
         vari_desc                 = wa_varid

       TABLES
         vari_contents             = i_valtab

       EXCEPTIONS
         illegal_report_or_variant = 1
         illegal_variantname       = 2
         not_authorized            = 3
         not_executed              = 4
         report_not_existent       = 5
         report_not_supplied       = 6
         variant_doesnt_exist      = 7
         variant_locked            = 8
         selections_no_match       = 9

         OTHERS                    = 10.

     IF sy-subrc NE 0.

*  Capture messages as per your requirement here

     ENDIF.

   ENDIF.

 ENDLOOP.

*--- End of program


赞赏支持