Application Development Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 

ALV Interactive Report

Former Member
0 Kudos

Hi,

I am doing a report using ALV Interactive method in that after i display i want to change the value in a particular (vbap-charg).so when i click (vbap-charg) field next the screen should go to the selection screen to input the new value.once i enter the new value when i press F8 the new value should updated in the vbap table and it should display the new value in alv format.now i did codeing untill as i shown below.pls help me to proceed for further as per my requirments.

FORM USERACTION USING R_UCOMM TYPE SY-UCOMM

R_SELFIELD TYPE SLIS_SELFIELD.

******To change the data in table VBAP-CHARG for batch

CASE R_UCOMM.

**-When User Double Clicks

WHEN '&IC1'.

IF R_SELFIELD-FIELDNAME = 'CHARG'.

READ TABLE ITAB INDEX R_SELFIELD-TABINDEX.

ENDIF.

In the next step i want to goto the selection screen to enter the new value to update in the vbap table.pls help to solve the issue.

Thanks,

Rajendra.

1 ACCEPTED SOLUTION

Former Member
0 Kudos

Hi

Try to set the field EXIT:

IF R_SELFIELD-FIELDNAME = 'CHARG'.
  READ TABLE ITAB INDEX R_SELFIELD-TABINDEX.
  IF SY-SUBRC = 0.
    R_SELFIELD-EXIT = 'X'. 
  ENDIF.
ENDIF.

The system should leave the ALV and so back to selection-screen.

U should use a BAPI_SALESORDER_CHANGE to change the sales order data.

Here you have to transfer the sales order number in paramenter SALESDOCUMENT and the new value of VBAP-CHARG in ORDER_ITEM_IN-BATCH and insert 'X' in ORDER_ITEM_INX-BATCH.

Anyway <u>don't update directly VBAP table</u>.

Max

Message was edited by:

max bianchi

19 REPLIES 19

Former Member
0 Kudos

HI Rajendra

Please try by using LEAVE <b>LIST-PROCESSING</b> when you need to go back to selection screen.

Kind Regards

Eswar

Former Member
0 Kudos

Hi

Try to set the field EXIT:

IF R_SELFIELD-FIELDNAME = 'CHARG'.
  READ TABLE ITAB INDEX R_SELFIELD-TABINDEX.
  IF SY-SUBRC = 0.
    R_SELFIELD-EXIT = 'X'. 
  ENDIF.
ENDIF.

The system should leave the ALV and so back to selection-screen.

U should use a BAPI_SALESORDER_CHANGE to change the sales order data.

Here you have to transfer the sales order number in paramenter SALESDOCUMENT and the new value of VBAP-CHARG in ORDER_ITEM_IN-BATCH and insert 'X' in ORDER_ITEM_INX-BATCH.

Anyway <u>don't update directly VBAP table</u>.

Max

Message was edited by:

max bianchi

0 Kudos

Hi Eswar,Max,

I tryed both the methods but The system not leave the ALV .so how to solve this issue.i hope you help to solve the issue.

Thanks,

Rajendra.

0 Kudos

Hi

try this report:

PARAMETERS: P_DATE LIKE SY-DATUM DEFAULT SY-DATUM.

TYPE-POOLS: SLIS.

* ALV
DATA: GT_FIELDCAT   TYPE SLIS_T_FIELDCAT_ALV,
      GT_LAYOUT     TYPE SLIS_LAYOUT_ALV,
      GT_REPID      LIKE SY-REPID,
      GT_EXIT       TYPE SLIS_EXIT_BY_USER,
      GT_USER.

DATA: BEGIN OF T_OUTPUT OCCURS 0,
        DATE LIKE SY-DATUM,
      END   OF T_OUTPUT.

START-OF-SELECTION.

  DO 10 TIMES.
    T_OUTPUT-DATE = P_DATE + SY-INDEX.
    APPEND T_OUTPUT.
  ENDDO.

END-OF-SELECTION.

  GT_REPID = SY-REPID.

  CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
       EXPORTING
            I_PROGRAM_NAME     = GT_REPID
            I_INTERNAL_TABNAME = 'T_OUTPUT'
            I_INCLNAME         = GT_REPID
       CHANGING
            CT_FIELDCAT        = GT_FIELDCAT[].

  GT_LAYOUT-ZEBRA  = 'X'.
  GT_LAYOUT-F2CODE = 'CLICK'.

  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
       EXPORTING
            I_CALLBACK_PROGRAM      = GT_REPID
            I_CALLBACK_USER_COMMAND = 'USER_COMMAND'
            IS_LAYOUT               = GT_LAYOUT
            IT_FIELDCAT             = GT_FIELDCAT[]
       IMPORTING
            E_EXIT_CAUSED_BY_CALLER = GT_USER
            ES_EXIT_CAUSED_BY_USER  = GT_EXIT
       TABLES
            T_OUTTAB                = T_OUTPUT.

  IF GT_USER = SPACE.
    IF GT_EXIT-BACK = 'X'.
      MESSAGE I208(00) WITH 'Exit by BACK (F3)'.
    ENDIF.
    IF GT_EXIT-EXIT   = 'X'.
      MESSAGE I208(00) WITH 'Exit by EXIT (SHIFT+F3)'.
    ENDIF.
    IF GT_EXIT-CANCEL = 'X'.
      MESSAGE I208(00) WITH 'Exit by CANCEL (F12)'.
    ENDIF.
  ELSE.
    MESSAGE I208(00) WITH 'Exit by USER'.
  ENDIF.


*---------------------------------------------------------------------*
*       FORM USER_COMMAND                                             *
*---------------------------------------------------------------------*
*       ........                                                      *
*---------------------------------------------------------------------*
*  -->  R_UCOMM                                                       *
*  -->  RS_SELFIELD                                                   *
*---------------------------------------------------------------------*
FORM USER_COMMAND USING R_UCOMM     LIKE SY-UCOMM
                        RS_SELFIELD TYPE SLIS_SELFIELD.

  IF R_UCOMM = 'CLICK'.
    RS_SELFIELD-EXIT = 'X'.
  ENDIF.
ENDFORM.                    " USER_COMMAND

Max

0 Kudos

Hi Max bianchi,

Thanks, now i am getting the selection screen,but in the selection i want to display the sales order no(vbeln) by befault when i click the vbeln in the alv disply.so that i can change the value of charg based on the vbeln.i use the below code to get the vbeln in selection screen by default but i could not get it.

CASE R_UCOMM.

**-When User Double Clicks

WHEN 'CLICK'.

IF R_SELFIELD-FIELDNAME = 'VBELN'.

READ TABLE ITAB INDEX R_SELFIELD-TABINDEX TRANSPORTING VBELN.

IF SY-SUBRC = 0.

R_SELFIELD-EXIT = 'X'.

ENDIF.

ENDIF.

pls help to solve my issue.

Thanks,

Rajendra.

0 Kudos

Hi Max,

As you told in the above mail that use BAPI_SALESORDER_CHANGE.actualy you are telling to change the value in sales order.but before i tryed by using the below code but the field CHARG is in grey colour but other fields are able to change so that i could not change the field CHARG .so is it possible to chang the value by using bapi.

IF R_SELFIELD-FIELDNAME = 'VBELN'.

READ TABLE ITAB INDEX R_SELFIELD-TABINDEX TRANSPORTING VBELN.

IF SY-SUBRC = 0.

*SET PARAMETER ID 'AUN' FIELD ITAB-VBELN.

ENDIF.

CALL TRANSACTION 'VA02' AND SKIP FIRST SCREEN.

ENDIF.

Pls help me to solve the issue.

Thanks,

Rajendra.

0 Kudos

Hi Rajendra

If the field is GREYed out in online screen, then i guess it is not possible to change via BAPI too...

Kind Regards

Eswar

0 Kudos

Hi Eswar,

Thanks,so the only choice is to change the value from the TABLE only.to change the value in the table when i click the vbeln it goes to the selection screen.but i want the vbeln value also shoud display in P_vbeln.so that i can use the below code to update the table.

IF P_CHARG1 NE ' '.

UPDATE VBAP SET CHARG = p_charg1

WHERE VBELN EQ P_VBELN.

ENDIF.

so how to get the vbeln no from alv to selection screen.pls help me to solve the issue.

Thanks,

Eswar.

0 Kudos

Hi Rajendra

Have taken Max's Code as reference and highlighted the portions with a possible way of handling as per your requirement:

PARAMETERS: P_DATE LIKE SY-DATUM DEFAULT SY-DATUM.

<b>DATA: DATE TYPE SY-DATUM.</b>
TYPE-POOLS: SLIS.

* ALV
DATA: GT_FIELDCAT   TYPE SLIS_T_FIELDCAT_ALV,
      GT_LAYOUT     TYPE SLIS_LAYOUT_ALV,
      GT_REPID      LIKE SY-REPID,
      GT_EXIT       TYPE SLIS_EXIT_BY_USER,
      GT_USER.

DATA: BEGIN OF T_OUTPUT OCCURS 0,
        DATE LIKE SY-DATUM,
      END   OF T_OUTPUT.

<b>AT SELECTION-SCREEN OUTPUT.
  CLEAR DATE.
  IMPORT DATE FROM MEMORY ID 'MID'.
  IF NOT DATE IS INITIAL.
     P_DATE = DATE.
     FREE MEMORY.
  ENDIF.</b>

START-OF-SELECTION.

  DO 10 TIMES.
    T_OUTPUT-DATE = P_DATE + SY-INDEX.
    APPEND T_OUTPUT.
  ENDDO.

END-OF-SELECTION.

  GT_REPID = SY-REPID.

  CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
       EXPORTING
            I_PROGRAM_NAME     = GT_REPID
            I_INTERNAL_TABNAME = 'T_OUTPUT'
            I_INCLNAME         = GT_REPID
       CHANGING
            CT_FIELDCAT        = GT_FIELDCAT[].

  GT_LAYOUT-ZEBRA  = 'X'.
  GT_LAYOUT-F2CODE = 'CLICK'.

  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
       EXPORTING
            I_CALLBACK_PROGRAM      = GT_REPID
            I_CALLBACK_USER_COMMAND = 'USER_COMMAND'
            IS_LAYOUT               = GT_LAYOUT
            IT_FIELDCAT             = GT_FIELDCAT[]
       IMPORTING
            E_EXIT_CAUSED_BY_CALLER = GT_USER
            ES_EXIT_CAUSED_BY_USER  = GT_EXIT
       TABLES
            T_OUTTAB                = T_OUTPUT.

  IF GT_USER = SPACE.
    IF GT_EXIT-BACK = 'X'.
      MESSAGE I208(00) WITH 'Exit by BACK (F3)'.
    ENDIF.
    IF GT_EXIT-EXIT   = 'X'.
      MESSAGE I208(00) WITH 'Exit by EXIT (SHIFT+F3)'.
    ENDIF.
    IF GT_EXIT-CANCEL = 'X'.
      MESSAGE I208(00) WITH 'Exit by CANCEL (F12)'.
    ENDIF.
  ELSE.
    MESSAGE I208(00) WITH 'Exit by USER'.
  ENDIF.


*---------------------------------------------------------------------*
*       FORM USER_COMMAND                                             *
*---------------------------------------------------------------------*
*       ........                                                      *
*---------------------------------------------------------------------*
*  -->  R_UCOMM                                                       *
*  -->  RS_SELFIELD                                                   *
*---------------------------------------------------------------------*
FORM USER_COMMAND USING R_UCOMM     LIKE SY-UCOMM
                        RS_SELFIELD TYPE SLIS_SELFIELD.

  IF R_UCOMM = 'CLICK'.
    RS_SELFIELD-EXIT = 'X'.
<b>    DATE = P_DATE + 1.
    EXPORT DATE TO MEMORY ID 'MID'.</b>
  ENDIF.
ENDFORM.                    " USER_COMMAND

Kind Regards

Eswar

0 Kudos

Hi Eswar,

I coded to get the selection screen as below and i tryed you code in that to get the click value in the selection.but failed to get .

WHEN 'CLICK'.

IF R_SELFIELD-FIELDNAME = 'VBELN'.

EXPORT VBELN TO MEMORY ID 'MID'.

          • to get the selection screen for enter the new values.

CALL SELECTION-SCREEN 123 STARTING AT 20 5.

SELECTION-SCREEN BEGIN OF SCREEN 123 AS WINDOW TITLE TEXT-456.

IMPORT VBELN FROM MEMORY ID 'MID'.

PARAMETERS : P_VBELN LIKE VBAP-VBELN MEMORY ID MID,

P_CHARG1 LIKE VBAP-CHARG,

P_EMPST1 LIKE VBKD-EMPST.

SELECTION-SCREEN END OF SCREEN 123.

as per the above code i am getting the selection screen when i click the vbeln field but i could not get the vbeln value display default in the selection screen.pls help me solve the issue.

Thanks,

Rajendra

0 Kudos

Hi

The following code shows how to past a value, imported from memory, in the selection screen:

PARAMETERS: P_DATE LIKE SY-DATUM.

TYPE-POOLS: SLIS.

* ALV
DATA: GT_FIELDCAT   TYPE SLIS_T_FIELDCAT_ALV,
      GT_LAYOUT     TYPE SLIS_LAYOUT_ALV,
      GT_REPID      LIKE SY-REPID,
      GT_EXIT       TYPE SLIS_EXIT_BY_USER,
      GT_USER.

DATA: BEGIN OF T_OUTPUT OCCURS 0,
        DATE LIKE SY-DATUM,
      END   OF T_OUTPUT.

DATA: INIT.

INITIALIZATION.

  IMPORT T_OUTPUT-DATE FROM MEMORY ID 'MAX'.
  IF SY-SUBRC <> 0.
    CLEAR T_OUTPUT-DATE.
  ENDIF.

  INIT = 'X'.


AT SELECTION-SCREEN OUTPUT.

  CHECK INIT = 'X'.
  CLEAR INIT.

  P_DATE = T_OUTPUT-DATE.

START-OF-SELECTION.

  DO 10 TIMES.
    T_OUTPUT-DATE = P_DATE + SY-INDEX.
    APPEND T_OUTPUT.
  ENDDO.

END-OF-SELECTION.

  GT_REPID = SY-REPID.

  CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
       EXPORTING
            I_PROGRAM_NAME     = GT_REPID
            I_INTERNAL_TABNAME = 'T_OUTPUT'
            I_INCLNAME         = GT_REPID
       CHANGING
            CT_FIELDCAT        = GT_FIELDCAT[].

  GT_LAYOUT-ZEBRA  = 'X'.
  GT_LAYOUT-F2CODE = 'CLICK'.

  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
       EXPORTING
            I_CALLBACK_PROGRAM      = GT_REPID
            I_CALLBACK_USER_COMMAND = 'USER_COMMAND'
            IS_LAYOUT               = GT_LAYOUT
            IT_FIELDCAT             = GT_FIELDCAT[]
       IMPORTING
            E_EXIT_CAUSED_BY_CALLER = GT_USER
            ES_EXIT_CAUSED_BY_USER  = GT_EXIT
       TABLES
            T_OUTTAB                = T_OUTPUT.

  IF GT_USER = SPACE.
    IF GT_EXIT-BACK = 'X'.
      MESSAGE I208(00) WITH 'Exit by BACK (F3)'.
    ENDIF.
    IF GT_EXIT-EXIT   = 'X'.
      MESSAGE I208(00) WITH 'Exit by EXIT (SHIFT+F3)'.
    ENDIF.
    IF GT_EXIT-CANCEL = 'X'.
      MESSAGE I208(00) WITH 'Exit by CANCEL (F12)'.
    ENDIF.
  ELSE.
    MESSAGE I208(00) WITH 'Exit by USER'.
  ENDIF.

*---------------------------------------------------------------------*
*       FORM USER_COMMAND                                             *
*---------------------------------------------------------------------*
*       ........                                                      *
*---------------------------------------------------------------------*
*  -->  R_UCOMM                                                       *
*  -->  RS_SELFIELD                                                   *
*---------------------------------------------------------------------*
FORM USER_COMMAND USING R_UCOMM     LIKE SY-UCOMM
                        RS_SELFIELD TYPE SLIS_SELFIELD.

  IF R_UCOMM = 'CLICK'.
    RS_SELFIELD-EXIT = 'X'.
    READ TABLE T_OUTPUT INDEX RS_SELFIELD-TABINDEX.

    EXPORT T_OUTPUT-DATE TO MEMORY ID 'MAX'.

  ENDIF.
ENDFORM.                    " USER_COMMAND

If the field CHARG is greyed in the transaction, it means it can't be changed, so the BAPI won't change it.

If you need to change it directly in VBAP, you make sure not to have any problem with the data: the system when it inserts the batch could update several tables.

Yuo should ask how to change it to your functional: it's strange you have to change somethin can't be changed.

Max

0 Kudos

Hi,

Here the value is not pass to the memory id itself.below is the code i used

EXPORT ITAB-VBELN TO MEMORY ID 'MAX'.

when i check in the debug mode in the tab GOTO SAP MEMORY even i cant see the id MAX.so how to pass the value to the memory id 'MAX'.

Thanks,

Rajendra.

0 Kudos

Hi Rajendra

As you are using SCREEN for Selection-Screen. Please import the VBELN and pass to Parameter: P_VBELN in PBO of the screen.( Similar to the logic that i have specified in AT SELECTION-SCREEN OUPUT).

I guess this can work.

Kind Regards

Eswar

0 Kudos

HI Rajendra

The memory ids we use in EXPORT and IMPORT statements need not be defined. Itz just like a way of identifying individual portions of memory.

Can you check, if you can find the exact value in ITAB-VBELN before the EXPORT to memory statement.

Also check the SY-SUBRC after executing the statement.

Kind Regards

Eswar

0 Kudos

Hi

IMPORT/EXPORT don't use the SAP memory, but the ABAP memory.

If you want to use the SAP memory you have to use the statament:

SET PARAMETER ID <ID> FIELD <FIELD>.

GET PARAMETER ID <ID> FIELD <FIELD>.

But in this case the ID has to be created by trx SE80, if you use IMPORT/EXPORT u don't need to create the ID, because it's created at runtime.

If you want to see the ID of IMPORT/EXPORT in debug:

Goto->System->System Area-> here choose <b>MEMORIES</b>

Max

0 Kudos

Hi Eswar,

I got the value in the itab-vbeln and i check sy-subrc also.it is zero .

EXPORT ITAB-VBELN TO MEMORY ID 'MID'.

          • to get the selection screen for enter the new values.

if sy-subrc = 0.

CALL SELECTION-SCREEN 123 STARTING AT 20 5.

endif.

but i am not getting the value itab-vbeln in the selection screen.

Thanks,

Rajendra.

0 Kudos

Hi

If you're using CALL SELECTION-SCREEN statament, you don't need to use the IMPORT/EXPORT, but you can transfer directly the value to selection-screen:

READ TABLE T_OUTPUT INDEX R_SEL-TABINDEX.

P_VBELN = ITAB-VBELN.

CALL SELECTION-SCREEN 123 STARTING AT 20 5

U should use IMPORT/EXPORT only if you want to back ti the initial selection-screen.

Max

0 Kudos

Hi Max bianchi,

Thanks a lot for your help and finaly i got the answer.

Thanks,

Rajendra.

Former Member
0 Kudos

hi rajendra kumar,

the following code surely fulfill ur requirement.

CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'

EXPORTING

I_CALLBACK_PROGRAM = WA_REPID

I_CALLBACK_PF_STATUS_SET = 'STATUS'

I_CALLBACK_USER_COMMAND = 'UCOMMAND'

IS_LAYOUT = WA_LAYOUT

IT_FIELDCAT = IT_FIELDC

IT_EVENTS = IT_EVENT

I_TABNAME_HEADER = 'IT_HEAD'

I_TABNAME_ITEM = 'IT_ITEM'

IS_KEYINFO = WA_KEYINFO

TABLES

T_OUTTAB_HEADER = IT_HEAD

T_OUTTAB_ITEM = IT_ITEM.

FORM KEY_INFO .

WA_KEYINFO-HEADER01 = 'VBELN'.

WA_KEYINFO-ITEM01 = 'VBELN'.

WA_REPID = SY-REPID.

ENDFORM. " KEY_INFO

&----


*& Form FIELD_CATALOG

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM FIELD_CATALOG .

CLEAR WA_FIELDC.

CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'

EXPORTING

I_PROGRAM_NAME = WA_REPID

I_INTERNAL_TABNAME = 'IT_HEAD' "I_INTERNAL_TABNAME

I_STRUCTURE_NAME = 'Z243HEADER' "I_STRUCTURE_NAME

I_CLIENT_NEVER_DISPLAY = 'X'

CHANGING

CT_FIELDCAT = IT_FIELDC.

DELETE IT_FIELDC WHERE FIELDNAME <> 'AUTLF' AND

FIELDNAME <> 'KUNNR' AND

FIELDNAME <> 'VSBED' AND

FIELDNAME <> 'LIFSK' AND

FIELDNAME <> 'AUGRU' AND

FIELDNAME <> 'VBELN' AND

FIELDNAME <> 'BSTKD' AND

FIELDNAME <> 'ZTERM' AND

FIELDNAME <> 'PRSDT' AND

FIELDNAME <> 'INCO1' AND

FIELDNAME <> 'INCO2' .

CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'

EXPORTING

I_PROGRAM_NAME = WA_REPID

I_INTERNAL_TABNAME = 'IT_ITEM' "I_INTERNAL_TABNAME

I_STRUCTURE_NAME = 'Z243_ITEM' "I_STRUCTURE_NAME

CHANGING

CT_FIELDCAT = IT_FIELDC1.

DELETE IT_FIELDC1 WHERE FIELDNAME <> 'POSNR' AND

FIELDNAME <> 'MATNR' AND

FIELDNAME <> ' WERKS' AND

FIELDNAME <> 'LPRIO' AND

FIELDNAME <> 'KWMENG' AND

FIELDNAME <> 'ABGRU' AND

FIELDNAME <> 'MAKTX' AND

FIELDNAME <> 'VDATU' AND

FIELDNAME <> 'PRSDT' AND

FIELDNAME <> 'VBELN' .

LOOP AT IT_FIELDC1 INTO WA_FIELDC.

APPEND WA_FIELDC TO IT_FIELDC.

ENDLOOP.

ENDFORM. " FIELD_CATALOG

&----


*& Form FILL_LAYOUT

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM FILL_LAYOUT .

WA_LAYOUT-ZEBRA = 'X'.

WA_LAYOUT-EXPAND_FIELDNAME = 'EXPAND'. "FOR EXPANDING

WA_LAYOUT-EXPAND_ALL = 'X'.

WA_LAYOUT-BOX_FIELDNAME = 'BOX'.

WA_LAYOUT-BOX_TABNAME = 'IT_HEAD'.

  • WA_LAYOUT-BOX_TABNAME = 'IT_ITEM'.

WA_LAYOUT-KEY_HOTSPOT = 'X'.

WA_LAYOUT-F2CODE = U_COMM.

WA_LAYOUT-DETAIL_POPUP = 'X'.

WA_LAYOUT-LIGHTS_CONDENSE = 'X'.

ENDFORM. " FILL_LAYOUT

&----


*& Form STATUS

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM STATUS USING RT_EXTAB TYPE SLIS_T_EXTAB.

  • IF H_FLAG NE 'X'.

SET PF-STATUS 'SBAR' EXCLUDING RT_EXTAB.

SET TITLEBAR 'TITLE2'.

  • ELSEIF H_FLAG EQ 'X'.

  • SET PF-STATUS 'STANDARD'.

  • SET TITLEBAR 'TITLE2'.

  • ENDIF.

ENDFORM. " STATUS

&----


*& Form ucomm

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM UCOMMAND USING R_COMM LIKE SY-UCOMM

RS_SELFIELD TYPE SLIS_SELFIELD .

CASE R_COMM.

WHEN 'UP'.

LOOP AT IT_HEAD INTO WA_HEAD WHERE BOX = 'X'.

APPEND WA_HEAD TO IT_HEADSCR.

ENDLOOP.

CALL SCREEN 9003.

WHEN 'UPS'.

DATA RETANS.

DATA LEN(2) TYPE N.

DATA QUESTION(75) TYPE C.

DESCRIBE TABLE IT_HEADSCR LINES LEN.

CONCATENATE LEN TEXT-002 INTO QUESTION.

CALL FUNCTION 'POPUP_TO_CONFIRM'

EXPORTING

TITLEBAR = 'Sales Order selected for Changes'

TEXT_QUESTION = QUESTION

TEXT_BUTTON_1 = 'Yes'

ICON_BUTTON_1 = 'ICON_OKAY'

TEXT_BUTTON_2 = 'No'

ICON_BUTTON_2 = 'ICON_CANCEL'

DISPLAY_CANCEL_BUTTON = ' '

IV_QUICKINFO_BUTTON_1 = 'CONFIRM CHANGE'

IV_QUICKINFO_BUTTON_2 = 'CANCEL CHANGE'

IMPORTING

ANSWER = RETANS

EXCEPTIONS

TEXT_NOT_FOUND = 1

OTHERS = 2.

IF SY-SUBRC <> 0.

LEAVE TO LIST-PROCESSING.

SET PF-STATUS SPACE.

WRITE / SY-SUBRC.

ENDIF.

IF RETANS = 1.

PERFORM BAPI.

ENDIF..

WHEN '&F03'.

CALL SCREEN 9002.

ENDCASE.

ENDFORM. " ucomm

&----


*& Form BAPI

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM BAPI .

CLEAR: RETURN[], RETURN1[].

WA_HEADER-UPDATEFLAG = 'U'.

WA_HEADER-PURCH_NO_C = 'X'.

WA_HEADER-PMNTTRMS = 'X'.

WA_HEADER-INCOTERMS1 = 'X'.

WA_HEADER-SHIP_COND = 'X'.

REFRESH: IT_ITM, IT_ITMX.

CLEAR: IT_ITM, IT_ITMX.

LOOP AT IT_HEAD INTO WA_HEAD WHERE BOX ='X'.

LOOP AT IT_ITEM INTO WA_ITEM WHERE VBELN = WA_HEAD-VBELN.

  • LOOP AT IT_ITEM INTO WA_ITEM where BOX = 'X'.

READ TABLE IT_HEAD INTO WA_HEAD WITH KEY VBELN = WA_HEAD-VBELN.

READ TABLE IT_ITEM INTO WA_ITEM WITH KEY VBELN = WA_ITEM-VBELN.

WA_HEADDATA-PURCH_NO_C = WA_HEAD-BSTKD.

WA_HEADDATA-PMNTTRMS = WA_HEAD-ZTERM.

WA_HEADDATA-INCOTERMS1 = WA_HEAD-INCO1.

WA_HEADDATA-SHIP_COND = WA_HEAD-VSBED.

  • IT_ITM-ITM_NUMBER = WA_ITEM-POSNR.

  • IT_ITM-TARGET_QTY = WA_ITEM-KWMENG.

IT_ITMX-UPDATEFLAG = 'U'.

IT_ITMX-ITM_NUMBER = WA_ITEM-POSNR.

IT_ITM-MATERIAL = WA_ITEM-MATNR.

IT_ITMX-MATERIAL = 'X'.

APPEND IT_ITM.

APPEND IT_ITMX.

CALL FUNCTION 'BAPI_SALESORDER_CHANGE' <---to update in ur VBAP

EXPORTING

SALESDOCUMENT = WA_HEAD-VBELN

ORDER_HEADER_IN = WA_HEADDATA

ORDER_HEADER_INX = WA_HEADER

TABLES

RETURN = RETURN

ORDER_ITEM_IN = IT_ITM

ORDER_ITEM_INX = IT_ITMX.

LOOP AT RETURN.

MOVE-CORRESPONDING RETURN TO RETMSG.

APPEND RETMSG.

ENDLOOP.

CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'

IMPORTING

RETURN = RETURN1.

ENDLOOP.

ENDLOOP.

PERFORM POPUP.

ENDFORM. " BAPI

&----


*& Form POPUP

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM POPUP .

DATA : IT_FCAT TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE.

DATA : BEGIN OF WA_DATATAB,

TYPE(4) TYPE C,

MSG LIKE RETURN-MESSAGE,

END OF WA_DATATAB,

IT_DATATAB LIKE TABLE OF WA_DATATAB.

  • IF IT_FCAT IS INITIAL.

IT_FCAT-FIELDNAME = 'TYPE'.

IT_FCAT-TABNAME = 'IT_DATATAB'.

IT_FCAT-SELTEXT_L = 'TYPE'.

IT_FCAT-OUTPUTLEN = 10.

APPEND IT_FCAT.

CLEAR IT_FCAT.

IT_FCAT-FIELDNAME = 'MSG'.

IT_FCAT-TABNAME = 'IT_DATATAB'.

IT_FCAT-SELTEXT_L = 'MESSAGE'.

IT_FCAT-OUTPUTLEN = 70.

APPEND IT_FCAT.

  • ENDIF.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

I_GRID_TITLE = 'BAPI Return Messages'

IT_FIELDCAT = IT_FCAT[]

I_SCREEN_START_COLUMN = 10

I_SCREEN_START_LINE = 5

I_SCREEN_END_COLUMN = 100

I_SCREEN_END_LINE = 20

TABLES

T_OUTTAB = RETMSG.

ENDFORM. " POPUP

tis will surely help u,if u hav any doubt ,feel free to revert me.

shan