Programming

How to insert alternative comand in SAP smartforms

The alternative command looks like IF statement in ABAP/4.

IF (condition) {
*** True ***
  ...
} ELSE {
*** False ***
  ...
}.

You can insert alternative command as follows:

  • Select window that you want to insert alternative command and right click. System will list object that you can create.
    img146
    In the example, I have window name ’%WINDOW1’ and I want to insert alternative command in this window.

Parallel Approach for Bandwidth Minimization Problem

According to my previous post about Bandwidth Minimization Problem and Windows Supercomputing Contest 2006 at Kasetsart University, the committees has already received all codes including the one I mentioned early. Okay, let me express how it looks like. Firstly, I tested them all on 8-processor node, dual core, dual processor, and Hyper-Threading, one by one with 8-node graph. As a result, the codes could be classified into 4 classes.

FeedTree 0.7.0: collaborative RSS and Atom delivery

FeedTree 0.7.0 has been released to the wild. Shortly, it is a peer-to-peer network for distributing feed, RSS and Atom, to all subscribers instantly. In contrast, new feeds will be pushed to a set of subscribers and they will then push to other subscribers in tree fashion. Instead of developing full-featured feed reader for FeedTree, just a proxy, ftproxy, has been developed.

Technically, FeedTree relies on a peer-to-peer overlay network namely Pastry and Scribe protocol running on top of that. I don’t know much about Pastry. All I know is just it is implemented in Java. I don’t hate Java and I don’t like Java too. It is too big for me to run a Java application on my laptop just to read feed faster than ever.

ABAP/4 Example Code: ALV List by FM 'REUSE_ALV_LIST_DISPLAY'

Example

TYPE-POOLS: SLIS.

DATA: it_spfli TYPE TABLE OF spfli WITH HEADER LINE,
      it_cat TYPE SLIS_T_FIELDCAT_ALV,
      wa_cat TYPE slis_fieldcat_alv.

START-OF-SELECTION.
  SELECT * FROM spfli
           INTO TABLE it_spfli.

  PERFORM create_field_catalog.

  CALL FUNCTION ’REUSE_ALV_LIST_DISPLAY’
    EXPORTING
*     I_INTERFACE_CHECK              = ’ ’
*     I_BYPASSING_BUFFER             =
*     I_BUFFER_ACTIVE                = ’ ’
*     I_CALLBACK_PROGRAM             = ’ ’
*     I_CALLBACK_PF_STATUS_SET       = ’ ’
*     I_CALLBACK_USER_COMMAND        = ’ ’
*     I_STRUCTURE_NAME               =
*     IS_LAYOUT                      =
      IT_FIELDCAT                    = it_cat[]
*     IT_EXCLUDING                   =
*     IT_SPECIAL_GROUPS              =
*     IT_SORT                        =
*     IT_FILTER                      =
*     IS_SEL_HIDE                    =
*     I_DEFAULT                      = ’X’
*     I_SAVE                         = ’ ’
*     IS_VARIANT                     =
*     IT_EVENTS                      =
*     IT_EVENT_EXIT                  =
*     IS_PRINT                       =
*     IS_REPREP_ID                   =
*     I_SCREEN_START_COLUMN          = 0
*     I_SCREEN_START_LINE            = 0
*     I_SCREEN_END_COLUMN            = 0
*     I_SCREEN_END_LINE              = 0
*     IR_SALV_LIST_ADAPTER           =
*     IT_EXCEPT_QINFO                =
*     I_SUPPRESS_EMPTY_DATA          = ABAP_FALSE
*   IMPORTING
*     E_EXIT_CAUSED_BY_CALLER        =
*     ES_EXIT_CAUSED_BY_USER         =
    TABLES
      T_OUTTAB                       = it_spfli
*   EXCEPTIONS
*     PROGRAM_ERROR                  = 1
*     OTHERS                         = 2
            .
  IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.
*&---------------------------------------------------------------------*
*&      Form  create_field_catalog
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM create_field_catalog .
  IF it_cat[] is initial.
    clear wa_cat.
    wa_cat-col_pos   = 1.
    wa_cat-fieldname = ’CARRID’.
    wa_cat-datatype  = ’CHAR’.
    wa_cat-inttype   = ’C’.
    wa_cat-intlen    = 3.
    wa_cat-seltext_l   = ’Airline Code’.
    wa_cat-seltext_m   = ’Airline Code’.
    wa_cat-seltext_s   = ’Airline Code’.
    append wa_cat to it_cat.

    clear wa_cat.
    wa_cat-col_pos   = 2.
    wa_cat-fieldname = ’CONNID’.
    wa_cat-datatype  = ’NUMC’.
    wa_cat-inttype   = ’N’.
    wa_cat-intlen    = 4.
    wa_cat-seltext_l   = ’Flight Conn. No’.
    wa_cat-seltext_m   = ’Flight Conn. No’.
    wa_cat-seltext_s   = ’Flight Conn. No’.
    append wa_cat to it_cat.

    clear wa_cat.
    wa_cat-col_pos   = 3.
    wa_cat-fieldname = ’CITYFROM’.
    wa_cat-datatype  = ’CHAR’.
    wa_cat-inttype   = ’C’.
    wa_cat-intlen    = 20.
    wa_cat-seltext_l   = ’Dep. city’.
    wa_cat-seltext_m   = ’Dep. city’.
    wa_cat-seltext_s   = ’Dep. city’.
    append wa_cat to it_cat.

    clear wa_cat.
    wa_cat-col_pos   = 4.
    wa_cat-fieldname = ’AIRPFROM’.
    wa_cat-datatype  = ’CHAR’.
    wa_cat-inttype   = ’C’.
    wa_cat-intlen    = 3.
    wa_cat-seltext_l   = ’Dep. airport’.
    wa_cat-seltext_m   = ’Dep. airport’.
    wa_cat-seltext_s   = ’Dep. airport’.
    append wa_cat to it_cat.

    clear wa_cat.
    wa_cat-col_pos   = 5.
    wa_cat-fieldname = ’CITYTO’.
    wa_cat-datatype  = ’CHAR’.
    wa_cat-inttype   = ’C’.
    wa_cat-intlen    = 20.
    wa_cat-seltext_l   = ’Arrival city’.
    wa_cat-seltext_m   = ’Arrival city’.
    wa_cat-seltext_s   = ’Arrival city’.
    append wa_cat to it_cat.

    clear wa_cat.
    wa_cat-col_pos   = 6.
    wa_cat-fieldname = ’AIRPTO’.
    wa_cat-datatype  = ’CHAR’.
    wa_cat-inttype   = ’C’.
    wa_cat-intlen    = 3.
    wa_cat-seltext_l   = ’Dest. airport’.
    wa_cat-seltext_m   = ’Dest. airport’.
    wa_cat-seltext_s   = ’Dest. airport’.
    append wa_cat to it_cat.

  ENDIF.
ENDFORM.                    " create_field_catalog

Global data in SAP smartforms

We can define global variables in SAP smartforms but these are not contained in form interface by define them in Global Settings -> Global Definitions and select Global Data tab.

img144

See above picture, we can define variable from:

  • Data type (DATE, CHAR, NUMC etc.)
  • Structure in Data Dictionary
  • Defined Type in Types tab

Technorati Tags: ,

Difference between MOVE ... TO and WRITE ... TO in ABAP/4

See Example

DATA: gv_char1(20) TYPE c,
      gv_char2(20) TYPE c,
      dec1(10) TYPE p DECIMALS 2 VALUE ’122345.89’.

START-OF-SELECTION.
* Date *
  WRITE:/ ’Date variable’.
  WRITE sy-datum to gv_char1.
  WRITE:/ ’WRITE TO ’, gv_char1.

  MOVE sy-datum to gv_char2.
  WRITE:/ ’MOVE TO ’, gv_char2.

SKIP 1.

* Decimal *
  WRITE:/ ’Decimal variable’.
  WRITE dec1 to gv_char1.
  WRITE:/ ’WRITE TO ’, gv_char1.

  MOVE dec1 to gv_char2.
  WRITE:/ ’MOVE TO ’, gv_char2.