Search This Blog

Thursday, February 18, 2021

BDC to update price in VK11

 

BDC to update price in VK11.

Here is an example of update price on price condition in VK11.

This can be also achieved by calling BAPI which is safer to use instead of BDC but here we will use BDC recording given by functional guy.


SAMPLE CODE : 

REPORT zbdc_vk11
       NO STANDARD PAGE HEADING LINE-SIZE 255.

TYPE-POOLStruxsslis.
TYPESBEGIN OF ty_final,
         vkorg     TYPE komg-vkorg,  " SALES ORG.
         vtweg     TYPE komg-vtweg,  " Distribution Channel
         extwg     TYPE komg-extwg,  " External Material Group
         ph1       TYPE komg-prodh1,
         ph2       TYPE komg-prodh2,
         ph4       TYPE komg-prodh4,
         werks     TYPE komg-werks,  " PLANT
         kbetr(15TYPE c,   " CONDITION AMOUNT
         konwa     TYPE konp-konwa,  " UNIT
         kpein(15TYPE c,  " PRICING PER UNIT
         kmein     TYPE konp-kmein,  " CONDITION UNIT
         datab(10TYPE c,   " VALID FROM
         datbi(10TYPE c,   " END DATE
       END OF ty_final.


TYPES BEGIN OF ty_output,
          extwg    TYPE komg-extwg,  " External Material Group
          werks    TYPE komg-werks,  " PLANT
          desc(40TYPE c,
        END OF ty_output.

DATA it_final  TYPE STANDARD TABLE OF ty_final,
       wa_final  TYPE ty_final,
       it_output TYPE STANDARD TABLE OF ty_output,
       wa_output TYPE ty_output.

DATAit_type TYPE truxs_t_text_data,
      opt     TYPE ctu_params,
      lv_opt  LIKE ctu_params.

DATA wa_fieldcat TYPE  slis_fieldcat_alv"Field catalog work area
       it_fieldcat TYPE slis_t_fieldcat_alv"field catalog internal table

DATAlv_date(10)  TYPE clv_date2(10TYPE c.
DATAdate(2)  TYPE c,
      month(2TYPE c,
      year(4)  TYPE c,
      str      TYPE string.


DATAit_bdcdata TYPE TABLE OF bdcdata,
      wa_bdcdata TYPE bdcdata,
      ctu        TYPE ctu_params,
      t_values   TYPE vrm_values,
      w_values   TYPE vrm_value.
DATAmesstab LIKE bdcmsgcoll OCCURS WITH HEADER LINE.
DATAwa_return TYPE bdcmsgcoll.
DATAtcode TYPE tcode VALUE 'VK11'.

INITIALIZATION.
  PERFORM initialization.

  SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-001.
  PARAMETERS p_file    TYPE rlgrap-filename ,"DEFAULT 'C:\Users\abapsu\Desktop\PRICE.XLSX',
               p_mode(1AS LISTBOX VISIBLE LENGTH 20 DEFAULT 'E'.
*               P_DEFSIZE LIKE CTU_PARAMS-DEFSIZE  DEFAULT 'X'.
  SELECTION-SCREEN END OF BLOCK b1.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_mode.
  PERFORM dismode.

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


START-OF-SELECTION.
  PERFORM file_upload.
  PERFORM upload_data.
  PERFORM disp.


*&---------------------------------------------------------------------*
*& Form FILE_UPLOAD
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM file_upload .
  CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP'
    EXPORTING
      i_field_seperator    'X'
      i_line_header        'X'
      i_tab_raw_data       it_type
      i_filename           p_file
    TABLES
      i_tab_converted_data it_final[]
    EXCEPTIONS
      conversion_failed    1
      OTHERS               2.
  IF sy-subrc <> 0.
    MESSAGE 'TABLE IS INITIAL' TYPE 'E'.
  ELSE.
    ctu-dismode p_mode.     "DISPLAY MODE.
    ctu-updmode 'L'.        "UPDATE MODE.
* CTU-NOBINPT = 'X'.
    ctu-defsize 'X'.        "DEFAULT SIZE.
  ENDIF.


ENDFORM.
*&---------------------------------------------------------------------*
*& Form UPLOAD_DATA
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM upload_data .




  LOOP AT it_final INTO wa_final.

    PERFORM bdc_dynpro      USING 'SAPMV13A' '0100'.
    PERFORM bdc_field       USING 'BDC_CURSOR'
                                  'RV13A-KSCHL'.
    PERFORM bdc_field       USING 'BDC_OKCODE'
                                  '=ANTA'.
    PERFORM bdc_field       USING 'RV13A-KSCHL'
                                  'ZSTO'.
    PERFORM bdc_dynpro      USING 'SAPLV14A' '0100'.
    PERFORM bdc_field       USING 'BDC_CURSOR'
                                  'RV130-SELKZ(10)'.
    PERFORM bdc_field       USING 'BDC_OKCODE'
                                  '=WEIT'.
    PERFORM bdc_field       USING 'RV130-SELKZ(01)'
                                  ''.
    PERFORM bdc_field       USING 'RV130-SELKZ(10)'
                                  'X'.
    PERFORM bdc_dynpro      USING 'SAPMV13A' '1729'.
    PERFORM bdc_field       USING 'BDC_CURSOR'
                                  'RV13A-DATBI(01)'.
    PERFORM bdc_field       USING 'BDC_OKCODE'
                                  '=SICH'.
    PERFORM bdc_field       USING 'KOMG-VKORG'
                                   wa_final-vkorg"'GLIN'.
    PERFORM bdc_field       USING 'KOMG-VTWEG'
                                   wa_final-vtweg"'IC'.
    PERFORM bdc_field       USING 'KOMG-EXTWG(01)'
                                   wa_final-extwg.          " 'V02002'.
    PERFORM bdc_field       USING 'KOMG-PRODH1(01)'
                                   wa_final-ph1" 'DV'.
    PERFORM bdc_field       USING 'KOMG-PRODH2(01)'
                                   wa_final-ph2"'FB'.
    PERFORM bdc_field       USING 'KOMG-PRODH4(01)'
                                   wa_final-ph4"'FE'.
    PERFORM bdc_field       USING 'KOMG-WERKS(01)'
                                   wa_final-werks"'2300'.
    PERFORM bdc_field       USING 'KONP-KBETR(01)'
                                   wa_final-kbetr"'367.00'.
    PERFORM bdc_field       USING 'KONP-KONWA(01)'
                                   wa_final-konwa"'INR'.
    PERFORM bdc_field       USING 'KONP-KPEIN(01)'
                                   wa_final-kpein"'    1'.
    PERFORM bdc_field       USING 'KONP-KMEIN(01)'
                                   wa_final-kmein"'M2'.


    PERFORM bdc_field       USING 'RV13A-DATAB(01)'
                                  wa_final-datab"'01.01.2021'.

    PERFORM bdc_field       USING 'RV13A-DATBI(01)'
                                   wa_final-datbi.
    REFRESHmesstab[].
    CALL TRANSACTION  tcode USING it_bdcdata OPTIONS FROM ctu MESSAGES
    INTO messtab .
    REFRESH it_bdcdata[].

    DATA msg_txt(150TYPE c.

    LOOP AT messtab INTO wa_return.
      CALL FUNCTION 'FORMAT_MESSAGE'
        EXPORTING
          id        wa_return-msgid
          lang      sy-langu
          no        wa_return-msgnr
          v1        wa_return-msgv1
          v2        wa_return-msgv2
          v3        wa_return-msgv3
          v4        wa_return-msgv4
        IMPORTING
          msg       msg_txt
        EXCEPTIONS
          not_found 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.


      IF messtab-msgtyp EQ 'E'.
        wa_output-extwg  wa_final-extwg.
        wa_output-werks wa_final-werks.
        wa_output-desc   msg_txt.

      ELSEIF messtab-msgtyp EQ 'S'.
        wa_output-extwg  wa_final-extwg.
        wa_output-werks wa_final-werks.
        wa_output-desc   msg_txt.

      ELSEIF messtab-msgtyp EQ 'W'.
        wa_output-extwg  wa_final-extwg.
        wa_output-werks wa_final-werks.
        wa_output-desc   msg_txt.

      ELSE.
        wa_output-extwg  wa_final-extwg.
        wa_output-werks wa_final-werks.
        wa_output-desc   msg_txt.
      ENDIF.
      APPEND wa_output to it_output.
      CLEAR:  msg_txtwa_output.
    ENDLOOP.


  ENDLOOP.
ENDFORM.



*&---------------------------------------------------------------------*
*& Form INITIALIZATION
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM initialization .
  w_values-key 'A'.
  w_values-text 'FOREGROUND'.
  APPEND w_values TO t_values.
  CLEAR w_values.
  w_values-key 'N'.
  w_values-text 'BACKGROUND'.
  APPEND w_values TO t_values.
  CLEAR w_values.
  w_values-key 'E'.
  w_values-text 'ONLY ERRORS'.
  APPEND w_values TO t_values.
  CLEAR w_values.


ENDFORM.
*&---------------------------------------------------------------------*
*& Form DISMODE
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM dismode .

  CALL FUNCTION 'VRM_SET_VALUES'
    EXPORTING
      id     'P_MODE'
      values t_values.
ENDFORM.

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


FORM disp .
  wa_fieldcat-fieldname =  'EXTWG'.
  wa_fieldcat-seltext_m 'Ext. Material Group'.
  wa_fieldcat-tabname   'T_OUTPUT'.
  wa_fieldcat-outputlen 15.
  APPEND wa_fieldcat TO it_fieldcat.
  CLEAR wa_fieldcat.

  wa_fieldcat-fieldname =  'WERKS'.
  wa_fieldcat-seltext_m 'PLANT'.
  wa_fieldcat-tabname   'T_OUTPUT'.
  wa_fieldcat-outputlen 15.
  APPEND wa_fieldcat TO it_fieldcat.
  CLEAR wa_fieldcat.

  wa_fieldcat-fieldname =  'DESC'.
  wa_fieldcat-seltext_m 'Status'.
  wa_fieldcat-tabname   'T_OUTPUT'.
  wa_fieldcat-outputlen 40.
  APPEND wa_fieldcat TO it_fieldcat.
  CLEAR wa_fieldcat.

  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      i_callback_program sy-repid
      it_fieldcat        it_fieldcat
    TABLES
      t_outtab           it_output[].
  IF sy-subrc <> 0.
    MESSAGE  'ALV List Can not be generated!!!' TYPE 'E'.
  ENDIF.
ENDFORM.



*----------------------------------------------------------------------*
*        START NEW SCREEN                                              *
*----------------------------------------------------------------------*
FORM bdc_dynpro USING program dynpro.
  CLEAR wa_bdcdata.
  wa_bdcdata-program  program.
  wa_bdcdata-dynpro   dynpro.
  wa_bdcdata-dynbegin 'X'.
  APPEND wa_bdcdata TO it_bdcdata.
ENDFORM.

*----------------------------------------------------------------------*
*        INSERT FIELD                                                  *
*----------------------------------------------------------------------*
FORM bdc_field USING fnam fval.
  CLEAR wa_bdcdata.
  wa_bdcdata-fnam fnam.
  wa_bdcdata-fval fval.
  APPEND wa_bdcdata TO it_bdcdata.
ENDFORM.

No comments:

Post a Comment

Pages