Wednesday, 25 August 2021

MySQL : Stored Procedure Array Parameter In Where Clause

Define Stored Procedure :

DELIMITER $$

CREATE PROCEDURE GetVendor(IN pRegid TEXT)

BEGIN

  SET @sql = CONCAT('SELECT * FROM vendorMaster WHERE regid IN (', pRegid, ')');

  PREPARE stmt FROM @sql;

  EXECUTE stmt;

  DEALLOCATE PREPARE stmt;

END

$$


Call Stored Procedure

SET @regid = '\'1625628909\',\'1625642907\'';

call GetVendor(@regid)

Tuesday, 10 August 2021

SAP ABAP : Parallel Cursor

 


*&---------------------------------------------------------------------*
*& Report Z_PARALEL_CURSOR
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT Z_PARALEL_CURSOR.

DATA : LT_BKPF TYPE TABLE OF BKPF,
       LT_BSEG TYPE TABLE OF BSEG,
       LS_BKPF TYPE BKPF,
       LS_BSEG TYPE BSEG.

DATA : LV_TIME1               TYPE I,
       LV_TIME2               TYPE I,
       LV_TIME3               TYPE I,
       LV_TIME4               TYPE I,
       LV_RES_TIME_GN_PROCESS TYPE I,
       LV_RES_TIME_PA_PROCESS TYPE I,
       INDX                   TYPE I.

DATA : LV_BKPF_RECS TYPE I.
DATA : LV_BSEG_RECS TYPE I.

START-OF-SELECTION.

  SELECT * FROM BKPF INTO TABLE LT_BKPF UP TO 10000 ROWS.
  SELECT * FROM BSEG INTO TABLE LT_BSEG UP TO 10000 ROWS.

  DESCRIBE TABLE LT_BKPF LINES LV_BKPF_RECS.
  DESCRIBE TABLE LT_BSEG LINES LV_BSEG_RECS.

  GET RUN TIME FIELD LV_TIME1.
  LOOP AT LT_BKPF INTO LS_BKPF.
    LOOP AT LT_BSEG INTO LS_BSEG WHERE VBELN = LS_BKPF-BELNR.

    ENDLOOP.
  ENDLOOP.

  GET RUN TIME FIELD LV_TIME2.

  LV_RES_TIME_GN_PROCESS = LV_TIME2 - LV_TIME1.

* APPLYING PARALLEL CURSOR TECHNIQUE
 SORT LT_BKPF BY BELNR.
 SORT LT_BSEG BY BELNR.

  GET RUN TIME FIELD LV_TIME3.
  LOOP AT LT_BKPF INTO LS_BKPF.
    READ TABLE LT_BSEG INTO LS_BSEG WITH  KEY BELNR = LS_BKPF-BELNR BINARY SEARCH.
    IF SY-SUBRC = 0.
      INDX = SY-TABIX.
      LOOP AT LT_BSEG INTO LS_BSEG FROM INDX.
        IF LS_BSEG-BELNR <> LS_BKPF-BELNR.
          EXIT.
        ENDIF.
      ENDLOOP.
    ENDIF.
  ENDLOOP.

  GET RUN TIME FIELD LV_TIME4.

  LV_RES_TIME_PA_PROCESS = LV_TIME4 - LV_TIME3.

  WRITE:/ 'Total BKPF Rows = ', LV_BKPF_RECS.
  WRITE:/ 'Total BSEG Rows = ', LV_BSEG_RECS.

  WRITE :/ 'Nested loop Processing Time', LV_RES_TIME_GN_PROCESS.
  WRITE :/ 'Parallel Cursor Processing Time', LV_RES_TIME_PA_PROCESS.

Monday, 2 August 2021

SAP ABAP FV60 : Park Document Using Custom Function Module


 



I_Header Structure





LT_GLACCOUNT structure



LT_WIHTAX Structure


Complete Source Code :

function z_vim_park_fv60.
*"----------------------------------------------------------------------
*"*"Local Interface:
*"  IMPORTING
*"     REFERENCE(I_HEADER) TYPE  ZSVIM_LIVNPO_HEADER
*"  TABLES
*"      LT_GLACCOUNT STRUCTURE  ZSVIM_LIVNPO_GL OPTIONAL
*"      LT_WIHTAX STRUCTURE  ZSVIM_LIVNPO_WHT OPTIONAL
*"      LT_RETURN STRUCTURE  BDCMSGCOLL
*"----------------------------------------------------------------------

  data :
     ls_gl      type zsvim_livnpo_gl,
     ls_wihtax  type zsvim_livnpo_wht,
     ls_bdcopt  type ctu_params,
     str_bldat  type char10,
     str_budat  type char10,
     str_zfbdt  type char10,
     itabidx(2) type n,
     strbdcfld  type string.

  refresh bdc_data.

  clear : str_bldat, str_budat, str_zfbdt.

  concatenate i_header-bldat+6(2) '.' i_header-bldat+4(2) '.' i_header-bldat(4) into str_bldat.
  concatenate i_header-budat+6(2) '.' i_header-budat+4(2) '.' i_header-budat(4) into str_budat.
  concatenate i_header-zfbdt+6(2) '.' i_header-zfbdt+4(2) '.' i_header-zfbdt(4) into str_zfbdt.

  "New
  perform bdc_dynpro      using 'SAPMF05A' '1100'.
  perform bdc_field       using 'BDC_OKCODE'
                                '=DUMMY'.
  perform bdc_field       using 'RF05A-BUSCS'
                                'R'.
  perform bdc_field       using 'BDC_CURSOR'
                                'INVFO-MWSKZ'.
  perform bdc_field       using 'INVFO-ACCNT'
                                i_header-lifnr.
  perform bdc_field       using 'INVFO-BLDAT'
                                str_bldat.
  perform bdc_field       using 'INVFO-XBLNR'
                                i_header-xblnr.
  perform bdc_field       using 'INVFO-BUDAT'
                                str_budat.
  perform bdc_field       using 'INVFO-WAERS'
                                i_header-waers.
  perform bdc_field       using 'INVFO-MWSKZ'
                                i_header-mwskz1.
  perform bdc_field       using 'INVFO-BUPLA'
                                i_header-bupla.
  perform bdc_field       using 'INVFO-SGTXT'
                                i_header-sgtxt.

  perform bdc_dynpro      using 'SAPMF05A' '1100'.
  perform bdc_field       using 'BDC_OKCODE'
                                '/ECCDE'.
  perform bdc_dynpro      using 'SAPLACHD' '1000'.
  perform bdc_field       using 'BDC_CURSOR'
                                'BKPF-BUKRS'.
  perform bdc_field       using 'BDC_OKCODE'
                                '=ENTR'.
  perform bdc_field       using 'BKPF-BUKRS'
                                i_header-bukrs.

  perform bdc_dynpro      using 'SAPMF05A' '1100'.
  perform bdc_field       using 'BDC_OKCODE'
                                '/00'.
  perform bdc_field       using 'RF05A-BUSCS'
                                'R'.
  perform bdc_field       using 'INVFO-ACCNT'
                                i_header-lifnr.
  perform bdc_field       using 'INVFO-BLDAT'
                                str_bldat.
  perform bdc_field       using 'INVFO-XBLNR'
                                i_header-xblnr.
  perform bdc_field       using 'INVFO-BUDAT'
                                str_budat.
  perform bdc_field       using 'INVFO-WAERS'
                                i_header-waers.
  perform bdc_field       using 'INVFO-MWSKZ'
                                i_header-mwskz1.
  perform bdc_field       using 'INVFO-BUPLA'
                                i_header-bupla.
  perform bdc_field       using 'INVFO-SGTXT'
                                i_header-sgtxt.

  "GL DATA
  clear : ls_gl, itabidx.
  loop at lt_glaccount into ls_gl.
    itabidx = itabidx + 1.

    if itabidx >= 4.
      itabidx = 4.
    endif.

    clear strbdcfld.
    concatenate 'ACGL_ITEM-HKONT(' itabidx ')' into strbdcfld.
    perform bdc_field       using 'BDC_CURSOR'
                                  strbdcfld.

    clear strbdcfld.
    concatenate 'ACGL_ITEM-HKONT(' itabidx ')' into strbdcfld.
    perform bdc_field       using strbdcfld
                                  ls_gl-hkont.

    clear strbdcfld.
    concatenate 'ACGL_ITEM-WRBTR(' itabidx ')' into strbdcfld.
    perform bdc_field       using strbdcfld
                                  ls_gl-adjamount.

    clear strbdcfld.
    concatenate 'ACGL_ITEM-ZUONR(' itabidx ')' into strbdcfld.
    perform bdc_field       using strbdcfld
                                  ls_gl-zuonr.

    clear strbdcfld.
    concatenate 'ACGL_ITEM-SGTXT(' itabidx ')' into strbdcfld.
    perform bdc_field       using strbdcfld
                                  ls_gl-adtext.

    clear strbdcfld.
    concatenate 'ACGL_ITEM-GSBER(' itabidx ')' into strbdcfld.
    perform bdc_field       using strbdcfld
                                  i_header-bupla.

    clear strbdcfld.
    concatenate 'ACGL_ITEM-KOSTL(' itabidx ')' into strbdcfld.
    perform bdc_field       using strbdcfld
                                  ls_gl-kostl.

    if itabidx >= 4.
      clear strbdcfld.
      concatenate 'ACGL_ITEM-MARKSP(' itabidx ')' into strbdcfld.
      perform bdc_field       using strbdcfld
                              'X'.
      perform bdc_dynpro      using 'SAPMF05A' '1100'.
      perform bdc_field       using 'BDC_OKCODE'
                                    '=0005'.
    else.
      perform bdc_dynpro      using 'SAPMF05A' '1100'.
      perform bdc_field       using 'BDC_OKCODE'
                                    '/00'.
    endif.

    clear ls_gl.
  endloop.

  perform bdc_field       using 'BDC_OKCODE'
                                '=DUMMY'.
  perform bdc_field       using 'RF05A-BUSCS'
                                'R'.
  perform bdc_field       using 'BDC_CURSOR'
                                'INVFO-XMWST'.
  perform bdc_field       using 'INVFO-ACCNT'
                                i_header-lifnr.
  perform bdc_field       using 'INVFO-BLDAT'
                                str_bldat.
  perform bdc_field       using 'INVFO-XBLNR'
                                'FAKTURPAJAK'.
  perform bdc_field       using 'INVFO-BUDAT'
                                str_budat.
  perform bdc_field       using 'INVFO-WRBTR'
                                i_header-rmwwr.
  perform bdc_field       using 'INVFO-XMWST'
                                'X'.
  perform bdc_field       using 'INVFO-MWSKZ'
                                i_header-mwskz1.
  perform bdc_field       using 'INVFO-BUPLA'
                                i_header-bupla.
  perform bdc_field       using 'INVFO-SGTXT'
                                i_header-sgtxt.
  perform bdc_dynpro      using 'SAPMF05A' '1100'.
  perform bdc_field       using 'BDC_OKCODE'
                                '=PAYM'.
  perform bdc_field       using 'RF05A-BUSCS'
                                'R'.
  perform bdc_field       using 'BDC_CURSOR'
                                'INVFO-XMWST'.
  perform bdc_field       using 'INVFO-ACCNT'
                                i_header-lifnr.
  perform bdc_field       using 'INVFO-BLDAT'
                                str_bldat.
  perform bdc_field       using 'INVFO-XBLNR'
                                i_header-xblnr.
  perform bdc_field       using 'INVFO-BUDAT'
                                str_budat.
  perform bdc_field       using 'INVFO-WRBTR'
                                i_header-rmwwr.
  perform bdc_field       using 'INVFO-XMWST'
                                'X'.
  perform bdc_field       using 'INVFO-MWSKZ'
                                i_header-mwskz1.
  perform bdc_field       using 'INVFO-BUPLA'
                                i_header-bupla.
  perform bdc_field       using 'INVFO-SGTXT'
                                i_header-sgtxt.
  perform bdc_dynpro      using 'SAPMF05A' '1100'.
  perform bdc_field       using 'BDC_OKCODE'
                                '/00'.
  perform bdc_field       using 'BDC_CURSOR'
                                'INVFO-ZTERM'.
  perform bdc_field       using 'INVFO-ZFBDT'
                                str_zfbdt.
  perform bdc_field       using 'INVFO-ZTERM'
                                i_header-zterm.

  perform bdc_dynpro      using 'SAPMF05A' '1100'.
  perform bdc_field       using 'BDC_OKCODE'
                                '=MORE'.
  perform bdc_field       using 'BDC_CURSOR'
                                'INVFO-ZTERM'.
  perform bdc_field       using 'INVFO-ZFBDT'
                                str_zfbdt.
  perform bdc_field       using 'INVFO-ZTERM'
                                i_header-zterm.

  perform bdc_dynpro      using 'SAPMF05A' '1100'.
  perform bdc_field       using 'BDC_OKCODE'
                                '/00'.
  perform bdc_field       using 'BDC_CURSOR'
                                'INVFO-GSBER'.
  perform bdc_field       using 'INVFO-ZUONR'
                                i_header-zuonr.
  perform bdc_field       using 'INVFO-BKTXT'
                                i_header-bktxt.
  perform bdc_field       using 'INVFO-GSBER'
                                i_header-bupla.
  perform bdc_dynpro      using 'SAPMF05A' '1100'.
  perform bdc_field       using 'BDC_OKCODE'
                                '=WT'.
  perform bdc_field       using 'BDC_CURSOR'
                                'INVFO-GSBER'.
  perform bdc_field       using 'INVFO-ZUONR'
                                i_header-zuonr.
  perform bdc_field       using 'INVFO-BKTXT'
                                i_header-bktxt.
  perform bdc_field       using 'INVFO-GSBER'
                                i_header-bupla.
  perform bdc_dynpro      using 'SAPMF05A' '1100'.
  perform bdc_field       using 'BDC_OKCODE'
                                '/00'.


  clear : ls_wihtax, itabidx.
  loop at lt_wihtax into ls_wihtax.
    itabidx = itabidx + 1.

    clear strbdcfld.
    concatenate 'ACWT_ITEM-WT_WITHCD(' itabidx ')' into strbdcfld.
    perform bdc_field       using 'BDC_CURSOR'
                                  strbdcfld.

    clear strbdcfld.
    concatenate 'ACWT_ITEM-WT_WITHCD(' itabidx ')' into strbdcfld.
    perform bdc_field       using strbdcfld
                                  ls_wihtax-wt_withcd.

    clear strbdcfld.
    concatenate 'ACWT_ITEM-WT_QSSHB(' itabidx ')' into strbdcfld.
    perform bdc_field       using strbdcfld
                                  ls_wihtax-wt_amount.

    clear ls_wihtax.
  endloop.

                                '10000'.
  perform bdc_dynpro      using 'SAPMF05A' '1100'.
  perform bdc_field       using 'BDC_OKCODE'
                                '=BP'.
  perform bdc_field       using 'BDC_CURSOR'
                                'ACWT_ITEM-WT_QSSHB(01)'.

  ls_bdcopt-dismode   = 'N'. "A=FOREGROUND N=BACKGROUND E=ERROR
  ls_bdcopt-updmode   = 'A'. "S=SYNCHRONOUS A=ASYNCHRONOUS L=LOCAL
  ls_bdcopt-defsize   = 'X'.
  ls_bdcopt-racommit  = 'X'.

  refresh lt_return.
  call transaction 'FV60'
  using bdc_data
        messages into lt_return
        options from ls_bdcopt.

endfunction.




Turn off default MS Word Editor in Smartforms SAP S/4HANA

Fix SMARTFORMS and SE71 Access Issue in S/4HANA - Enhancement Solution Fix SMARTFORMS and SE71 Access Issue in S/...