Sales Order Status is blocked so unblock status (VA02) Program

 My Requirement is Sales Order Status is blocked so unblock status in VA02


*&-----------------------------------------------------------------------*
*& Report ZSD_BILLING_ACCEPT_REJECT
*&-----------------------------------------------------------------------*
*& Program Name        : ZMM_ADQ_BILLING_CREATE                          *
*& program description : Sales Order Billing With & Without Goods Issue  *
*& purpose             : Sales Order Status is blocked so unblock status *
*& Developer Name      : King Of ABAP'r                                  *
*& Functional Name     : FUnctional                                      *
*& Creation Date       : 2024                                            *
*& Transaction Code    : ZCACPT                                          *         
*&-----------------------------------------------------------------------*
REPORT zsd_billing_accept_reject.


TABLESsscrfields.

SELECTION-SCREEN BEGIN OF BLOCK a1 WITH FRAME TITLE TEXT-001.
PARAMETERSp_vbeln TYPE vbap-vbeln OBLIGATORY,
            p_posnr TYPE vbap-posnr.
SELECTION-SCREEN END OF BLOCK a1.

SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-001.
SELECTION-SCREEN PUSHBUTTON 1(40cmdgen USER-COMMAND but_a VISIBLE LENGTH 20.
SELECTION-SCREEN PUSHBUTTON 32(30cmdgen1 USER-COMMAND but_r VISIBLE LENGTH 20.
SELECTION-SCREEN END OF BLOCK b1.

INITIALIZATION.
  CALL FUNCTION 'ICON_CREATE'
    EXPORTING
      name   icon_wd_button
      text   'Billing Acceptance'
      info   'Accept Button'
    IMPORTING
      result cmdgen
    EXCEPTIONS
      OTHERS 0.

  CALL FUNCTION 'ICON_CREATE'
    EXPORTING
      name   icon_reject
      text   'Reject'
      info   'Reject Button'
    IMPORTING
      result cmdgen1
    EXCEPTIONS
      OTHERS 0.

AT SELECTION-SCREEN.
  CASE sscrfields.
    WHEN 'BUT_A'.
      PERFORM relese_status.
    WHEN 'BUT_R'.
      MESSAGE 'User Rejected' TYPE 'E' DISPLAY LIKE 'E'.
  ENDCASE.

START-OF-SELECTION.




*&---------------------------------------------------------------------*
*& Form RELESE_STATUS
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM relese_status .
*** User Status Declarations
  DATA:
       lv_objnr LIKE  jsto-objnr.

  DATA:
    e_obtyp LIKE  jsto-obtyp,
    e_stsma LIKE  jsto-stsma,
    e_stonr LIKE  tj30-stonr.

  DATA:
      lt_status  TYPE TABLE OF  jstat.

  DATAlv_text TYPE string.

*** Get Sales Order Item Details
  IF p_vbeln IS NOT INITIAL AND p_posnr IS NOT INITIAL.
    SELECT  FROM vbap INTO TABLE @DATA(lt_vbap)
     WHERE vbeln EQ @p_vbeln
       AND posnr EQ @p_posnr .
  ENDIF.

*** GET sales Order item details
  IF p_vbeln IS NOT INITIAL AND p_posnr IS INITIAL.
    SELECT  FROM vbap INTO TABLE lt_vbap
     WHERE vbeln EQ p_vbeln.
  ENDIF.
  LOOP AT lt_vbap INTO DATA(ls_vbap).
    REFRESHlt_status.
    CLEARe_obtyp,e_obtyp,e_stonr.
    CLEARlv_objnr.
    lv_objnr ls_vbap-objnr.
    CALL FUNCTION 'STATUS_READ'
      EXPORTING
        client           sy-mandt
        objnr            lv_objnr
      IMPORTING
        obtyp            e_obtyp
        stsma            e_stsma
        stonr            e_stonr
      TABLES
        status           lt_status
      EXCEPTIONS
        object_not_found 1
        OTHERS           2.


    READ TABLE lt_status ASSIGNING FIELD-SYMBOL(<ls_status>WITH KEY stat 'E0001'.

    IF <ls_status>-inact IS INITIAL.
      CALL FUNCTION 'STATUS_CHANGE_EXTERN'
        EXPORTING
          client              sy-mandt
          objnr               lv_objnr
          user_status         'E0002'
        IMPORTING
          stonr               e_stonr
        EXCEPTIONS
          object_not_found    1
          status_inconsistent 2
          status_not_allowed  3
          OTHERS              4.

      IF sy-subrc 0.
        CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
          EXPORTING
            wait 'X'.
        WAIT UP TO SECONDS.


        IF ls_vbap-vbeln IS NOT INITIAL AND ls_vbap-posnr IS NOT INITIAL.
          CLEARlv_text.
          CONCATENATE 'Sales Order' ls_vbap-vbeln  'Is Accepted' INTO lv_text SEPARATED BY space.
          MESSAGE lv_text TYPE 'S' DISPLAY LIKE 'S'.
        ENDIF.
      ENDIF.

    ELSE.
      CLEARlv_text.
      CONCATENATE 'User Status is already Released' ls_vbap-vbeln  INTO lv_text SEPARATED BY space.
      MESSAGE lv_text TYPE 'I' DISPLAY LIKE 'E'.
    ENDIF.
  ENDLOOP.

ENDFORM.

Comments

Popular posts from this blog

PO rejection notification & rejection comments for Fiori

FB60 Vendor Invoice Post using BAPI

Service Invoice Upload For FB70 (BAPI)