Quantcast
Channel: SCN : All Content - ABAP Development
Viewing all 8332 articles
Browse latest View live

Smartforms Zebra - custom height size for page

$
0
0

Hi, I have a requirement to print delivery in a zebra printer, I dont have the number of items fixed, so when I print there is a waste of paper when there is a few items.

 

Can anybody help to define a custom height size for the format or there is a command to stop the print?

 

All ideas for solve my problem are WELCOME.

 

 

Alvaro.


Changing/Update Budget entry document in FM

$
0
0

Is there any BAPI or FM which I can use to change the header text in a FM budget entry document.

 

Thanks.

Abap Iterating and Iterator Classes

$
0
0

In the comments of the conversation Top 10 ABAP crimes a few of us were discussing the use of an iterators and iterator classes. Below I will add what has already been presented:

 

Fabio Pagoti

I have read about it but I had never used. What I usually do is just encapsulating an internal table inside a class and not modelling table rows as objects (I hope this was clear). In this case I'm not sure if the iterator class can be used and useful.

Matthew Billingham

I have used iterators for particular complex data structures. Underneath was an internal table of references, and I used indexes to keep track. I could of course have looped through the internal table at the higher level instead of using an iterator, but due to the data complexity, I really didn't want to expose the internal table at that level.

 

Joao Sousa

I do in complex application (in my latest one I don't use loops except to deal with BAPIRET), because it's the way you code in C# and Java, and that way I can easily translate the code to C#. Basically for large modules I program as if I was coding in C#.

 

If you use Collections and HashMaps it's the only way to "loop", although I do miss the typed List<T> and HashMap<T,X>.

 

PS: Actually it's not the only way, there's the get_values_table or something .

I use CL_OBJECT_MAP and CL_OBJECT_COLLECTION which are the equivalent to HashMap and List the problem is that these are not typed lists and so I have to rely on casts that the compiler doesn't check for correctness.

 

I usually write the type in the description of the return parameter of the method.

Jeffrey Vander Graaf

  1. I used Iterator classes heavily in java and C#, not in abap yet. I want to use them again. I relied heavily on array list, hash maps, lists, etc when programming in other languages.
  2. Restrictions...hmm, in java i can't critique, they are awesome. In abap, the primary hurdle would probably be generics. Abap does generics differently than java but I assume adding a constructor to initially set the type of object of the list would solve that. Adding a check to make sure objects of that type can only be added would be next. Iterator classes can be implemented from anywhere an object can be implement. If I run into any other hurdles i'll let you know.
  3. Too many, If I ever needed a place to hold multiple objects of the same type I'd use an iterator class. They provide a wide range of functionality for accessing a list of objects, and follows the object oriented design model. From what I was taught at University and experienced in the field, data structures such as link lists are essential.

What is everyone's opinion on iterator classes and the comments above?

 

Here are some useful links to similar postings:

ABAP Objects

Issue with CA operator

$
0
0

Hello Experts,

 

I've a requirement, where I need to do validation on a field (gv_test1), which stored my results.

 

All I'm trying to do, is to check that if my variable 'gv_test1' has any special characters, which I've stored in a constant c_valchk.

 

For reference, here is my code.


constants: c_valchk(35)     type c value '<>?/`,./!@#$%&*-_+=~|\[{]}()"'.

data: gv_test1                   type char10.

    if gv_test1 ca c_valchk"ca
       clear: pwa_index_h1_postalcode.
    else.
       pwa_index_h1_postalcode = gv_test1.
    endif.

However, always my code goes and clear value in 'pwa_index_h1_postalcode' field, even when 'gv_test1' doesn't contain any special character. It never ever goes and copy value gv_test1 to pwa_index_h1_postalcode.

 

Can anybody see what mistake I'm making in my above code, and how to rectify it, please?

 

Many thanks in advance.

Abap OO Logging

$
0
0

Currently I know of the bal_log_***** function FM and another logging class that utilizes the 'bal' FM called cl_sbal_logger.

Personally I don't think this is enough for a logging class. I would like to see abap do something similar to the java.util.logging package and the log4j package. Does anyone know if SAP has implemented something like this in abap already?

Need to update BP/BUT000 name data

$
0
0

Hello,

 

I'm trying to change the first/last name data via the BDT.

 

In tx BUS7 I created an event on DCHCK (Item=100100 FM=ZTEST_BDT_FM CALL=X Appl.=BUP) and it calls my FM.

 

In my FM I've got the following code...

DATA:     ls_but000 TYPE but000,

               it_new_but000 LIKE TABLE OF but000,

               wa_new_but000 LIKE LINE OF it_new_but000.

 

CALL FUNCTION 'BUP_BUPA_BUT000_GET'

     IMPORTING

       e_but000 = ls_but000

     TABLES

       et_but000 = it_new_but000.

 

LOOP AT it_new_but000 INTO wa_new_but000.

     MOVE-CORRESPONDING ls_but000 TO wa_new_but000.

     wa_new_but000-name_first = 'worked'.

     MODIFY it_new_but000 FROM wa_new_but000.

ENDLOOP.


The BUP_BUPA_BUT000_GET function gets the name data but how do I update it back to the screen? Updating the et_but000 table name_first field doesn't work.

 

Thanks for the help.

 

Steve

XML download of smartform output generated by driver program

$
0
0

Hi All,

 

I got a requirement that i need to download smartform output as PDF or XML files.

 

I am done with PDF but i need help in downloading as a XML file.

 

Thanks in Advc.

 

Regards,

Naresh.

CTS transport Directory files

$
0
0

Hi all,

 

We encountered a problem where a data file was changed and it caused a big mess.

I would like to know if there is a function module a method or a program to use to read the contents of the data file.

something like STRF_READ_COFILE which is used to read the cofile.

With this tool, i will be able to make sure that the object list in E071 is what is contained in the data file.

 

Thank you very much


user feild F4 serach help restriction IF_EX_NETW_USER_FIELDS_F4~AT_F4

$
0
0

Hi,

I'm populating value for user feild AFVGD-USR02

using method  IF_EX_NETW_USER_FIELDS_F4~AT_F4, which is working fine. but i want to restrict user not to edit that field; restrict user only to select from f4.

how do i achive this?

 

i have below code for now. in  IF_EX_NETW_USER_FIELDS_F4~AT_F4,

 

 

CALL FUNCTION

 

'F4IF_FIELD_VALUE_REQUEST'
EXPORTING
TABNAME
= 'ZCOPQ_MAINT'
FIELDNAME
= 'COPQ'
SEARCHHELP
= 'ZCOPQ_MAINT'
* SHLPPARAM = ' '
* DYNPPROG = ' '
* DYNPNR = ' '
* DYNPROFIELD = ' '
* STEPL = 0
VALUE = 's'
* MULTIPLE_CHOICE = ' '
DISPLAY
= 'F'
* SUPPRESS_RECORDLIST = ' '
* CALLBACK_PROGRAM = ' '
* CALLBACK_FORM = ' '
* CALLBACK_METHOD =
* SELECTION_SCREEN = ' '
* IMPORTING
* USER_RESET =
TABLES
RETURN_TAB
= lt_return
* EXCEPTIONS
* FIELD_NOT_FOUND = 1
* NO_HELP_FOR_FIELD = 2
* INCONSISTENT_HELP = 3
* NO_VALUES_FOUND = 4
* OTHERS = 5
.
IF SY-SUBRC <> 0.
* Implement suitable error handling here
ENDIF.


read table lt_return into ls_return index 1.

if ls_return-fieldval is not initial.
e_value
= ls_return-fieldval.
endif

.

Show POPUP after first screen in VA01

$
0
0

Hi all,

 

I need to show the below popup message in VA01, just after pressing enter in the first screen.

 

Create with Reference.jpg

Create Sales Order Initial Screen.jpg

 

It can be done?

 

I have searched a lot and I couldn't find any enhancement to accomplish this. I followed this approach:  http://wiki.scn.sap.com/wiki/display/ABAP/Enhancement+Framework+-+Implicit+Enhancement+-+Enhancing+VA01+on+entering+sold+to+party+displaying+dunning+and+accounting+data but this is executed after enter sold-to party in second screen...

 

Any suggestion?

 

I will appreciate any guidance, thanks in advance.

 

Regards!

Full table scan when parsing Open SQL in oracle native SQL

$
0
0

Hello Experts,

 

I would like to ask you why after upgrade to EHP7 SP 6, a select statemen that worked well in EHP7 SP 0, now is making a full table scan over the vbfa table when i see the ST05 sql trace, what triggers to very poor performance when reading this table.

 

Please welcome all your advices and comments to this simple SQL.

 

SELECT t1~vbeln t1~posnr t1~vgbel t1~vgpos t1~lfimg t1~ntgew INTO TABLE it_entregas

FROM lips AS t1

INNER JOIN vbfa AS t2

ON t1~vbeln = t2~vbeln

AND t1~posnr = t2~posnn

FOR ALL ENTRIES IN it_pedidos

WHERE t2~vbelv = it_pedidos-vbeln

      AND t2~posnv = it_pedidos-posnr

     AND t2~vbtyp_n = 'J'

      AND t2~vbtyp_v = 'C'.

 

The internal table it_pedidos contains the sales order document number with the position number, to get the delivery numbers, and quantity and net weigth.

 

Regardless the way of get the information (i mean if there is another way to select the information), i would like to know why this sentence have to do a full table scan over vbfa table.

 

When i realized that this was happening i do a sql trace with the same scenario in a system before upgrade and compare it with this system (after upgrade) so what i found was that before the upgrade there was not full table scan.

 

Below is the execution plan in system after upgrade:

 

SQL Statement

SELECT

  DISTINCT "T1"."VBELN","T1"."POSNR","T1"."VGBEL","T1"."VGPOS","T1"."LFIMG","T1"."NTGEW"

FROM

  "LIPS" "T1" INNER JOIN "VBFA" "T2" ON "T1"."MANDT"="T2"."MANDT" AND "T1"."VBELN"="T2"."VBELN" AND

  "T1"."POSNR"="T2"."POSNN"

WHERE

  ("T1"."MANDT"=:A0 AND "T2"."VBELV"=:A1 AND "T2"."POSNV"=:A2 AND "T2"."VBTYP_N"=:A3 AND

  "T2"."VBTYP_V"=:A4) OR ("T1"."MANDT"=:A5 AND "T2"."VBELV"=:A6 AND "T2"."POSNV"=:A7 AND

  "T2"."VBTYP_N"=:A8 AND "T2"."VBTYP_V"=:A9) OR ("T1"."MANDT"=:A10 AND "T2"."VBELV"=:A11 AND

  "T2"."POSNV"=:A12 AND "T2"."VBTYP_N"=:A13 AND "T2"."VBTYP_V"=:A14)

ZREPDISPO TST.JPG

Below is the execution plan in system before upgrade:

 

  SQL Statement

  ----------------------------------------------------------------------------------------------------------------------

  SELECT

  "T1"."VBELN","T1"."POSNR","T1"."VGBEL","T1"."VGPOS","T1"."LFIMG","T1"."NTGEW"

  FROM

  "LIPS" "T1" INNER JOIN "VBFA" "T2" ON "T2"."MANDT"=:A0 AND "T1"."VBELN"="T2"."VBELN" AND "T1"."POS

  NR"="T2"."POSNN"

  WHERE

  ("T1"."MANDT"=:A1 AND "T2"."VBELV"=:A2 AND "T2"."POSNV"=:A3 AND "T2"."VBTYP_N"=:A4 AND

  "T2"."VBTYP_V"=:A5) OR ("T1"."MANDT"=:A6 AND "T2"."VBELV"=:A7 AND "T2"."POSNV"=:A8 AND

  "T2"."VBTYP_N"=:A9 AND "T2"."VBTYP_V"=:A10) OR ("T1"."MANDT"=:A11 AND "T2"."VBELV"=:A12 AND

  "T2"."POSNV"=:A13 AND "T2"."VBTYP_N"=:A14 AND "T2"."VBTYP_V"=:A15)

 

ZREPDISPO SBX.JPG

After this results i try spliting this SQL into 2 SQL, one for VBFA and another to LIPS, the problem was solved, now it is not using full table scan:

 

Code snippet adjusted.JPG

Below is the execution plan for this SQL:

 

SQL Statement

----------------------------------------------------------------------------------------------------------------------

SELECT

  DISTINCT "VBELN","POSNN"

FROM

  "VBFA" "T1"

WHERE

  ("MANDT"=:A0 AND "VBELV"=:A1 AND "POSNV"=:A2 AND "VBTYP_N"=:A3 AND "VBTYP_V"=:A4) OR ("MANDT"=:A5

  AND "VBELV"=:A6 AND "POSNV"=:A7 AND "VBTYP_N"=:A8 AND "VBTYP_V"=:A9) OR ("MANDT"=:A10 AND "VBELV"=

  :A11 AND "POSNV"=:A12 AND "VBTYP_N"=:A13 AND "VBTYP_V"=:A14)

 

ZREPDISPO TST SIN JOIN.JPG

My question is why did i have to do this if technically is better use joins that using for all entries, besides why SAP changed the way it determines the sql if it was working well.

 

Here some components version after upgrade.

Versiones.JPG

 

I apprecitate all your comments.

 

Best regards.

 

Jhon Jairo Teran

Full Enancement Spot Transport Order

$
0
0

Dear Experts,

 

 

I was working in the development and implementation of various BAdI's. Including each method in a dedicated Transport Order.

 

Now I need to make a full Transport Order including all the implementation elements: "Implementation Amplification", "BAdI Implementation", corresponding Clases, filters and interfaces.

 

 

My question is: is there any way of doing that into one single Transport Order? how?

 

 

I am attaching a screenshot with all the objects (and its dependencies) I what to add in that Transport Order.

 

 

 

 

Thanks a lot in advance,

Kind regards,

 

Lucas Annand.

Error REFS_NOT_SUPPORTED_YET when I Submit Program in a module function

$
0
0

Hi GURUS,

 

I've been trying a SUBMIT program in a module Function to return the results to a ALV grid.

 

I used the same type of SUBMIT of this discussion -->Retrieving ALV grid from Submit statement

 

Check this code

 

      SUBMIT rtpm_trf_positions_display WITH SELECTION-TABLE lt_selscreen

WITH P_DATE = sy-datum

WITH so_prdty = 'FTC'

      AND RETURN.

 

 

      TRY.

 

 

          cl_salv_bs_runtime_info=>get_data_ref(        IMPORTING r_data = lr_pay_data ).

          ASSIGN lr_pay_data->* TO <lt_pay_data>.

        CATCH cx_salv_bs_sc_runtime_info.

 

 

          MESSAGE `Unable to retrieve ALV data` TYPE 'E'.

 

 

      ENDTRY.

 

 

      cl_salv_bs_runtime_info=>clear_all( ).

 

 

      LOOP AT <lt_pay_data> ASSIGNING  <lt_test>.

 

 

        MOVE-CORRESPONDING  <lt_test> TO it_ty_alv_exibe  .

 

 

        APPEND it_ty_alv_exibe .

 

 

      ENDLOOP.

 

When I execute this function module, in line "SUBMIT rtpm_trf_positions_display WITH SELECTION-TABLE lt_selscreen" this step return Error in ST22.

-----------------------------------------------------------------------------------------

For the statement "EXPORT/IMPORT ...", object references,

interface references, and data references

are currently not supported.

-----------------------------------------------------------------------------------------

Line:

export t_data from data to memory id cl_salv_bs_runtime_info=>c_memid_data.

-----------------------------------------------------------------------------------------

Method: SET_DATA

-----------------------------------------------------------------------------------------

 

Could you help me?

 

I don't know if this error is about the statement SUBMIT with parameters or the error is about Submit a standard program?

 

Can I change the statement SUBMIT to another to retrieve results a program to ALV?

 

I have a ready another module function to another program (but this program custom), and the statement SUBMIT works fine.

 

Check the code.

 

SUBMIT ZSMRRSKR_CALC_NPV WITH SELECTION-TABLE lt_selscreen

* WITH s_bukrs-low = '1401'

* WITH s_acm = '0000000033_T'

* WITH p_dt_sel = v_date

WITH p_dt_sel = v_date

       AND RETURN.

 

       TRY.

 

           cl_salv_bs_runtime_info=>get_data_ref(        IMPORTING r_data = lr_pay_data ).

           ASSIGN lr_pay_data->* TO <lt_pay_data>.

         CATCH cx_salv_bs_sc_runtime_info.

 

           MESSAGE `Unable to retrieve ALV data` TYPE 'E'.

 

       ENDTRY.

 

       cl_salv_bs_runtime_info=>clear_all( ).

 

       LOOP AT <lt_pay_data> ASSIGNING  <LT_TEST>.

 

         MOVE-CORRESPONDING  <LT_TEST> TO it_ty_alv_exibe  .

 

         APPEND it_ty_alv_exibe .

 

       ENDLOOP.



Thank you so much.

Get the list of jobs that uses the same program and variant

$
0
0

Hi All,

 

Would like to ask, how could I get the list of jobs that uses the same program and variant? Is this possible via SM37? Or a table name that I could check?

 

Thanks in advance...

Why should I need Task inside Transport Request?

$
0
0

Hi All,

I have few clarifications, I don't know whether this may be right or wrong. But I want everyone to have attention about this topic.

 

Why we are creating Transport Request and Task Number?

 

I created the report in my dev client, that need to be moved to QAS client.  In order to do that,  I need TR(Transport Request) which contains all the dev objects that need to be imported in QAS. After importing done, report will be available in QAS system.

 

So TR is required; it looks like container(Truck) which moves data from one place to another place safely. Then why we need Task Number.. Why SAP included Task concept inside TR.

 

But When I saw my TR in SE01/SE09, everything is stored under Task instead of TR....

 

If all the objects are in Task means, Why our consultants always asking before releasing the TR like below.


Functional Consultants: Is all the objects are included in the TR?

 

Why they are not asking about Task? i.e (Is all the objects are included in Task?)

 

If all the objects are saved in Task itself, then I can move Task itself know, why system needs me to move both the things?

 

Inside single TR, Multi task can be included that is acceptable. But only for this case, are we creating TR and Task Number every time.

 

Regards

 

Rajkumar Narasimman


Is there any FM to get check idoc received into sap system

$
0
0

Hi All,

 

I have a requirement, first to validate the idoc So I thought to check Did we receive idoc from sender and then validate it. So is there any FM to check through coding or should we manually goto t-code and check it.

 

Please help me.

 

Thanks,

Revanth VP

BAPI- Sale Order Creation with Reference to Contract

$
0
0

Hi Experts,

 

A file with the Contract details is uploaded in the ZProgram and the Problem which i face is ...

 

1. When i create the Sale Order manualy..with that reference data...Item Category displays as ZWAN ...

2. but, via program it populates Item category as TAN ...it should be ZWAN.

 

 

Can suggest an idea on the same ..

 

I have listed the available code for it ...

 

  

*C--Populating the Sales order Header data.
    wa_order_header_in-doc_type     = 'TA'.
    wa_order_header_in-sales_org    = wa_data-vkorg.
    wa_order_header_in-distr_chan   = wa_data-vtweg.
    wa_order_header_in-division     = wa_data-spart.
    wa_order_header_in-req_date_h   = wa_data-req_del_dt.
    wa_order_header_in-ref_doc      = wa_data-contract.
*    wa_order_header_in-ref_doc_l      = wa_data-contract."Add kar
    wa_order_header_in-refdoc_cat   = 'G'.
    IF l_flag_po IS NOT INITIAL.
      wa_order_header_in-purch_no_c   = wa_data-po_num.
      wa_order_header_in-purch_date   = wa_data-po_date.
      wa_order_header_inx-purch_no_c  = c_x.
      wa_order_header_inx-purch_date  = c_x.
    ENDIF.
    CLEAR l_flag_po.

    wa_order_header_in-ship_cond    = wa_data-shp_cond.
    wa_order_header_in-cust_grp5    = wa_data-cust_grp5.
    wa_order_header_in-incoterms1   = wa_data-incoterms1.
    wa_order_header_in-incoterms2   = wa_data-incoterms2.
    wa_order_header_in-pmnttrms     = wa_data-pmnttrms.

    wa_order_header_inx-doc_type    = c_x.
    wa_order_header_inx-sales_org   = c_x.
    wa_order_header_inx-distr_chan  = c_x.
    wa_order_header_inx-division    = c_x.
    wa_order_header_inx-req_date_h  = c_x.
    wa_order_header_inx-ref_doc     = c_x.
    wa_order_header_inx-refdoc_cat  = c_x.


*C--Populating the Sales order Item data.
    wa_order_item-material          = wa_data-matnr.
    wa_order_item-ref_doc           = wa_data-contract.
    wa_order_item-ref_doc_it        = wa_data-contract_item.
    wa_order_item-itm_number        = wa_data-posnr.
    wa_order_item-ref_doc_ca        = 'G'.
    wa_order_item-sales_unit        = wa_data-uom.
    wa_order_item-purch_no_c        = wa_data-po_num.
    wa_order_item-purch_date        = wa_data-po_date.

*C--Begin of Change DF-3508950 TR#CIDK9A0FPG
*C--Read Plant from Contract & pass to BAPI
    CLEAR l_werk.
    SELECT SINGLE werks INTO l_werk FROM vbap
                  WHERE vbeln EQ wa_data-contract AND
                        posnr EQ wa_data-contract_item.
    IF sy-subrc = 0.
      wa_order_item-plant = l_werk.
    ENDIF.
*C--End of Change DF-3508950 TR#CIDK9A0FPG

    APPEND wa_order_item TO t_order_item.

    wa_order_itemx-material         = c_x.
    wa_order_itemx-item_categ       = c_x.
    wa_order_itemx-ref_doc          = c_x.
    wa_order_itemx-ref_doc_it       = c_x.
    wa_order_itemx-ref_doc_ca       = c_x.
    wa_order_itemx-purch_no_c       = c_x.
    wa_order_itemx-purch_date       = c_x.

*C--Begin of Change DF-3508950 TR#CIDK9A0FPG
*C--Set flag for Plant in line item data
    IF wa_order_item-plant IS NOT INITIAL.
      wa_order_item-plant             = c_x.
    ENDIF.
*C--End of Change DF-3508950 TR#CIDK9A0FPG

    APPEND wa_order_itemx TO t_order_itemx.

*C--Populate Sold-to party and ship-to party numbers

*C--Begin of Change DF-3508950 TR#CIDK9A0FPG
*C--Read Sold-to Party from Contract & pass to BAPI
    SELECT SINGLE kunnr INTO l_soldto FROM vbpa
                 WHERE vbeln EQ wa_data-contract AND
                       parvw EQ c_ag.
    IF sy-subrc = 0.
      wa_parnr-partn_role = c_ag.           " 'AG' .
      wa_parnr-partn_numb = l_soldto.

      APPEND wa_parnr TO t_prtnr.
      CLEAR: wa_parnr, l_soldto.
    ENDIF.
*C--End of Change DF-3508950 TR#CIDK9A0FPG

    wa_parnr-partn_role = c_we.           " 'WE' .
    wa_parnr-partn_numb = wa_data-shipto.

    APPEND wa_parnr TO t_prtnr.
    CLEAR wa_parnr.

*C--Populate Hon Sales Person

    wa_parnr-partn_role = c_zs.           "'ZS' .
    wa_parnr-partn_numb = wa_data-salesperson.

    APPEND wa_parnr TO t_prtnr.
    CLEAR wa_parnr.

*C--Populate End user

    wa_parnr-partn_role = c_zu.           "'ZU' .
    wa_parnr-partn_numb = wa_data-enduser.

    APPEND wa_parnr TO t_prtnr.
    CLEAR wa_parnr.

**C--Populate schedule lines data for sales order

    wa_shline-req_qty    = wa_data-req_qty.
    wa_shline-itm_number = wa_data-posnr.
    APPEND wa_shline TO t_shline.

    wa_shlinex-req_qty  = c_x.
    wa_shlinex-itm_number = wa_data-posnr.
    APPEND wa_shlinex TO t_shlinex.

    AT END OF key.

      IF l_mandt_chk EQ c_x.
      ELSE.
        wa_err_handling = c_p.
*C--BAPI to create Sales order( VAO1 )
        CALL FUNCTION 'BAPI_SALESORDER_CREATEFROMDAT2'
          EXPORTING
            order_header_in     = wa_order_header_in
            order_header_inx    = wa_order_header_inx
            behave_when_error   = wa_err_handling
          IMPORTING
            salesdocument       = wa_vbeln
          TABLES
            return              = t_return
            order_items_in      = t_order_item
            order_items_inx     = t_order_itemx
            order_partners      = t_prtnr
            order_schedules_in  = t_shline
            order_schedules_inx = t_shlinex.

 

Regards,

Karthik S

Update a select-option From Table

$
0
0

Hi,

 

I'm originally a C++ developer trying to learn ABAP.

 

I want to append values to a select-option from a table if another select-option is specified.  I wrote some code that I believe will work but looks very inefficient to me.  Any advice on how to streamline this process would appreciated.

 

The following is pseudo code and I left out some tweaks for simplicity and understanding but the basic idea is there.  I want to add selection criteria to a select-option based upon a second select option (that may or may not be provided) table lookup.

 

Example:

DATA: groups TYPE table3.

 

SELECT-OPTIONS:

     s_accountNo FOR table1-accountNo,

     s_accountGroupNo FOR table2-accountGroupNo.

 

**** get the Account Groups that meet the selection criteria.

START-OF-SELECTION

     SELECT * INTO TABLE groups

          FROM table3

          WHERE accountGroupNo IN s_accountGroupNo.

 

**** Remove duplicate accounts from the Account Groups

SORT groups BY accountNo.

DELETE ADJACENT DUPLICATES FROM groups COMPARING accountNo.

 

**** Append the account #'s onto the s_accountNo range/select-option

LOOP AT groups.

     APPEND groups-accountNo TO s_accountNo.

ENDLOOP.

 

**** manually edit the  s_accountNo to have the correct option/sign for use in further select statements.

LOOP AT s_accountNo.

     s_accountNo-sign = 'I'.

     s_accountNo-option = 'EQ'.

     MODIFY s_accountNo.

ENDLOOP.

 

 

 

 

Thanks much,

-Chris

Batch Event Triggers sometimes not processed (job not executed)

$
0
0

Hi,

 

I hope that someone can shed a light on this problem that we are having with Batch Events and Job Triggering.

 

  • We defined a batch event using SM62.
  • We scheduled a periodic job using the event (AFTER EVENT )
  • In 99% of the times the job runs smoothly.
  • We run about 600 jobs a day.
  • On average, about 1% of the raised events don't trigger the job. Table  BTCEVTHISTORY shows us jobcount 0.


Anyone an idea what could cause this?

 

What happens if two or more triggers are raised almost simultaneously?

What happens if there is no batch proces available at the time of the trigger?

 

Regards

Ben Meijs

Academia ABAP (Conteúdo Programático)

$
0
0

Academia ABAP

 

 

• Objetivos do treinamento;

• Cronograma de atividades;

• Sobre a SAP;

• ERP (Enterprise Resource Planning);

• SAP ECC (ERP Central Components);

• Módulos SAP;

• ABAP (Advanced Business Application Programming).

 

 

Objetivos do treinamento

 

 

• Conhecer a linguagem de programação ABAP;

• Pré-requisitos:

– Conhecimentos básicos aplicados em lógica de programação;

– Conhecimento em linguagem SQL;

 

 

Cronograma de atividades

 

 

• Segundas, quartas e sextas-feiras;

• De 19:00 às 22:00;

• A partir de 13/01/2014 a 10/02/2014.

 

 

Sobre a SAP

 

 

• Os primeiros passos foram dados em 1972 por cinco engenheiros, ex-funcionários da IBM na cidade de Mannheim,  na Alemanha;

• Decidiram a empresa de desenvolvimento de sistemas: a SAP-AG;

• Tinham a visão de desenvolver um software aplicativo padrão para processos de negócios em tempo real;

• A sigla SAP é uma abreviação, em língua alemã, para o acrônimo Sistemas, Aplicativos e Produtos para Processamento de Dados em português;

• AG é a abreviatura utilizada na Alemanha para empresas do tipo S/A.

• Em 1995, a SAP AG tinha mais de 6.600 colaboradores ao redor do mundo;

• Nesse mesmo ano, a SAP liderava o mercado de softwares para ambiente cliente/servidor;

• Nessa época, ocupava a quinta posição no ranking das empresas de software no mundo;

• Hoje, mais de 183.000 empresas possuem o produto da SAP implementado;

• Em 1995, com a chegada ao país, a SAP Brasil tornou-se uma das maiores subsidiárias no mundo.

 

 

ERP (Enterprise Resource Planning)

• ERP é uma abreviação em língua inglesa para o acrônimo Planejamento dos Recursos Empresariais;

• Por vezes, é citado como SIGE, ou Sistema de Informações Gerenciais em diversas literaturas em português;

 

 

Arquitetura do SAP ECC

 

 

Estrutura do Servidor de Aplicações

 

 

Módulos SAP

 

 

• Sales & Distribution

– Gerenciamento integrado de todas tarefas para vendas, faturamento e expedição.

• Materials Management

– O processo completo de compras, com suporte integrado de resultados e planejamento de produção.

 

 

• Production Planning

– O sistema de PCP ajustável para todos os tipos de produção com suporte integrado de resultados e do gerenciamento de compras.

 

 

Módulos SAP

 

 

• Quality Management

– O sistema para o controle da qualidade assegurada em todas as áreas da cadeia logística.

• Plant Maintenance

– A solução independente de indústria para a administração da manutenção de sistemas produtivos.

 

 

• Human Resources Management

– Processamento integrado de  administração RH, gerenciamento de tempo e despesas de viagens e folha de pagamento;

– Planejamento organizacional, posicionamento, desenvolvimento educacional e controle do custo de pessoal em um sistema totalmente integrado.

 

 

• Financial Accounting

– Uma ampla visão do desempenho que inclui gerenciamento de caixa, banco eletrônico, controladoria financeira, orçamento de caixa e consolidação.

 

 

• Controlling

– Contabilidade de custos, desde a contabilidade de centros de custos e de elementos de custos até a análise de lucratividade.

 

 

• Asset Management

– O gerenciamento completo de todos os ativos fixos, desde da contabilidade tradicional de ativos e gerenciamento técnico de ativos até a controladoria de investimentos.

 

 

• Project Information System

– A integração de todas as áreas de serviços para o planejamento de projetos, processamento e controle.

 

 

• Business Workflow

– Definição de processos de negócios, com procedimentos de aprovação envolvendo simples liberação de releases até atividades mais complexas utilizadas em processos industriais.

 

 

• Executive Information System

– Acesso rápido aos dados, fatos e representações gráficas para decisões gerenciais.

 

 

Linguagem de Programação ABAP

 

 

Estrutura: ABAP Work Process

 

 

Estrutura das Aplicações

 

 

Sintaxe ABAP

 

 

• O código de um programa ABAP consiste de comentários e declarações da linguagem;

• Declarações ABAP começam sempre com uma palavra-chave da linguagem e são sempre finalizadas com um ponto final “ . “;

• As declarações podem conter várias linhas sendo que cada linha pode conter várias declarações;

 

 

Instruções ABAP

 

 

• Declarativas;

• Modularização;

• Controle;

• Chamada;

• Operacionais;

• Banco de Dados.

Instruções ABAP

 

 

Essas instruções definem os tipos de dados ou declaram objetos de dados que são usados por outras declarações em um programa ou rotina.

– Ex: TYPES, DATA, TABLES.

 

 

• Modularização:

Definem o processamento de instruções em bloco e são subdividas em:

– Eventos:

• são utilizados quando da execução de um bloco em eventos definidos.

Ex: AT-SELECTION SCREEN, START-OF-SELECTION

– Definição de keywords:

• São utilizadas na definição de subrotinas ou módulos de funções.

Ex: FUNCTION, FORM, MODULE.

 

 

Instruções ABAP

• Controle:

Utilizados para o processamento em bloco de acordo com certas condições.

– Ex: IF, WHILE, DO, CASE.

 

 

Instruções ABAP

• Chamada:

Utilizados para a chamada de blocos ou funções previamente escritas.

– Ex: PERFORM, CALL, SUBMIT, LEAVE TO.

 

 

Instruções ABAP

• Operacional:

São utilizadas para a manipulação de dados de estruturas declarativas.

– Ex: WRITE,  MOVE, ADD.

 

 

Instruções ABAP

• Banco de dados:

Estas instruções usam a interface de banco de dados para acessar as tabelas do banco de dados central. Elas são subdivididas em duas categorias:

– Open SQL

– Native SQL

 

 

Instruções ABAP

• Open SQL:

Subconjunto da linguagem padrão SQL92, que contém apenas a linguagem de manipulação de dados (DML). A interface de banco de dados converte a instrução Open SQL para os comandos relevantes do banco mais relevante.

– Ex: SELECT, INSERT, DELETE.

 

 

Instruções ABAP

• Native SQL:

São passadas diretamente da interface de banco de dados para o banco sem conversão.

Permite aproveitar benefícios do banco de dados utilizado nas empresas, incluindo a linguagem de definição de dados (DDL).

– Ex: CREATE TABLE, CREATE INDEX.

 

 

Tipos de dados

• Os tipos de dados podem ser dividos em três categorias:

– Elementares

• Tamanho fixo;

• Tamanho variável.

– Referência;

– Complexos.

Tipos Elementares (Tamanho Fixo)

Tipos Elementares (Tamanho Variável)

Hierarquia (Tipos de Objetos)

Hierarquia (Tipos de Objetos)

Hierarquia (Tipos de Objetos)

 

 

Tipos Complexos

• Tipos complexos são feitos de outros tipos. Eles permitem gerenciar e processar dados com um único nome.

• Não existem tipos complexos predefinidos em ABAP, os quais devem ser definidos nas aplicações ou no dicionário ABAP.

• Os tipos estruturados são divididos entre Estruturas e Tabelas Internas.

 

 

Tipos Complexos: Estruturas

• Uma estrutura é uma seqüência de quaisquer tipos elementares, tipos de referência ou tipos de dados complexos.

• As estruturas podem ser agrupadas entre duas categorias:

– Nested and non-nested structures;

– Flat and deep structures.

 

 

Tipos Complexos: Tabelas Internas

• Tabelas internas consistem em uma série de linhas com um mesmo tipo de dados.

– O tipo de linha, o qual pode ser de quaisquer tipos elementares, tipos de referência ou tipos de dados complexos;

– As chaves identificam as linhas da tabela, podendo ser feitas com os campos elementares na linha e podem ser de restrição única ou não única.

• Estrutura com séries de tipos de dados elementares de tamanho fixo (flat structures).

• Uma tabela interna com tipos de linhas com tipos elementares (vector);

• Tabelas internas com as linhas com estruturas não aninhadas ('real' table);

• Estruturas com estruturas como seus componentes (nested structures, flat or deep);

• Estruturas contendo tabelas internas como seus componentes (deep structures);

• Tabelas internas com as linhas contendo tabelas internas;

• Tipos por referência descrevem objetos de dados que contêm ponteiros para outros objetos (ABAP Objects);

• Existe uma hierarquia para os tipos por referência que descreve a hierarquia de objetos com as referências possíveis de definição.

 

 

Banco de dados lógico

 

 

• São programas especiais em ABAP que são responsáveis pela leitura dos dados das tabelas do banco de dados utilizando a linguagem Open SQL.

• São divididos em três seções:

– Estrutura;

– Seleção;

– Programa de banco de dados.

 

 

• Estrutura

– A estrutura de um banco de dados lógico determina quais as tabelas do banco de dados podem ser acessadas. Ela adota a hierarquia do banco de dados definida por pelo relacionamento de chaves estrangeiras;

– Realiza o controle da seqüência em que as tabelas são acessadas.

 

 

• Seleção

– Define os campos de entrada para a seleção dos dados;

– O ambiente apresenta os campos na tela de seleção quando é executado um programa ligado a um banco de dados lógico;

– Os campos correspondentes também ficam disponíveis nos programas ABAP;

 

 

• Programa de Banco de Dados

– O programa de banco de dados de um banco de dados lógico é um repositório para sub rotinas especiais, através das quais os dados são lidos a partir das tabelas do banco de dados.

– As sub rotinas são chamadas pelo processador de relatórios no ambiente de execução em uma seqüência pré-definida.

 

 

• A principal utilização de banco de dados lógico é preparar códigos que acessam os dados para serem reutilizados;

• São configurados para obterem uma ótima performance através de funções que garantem segurança e proteção aos dados;

• É apropriado o uso do banco de dados lógico sempre que as tabelas a serem lidas correspondam ao fluxo:

 

 

SELEÇÃO > LEITURA > PROCESSAMENTO >

EXIBIÇÃO EM TELA DO RESULTADO.

 

 

• Na área de trabalho, clicar sobre o botão SAP Logon;

• Em Conexões, com o botão direito, clicar em Inserir entrada nova

 

 

Editor ABAP

 

 

• O editor de programação ABAP/4 do SAP pode ser encontrado através do caminho :

Menu SAP > Ferramentas > ABAP Workbench > Desenvolvimento > Editor ABAP

 

 

Nomenclatura para programas SAP

 

 

• Existe um padrão de nomenclatura que deve ser seguido, não só para nome de programas, mas para todos os desenvolvimentos no SAP R/3;

• Os nomes dos desenvolvimentos começam sempre com Z ou Y.

Convenções usadas

 

 

Escrevendo o primeiro programa

 

 

• O programa será chamado de ZREPORT01;

• O programa será do tipo Texto Fonte;

• Botões para as ações possíveis: Criar, Modificar e Exibir (somente leitura);

• Clicar sobre o botão Criar.

 

 

Entendendo o editor

Dica

• Quando este botão é clicado, aparece uma janela para a seleção de todos os programas ainda não ativos para o usuário corrente;

• É sugerido o programa atual para a seleção, porém o programador pode escolher em ativar mais de um programa simultaneamente.

 

 

Tela de seleção (ATIVAR programas)

 

 

• Indicadores de linhas modificadas;

• Bookmarks;

• Separador de janela;

• Customização de cores;

• Complemento automático de códigos;

Teclas de Atalho do Editor

• CTRL + Z

– Desfaz a última ação no editor;

• CTRL + Y

– Refaz a última ação no editor;

• CTRL + A

– Seleciona todo o texto no editor;

• CTRL + O

– Posiciona o cursor da linha ... ;

 

 

Teclas de Atalho do Editor

• CTRL + ,

– Comenta as linhas selecionadas;

• CTRL + .

– Remove o comentário das linhas selecionadas;

• CTRL + \

– Comenta a linha na posição do cursor;

• CTRL + SHIFT + \

– Remove o comentário da linha na posição do cursor ;

 

 

Teclas de Atalho do Editor

• CTRL + SHIFT + T

– Copia a linha, na posição do cursor;

• CTRL + SHIFT + X

– Recorta a linha na posição do cursor;

• CTRL + SHIFT + L

– Deleta a linha na posição do cursor;

• CTRL + D

– Duplica a linha na posição do cursor;

 

 

Teclas de Atalho do Editor

• CTRL + F

– Abre a janela para a pesquisa de texto;

• CTRL + G

– Após realizada a primeira pesquisa (CTRL+F), repete a pesquisa a partir da posição do cursor;

• CTRL + SHIFT + G

– Após realizada a primeira pesquisa (CTRL+F), repete a pesquisa a partir da posição anterior ao cursor;

• CTRL + H

– Abre a janela para a substituição do texto ou expressão digitada no código-fonte;

Teclas de Atalho do Editor

• CTRL + ALT + 8 (NUM)

– Move a linha para cima a partir da posição do cursor;

• CTRL + ALT + 2 (NUM)

– Move a linha para baixo a partir da posição do cursor;

• TAB

– Aumenta a indentação da seleção;

• SHIFT + TAB

– Recua a indentação da seleção;

Teclas de Atalho do Editor

• CTRL + L

– Converte a seleção para letras minúsculas;

• CTRL + U

– Converte a seleção para letras maiúsculas;

• CTRL + K

– Inverte a seleção para Maiúsculas  ou Minúsculas;

Teclas de Atalho do Editor

• CTRL + ALT + [0-9]

– Marca o índice do bookmark de 0 a 9;

• CTRL + [0-9]

– Acessa o índice do bookmark de 0 a 9;

Teclas de Atalho do Editor

• CTRL + ALT + M

– Marca uma posição de bookmark na linha (para navegação). É possível inserir N marcações no editor

• CTRL + M

– Navega para o próximo bookmark;

• CTRL + SHIFT + M

– Navega para o bookmark anterior;

Comentários no código

Criando o primeiro programa

• Passo a passo para a criação de um programa simples em ABAP;

• O programa será chamado de Z_REPORT001;

• Escreverá em tela o texto “Hello World”.

 

 

 

 

Estrutura de Controle: IF, ELSE...

Operadores Lógicos de comparação

Exercício 1: Comparação de Strings

Literais

• Literais são objetos sem referência no código de um programa. Eles são definidos diretamente por seus valores;

• Os valores de um literal não podem ser modificados;

• Aplicam-se aos tipos: numeric e text.

Sintaxe

Recomendação: Constantes

• Quando tratar-se de literais para serem utilizados em códigos fontes, sugere-se a utilização de constantes a serem devidamente alocadas em pontos específicos da memória;

• Uma vez declarada, o valor da constantes não poderá ser modificado.

 

 

Text Symbols

• Os Símbolos de Texto são um objeto que são gerados quando um programa é iniciado no programa a partir de textos presentes em um programa ABAP;

• São sempre associados aos tipos de dados caracteres (c);

• Os tamanhos são definidos a partir do cadastro dos elementos no programa.

Text Symbols

• Com o editor ABAP (SE38) aberto:

 

 

Operações Matemáticas Básicas

Operações Matemáticas Básicas

• Também é possível utilizar as operações através das instruções:

–  ADD (adição);

– SUBTRACT (subtração);

– MULTIPLY (multiplicação);

–  DIVIDE (divisão).

 

 

Operações Matemáticas Básicas

Operações Aritméticas usando Estruturas

 

 

MULTIPLY-CORRESPONDING

 

 

Funções Matemáticas

 

 

Operações com Data

 

 

TRY ... CATCH ... ENDTRY

 

 

Tratamento de exceções

 

 

Exercício: média de notas

• Dadas as quatro notas de um determinado aluno, deverá ser calculada a média aritmética das mesmas;

• Comparadas à média padrão, o resultado deverá ser exibido em tela:

– APROVADO, se maior ou igual à média;

– REPROVADO, em caso de menor que a média.

 

 

Exercício: média de notas

 

 

Exercício: Média ponderada

• Faça um algoritmo que leia três notas de um aluno, calcule e escreva a média final deste aluno.

• Considerar que a média é ponderada e que o peso das notas é 2, 3 e 5. Fórmula para o cálculo da média final é:

 

 

Exercício: Tipo de triângulo

• Escrever um algoritmo que leia três valores inteiros e verifique se eles podem ser os lados de um triângulo.

• Se forem, informar qual o tipo de triângulo que eles formam: equilátero, isóscele ou escaleno.

• Propriedade: o comprimento de cada lado de um triângulo é menor do que a soma dos comprimentos dos outros dois lados.

 

 

Exercício: Custo ao Consumidor

• O custo de um carro novo ao consumidor é a soma do custo de fábrica com a porcentagem do distribuidor e dos impostos (aplicados ao custo de fábrica).

• Supondo que o percentual do distribuidor seja de 28% e os impostos de 45%, escrever um algoritmo para ler o custo de fábrica de um carro, calcular e escrever o custo final ao consumidor.

 

 

Dicionário ABAP

• O dicionário ABAP descreve e gerencia todas as definições de dados utilizadas no sistema;

• O dicionário ABAP está completamente integrado ao ambiente de desenvolvimento ABAP;

• Os tipos de objetos do dicionário incluem:

– Tabelas;

– Visões;

– Tipos:

• Elementos de dados;

• Estruturas;

• Tabelas de tipos.

– Domínios.

 

 

Tabelas

• As tabelas podem ser definidas independentes do banco de dados do dicionário ABAP;

• Quando uma tabela é ativada, a definição física da tabela é criada no banco de dados para a definição previamente armazenada no dicionário ABAP;

• A definição da tabela é traduzida a partir do dicionário ABAP para a definição do banco de dados, de acordo com o ambiente configurado.

 

 

Criando uma tabela no Dicionário ABAP

• Acessar a transação SE11;

• No campo Tab.banco dados, informar a o nome da tabela com início Z ou Y e sem caracteres especiais;

• Clicar sobre o botão Criar;

 

 

Tabelas no Dicionário ABAP

• Descrição breve

– Texto com a principal necessidade para a criação da tabela;

• Classe de entrega

– A classe de entrega controla o transporte de dados da tabela, no caso de instalação, mudança de release, cópia de mandante, e no caso de transporte entre sistemas de cliente.

Tabelas no Dicionário ABAP

• Classe de entrega

• A - Tabela de aplicação (dados mestre e de movimento);

• C - Tabela de cliente, os dados são atualizados exclusivamente pelo cliente.

• L - Tabela para arquivar dados temporários.

• G - Tabela de cliente, a SAP pode inserir registros novos, mas não pode sobregravar ou eliminar aqueles que já existem.

• E - Tabela de sistema com conjuntos de nomes próprios para entradas de cliente.

• S - Tabela de sistema, as modificações de dados têm o status de modificações de programa.

• W - Tabela de sistema (por exemplo, tabela do ambiente de desenvolvimento), cujos dados são transportados por objetos de transporte próprios.

• Data Browser/atualiz.visão tabs.

– O código determina se a exibição/atualização da tabela ou da visão é possível com a ajuda das ferramentas de atualização Data Browser (transação SE16) e atualização da visão de tabelas (transações SM30 e SM31).

Tabelas no Dicionário ABAP

• Data Browser/atualiz.visão tabs.

• Exibição/atualização não permitidas

– A utilização de ferramentas standard de atualização de tabelas não é permitida para este objeto Dictionary como, por exemplo, a transação SE16.

• Exibição / atualização permitidas de forma restringida

– A utilização de ferramentas standard de atualização de tabelas é permitida de forma restringida: a transação SE16 permite a exibição para este objeto Dictionary, mas não permite uma atualização.

• Exibição/atualização permitidas

– A utilização de ferramentas standard de atualização de tabelas é permitida: a transação SE16 permite a atualização e a exibição para este objeto Dictionary.

• Clicar sobre o botão Salvar

• Criar como Objeto Local;

• Definição dos campos da tabela ZTABELA1:

• A definição para os campos de tabela no dicionário ABAP abragem:

– Nome do Campo: Máximo de 16 posições e podem conter letras, dígitos e underlines. O campo sempre deverá ser iniciado com uma letra;

– Campo-chave: É necessário que os campos-chave de uma tabela estejam juntos no início da tabela, ou seja, um campo que não seja campo-chave não pode estar entre dois campos-chave.

– Tipo do Campo: Ao criar uma tabela no banco de dados, a categoria de dados de um campo de tabela é compilada em um formato de dados correspondente do sistema de banco de dados utilizado;

– Comprimento (nº de caracteres): Número das posições válidas de um campo sem caracteres de edição (por exemplo, vírgulas ou pontos);

•  As categorias de dados de cadeia (STRING, RAWSTRING) têm um comprimento ilimitado.

– Casas decimais: Número das casas decimais admitidas de um valor;

– Descrição breve: A descrição breve é utilizada como texto explicativo na criação de listas e de documentação (Ajuda F1).

• Para cada tabela transparente no ABAP Dictionary devia existir uma entrada nas opções técnicas (CTRL + SHIFT + F9);

• Esta entrada é utilizada durante a criação da tabela no banco de dados para o cálculo dos espaços de memória físicos.

• Categoria de dados

– Com o tipo de dados, determinar a nível lógico, em que área física do banco de dados (TABLESPACE) é arquivada a tabela.

– Ao selecionar corretamente o tipo de dados, a tabela é automaticamente atribuída à área correta quando da criação no banco de dados.

 

 

Tabelas do Dicionário ABAP

• Os tipos de dados mais importantes (à exceção de dados de sistema) são:

– APPL0 (dados mestre);

– APPL1 (dados de movimento);

– APPL2 (dados organizacionais e de customização).

• Os Dados mestre são dados com frequentes acessos de leitura, mas que raramente são atualizados.

• Os Dados de movimento são dados que são atualizados com frequência.

• Os Dados organizacionais e de customização são dados indicados na configuração do sistema, e que raramente são modificados depois.

Tabelas do Dicionário ABAP

• Estão à disposição do cliente outros dois tipos de dados USR e USR1. Estes estão previstos para desenvolvimentos do usuário.

• As tabelas atribuídas a estes tipos de dados são arquivadas em um tablespace para desenvolvimentos de cliente.

Nota

 

 

Considerar que o tipo de dados só afeta a gravação da tabela para os sistemas de banco de dados ORACLE e INFORMIX.

Tabelas do Dicionário ABAP

• Para as tabelas transparentes, escolher o tipo APPL1;

Tabelas do Dicionário ABAP

• Categoria de tamanho

– Determinação da necessidade de espaço prevista de uma tabela no banco de dados.

• Categoria de ampliação:

– A seleção de uma categoria de ampliação é necessária, uma vez que nas ampliações de tabelas e de estruturas em programas sem verificação unicode ativa, principalmente nas verificações de tipo e em conjunto com estruturas profundas, podem ocorrer erros de sintaxe e em tempo de execução.

• Com a tabela aberta, escolher o menu “Suplementos”;

• Serão exibidas duas caixas de confirmações, uma para salvar os dados da tabela corrente e outra para a criação do elemento de dados;

• Serão pedidos os dados de denominação do campo;

• Uma vez preenchida a denominação, o comprimento será preenchido automaticamente após o salvamento;

• Estes campos irão ser utilizados em várias rotinas do SAP.

• Será necessário ATIVAR  a tabela para que as alterações sejam refletidas no Banco de Dados;

• Será necessário informar os dados do gerador de atualização para a tabela;

• A definição da tabela deverá estar aberta (SE11) e a mesma deverá estar ATIVA.

• Propor nº(s) para telas de atualização

– Marca que o sistema deve propor o nº de tela livre seguinte. Se for pretendido que o nº para a tela nova seja proposto, marcar este campo.

• Intervalos livres de números para telas de atualização

– Código segundo o qual os intervalos de números para as telas de atualização, devem ser exibidos. Se for pretendido exibir os intervalos de números, marcar este campo. O nº livre seguinte para a tela de atualização pode ser proposto ao usuário a partir de um intervalo selecionado.

• Exibir números atribuídos das telas de atualização

– Código segundo o qual os números de tela das telas de atualização já atribuídos, devem ser exibidos. Se for pretendido exibir os números de tela já atribuídos, marcar este campo. Esses números já não estão disponíveis para uma nova atribuição.

• Aparecerá uma mensagem na barra de status indicando o progresso da operação;

• Será exibido o relatório com o resultado da criação da tabela;

Criação de uma tabela (SE11)

•  Nomeação da Tabela;

•  Classe de entrega/atualização;

•  Configuração técnica;

•  Categoria de ampliação.

Tabelas no Dicionário ABAP

Definição dos campos da tabela

•  Nomeação dos campos;

•  Definição dos elementos de dados;

•  Tipos de dados;

•  Denominação dos campos;

•  Ativação dos elementos de dados;

•  Associação entre Campo e Elemento;

Ativação da tabela

•  Ativação da definição da tabela no banco de dados;

•  Definindo a estrutura de atualização da tabela.

Chaves estrangeiras

Exercício: Criação de Tabelas

• Criar uma tabela ZNOTASNN, onde o termo NN indica o número do aluno na Academia ABAP;

 

 

Atualizando os dados de uma tabela

 

 

• É necessário que a tabela possua a configuração para receber atualização pelas interfaces da aplicação standard do SAP;

• Transação SM30.

• Inserir o nome da Tabela/Visão;

• Escolher um dos botões Exibir ou Atualizar;

• Caso a tabela seja global, será exibida a mensagem:

 

 

Exercício: Inserção de Dados

• Referente à tabela ZNOTASNN, realizar a inserção de 10 alunos com notas variadas;

• Não deverão serem preenchidos os campos MEDIA e RESULTADO;

• Utilizar a transação SM30.

 

 

Comandos de repetição

• Existem quatro estruturas de repetição na linguagem ABAP:

– DO;

– WHILE;

– LOOP;

– SELECT.

 

 

DO [ <n> TIMES ]

SY-INDEX

O campo do sistema SY-INDEX contém o número da interação atual do loop.

Não estando em loop, o campo estará preenchido com 0 (zero).

Uso do SY-INDEX

 

 

WHILE

LOOP

Work area

 

 

SY-TABIX

 

 

O campo do sistema SY-TABIX contém o número da linha atual no loop.

LOOP (Eventos)

Declaração de Tabelas Internas

Preenchendo os dados

 

 

Open SQL

• Open SQL consiste em um conjunto de sentenças ABAP que realizam operações no banco de dados central do SAP;

• Sentenças em Open SQL somente podem trabalhar com tabelas de banco de dados criadas no Dicionário ABAP.

 

 

SELECT

Exibindo resultados SQL

• Para o exemplo realizado no exercício de criação e atualização de tabelas, um relatório de exemplo seria:

 

 

SY-TABIX

O campo do sistema SY-SUBRC contém o indicativo de resultado da consulta aos dados do banco.

Na situação em que foram encontrados resultados, o campos é preenchido com 0 (zero);

 

 

SY-SUBRC

Exercício: Apresentar resultado SQL

• Selecionar os dados das notas do aluno a partir da tabela ZNOTASNN;

• Deverão ser exibidas as colunas Matrícula, Nome, Notas[1-4], Média e Resultado.

• A média o resultado deverão ser calculados e apresentados no relatório.

 

 

CASE

 

 

Funções

• As funções no SAP são definidas através da transação SE37;

• Uma vez definidos os parâmetros, será necessário ATIVAR a função para que a mesma seja utilizada em toda a extensão da aplicação SAP.

• Os tipos serão apresentados conforme os elementos do SAP;

• Os elementos de dados que estão na aplicação poderão ser pesquisados em toda a extensão da aplicação SAP;

• Para o exemplo de soma entre dois inteiros, selecionar o tipo INTEGER;

• Valor proposto para parâmetro de importação:

– É possível preencher parâmetros de importação com valores propostos. Estes podem ser: literais, constantes numéricas, campos de sistema (SY-DATUM, SY-LANGU) ou o campo predefinido SPACE;

– Caso seja indicado um valor proposto, ao chamar, não é preciso preencher o parâmetro com um valor atual;

– Utilizar aspas como caracteres de delimitação para os literais.

• Chamada com transferência de valor

– A transferência do parâmetro é efetuada com transferência de valor.

– Isto significa que o conteúdo do parâmetro é copiado durante a transferência e adiamento do parâmetro de chamada.

– Em estruturas que contêm tabelas, isto pode levar a fortes reduções de performance e, se possível, não deve ser mais utilizado.

 

 

Chamada de uma função em um relatório

•  Utilização do Modelo;

•  Inserindo parâmetros de entrada;

•  Exibindo o resultado do retorno da função.

 

 

Exercício: criação de tabela

• Documento : INTEIRO(10);

• Item: INTEIRO(5);

• Material: INTEIRO(4);

• Quantidade: INTEIRO(2);

• Unitário: NUMERIC(2);

• Total: NUMERIC(2);

• Observação: Texto(255);

Documento e Item são chaves da tabela.

Todos os campos são de preenchimento obrigatório.

Os desenvolvimentos somente poderão estarem salvos como Objetos Locais.

Exercício: preenchimento de dados

 

 

Visões

• Visões são agrupamentos de dados que, geralmente, são compostas de tabelas diferentes;

• Uma vez definida a visão, é possível definir uma aplicação dependente da combinação dos dados da mesma;

• Uma visão pode ser utilizada em programas ABAP para a seleção de dados.

 

 

Tipos

• Os tipos de dados definidos para os usuários podem ser armazenados em todos os programas do Dicionário ABAP.

 

 

Domínio

• Um domínio define uma faixa de valores e deve estar atribuído a um elemento de dados;

• Os domínios são definidos através da transação SE37;

 

 

Atualização da tabela – SM30

Viewing all 8332 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>