Modify another address local data in foreign contract occur Invalid Account error

I want to use a smart contract (called A SC) to call b smart contract (called B SC) setter method.
B SC setter method accept a address, like:

@Subroutine(TealType.none)
    def set_worth(current_address: Expr, new_worth):
        return Seq(
            App.localPut(current_address, local_worth, new_worth),
        )

A SC use

InnerTxnBuilder.SetFields({
                TxnField.type_enum: TxnType.ApplicationCall,
                TxnField.application_id: App.globalGet(global_core_contract_id),
                TxnField.on_completion: OnComplete.NoOp,
                TxnField.application_args: [Bytes("set_worth"),
                                            Txn.sender(),
                                            Itob(current_worth.value() + div_ceil(current_worth.value(), Int(10)))
                                            ],
            }),

I trying goal app call from one address to set another address local status, but not success.
exception is:

logic eval error: logic eval error: invalid Account reference

my question is:

  1. can i call A SC to set another address local status which is stored in B SC?
  2. please give me some advice , If it can’t ,

It is possible that you did it correctly, but just wanted to highlight some important point.
A subroutine cannot be “called” directly: instead you need the code of A SC to parse the application arguments and call the subroutine.
See https://developer.algorand.org/docs/get-started/dapps/pyteal/#the-smart-contract

Note also that using the ABI will become strongly recommended very soon: ABI details - Algorand Developer Portal
That is the first argument should not be Bytes("set_worth") but the proper method selector.

You need to set the TxnField.accounts to properly.
Note that the top transaction should also set this (foreign) accounts.

Thank you , I will try it again.