Monday, February 17, 2020

XK01 BDC Program in SAP ABAP.


XK01 BDC Program in SAP ABAP.

REPORT  zrk_bdc_xk01_calltra NO STANDARD PAGE HEADING.
include zrk_bdc_xk01_calltra_top.
include zrk_bdc_xk01_calltra_sel.
include zrk_bdc_xk01_calltra_f01.

*----------------------------------------------------------------------*
* Initialization Event
*----------------------------------------------------------------------*
INITIALIZATION.
PERFORM f_defualt_values.

*----------------------------------------------------------------------*
* At Selection Screen Event
*----------------------------------------------------------------------*
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
PERFORM f_get_file.

START-OF-SELECTION.
PERFORM data_upload.
PERFORM get_bdc.


======================================================================================
TOP 
======================================================================================
*&---------------------------------------------------------------------*
*&  Include           ZRK_BDC_XK01_CALLTRA_TOP
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Data Declaration
*&---------------------------------------------------------------------*
DATA: bdcdata LIKE bdcdata    OCCURS 0 WITH HEADER LINE.
*&---------------------------------------------------------------------*
*& Internal Table Declaration
*&---------------------------------------------------------------------*
DATA:BEGIN OF i_tab OCCURS 0,
  bukrs TYPE  rf02k-bukrs,
  ekorg TYPE  rf02k-ekorg,
  ktokk TYPE  rf02k-ktokk,
  anred TYPE  lfa1-anred,
  name1 TYPE  lfa1-name1,
  sortl TYPE  lfa1-sortl,
  land1 TYPE  lfa1-land1,
  akont TYPE  lfb1-akont,
  fdgrv TYPE  lfb1-fdgrv,
  waers TYPE  lfm1-waers,
END OF i_tab.

*Structure for error message
TYPES : BEGIN OF ty_s_error,
  msg_err(60) TYPE C,
END OF ty_s_error.

DATA:
*      wa_path TYPE string ,
*      wa_error TYPE string,
*      wa_cnt   TYPE I,
*      w_mode    TYPE C,
*      wa_cnt1(2) TYPE n,
      it_output TYPE TABLE OF ty_s_error,
      wa_output LIKE LINE OF it_output.

=====================================================================
Selection Screen
=====================================================================
*&---------------------------------------------------------------------*
*&  Include           ZRK_BDC_XK01_CALLTRA_SEL
*&---------------------------------------------------------------------*
*----------------------------------------------------------------------*
* Selection Screen
*----------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text_001.
  SELECTION-SCREEN BEGIN OF LINE.
    SELECTION-SCREEN COMMENT 1(20) text_1_1.
    PARAMETERS: p_file LIKE rlgrap-filename OBLIGATORY.
  SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK b1.
====================================================================================
SUB Page
=====================================================================================
*&---------------------------------------------------------------------*
*&  Include           ZRK_BDC_XK01_CALLTRA_F01
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*&      Form  F_DEFUALT_VALUES
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM f_defualt_values .
  text_001 = 'File path selection'.
  text_1_1 = 'File Path'.
ENDFORM.                    " F_DEFUALT_VALUES
*&---------------------------------------------------------------------*
*&      Form  F_GET_FILE
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM f_get_file .
  CALL FUNCTION 'F4_FILENAME'
  IMPORTING
    file_name = p_file.

ENDFORM.                    " F_GET_FILE
*&---------------------------------------------------------------------*
*&      Form  DATA_UPLOAD
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM data_upload .
  DATA: loc_filename TYPE string.
  loc_filename = p_file.

  CALL FUNCTION 'GUI_UPLOAD'
  EXPORTING
    filename                = loc_filename
    filetype                = 'DAT'
    has_field_separator     = 'X'
  TABLES
    data_tab                = i_tab
  EXCEPTIONS
    file_open_error         = 1
    file_read_error         = 2
    no_batch                = 3
    gui_refuse_filetransfer = 4
    invalid_type            = 5
    no_authority            = 6
    unknown_error           = 7
    bad_data_format         = 8
    header_not_allowed      = 9
    separator_not_allowed   = 10
    header_too_long         = 11
    unknown_dp_error        = 12
    access_denied           = 13
    dp_out_of_memory        = 14
    disk_full               = 15
    dp_timeout              = 16
    OTHERS                  = 17.

  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.                    " DATA_UPLOAD
*&---------------------------------------------------------------------*
*&      Form  GET_BDC
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM get_bdc .
  IF i_tab[] IS NOT INITIAL.
    PERFORM open_group.
    LOOP AT i_tab.
      REFRESH bdcdata.
      PERFORM bdcdata.
    ENDLOOP.
    PERFORM close_group.
  ENDIF.
ENDFORM.                    " GET_BDC
*&---------------------------------------------------------------------*
*&      Form  OPEN_GROUP
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM open_group .

ENDFORM.                    " OPEN_GROUP
*&---------------------------------------------------------------------*
*&      Form  BDCDATA
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM bdcdata .
*---->>> Insert Recording Here
  PERFORM bdc_dynpro      USING 'SAPMF02K' '0100'.
  PERFORM bdc_field       USING 'BDC_CURSOR'      'RF02K-KTOKK'.
  PERFORM bdc_field       USING 'BDC_OKCODE'      '/00'.
  PERFORM bdc_field       USING 'RF02K-BUKRS' i_tab-bukrs.      "     '1000'.
  PERFORM bdc_field       USING 'RF02K-EKORG' i_tab-ekorg.     "    '1000'.
  PERFORM bdc_field       USING 'RF02K-KTOKK' i_tab-ktokk.     "   '0001'.
  PERFORM bdc_dynpro      USING 'SAPMF02K'        '0110'.
  PERFORM bdc_field       USING 'BDC_CURSOR'      'LFA1-LAND1'.
  PERFORM bdc_field       USING 'BDC_OKCODE'      '/00'.
  PERFORM bdc_field       USING 'LFA1-ANRED' i_tab-anred.       "      'Mr'.
  PERFORM bdc_field       USING 'LFA1-NAME1' i_tab-name1.       "      'nageshpur'.
  PERFORM bdc_field       USING 'LFA1-SORTL' i_tab-sortl.       "      'NAGESH'.
  PERFORM bdc_field       USING 'LFA1-LAND1' i_tab-land1.       "     'IN'.
  PERFORM bdc_dynpro      USING 'SAPMF02K'        '0120'.
  PERFORM bdc_field       USING 'BDC_CURSOR'      'LFA1-KUNNR'.
  PERFORM bdc_field       USING 'BDC_OKCODE'      '/00'.
  PERFORM bdc_dynpro      USING 'SAPMF02K'       '0130'.
  PERFORM bdc_field       USING 'BDC_CURSOR'     'LFBK-BANKS(01)'.
  PERFORM bdc_field       USING 'BDC_OKCODE'     '=ENTR'.
  PERFORM bdc_dynpro      USING 'SAPMF02K'      '0380'.
  PERFORM bdc_field       USING 'BDC_CURSOR'    'KNVK-NAMEV(01)'.
  PERFORM bdc_field       USING 'BDC_OKCODE'    '=ENTR'.
  PERFORM bdc_dynpro      USING 'SAPMF02K'     '0210'.
  PERFORM bdc_field       USING 'BDC_CURSOR'   'LFB1-FDGRV'.
  PERFORM bdc_field       USING 'BDC_OKCODE'   '/00'.
  PERFORM bdc_field       USING 'LFB1-AKONT' i_tab-akont.          "   '31000'.
  PERFORM bdc_field       USING 'LFB1-FDGRV' i_tab-fdgrv.          "  'A1'.
  PERFORM bdc_dynpro      USING 'SAPMF02K'    '0215'.
  PERFORM bdc_field       USING 'BDC_CURSOR'  'LFB1-ZTERM'.
  PERFORM bdc_field       USING 'BDC_OKCODE'  '/00'.
  PERFORM bdc_dynpro      USING 'SAPMF02K'    '0220'.
  PERFORM bdc_field       USING 'BDC_CURSOR'  'LFB5-MAHNA'.
  PERFORM bdc_field       USING 'BDC_OKCODE'  '/00'.
  PERFORM bdc_dynpro      USING 'SAPMF02K'    '0310'.
  PERFORM bdc_field       USING 'BDC_CURSOR'  'LFM1-WAERS'.
  PERFORM bdc_field       USING 'BDC_OKCODE'  '=UPDA'.
  PERFORM bdc_field       USING 'LFM1-WAERS'  i_tab-waers.        " 'INR'.

  PERFORM bdc_insert.

ENDFORM.                    " BDCDATA
*&---------------------------------------------------------------------*
*&      Form  CLOSE_GROUP
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM close_group .

ENDFORM.                    " CLOSE_GROUP
*&---------------------------------------------------------------------*
*&      Form  BDC_INSERT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM bdc_insert .

*Data decleration for Error Message
  DATA:
        t_msg TYPE TABLE OF bdcmsgcoll,   " Collecting Error messages
        w_msg TYPE bdcmsgcoll,
        w_msg1(51).

* Call transaction 'ME51'
  CALL TRANSACTION 'XK01' USING bdcdata
        MODE   'N'
        UPDATE 'S'
        MESSAGES INTO t_msg.

  IF sy-subrc EQ 0.
    LOOP AT t_msg INTO w_msg.
*    Uploaded into the database
      WRITE :/ 'Customer created successfully :', w_msg-msgv1.
    ENDLOOP.
  ELSE.
*    Error Found
    LOOP AT t_msg INTO w_msg WHERE msgtyp EQ 'E'.
*     Format Message
      CALL FUNCTION 'MESSAGE_TEXT_BUILD'
      EXPORTING
        msgid               = w_msg-msgid
        msgnr               = w_msg-msgnr
        msgv1               = w_msg-msgv1
        msgv2               = w_msg-msgv2
        msgv3               = w_msg-msgv3
        msgv4               = w_msg-msgv4
      IMPORTING
        message_text_output = w_msg1.


      wa_output-msg_err = w_msg1.

*Error message in downloaded file
      DATA:
            wa_string(10) TYPE C.
      CONCATENATE wa_string wa_output-msg_err INTO wa_output-msg_err SEPARATED BY space.
      APPEND wa_output-msg_err TO it_output.
      WRITE :/ 'Error in records', wa_output-msg_err.

    ENDLOOP.

  ENDIF.
ENDFORM.                    " BDC_INSERT
*&---------------------------------------------------------------------*
*&      Form  BDC_DYNPRO
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_0145   text
*      -->P_0146   text
*----------------------------------------------------------------------*
FORM bdc_dynpro USING PROGRAM DYNPRO.
  CLEAR bdcdata.
  bdcdata-PROGRAM  = PROGRAM.
  bdcdata-DYNPRO   = DYNPRO.
  bdcdata-dynbegin = 'X'.
  APPEND bdcdata.
ENDFORM.                    " BDC_DYNPRO
*&---------------------------------------------------------------------*
*&      Form  BDC_FIELD
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_0150   text
*      -->P_0151   text
*----------------------------------------------------------------------*
FORM bdc_field  USING  fnam fval.
  CLEAR bdcdata.
  bdcdata-fnam = fnam.
  bdcdata-fval = fval.
  APPEND bdcdata.
ENDFORM.                    " BDC_FIELD

MM01 BDC Program in SAP ABAP.

MM01 BDC Program in SAP ABAP.

*&---------------------------------------------------------------------*
*& Report  ZRK_BDC_MM01
*&---------------------------------------------------------------------*
*& Created By   :
*& Requested By :
*& Date         :
*& TR No.       :
*& TCode        :
*& Description  :
*&---------------------------------------------------------------------*
REPORT  zrk_bdc_mm01.
*&---------------------------------------------------------------------*
*& Data Declaration
*&---------------------------------------------------------------------*
DATA: bdcdata LIKE bdcdata    OCCURS 0 WITH HEADER LINE.
*&---------------------------------------------------------------------*
*& Internal Table Declaration
*&---------------------------------------------------------------------*
DATA:BEGIN OF i_tab OCCURS 0,
     mbrsh TYPE rmmg1-mbrsh,
     mtart TYPE rmmg1-mtart,
     meins TYPE mara-meins,
     matkl TYPE mara-matkl,
     maktx TYPE makt-maktx,
    END OF i_tab.
*----------------------------------------------------------------------*
* Selection Screen
*----------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text_001.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(20) text_1_1.
PARAMETERS: p_file LIKE rlgrap-filename OBLIGATORY.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK b1.
*----------------------------------------------------------------------*
* Initialization Event
*----------------------------------------------------------------------*
INITIALIZATION.
  text_001 = 'File path selection'.
  text_1_1 = 'File Path'.
*----------------------------------------------------------------------*
* At Selection Screen Event
*----------------------------------------------------------------------*
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
  CALL FUNCTION 'F4_FILENAME'
    IMPORTING
      file_name = p_file.
*&---------------------------------------------------------------------*
*& Start of Selection
*&---------------------------------------------------------------------*
START-OF-SELECTION.
  PERFORM data_upload.
  IF i_tab[] IS NOT INITIAL.
  PERFORM open_group.
    LOOP AT i_tab.
  REFRESH bdcdata.
  PERFORM bdcdata.
    ENDLOOP.
  PERFORM close_group.
  ENDIF.
*&---------------------------------------------------------------------*
*&      Form  DATA_UPLOAD
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM data_upload.
  DATA: loc_filename TYPE string.
  loc_filename = p_file.

  CALL FUNCTION 'GUI_UPLOAD'
    EXPORTING
      filename                = loc_filename
      filetype                = 'DAT'
      has_field_separator     = 'X'
    TABLES
      data_tab                = i_tab
    EXCEPTIONS
      file_open_error         = 1
      file_read_error         = 2
      no_batch                = 3
      gui_refuse_filetransfer = 4
      invalid_type            = 5
      no_authority            = 6
      unknown_error           = 7
      bad_data_format         = 8
      header_not_allowed      = 9
      separator_not_allowed   = 10
      header_too_long         = 11
      unknown_dp_error        = 12
      access_denied           = 13
      dp_out_of_memory        = 14
      disk_full               = 15
      dp_timeout              = 16
      OTHERS                  = 17.

  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.                    " DATA_UPLOAD

*----------------------------------------------------------------------*
*        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

*&---------------------------------------------------------------------*
*&      Form  OPEN_GROUP
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM open_group .
  CALL FUNCTION 'BDC_OPEN_GROUP'
    EXPORTING
      client = sy-mandt
      group  = 'ZROHAN_MM01' "'Session_Name'
      user   = sy-uname
      keep   = 'X'.
ENDFORM.                    " OPEN_GROUP

*&---------------------------------------------------------------------*
*&      Form  CLOSE_GROUP
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM close_group .
  CALL FUNCTION 'BDC_CLOSE_GROUP'.
  CALL TRANSACTION 'SM35'.
ENDFORM.                    " CLOSE_GROUP

*&---------------------------------------------------------------------*
*&      Form  bdcdata
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM bdcdata .
*---->>> Insert Recording Here
  PERFORM bdc_dynpro      USING 'SAPLMGMM' '0060'.
  PERFORM bdc_field       USING 'BDC_CURSOR' 'RMMG1-MATNR'.
  PERFORM bdc_field       USING 'BDC_OKCODE' '=ENTR'.
  PERFORM bdc_field       USING 'RMMG1-MBRSH' i_tab-mbrsh. "'P'.              " this fields
  PERFORM bdc_field       USING 'RMMG1-MTART' i_tab-mtart. "'ROH'.            " this fields
  PERFORM bdc_dynpro      USING 'SAPLMGMM' '0070'.
  PERFORM bdc_field       USING 'BDC_CURSOR' 'MSICHTAUSW-DYTXT(02)'.
  PERFORM bdc_field       USING 'BDC_OKCODE' '=ENTR'.
  PERFORM bdc_field       USING 'MSICHTAUSW-KZSEL(01)' 'X'.
  PERFORM bdc_field       USING 'MSICHTAUSW-KZSEL(02)' 'X'.
  PERFORM bdc_dynpro      USING 'SAPLMGMM' '4004'.
  PERFORM bdc_field       USING 'BDC_OKCODE' '=SP02'.
  PERFORM bdc_field       USING 'BDC_CURSOR'  'MARA-MATKL'.
  PERFORM bdc_field       USING 'MARA-MEINS' i_tab-meins. "'KG'.                " unit of mesuremetns
  PERFORM bdc_field       USING 'MARA-MATKL' i_tab-matkl. "'00106'.             " baisc unit
  PERFORM bdc_dynpro      USING 'SAPLMGMM' '4004'.
  PERFORM bdc_field       USING 'BDC_OKCODE' '=BU'.
  PERFORM bdc_field       USING 'BDC_CURSOR' 'MAKT-MAKTX'.
  PERFORM bdc_field       USING 'MAKT-MAKTX' i_tab-maktx. "'Created by RHAN'.  " material descrption

  PERFORM bdc_insert.
ENDFORM.                    " bdcdata

*&---------------------------------------------------------------------*
*&      Form  bdc_insert
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM bdc_insert.
  CALL FUNCTION 'BDC_INSERT'
    EXPORTING
      tcode     = 'MM01' "'TCODE'
    TABLES
      dynprotab = bdcdata.
ENDFORM.                    " bdc_insert



File Structure :

P ROH KG 00106 Created by RAH1
P ROH KG 00106 Created by RAH2

XD01 BDC Program in SAP ABAP


XD01 BDC Program in SAP ABAP.

*&---------------------------------------------------------------------*
*& Report  ZRK_BDC_MM01
*&---------------------------------------------------------------------*
*& Created By   :
*& Requested By :
*& Date         :
*& TR No.       :
*& TCode        :
*& Description  :
*&---------------------------------------------------------------------*
REPORT  zrk_bdc_xd01.
*&---------------------------------------------------------------------*
*& Data Declaration
*&---------------------------------------------------------------------*
DATA: bdcdata LIKE bdcdata    OCCURS 0 WITH HEADER LINE.
*&---------------------------------------------------------------------*
*& Internal Table Declaration
*&---------------------------------------------------------------------*
DATA:BEGIN OF i_tab OCCURS 0,
      kunnr TYPE    rf02d-kunnr,
      ktokd  TYPE     rf02d-ktokd,
      anred TYPE    kna1-anred,
      name1 TYPE    kna1-name1,
      sortl TYPE    kna1-sortl,
      pfach TYPE    kna1-pfach,
      ort01 TYPE    kna1-ort01,
      pstlz TYPE    kna1-pstlz,
      pstl2 TYPE    kna1-pstl2,
      land1 TYPE    kna1-land1,
      spras TYPE    kna1-spras,
      lzone TYPE    kna1-lzone,
 END OF i_tab.
*----------------------------------------------------------------------*
* Selection Screen
*----------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text_001.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(20) text_1_1.
PARAMETERS: p_file LIKE rlgrap-filename OBLIGATORY.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK b1.
*----------------------------------------------------------------------*
* Initialization Event
*----------------------------------------------------------------------*
INITIALIZATION.
  text_001 = 'File path selection'.
  text_1_1 = 'File Path'.
*----------------------------------------------------------------------*
* At Selection Screen Event
*----------------------------------------------------------------------*
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
  CALL FUNCTION 'F4_FILENAME'
    IMPORTING
      file_name = p_file.
*&---------------------------------------------------------------------*
*& Start of Selection
*&---------------------------------------------------------------------*
START-OF-SELECTION.
  PERFORM data_upload.
  IF i_tab[] IS NOT INITIAL.
    PERFORM open_group.
    LOOP AT i_tab.
      REFRESH bdcdata.
      PERFORM bdcdata.
    ENDLOOP.
    PERFORM close_group.
  ENDIF.
*&---------------------------------------------------------------------*
*&      Form  DATA_UPLOAD
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM data_upload.
  DATA: loc_filename TYPE string.
  loc_filename = p_file.

  CALL FUNCTION 'GUI_UPLOAD'
    EXPORTING
      filename                = loc_filename
      filetype                = 'DAT'
      has_field_separator     = 'X'
    TABLES
      data_tab                = i_tab
    EXCEPTIONS
      file_open_error         = 1
      file_read_error         = 2
      no_batch                = 3
      gui_refuse_filetransfer = 4
      invalid_type            = 5
      no_authority            = 6
      unknown_error           = 7
      bad_data_format         = 8
      header_not_allowed      = 9
      separator_not_allowed   = 10
      header_too_long         = 11
      unknown_dp_error        = 12
      access_denied           = 13
      dp_out_of_memory        = 14
      disk_full               = 15
      dp_timeout              = 16
      OTHERS                  = 17.

  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.                    " DATA_UPLOAD

*----------------------------------------------------------------------*
*        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

*&---------------------------------------------------------------------*
*&      Form  OPEN_GROUP
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM open_group .
  CALL FUNCTION 'BDC_OPEN_GROUP'
    EXPORTING
      client = sy-mandt
      group  = 'ZRHAN_XD01' "'Session_Name'
      user   = sy-uname
      keep   = 'X'.
ENDFORM.                    " OPEN_GROUP

*&---------------------------------------------------------------------*
*&      Form  CLOSE_GROUP
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM close_group .
  CALL FUNCTION 'BDC_CLOSE_GROUP'.
  CALL TRANSACTION 'SM35'.
ENDFORM.                    " CLOSE_GROUP

*&---------------------------------------------------------------------*
*&      Form  bdcdata
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM bdcdata .
*---->>> Insert Recording Here
  PERFORM bdc_dynpro      USING 'SAPMF02D'    '0100'.
  PERFORM bdc_field       USING 'BDC_CURSOR'  'RF02D-KTOKD'.
  PERFORM bdc_field       USING 'BDC_OKCODE'  '/00'.
  PERFORM bdc_field       USING 'RF02D-KUNNR'   i_tab-kunnr. "  'A-5005'.
  PERFORM bdc_field       USING 'RF02D-KTOKD'   i_tab-ktokd."'0001'.
  PERFORM bdc_dynpro      USING 'SAPMF02D'    '0110'.
  PERFORM bdc_field       USING 'BDC_CURSOR'  'KNA1-PSTL2'.
  PERFORM bdc_field       USING 'BDC_OKCODE'  '/00'.
  PERFORM bdc_field       USING 'KNA1-ANRED'    i_tab-anred."'" 'mr'.
  PERFORM bdc_field       USING 'KNA1-NAME1'    i_tab-name1."'avin'.
  PERFORM bdc_field       USING 'KNA1-SORTL'    i_tab-sortl."  'AVIN'.
  PERFORM bdc_field       USING 'KNA1-PFACH'    i_tab-pfach." 'rajapur'.
  PERFORM bdc_field       USING 'KNA1-ORT01'    i_tab-ort01."'RAJAPUR'.
  PERFORM bdc_field       USING 'KNA1-PSTLZ'    i_tab-pstlz." '210207'.
  PERFORM bdc_field       USING 'KNA1-PSTL2'    i_tab-pstl2." '210207'.
  PERFORM bdc_field       USING 'KNA1-LAND1'    i_tab-land1." 'IN'.
  PERFORM bdc_field       USING 'KNA1-SPRAS'    i_tab-spras." 'EN'.
  PERFORM bdc_dynpro      USING 'SAPMF02D'    '0120'.
  PERFORM bdc_field       USING 'BDC_CURSOR'  'KNA1-LZONE'.
  PERFORM bdc_field       USING 'BDC_OKCODE'   '=UPDA'.
  PERFORM bdc_field       USING 'KNA1-LZONE'   i_tab-lzone." '0000000001'.

  PERFORM bdc_insert.
ENDFORM.                    " bdcdata

*&---------------------------------------------------------------------*
*&      Form  bdc_insert
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM bdc_insert.
  CALL FUNCTION 'BDC_INSERT'
    EXPORTING
      tcode     = 'XD01' "'TCODE'
    TABLES
      dynprotab = bdcdata.
ENDFORM.                    " bdc_insert



File Format:

A-50051 0001 Mr lokesh kumar avi raja RAJA    210207 210207 IN EN 0000000001
A-50052 0001 MS POOJA  SING avi raja RAJA 210207 210207 IN EN 0000000001

Most beautiful visiting place in Kolkata


List of most beautiful visiting place in Kolkata.



Kolkata is capital of West Bengal. Kolkata Nicknamed CITY OF JOY.This is very beautiful city in india. If you want to go KOLKATA there is certain place you must see this place.
1. Esplanade.
2. Victoria Memorial Hall Kolkata India.
3. Howrah Bridge.
4.Howrah Station.
5. Kumortuli.
6. Khalighat Temple.
7. Colonial Architecture & City Tours.
8. College Street (Book Market) / Indian Coffee House.
9. Sealdah Station.
10. Indian Museum.
11. New Market.
12. Day Trip to Sundarbans.
13. Durga Puja Festival.
14. Dakshineswar Kali Temple.
15. Belur Math Kolkata.
16.Science City Kolkata.
17.New Town Eco Park.
18.Maidan kolkata.
19.Eden Gardens.
20.Prinsep Ghat kolkata.

Most beautiful visiting place in Paschim / Purbo Medinipur.


List of most beautiful visiting place in Paschim / Purbo Medinipur.
Medinipur is one of  historical place in West bengal. Before 2002 Medinipur is only one district but January 2002 Medinipur Divided 2 district 1. Purbo Medinipur 2.Paschim Medinipur.





Medinipur is the headquarters of the Paschim Medinipur district. Tamluk is the headquarters of the Purbo Medinipur district. Distance Kolkata to Medinipur 77 Km to 133 km.
  • Historical Places
1.     » Bahiri
2.     » Chandrakona
3.     » Dantan
4.     » Egra
5.     » Garbeta
6.     » Gopiballavpur
7.     » Keshiari
8.     » Keshpur
9.     » Moyna
10. » Narayangard
11. » Nayagram
12. » Pathra
13. » Sutahata
  • Costal
1.     » Junput
2.     » Mandarmani
3.     » Sankarpur
4.     » Digha
5.     » Khejuri
  • Forest & Hill
1.     » Jhargram
2.     » Binpur
  • Rivers 
1.     » Kangsabati
2.     » Subarnarekha
3.     » Silaboti
4.     » Keleghai
5.     » Haldi
6.     » Rasalpur
7.     » Dulang & Kushmi
8.     » Tarafeni
9.     » Bhairab Banki
10. » Jayponda
11. » Purandar
12. » Hooghly
13. » Darokeshwar
14. » Tarajuli
15. » Donai
16. » Chandia
17. » Champa
18. » Kapaleswari
19. » Kalaichandi
20. » Pichaboni
21. » Parang-Tamal-Kubai
22. » Kana
23. » Rupnarayan

Thursday, February 13, 2020

Multilevel Workflow for Sales order change [VA02] In SAP ABAP.


Multilevel Workflow for Sales order change [VA02]

    For this type of workflow first we have to find out maximum level for the approval.
    For this we have to create activity.

 



Here we have to mention class name and its method as well as if it required then you to create some variable at container tab for import or export parameter.


Above binding is inside the task now below binding is outside the task.


Class method for finding maximum level for approver.


Method for get maximum level of approver
METHOD get_maxlevel.
  
DATA:ls_max_level TYPE zwf_dyn_vbak-zalevel.
  
DATA:lv_inita TYPE uname.

  lv_inita 
=  wfinitiator+2(12).

  
IF zterm 'X'.
    
SELECT MAXzalevel )
     
FROM zwf_dyn_vbak
     
INTO ls_max_level
     
WHERE approveby lv_inita AND field_name 'ZTERM'.
    max_level 
ls_max_level.
  
ENDIF.

  
IF kvgr2 'X'.
    
SELECT MAXzalevel )
      
FROM zwf_dyn_vbak
      
INTO ls_max_level
      
WHERE approveby lv_inita AND field_name 'AVGR2'.
    max_level 
ls_max_level.

  
ENDIF.
ENDMETHOD.


Next activity is we have to generate loop step in workflow.





After getting maximum level for approver next we have to create an instance for generate link for sales order in email. Below screen for instance binding inside the task.


Next screen is outside binding after task is created.


Now in loop we have to increment the counter using custom container.







Code for Email ID with Approver level:
METHOD get_emailid.

  
DATAis_wf_vbak TYPE zwf_dyn_vbak,
        is_addsmtp 
TYPE bapiadsmtp.

  
DATA lv_inita TYPE uname,
         lv_add 
TYPE bapiaddr3.
  
DATA return TYPE bapiret2.

  lv_inita 
wfinitiator+2(12).
  
IF zterm 'X'.
    
SELECT SINGLE *
    
FROM zwf_dyn_vbak
    
INTO is_wf_vbak
   
WHERE approveby lv_inita AND zalevel apprv_level AND             field_name 'ZTERM'.

    
IF sy-subrc 0.
      email_app 
is_wf_vbak-a_emailid.
      email_init 
is_wf_vbak-i_emailid.
    
ENDIF.
  
ENDIF.

  IF kvgr2 'X'.
    
SELECT SINGLE *
    
FROM zwf_dyn_vbak
    
INTO is_wf_vbak
   
WHERE approveby lv_inita AND zalevel apprv_level AND             field_name 'AVGR2'.

    
IF sy-subrc 0.
      email_app 
is_wf_vbak-a_emailid.
      email_init 
is_wf_vbak-i_emailid.
    
ENDIF.
  
ENDIF.
ENDMETHOD.


Now next activity is user decision for whether user has approve or not sales order.
In this user decision we have to create rule. After this we have to set flag whether it is approved or reject. If user has reject the sales order then we have to set loop level with max level.
Next screen for set flag for approve.


Below screen is for set flag for rejection.


After Reject flag set then set the loop level and max level same.


After the approve or reject process we have to check the flag if it is approve or reject.






Binding for approve sales order.



Code for set billing block as well as for approve and reject sales order.



method SET_BILLING_BLOCK.

  
DATA:ls_tvfst TYPE tvfst.

  
IF zterm 'X'.
  
SELECT SINGLE faksp vtext
    
FROM tvfst
    
INTO CORRESPONDING FIELDS OF ls_tvfst
    
WHERE faksp '41' AND spras 'EN'.

  
UPDATE vbak
    
SET faksk ls_tvfst-faksp
    
WHERE vbeln vbeln.
ENDIF.

IF kvgr2 'X'.
  
SELECT SINGLE faksp vtext
    
FROM tvfst
    
INTO CORRESPONDING FIELDS OF ls_tvfst
    
WHERE faksp '41' AND spras 'EN'.

  
UPDATE vbak
    
SET faksk ls_tvfst-faksp
    
WHERE vbeln vbeln.
ENDIF.
endmethod.


Method for approve sales order

method APPROVE_SALES_ORDER.
  
IF zterm 'X'.
    
UPDATE vbak
      
SET zzterm1 ' '
      
where vbeln vbeln.
  
ENDIF.

  
IF kvgr2 'X'.
    
UPDATE vbak
      
SET zzkvgr2 ' '
      
where vbeln vbeln.
  
ENDIF.
endmethod.

Method for Reject sales order with attachment file for reject reason.

METHOD reject_sales_order.
  
IF zterm 'X' OR kvgr2 'X'.
    
DATA lv_docid TYPE so_entryid,
           lv_docid_tmp 
TYPE char90,
           lt_attach 
TYPE STANDARD TABLE OF swr_object.

    
DATA ls_attach TYPE swr_object.
    
DATA flag TYPE flag.

    
FIELD-SYMBOLS <ls_rejtext> TYPE solisti1.

    
CALL FUNCTION 'SAP_WAPI_GET_ATTACHMENTS'
      
EXPORTING
        workitem_id 
im_wiid
      
TABLES
        attachments 
lt_attach.

    
IF NOT lt_attach[] IS INITIAL.
      
READ TABLE lt_attach INTO ls_attach INDEX 1.
      
IF sy-subrc EQ 0.
        
REPLACE ALL OCCURRENCES OF 'SOFM' IN ls_attach-object_id WITH space.
        
SHIFT ls_attach-object_id LEFT DELETING LEADING space.
*      CONDENSE LV_DOCID NO-GAPS.
        lv_docid_tmp 
ls_attach-object_id.
*      CONDENSE LV_DOCID_TMP NO-GAPS.
        lv_docid 
lv_docid_tmp.
      
ENDIF.
    
ENDIF.
***FM to  get content text for Dicument key
    
CALL FUNCTION 'SO_DOCUMENT_READ_API1'
      
EXPORTING
        document_id                
lv_docid
      
TABLES
        object_content             
text
      
EXCEPTIONS
        document_id_not_exist      
1
        operation_no_authorization 
2
        x_error                    
3
        
OTHERS                     4.
    
IF sy-subrc <> 0.
* Implement suitable error handling here
    
ELSE.
      
DELETE text WHERE line+0(3) = '000'.
      
LOOP AT text ASSIGNING <ls_rejtext>.
        <ls_rejtext>+0
(3) = ' '.
      
ENDLOOP.
    
ENDIF.
  
ENDIF.
ENDMETHOD.



After approve from all level we have to remove the billing block.


method UPDATE_VBAK.
DATA:ls_vbak TYPE vbak.

  
SELECT SINGLE *
    
FROM vbak
    
INTO ls_vbak
    
WHERE vbeln vbeln.

    
IF ls_vbak-zzterm1 ' ' and ls_vbak-zzkvgr2 ' '.
      
UPDATE vbak
        
SET faksk ' '
        
where vbeln =  vbeln.
    
ENDIF.
endmethod.