ABAP

ABAP

Monday, May 28, 2012

bapi_sales_order change

constants :gc_x(1) type c value 'X'.
  data: begin of gt_return_all occurs 0,
        log_nmb(4)   type c,
        doc_nmb(10)  type c,
        itm_nmb(6)   type c,
        log_dsc(100) type c,
      end of gt_return_all.
  data: "gv_funcname(29) VALUE 'YUSD_GATP_GET_UPDATE_RSC_DONE',
        lv_vbeln type bapivbeln-vbeln,
        lv_posnr type posnr_va,
       " lv_spart TYPE vbap-spart,
        ls_order_header_in  like bapisdh1,
        ls_order_header_inx like bapisdh1x.
  data: lt_ord_itm     like bapisditm occurs 0 with header line,
        lt_ord_itm_x   like bapisditmx occurs 0 with header line,
        lt_return      like bapiret2 occurs 0 with header line,
        lt_extensionin like bapiparex occurs 0 with header line.
  data: ls_exsi like bape_vbap,
        ls_exsx like bape_vbapx.
*  DATA: A(1) Value 1.
*  WHILE A = 1.
*  ENDWHILE.

  loop at gt_data.
    clear: lv_vbeln, lv_posnr,
           ls_order_header_in,
           ls_order_header_inx.

    ls_order_header_inx-updateflag = 'U'.
    lv_vbeln = gt_data-delnr.
    lv_posnr = gt_data-delps.

    clear: lt_extensionin[],
           lt_ord_itm[],
           lt_ord_itm_x[],
           lt_return.
*
    ls_exsi-vbeln    = lv_vbeln.
    ls_exsi-posnr    = lv_posnr.
    ls_exsi-zzresch  = gc_x.
*
    lt_extensionin-structure = 'BAPE_VBAP'.
    lt_extensionin-valuepart1 = ls_exsi.
    append lt_extensionin.

    ls_exsx-vbeln   = lv_vbeln.
    ls_exsx-posnr   = lv_posnr.
    ls_exsx-zzresch = 'X'.

    lt_extensionin-structure = 'BAPE_VBAPX'.
    lt_extensionin-valuepart1 = ls_exsx.
    append lt_extensionin.
*    CLEAR : lv_spart .
*    SELECT SINGLE spart
*             FROM vbap
*             INTO lv_spart
*            WHERE vbeln EQ lv_vbeln
*              AND posnr EQ lv_posnr.

    lt_ord_itm-itm_number  = lv_posnr.
    append lt_ord_itm.

    lt_ord_itm_x-itm_number = lv_posnr.
    lt_ord_itm_x-updateflag = 'U'.

*    lt_ord_itm_x-division   = 'X'.
    append lt_ord_itm_x.
*    EXPORT gv_funcname TO MEMORY ID 'gv_funcname'.
    call function 'BAPI_SALESORDER_CHANGE'
      exporting
        salesdocument    = lv_vbeln
        order_header_in  = ls_order_header_in
        order_header_inx = ls_order_header_inx
      tables
        return           = lt_return
        order_item_in    = lt_ord_itm
        order_item_inx   = lt_ord_itm_x
        extensionin      = lt_extensionin.
    read table lt_return with key type = 'E'.
    if sy-subrc ne 0.
      call function 'BAPI_TRANSACTION_COMMIT'
        exporting
          wait = 'X'.
    else.
      call function 'BAPI_TRANSACTION_ROLLBACK'.
      loop at lt_return.
        clear :gt_return_all.
        gt_return_all-log_nmb = ''.
        gt_return_all-doc_nmb = lv_vbeln.
        gt_return_all-itm_nmb = lv_posnr.
        gt_return_all-log_dsc = lt_return-message.
        append gt_return_all.
      endloop.
    endif.
  endloop.

Screen PushButton Checkbox



Checkboxları bir grup olarak tanımlamak icin tek tek ctrl ile secip sag tıklayıp define radio button olarak tanımlamamız gerekıyor .

Bunlara bir function code atıyoruz  gv_okcode olarak tanımladıgımız degere doluyor bu functıon code  . Eger radio olarak bir function kod atadıysak PAI'da  yakalıyoruz atadıgımız kodu  .


PBO 'da  baslık ve toolbarı ayarlıyoruz .
module status_0100 output.
  set pf-status 'GATP'.
  set titlebar  'GATP'.

endmodule.                 " STATUS_0100  OUTPUT








module user_command_0100 input.
  select single low
           from tvarvc
           into gv_system
          where name eq 'ZLOGSYS'.
  if gv_okcode eq 'RADIO'.
    if radio1 = 'X'.
      perform f_call_transaction using 'ZRGGATP_002' gv_system.
    elseif radio2 = 'X'.
      perform f_call_transaction using 'SM37'        gv_system.
    elseif radio3 = 'X'.
      perform f_call_transaction using 'ZRGGATP_004' gv_system.
    endif.
  elseif gv_okcode eq 'PUSH'.
    perform f_call_transaction using 'ZRGGATP_002' gv_system.
  elseif gv_okcode eq 'PUSH1'.
    perform f_call_transaction using 'SM37'        gv_system.
  elseif gv_okcode eq 'PUSH2'.
    perform f_call_transaction using 'ZRGGATP_004' gv_system.
  endif.
endmodule. 





Ayrıca gui statuste back tusu veya exit tusu ıcın functional type exit command girip daha sonra kodumuzdada 
asagıdakı gıbı bır modul yazdıgımızda cıkıs ıslemı yapıyor bu tuslara bastıgımızda . 
*&---------------------------------------------------------------------*
*&      Module  exit  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
module exit input.
  leave program.
endmodule.                 " exit  INPUT 

Friday, March 23, 2012

Custom Container'da ALV yaratma

Screen'de yarattığımız Custom Container 'CC' ismini verdik.
DATA: gv_custom_container   TYPE REF TO cl_gui_custom_container,
      gv_grid               TYPE REF TO cl_gui_alv_grid,
      gt_itab LIKE TABLE OF vbap WITH HEADER LINE,
      gt_fcat               TYPE lvc_t_fcat.

    IF gv_custom_container IS INITIAL .
      CREATE OBJECT gv_custom_container
        EXPORTING
          container_name = 'CC'.
      CREATE OBJECT gv_grid
        EXPORTING
          i_parent = gv_custom_container.
      CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
        EXPORTING
          i_structure_name       = 'VBAP'
        CHANGING
          ct_fieldcat            = gt_fcat
        EXCEPTIONS
          inconsistent_interface = 1
          program_error          = 2
          OTHERS                 = 3.
      SELECT * FROM vbap INTO CORRESPONDING FIELDS OF TABLE
        gt_itab UP TO 5 ROWS.
      CALL METHOD gv_grid->set_table_for_first_display
        EXPORTING
          i_save                        = 'A'
        CHANGING
          it_outtab                     = gt_itab[]
          it_fieldcatalog               = gt_fcat[]
        EXCEPTIONS
          invalid_parameter_combination = 1
          program_error                 = 2
          too_many_lines                = 3
          OTHERS                        = 4.
      IF sy-subrc <> 0.
        MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
                   WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
      ENDIF.
    ENDIF. 

Tuesday, March 20, 2012

Custom table silme işlemi delete

1. DELETE FROM dbtab WHERE condition. 
DELETE FROM (dbtabname) WHERE condition. 
2. DELETE dbtab. 
DELETE *dbtab. 
DELETE (dbtabname) ... 
3. DELETE dbtab FROM TABLE itab. 
DELETE (dbtabname) FROM TABLE itab. 
4. DELETE dbtab VERSION vers. 
DELETE *dbtab VERSION vers.  

Wednesday, March 14, 2012

ALE EDI arasındaki fark

ALE sistemler arasındaki köprüyü oluşturuyor. EDI ise dataları SAP ve nonSAP sistemlerine belirli bir düzende taşıyan bir araç denilebilir. IDOC bu data ları taşıyan konteynır lardır.

Monday, March 12, 2012

Smartform ' a Giris & subtotal & total


       gv_formname type tdsfname value 'FORMUN ADI'
       gv_fm_name  type rs38l_fnam,


  call function 'SSF_FUNCTION_MODULE_NAME'
    exporting
      formname           = gv_formname
    importing
      fm_name            = gv_fm_name
    exceptions
      no_form            = 1
      no_function_module = 2
      others             = 3. 


    call function gv_fm_name
          exporting
            control_parameters = ls_control_parameters
            output_options     = ls_output_options
            user_settings        = ''
            gs_header            = gs_header
            gv_kunnr             = gv_kunnr
            gv_ubknt             = gv_ubknt
            gv_total               = gv_total
          importing
            job_output_info   = gs_return
          tables
            gt_send               = gt_send
          exceptions
            formatting_error   = 1
            internal_error       = 2
            send_error           = 3
            user_canceled      = 4
            others                  = 5.

exporting ler   smartform'da form interface kısmında tanımlanır programdaki type ne ise o olacak sekılde  .

data : begin of gt_header occurs 0.
        include structure ypkfih001.
data :  end of gt_header.
  gs_header   like line of gt_header,

gt_header ise bızım yarattıgımız structure imız olur . Burdan text translationda yapmak mumkundur .


GS_HEADER LIKE YPKFIH001
GV_KUNNR LIKE YPKFII001-KUNNR
GV_UBKNT TYPE CHAR20
GV_TOTAL LIKE YPKFII001-DMBTR


Aynı sekılde tables olarak gonderılen GT_SEND form interface icinde tables tabında tanımlanır .


Smartformda kullanacagımız degıskenler ıse global defınatıons kısmında tanımlanarak kullanılır .



Main loop ta tableda donerken calculations tabında  istedigimiz alanın toplamını alabılırız bunun icin
istedigimiz alanı fieldname  'e yazıyoruz  bir adet sonuc olusturacak fieldname atıyoruz ve yapacagımız operationu seciyoruz aynı sekılde kac ıtem oldugunuda saydırabılırız .


Bu basit ornegimizde yukarıdaki gibi subtotal ve kac adet ıtem oldugunu bulabılıyoruz bunları footerda yazdıyoruz aynı sekılde clear ettirerek her sayfada subtotali baska bir degıskene atıp toplatarakta son totali bulabılırız .

Monday, January 9, 2012

ALV subtotal yaptırtma.

  DATA lt_sort TYPE slis_t_sortinfo_alv. "sort catalog
  DATA ls_sort TYPE slis_sortinfo_alv.

  CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
    EXPORTING
      i_program_name     = sy-repid
      i_internal_tabname = 'ITAB_S'
      i_inclname         = sy-repid
*      i_bypassing_buffer = 'X'
    CHANGING
      ct_fieldcat        = gt_fieldcat[].
******lt_sort tablosuna hangi alan bazında toplayacaksak onu yazıyoruz..
    ls_sort-spos      = 1.
    ls_sort-fieldname = 'AUFNR'.
    ls_sort-tabname = 'ITAB_S' .
    ls_sort-up = 'X'.
    ls_sort-subtot = 'X'.
    APPEND ls_sort TO lt_sort.
***hangi alanı toplayacaksak onu da fieldcat te yazıyoruz.
    READ TABLE gt_fieldcat WITH KEY fieldname = 'GMNGA'.
    IF sy-subrc = 0.
        gt_fieldcat-col_pos = '4'.
        gt_fieldcat-hotspot = 'X'.
        gt_fieldcat-do_sum  = 'X'.
        MODIFY gt_fieldcat INDEX sy-tabix.
    ENDIF.

  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
*      i_bypassing_buffer = 'X'
      i_callback_program = sy-repid
      i_callback_user_command  = 'F_USER_COMMAND'
      i_callback_pf_status_set = 'F_SET_EKRAN'
      i_callback_top_of_page   = 'F_ALV_INFO'
      it_fieldcat        = gt_fieldcat[]
      is_layout          = gs_layout
      it_sort            = lt_sort[]
      i_save             = 'A'
    TABLES
      t_outtab           = itab_s
    EXCEPTIONS
      program_error      = 1
      OTHERS             = 2.


Total Pageviews