Changing the Standard Values in (CO02) Using BDC

 *&------------------------------------------------------------------------------*

*& Report ZPP_CO02_STD_VAL_CHNG_REP
*&------------------------------------------------------------------------------*
*& Program        : ZPP_CO02_STD_VAL_CHNG_REP
*& Author         : King Of ABAP'r
*& Created on     : 2025
*& Requested By   : Functional Consultant
*& Transport-No   : 1234567890
*& Description    : Changing the Standard Values in CO02
*&------------------------------------------------------------------------------*
REPORT zpp_co02_std_val_chng_rep.

TYPESBEGIN OF ty_data,
         sno      TYPE i,
         order_no TYPE aufnr,
         oper_no  TYPE vornr,
         value_1  TYPE char9,  "vgwrt,
         unit1    TYPE vgwrteh,
         value_2  TYPE char9,      "vgwrt,
         unit2    TYPE vgwrteh,
         value_3  TYPE char9,          "vgwrt,
         unit3    TYPE vgwrteh,
         value_4  TYPE char9,    "vgwrt,
         unit4    TYPE vgwrteh,
         value_5  TYPE char9,              "vgwrt,
         unit5    TYPE vgwrteh,
         value_6  TYPE char9,            "vgwrt,
         unit6    TYPE vgwrteh,
       END OF ty_data.

##NEEDED
DATA:it_data TYPE TABLE OF ty_data,
     wa_data TYPE ty_data.

##NEEDED
DATA:wa_bdcdata    TYPE bdcdata,
     ##NEEDED
     it_bdcdata    TYPE TABLE OF bdcdata,
     ##NEEDED
     wa_bdcmsgcoll TYPE bdcmsgcoll,
     ##NEEDED
     it_bdcmsgcoll TYPE TABLE OF bdcmsgcoll.

TYPESBEGIN OF ty_alv,
         sno     TYPE i,
         type    TYPE   char10"bapi_mtype,
         aufnr   TYPE   aufnr,
         oper_no TYPE vornr,
         message TYPE   bapi_msg,
*         status(250) TYPE c,
       END  OF ty_alv.
##NEEDED
DATAgt_alv TYPE STANDARD TABLE OF ty_alv,
      ##NEEDED
      gs_alv TYPE ty_alv.

##NEEDED
CONSTANTS:lv_tcode TYPE sy-tcode VALUE 'CO02'.

SELECTION-SCREEN:BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-000.
  PARAMETERS:p_file TYPE rlgrap-filename OBLIGATORY,
             p_mode DEFAULT 'N'.
SELECTION-SCREEN:END OF BLOCK b1.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
  PERFORM f4_filename.

*&---------------------------------------------------------------------*
*& Form f4_filename
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
FORM f4_filename .

  CALL FUNCTION 'F4_FILENAME'
    EXPORTING
      program_name  syst-cprog
      dynpro_number syst-dynnr
      field_name    'P_FILE'
    IMPORTING
      file_name     p_file.

ENDFORM.

START-OF-SELECTION.

*** Get File Data
  PERFORM get_file_data.
*** BDC Data Fill
  PERFORM bdc_data.
*** Display Data
  PERFORM display_data.

*&---------------------------------------------------------------------*
*& Form get_file_data
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
FORM get_file_data .

  DATA:lt_raw TYPE  truxs_t_text_data.

  CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP'
    EXPORTING
      i_line_header        abap_true
      i_tab_raw_data       lt_raw
      i_filename           p_file
    TABLES
      i_tab_converted_data it_data
    EXCEPTIONS
      conversion_failed    1
      OTHERS               2.
  IF sy-subrc NE 0.
    MESSAGE TEXT-006 TYPE 'E'.
  ENDIF.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form bdc_data
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
FORM bdc_data .

  DATA(it_fileit_data.
  SORT it_file BY sno oper_no .
  DELETE ADJACENT DUPLICATES FROM it_data COMPARING sno.

  LOOP AT it_data INTO DATA(gs_data).
    DATA(ws_datags_data.

    LOOP AT it_file INTO wa_data WHERE sno ws_data-sno.
      PERFORM bdc_dynpro      USING 'SAPLCOKO1' '0110'.
      PERFORM bdc_field       USING 'BDC_CURSOR'
                                    'CAUFVD-AUFNR'.
      PERFORM bdc_field       USING 'BDC_OKCODE'
                                    '=ENTK'.
      PERFORM bdc_field       USING 'CAUFVD-AUFNR'
                                    ws_data-order_no.      " '110000001134'.
      PERFORM bdc_field       USING 'R62CLORD-FLG_OVIEW'
                                    'X'.
      PERFORM bdc_dynpro      USING 'SAPLCOKO1' '0115'.
      PERFORM bdc_field       USING 'BDC_OKCODE'
                                    '=VGUE'.
      PERFORM bdc_dynpro      USING 'SAPLCOVG' '0100'.
      PERFORM bdc_field       USING 'BDC_CURSOR'
                                    'AFVGD-VORNR(01)'.
      PERFORM bdc_field       USING 'BDC_OKCODE'
                                    '=AUFS'.
      PERFORM bdc_dynpro      USING 'SAPLCO05' '0100'.
      PERFORM bdc_field       USING 'BDC_CURSOR'
                                    'RCOSU-VORNR'.
      PERFORM bdc_field       USING 'BDC_OKCODE'
                                    '=MORE'.
      PERFORM bdc_field       USING 'RCOSU-VORNR'
                                     wa_data-oper_no.         "'0030'.
      PERFORM bdc_dynpro      USING 'SAPLCOVG' '0100'.
      PERFORM bdc_field       USING 'BDC_CURSOR'
                                    'AFVGD-VORNR(01)'.
      PERFORM bdc_field       USING 'BDC_OKCODE'
                                    '=ALAV'.
      PERFORM bdc_field       USING 'RC27X-FLG_SEL(01)'
                                    'X'.
      PERFORM bdc_dynpro      USING 'SAPLCOVF' '0100'.
      PERFORM bdc_field       USING 'BDC_OKCODE'
                                    '=VOGW'.
      PERFORM bdc_field       USING 'BDC_CURSOR'
                                    'AFVGD-CY_SEQNRV'.

      CONDENSE wa_data-value_1 .
      CONDENSE wa_data-value_2 .
      CONDENSE wa_data-value_3 .
      CONDENSE wa_data-value_4 .
      CONDENSE wa_data-value_5 .
      CONDENSE wa_data-value_6 .

      CONDENSE wa_data-unit1.
      CONDENSE wa_data-unit2.
      CONDENSE wa_data-unit3.
      CONDENSE wa_data-unit4.
      CONDENSE wa_data-unit5.
      CONDENSE wa_data-unit6.

      PERFORM bdc_dynpro      USING 'SAPLCOVF' '0100'.
      PERFORM bdc_field       USING 'BDC_OKCODE'
                                    '/00'.

      IF wa_data-value_1 IS NOT INITIAL AND wa_data-unit1 IS NOT INITIAL.
        PERFORM bdc_field       USING 'AFVGD-VGW01'
                                       wa_data-value_1.    "'10.0'.
        PERFORM bdc_field       USING 'AFVGD-VGE01'
                                       wa_data-unit1.           "'HR'.
      ENDIF.

      IF wa_data-value_2 IS NOT INITIAL AND wa_data-unit2 IS NOT INITIAL.
        PERFORM bdc_field       USING 'AFVGD-VGW02'
                                      wa_data-value_2.            "'20.0'.
        PERFORM bdc_field       USING 'AFVGD-VGE02'
                                       wa_data-unit2.            "'HR'.
      ENDIF.

      IF wa_data-value_3 IS NOT INITIAL AND wa_data-unit3 IS NOT INITIAL.
        PERFORM bdc_field       USING 'AFVGD-VGW03'
                                       wa_data-value_3.              "'30'.
        PERFORM bdc_field       USING 'AFVGD-VGE03'
                                       wa_data-unit3.               "'MIN'.
      ENDIF.

      IF wa_data-value_4 IS NOT INITIAL AND wa_data-unit4 IS NOT INITIAL.
        PERFORM bdc_field       USING 'AFVGD-VGW04'
                                       wa_data-value_4.             "'40'.
        PERFORM bdc_field       USING 'AFVGD-VGE04'
                                       wa_data-unit4.               "'MIN'.
      ENDIF.

      IF wa_data-value_5 IS NOT INITIAL AND wa_data-unit5 IS NOT INITIAL.
        PERFORM bdc_field       USING 'AFVGD-VGW05'
                                       wa_data-value_5.             "'50'.
        PERFORM bdc_field       USING 'AFVGD-VGE05'
                                       wa_data-unit5.              "'MIN'.
      ENDIF.

      IF wa_data-value_6 IS NOT INITIAL AND wa_data-unit6 IS NOT INITIAL.
        PERFORM bdc_field       USING 'AFVGD-VGW06'
                                       wa_data-value_6.            " '60'.
        PERFORM bdc_field       USING 'AFVGD-VGE06'
                                       wa_data-unit6.            "'MIN'.
      ENDIF.

      PERFORM bdc_dynpro      USING 'SAPLCOVF' '0100'.
      PERFORM bdc_field       USING 'BDC_OKCODE'
                                    '=BU'.

      PERFORM bdc_transaction USING 'CO02'.
 
      REFRESH it_bdcdata.
      PERFORM errors.
    ENDLOOP.

    CLEAR:wa_data,gs_data,ws_data.
  ENDLOOP.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form bdc_dynpro
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
FORM bdc_dynpro  USING a b.

  CLEAR wa_bdcdata.
  wa_bdcdata-program  a.
  wa_bdcdata-dynpro   b.
  wa_bdcdata-dynbegin 'X'.
  APPEND wa_bdcdata TO it_bdcdata.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form bdc_field
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
FORM bdc_field  USING a b.

  CLEAR wa_bdcdata.
  wa_bdcdata-fnam a.
  wa_bdcdata-fval b.
  APPEND wa_bdcdata TO it_bdcdata.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form bdc_transaction
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
FORM bdc_transaction  USING lv_tcode.

  CALL TRANSACTION lv_tcode USING it_bdcdata MODE p_mode
       UPDATE 'S' MESSAGES INTO it_bdcmsgcoll.
  COMMIT WORK AND WAIT .

ENDFORM.
*&---------------------------------------------------------------------*
*& Form errors
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
FORM errors .

  DATA:message TYPE string,
       count   TYPE i.

  DELETE it_bdcmsgcoll WHERE msgtyp 'I'.
  DELETE it_bdcmsgcoll WHERE msgtyp 'W'.

  LOOP AT it_bdcmsgcoll INTO wa_bdcmsgcoll.
    CALL FUNCTION 'FORMAT_MESSAGE'
      EXPORTING
        id        sy-msgid
        lang      '-D'
        no        wa_bdcmsgcoll-msgnr
        v1        wa_bdcmsgcoll-msgv1
        v2        wa_bdcmsgcoll-msgv2
        v3        wa_bdcmsgcoll-msgv3
        v4        wa_bdcmsgcoll-msgv4
      IMPORTING
        msg       message
      EXCEPTIONS
        not_found 1
        OTHERS    2.
    IF sy-subrc EQ 0.
      ##NEEDED
      READ TABLE it_bdcmsgcoll INTO DATA(ls_errWITH KEY msgtyp 'S'.
      IF sy-subrc 0.
        gs_alv-aufnr wa_bdcmsgcoll-msgv1.
        gs_alv-oper_no wa_data-oper_no.
        gs_alv-type   icon_led_green" wa_bdcmsgcoll-msgtyp.
        gs_alv-message message.
        ##NEEDED
*        ADD 1 TO count.
        count count 1.
        gs_alv-sno count.
        APPEND gs_alv TO gt_alv.
        CLEAR gs_alv.
      ENDIF.
    ELSE.
*      gs_alv-aufnr =
      gs_alv-type   icon_led_red" wa_bdcmsgcoll-msgtyp.
      gs_alv-message message.
      ##NEEDED
*      ADD 1 TO count.
      count count 1.
      gs_alv-sno count.
      APPEND gs_alv TO gt_alv.
      CLEAR gs_alv.
    ENDIF.
  ENDLOOP.

  ##NEEDED
  REFRESH it_bdcmsgcoll.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form disp_data
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
FORM display_data .
  TYPE-POOLS:
         slis.
  DATA:
    ls_fieldcat TYPE slis_fieldcat_alv,
    ls_layout   TYPE slis_layout_alv.
  DATA:
     lt_fieldcat         TYPE slis_t_fieldcat_alv.

  DATA:
        lv_program TYPE sy-repid.

  CLEAR ls_fieldcat.
  ls_fieldcat-fieldname  'SNO'.
  ls_fieldcat-seltext_m  TEXT-001.     "'Sno.'.
  ls_fieldcat-tabname    'GT_ALV'.
  APPEND ls_fieldcat TO lt_fieldcat.

  ls_fieldcat-fieldname 'TYPE'.
  ls_fieldcat-seltext_m TEXT-002.         "'Type'.
  ls_fieldcat-tabname   'GT_ALV'.
  APPEND ls_fieldcat TO lt_fieldcat.
  CLEAR ls_fieldcat.

  ls_fieldcat-fieldname 'AUFNR'.
  ls_fieldcat-seltext_m TEXT-003.      "'Order No.'.
  ls_fieldcat-tabname   'GT_ALV'.
  APPEND ls_fieldcat TO lt_fieldcat.
  CLEAR ls_fieldcat.

  ls_fieldcat-fieldname 'OPER_NO'.
  ls_fieldcat-seltext_m TEXT-004.       "'Operation No.'.
  ls_fieldcat-tabname   'GT_ALV'.
  APPEND ls_fieldcat TO lt_fieldcat.
  CLEAR ls_fieldcat.

  ls_fieldcat-fieldname 'MESSAGE'.
  ls_fieldcat-seltext_m TEXT-005.         "'Message'.
  ls_fieldcat-tabname   'GT_ALV'.
  APPEND ls_fieldcat TO lt_fieldcat.
  CLEAR ls_fieldcat.

  CLEAR ls_layout.
  ls_layout-colwidth_optimize 'X'.
  ls_layout-zebra             'X'.
  lv_program sy-repid.

  IF gt_alv IS NOT INITIAL.
* Display The Final Display
    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
      EXPORTING
        i_callback_program lv_program
        is_layout          ls_layout
        it_fieldcat        lt_fieldcat
      TABLES
        t_outtab           gt_alv.
*      EXCEPTIONS
*        program_error      = 1
*        OTHERS             = 2.
  ENDIF.
ENDFORM.

Comments

Popular posts from this blog

PO rejection notification & rejection comments for Fiori

FB60 Vendor Invoice Post using BAPI

Service Invoice Upload For FB70 (BAPI)