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(2type n,
     strbdcfld  type string.

  refresh bdc_data.

  clear str_bldatstr_budatstr_zfbdt.

  concatenate i_header-bldat+6(2'.' i_header-bldat+4(2'.' i_header-bldat(4into str_bldat.
  concatenate i_header-budat+6(2'.' i_header-budat+4(2'.' i_header-budat(4into str_budat.
  concatenate i_header-zfbdt+6(2'.' i_header-zfbdt+4(2'.' i_header-zfbdt(4into 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_glitabidx.
  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_wihtaxitabidx.
  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.




Belajar SAP ABAP RAP

  Belajar SAP ABAP RAP: Pengenalan dan Konsep Dasar Restful ABAP Programming Model Kalau kamu seorang ABAPer yang mulai terjun ke dunia SAP...